From bd348d2d4003c7ef5d5974db2e43eaab11263160 Mon Sep 17 00:00:00 2001 From: memorabilien Date: Mon, 6 Feb 2023 12:29:20 +0100 Subject: [PATCH 1/3] init --- README.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 02002fd..41b2643 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,14 @@ A Library of JavaScript Regular Expressions for validating if a specific Zip-cod Not every 5 digit number is automatically a zip code... As of now Regular Expression seem to be the fastest way of validating if a zip code actually exists. No slow backend validation needed, just some fancy RegExp. -As of now only the Regular Expressions for +So Why val-zip? Because it is free for commercial use and it is super fast and light weight with only 305kB size. + +As of now the Regular Expressions for * Germany * Austria * Switzerland -* USA(5-Digit version) +* USA (5-Digit version) * Belgium * Denmark * Czechia @@ -19,7 +21,7 @@ As of now only the Regular Expressions for * Norway * Italy -are available. Although any 5 or 4 Digit number is possible. More coming soon... +are available with more coming asap. ## Usage @@ -60,6 +62,8 @@ valZip(inputZip_2, userCountry) // returns true ## Zip Code Sources +Note: All data is heavily modified and does not resemble the original data base at all + | country | last update | license | source | | ------------- | ----------- | :----------------------------------------------------------------------------------------------------------------------------------: | ---------------------------------------- | | Austria | 04.01.2023 | none | Österreichische Post Aktiengesellschaft | @@ -71,7 +75,7 @@ valZip(inputZip_2, userCountry) // returns true | United States | 31.12.2020 | none | Internal Revenue Service, US Census | | Norway | 01.10.2022 | none | Osten Norge AS | | Finland | 30.01.2023 | none | Posti Group Oy | -| Italy | 01.01.2022 | wip | wip | +| Italy | 26.11.2020 | none | Eurostat | Some Countries are missing, just because the official zipcode database is either paywalled or entirely copyrighted. @@ -83,3 +87,8 @@ This is the List of countries I am unable to source data from: | Sweden | paid only | Postnummerservice Norden AB | | Australia | paid only | Australia Post | | Spain | paid only | Sociedad Estatal Correos y Telegrafos | + +
+ +MIT License +Copyright (c) 2022-today Leonhard Maier From c24354a962134aa845cce3974c0679e5ebf4cf9e Mon Sep 17 00:00:00 2001 From: memorabilien Date: Mon, 6 Feb 2023 22:08:30 +0100 Subject: [PATCH 2/3] added IS,FR,EE,ES,LU; --- .assets/val-zip.svg | 1 + README.md | 59 +- dist/val-zip.cjs | 17 +- dist/val-zip.js | 17 +- dist/val-zip.umd.js | 17 +- node_modules/.bin/_mocha | 12 + node_modules/.bin/_mocha.cmd | 17 + node_modules/.bin/_mocha.ps1 | 28 + node_modules/.bin/flat | 12 + node_modules/.bin/flat.cmd | 17 + node_modules/.bin/flat.ps1 | 28 + node_modules/.bin/he | 12 + node_modules/.bin/he.cmd | 17 + node_modules/.bin/he.ps1 | 28 + node_modules/.bin/js-yaml | 12 + node_modules/.bin/js-yaml.cmd | 17 + node_modules/.bin/js-yaml.ps1 | 28 + node_modules/.bin/mocha | 12 + node_modules/.bin/mocha.cmd | 17 + node_modules/.bin/mocha.ps1 | 28 + node_modules/.bin/nanoid | 12 + node_modules/.bin/nanoid.cmd | 17 + node_modules/.bin/nanoid.ps1 | 28 + node_modules/.package-lock.json | 655 +- node_modules/ansi-colors/LICENSE | 21 + node_modules/ansi-colors/README.md | 315 + node_modules/ansi-colors/index.js | 177 + node_modules/ansi-colors/package.json | 109 + node_modules/ansi-colors/symbols.js | 70 + node_modules/ansi-colors/types/index.d.ts | 161 + node_modules/ansi-regex/index.d.ts | 37 + node_modules/ansi-regex/index.js | 10 + node_modules/ansi-regex/license | 9 + node_modules/ansi-regex/package.json | 55 + node_modules/ansi-regex/readme.md | 78 + node_modules/argparse/CHANGELOG.md | 216 + node_modules/argparse/LICENSE | 254 + node_modules/argparse/README.md | 84 + node_modules/argparse/argparse.js | 3707 +++ node_modules/argparse/lib/sub.js | 67 + node_modules/argparse/lib/textwrap.js | 440 + node_modules/argparse/package.json | 31 + node_modules/browser-stdout/LICENSE | 5 + node_modules/browser-stdout/README.md | 40 + node_modules/browser-stdout/index.js | 25 + node_modules/browser-stdout/package.json | 15 + node_modules/camelcase/index.d.ts | 103 + node_modules/camelcase/index.js | 113 + node_modules/camelcase/license | 9 + node_modules/camelcase/package.json | 44 + node_modules/camelcase/readme.md | 144 + node_modules/cliui/CHANGELOG.md | 121 + node_modules/cliui/LICENSE.txt | 14 + node_modules/cliui/README.md | 141 + node_modules/cliui/build/index.cjs | 302 + node_modules/cliui/build/lib/index.js | 287 + node_modules/cliui/build/lib/string-utils.js | 27 + node_modules/cliui/index.mjs | 13 + node_modules/cliui/package.json | 83 + node_modules/decamelize/index.d.ts | 20 + node_modules/decamelize/index.js | 12 + node_modules/decamelize/license | 9 + node_modules/decamelize/package.json | 40 + node_modules/decamelize/readme.md | 51 + node_modules/diff/CONTRIBUTING.md | 39 + node_modules/diff/LICENSE | 31 + node_modules/diff/README.md | 208 + node_modules/diff/dist/diff.js | 1582 ++ node_modules/diff/lib/convert/dmp.js | 32 + node_modules/diff/lib/convert/xml.js | 42 + node_modules/diff/lib/diff/array.js | 45 + node_modules/diff/lib/diff/base.js | 304 + node_modules/diff/lib/diff/character.js | 37 + node_modules/diff/lib/diff/css.js | 41 + node_modules/diff/lib/diff/json.js | 163 + node_modules/diff/lib/diff/line.js | 89 + node_modules/diff/lib/diff/sentence.js | 41 + node_modules/diff/lib/diff/word.js | 108 + node_modules/diff/lib/index.es6.js | 1553 ++ node_modules/diff/lib/index.js | 216 + node_modules/diff/lib/index.mjs | 1553 ++ node_modules/diff/lib/patch/apply.js | 238 + node_modules/diff/lib/patch/create.js | 267 + node_modules/diff/lib/patch/merge.js | 613 + node_modules/diff/lib/patch/parse.js | 167 + node_modules/diff/lib/util/array.js | 32 + .../diff/lib/util/distance-iterator.js | 57 + node_modules/diff/lib/util/params.js | 24 + node_modules/diff/package.json | 87 + node_modules/diff/release-notes.md | 303 + node_modules/diff/runtime.js | 3 + node_modules/emoji-regex/LICENSE-MIT.txt | 20 + node_modules/emoji-regex/README.md | 73 + node_modules/emoji-regex/es2015/index.js | 6 + node_modules/emoji-regex/es2015/text.js | 6 + node_modules/emoji-regex/index.d.ts | 23 + node_modules/emoji-regex/index.js | 6 + node_modules/emoji-regex/package.json | 50 + node_modules/emoji-regex/text.js | 6 + node_modules/find-up/index.d.ts | 138 + node_modules/find-up/index.js | 89 + node_modules/find-up/license | 9 + node_modules/find-up/package.json | 54 + node_modules/find-up/readme.md | 151 + node_modules/flat/.travis.yml | 8 + node_modules/flat/LICENSE | 12 + node_modules/flat/README.md | 236 + node_modules/flat/cli.js | 42 + node_modules/flat/index.js | 158 + node_modules/flat/package.json | 37 + node_modules/flat/test/test.js | 643 + node_modules/get-caller-file/LICENSE.md | 6 + node_modules/get-caller-file/README.md | 41 + node_modules/get-caller-file/index.d.ts | 2 + node_modules/get-caller-file/index.js | 22 + node_modules/get-caller-file/index.js.map | 1 + node_modules/get-caller-file/package.json | 42 + node_modules/he/LICENSE-MIT.txt | 20 + node_modules/he/README.md | 379 + node_modules/he/bin/he | 148 + node_modules/he/he.js | 345 + node_modules/he/man/he.1 | 78 + node_modules/he/package.json | 58 + .../is-fullwidth-code-point/index.d.ts | 17 + node_modules/is-fullwidth-code-point/index.js | 50 + node_modules/is-fullwidth-code-point/license | 9 + .../is-fullwidth-code-point/package.json | 42 + .../is-fullwidth-code-point/readme.md | 39 + node_modules/is-plain-obj/index.d.ts | 29 + node_modules/is-plain-obj/index.js | 10 + node_modules/is-plain-obj/license | 9 + node_modules/is-plain-obj/package.json | 38 + node_modules/is-plain-obj/readme.md | 54 + node_modules/is-unicode-supported/index.d.ts | 14 + node_modules/is-unicode-supported/index.js | 13 + node_modules/is-unicode-supported/license | 9 + .../is-unicode-supported/package.json | 41 + node_modules/is-unicode-supported/readme.md | 35 + node_modules/js-yaml/CHANGELOG.md | 616 + node_modules/js-yaml/LICENSE | 21 + node_modules/js-yaml/README.md | 246 + node_modules/js-yaml/bin/js-yaml.js | 126 + node_modules/js-yaml/dist/js-yaml.js | 3874 +++ node_modules/js-yaml/dist/js-yaml.min.js | 2 + node_modules/js-yaml/dist/js-yaml.mjs | 3851 +++ node_modules/js-yaml/index.js | 47 + node_modules/js-yaml/lib/common.js | 59 + node_modules/js-yaml/lib/dumper.js | 965 + node_modules/js-yaml/lib/exception.js | 55 + node_modules/js-yaml/lib/loader.js | 1727 ++ node_modules/js-yaml/lib/schema.js | 121 + node_modules/js-yaml/lib/schema/core.js | 11 + node_modules/js-yaml/lib/schema/default.js | 22 + node_modules/js-yaml/lib/schema/failsafe.js | 17 + node_modules/js-yaml/lib/schema/json.js | 19 + node_modules/js-yaml/lib/snippet.js | 101 + node_modules/js-yaml/lib/type.js | 66 + node_modules/js-yaml/lib/type/binary.js | 125 + node_modules/js-yaml/lib/type/bool.js | 35 + node_modules/js-yaml/lib/type/float.js | 97 + node_modules/js-yaml/lib/type/int.js | 156 + node_modules/js-yaml/lib/type/map.js | 8 + node_modules/js-yaml/lib/type/merge.js | 12 + node_modules/js-yaml/lib/type/null.js | 35 + node_modules/js-yaml/lib/type/omap.js | 44 + node_modules/js-yaml/lib/type/pairs.js | 53 + node_modules/js-yaml/lib/type/seq.js | 8 + node_modules/js-yaml/lib/type/set.js | 29 + node_modules/js-yaml/lib/type/str.js | 8 + node_modules/js-yaml/lib/type/timestamp.js | 88 + node_modules/js-yaml/package.json | 66 + node_modules/locate-path/index.d.ts | 83 + node_modules/locate-path/index.js | 68 + node_modules/locate-path/license | 9 + node_modules/locate-path/package.json | 46 + node_modules/locate-path/readme.md | 125 + node_modules/log-symbols/browser.js | 8 + node_modules/log-symbols/index.d.ts | 25 + node_modules/log-symbols/index.js | 19 + node_modules/log-symbols/license | 9 + .../node_modules/ansi-styles/index.d.ts | 345 + .../node_modules/ansi-styles/index.js | 163 + .../node_modules/ansi-styles/license | 9 + .../node_modules/ansi-styles/package.json | 56 + .../node_modules/ansi-styles/readme.md | 152 + .../log-symbols/node_modules/chalk/index.d.ts | 415 + .../log-symbols/node_modules/chalk/license | 9 + .../node_modules/chalk/package.json | 68 + .../log-symbols/node_modules/chalk/readme.md | 341 + .../node_modules/chalk/source/index.js | 229 + .../node_modules/chalk/source/templates.js | 134 + .../node_modules/chalk/source/util.js | 39 + .../node_modules/color-convert/CHANGELOG.md | 54 + .../node_modules/color-convert/LICENSE | 21 + .../node_modules/color-convert/README.md | 68 + .../node_modules/color-convert/conversions.js | 839 + .../node_modules/color-convert/index.js | 81 + .../node_modules/color-convert/package.json | 48 + .../node_modules/color-convert/route.js | 97 + .../node_modules/color-name/LICENSE | 8 + .../node_modules/color-name/README.md | 11 + .../node_modules/color-name/index.js | 152 + .../node_modules/color-name/package.json | 28 + .../node_modules/has-flag/index.d.ts | 39 + .../node_modules/has-flag/index.js | 8 + .../log-symbols/node_modules/has-flag/license | 9 + .../node_modules/has-flag/package.json | 46 + .../node_modules/has-flag/readme.md | 89 + .../node_modules/supports-color/browser.js | 5 + .../node_modules/supports-color/index.js | 135 + .../node_modules/supports-color/license | 9 + .../node_modules/supports-color/package.json | 53 + .../node_modules/supports-color/readme.md | 76 + node_modules/log-symbols/package.json | 52 + node_modules/log-symbols/readme.md | 51 + node_modules/mocha/LICENSE | 22 + node_modules/mocha/README.md | 70 + node_modules/mocha/bin/_mocha | 10 + node_modules/mocha/bin/mocha.js | 142 + node_modules/mocha/browser-entry.js | 226 + node_modules/mocha/index.js | 3 + .../mocha/lib/browser/highlight-tags.js | 39 + node_modules/mocha/lib/browser/parse-query.js | 24 + node_modules/mocha/lib/browser/progress.js | 138 + node_modules/mocha/lib/browser/template.html | 20 + node_modules/mocha/lib/cli/cli.js | 89 + node_modules/mocha/lib/cli/collect-files.js | 92 + node_modules/mocha/lib/cli/commands.js | 13 + node_modules/mocha/lib/cli/config.js | 100 + node_modules/mocha/lib/cli/index.js | 3 + node_modules/mocha/lib/cli/init.js | 36 + node_modules/mocha/lib/cli/lookup-files.js | 145 + node_modules/mocha/lib/cli/node-flags.js | 85 + node_modules/mocha/lib/cli/one-and-dones.js | 69 + node_modules/mocha/lib/cli/options.js | 261 + node_modules/mocha/lib/cli/run-helpers.js | 243 + .../mocha/lib/cli/run-option-metadata.js | 115 + node_modules/mocha/lib/cli/run.js | 375 + node_modules/mocha/lib/cli/watch-run.js | 377 + node_modules/mocha/lib/context.js | 86 + node_modules/mocha/lib/errors.js | 563 + node_modules/mocha/lib/hook.js | 89 + node_modules/mocha/lib/interfaces/bdd.js | 114 + node_modules/mocha/lib/interfaces/common.js | 193 + node_modules/mocha/lib/interfaces/exports.js | 60 + node_modules/mocha/lib/interfaces/index.js | 6 + node_modules/mocha/lib/interfaces/qunit.js | 98 + node_modules/mocha/lib/interfaces/tdd.js | 106 + node_modules/mocha/lib/mocha.js | 1316 + node_modules/mocha/lib/mocharc.json | 10 + .../mocha/lib/nodejs/buffered-worker-pool.js | 188 + node_modules/mocha/lib/nodejs/esm-utils.js | 106 + .../mocha/lib/nodejs/file-unloader.js | 15 + .../lib/nodejs/parallel-buffered-runner.js | 433 + .../lib/nodejs/reporters/parallel-buffered.js | 165 + node_modules/mocha/lib/nodejs/serializer.js | 412 + node_modules/mocha/lib/nodejs/worker.js | 151 + node_modules/mocha/lib/pending.js | 16 + node_modules/mocha/lib/plugin-loader.js | 286 + node_modules/mocha/lib/reporters/base.js | 550 + node_modules/mocha/lib/reporters/doc.js | 95 + node_modules/mocha/lib/reporters/dot.js | 81 + node_modules/mocha/lib/reporters/html.js | 390 + node_modules/mocha/lib/reporters/index.js | 19 + .../mocha/lib/reporters/json-stream.js | 92 + node_modules/mocha/lib/reporters/json.js | 162 + node_modules/mocha/lib/reporters/landing.js | 116 + node_modules/mocha/lib/reporters/list.js | 78 + node_modules/mocha/lib/reporters/markdown.js | 112 + node_modules/mocha/lib/reporters/min.js | 52 + node_modules/mocha/lib/reporters/nyan.js | 276 + node_modules/mocha/lib/reporters/progress.js | 104 + node_modules/mocha/lib/reporters/spec.js | 99 + node_modules/mocha/lib/reporters/tap.js | 293 + node_modules/mocha/lib/reporters/xunit.js | 217 + node_modules/mocha/lib/runnable.js | 476 + node_modules/mocha/lib/runner.js | 1256 + node_modules/mocha/lib/stats-collector.js | 83 + node_modules/mocha/lib/suite.js | 666 + node_modules/mocha/lib/test.js | 113 + node_modules/mocha/lib/utils.js | 640 + node_modules/mocha/mocha.css | 392 + node_modules/mocha/mocha.js | 20635 ++++++++++++++++ node_modules/mocha/mocha.js.map | 1 + .../escape-string-regexp/index.d.ts | 18 + .../escape-string-regexp/index.js | 13 + .../node_modules/escape-string-regexp/license | 9 + .../escape-string-regexp/package.json | 38 + .../escape-string-regexp/readme.md | 34 + node_modules/mocha/node_modules/glob/LICENSE | 21 + .../mocha/node_modules/glob/README.md | 378 + .../mocha/node_modules/glob/common.js | 236 + node_modules/mocha/node_modules/glob/glob.js | 787 + .../glob/node_modules/brace-expansion/LICENSE | 21 + .../node_modules/brace-expansion/README.md | 129 + .../node_modules/brace-expansion/index.js | 201 + .../node_modules/brace-expansion/package.json | 47 + .../glob/node_modules/minimatch/LICENSE | 15 + .../glob/node_modules/minimatch/README.md | 230 + .../glob/node_modules/minimatch/minimatch.js | 947 + .../glob/node_modules/minimatch/package.json | 33 + .../mocha/node_modules/glob/package.json | 52 + node_modules/mocha/node_modules/glob/sync.js | 483 + .../mocha/node_modules/has-flag/index.d.ts | 39 + .../mocha/node_modules/has-flag/index.js | 8 + .../mocha/node_modules/has-flag/license | 9 + .../mocha/node_modules/has-flag/package.json | 46 + .../mocha/node_modules/has-flag/readme.md | 89 + .../mocha/node_modules/minimatch/LICENSE | 15 + .../mocha/node_modules/minimatch/README.md | 244 + .../mocha/node_modules/minimatch/lib/path.js | 4 + .../mocha/node_modules/minimatch/minimatch.js | 901 + .../mocha/node_modules/minimatch/package.json | 32 + node_modules/mocha/node_modules/ms/index.js | 162 + node_modules/mocha/node_modules/ms/license.md | 21 + .../mocha/node_modules/ms/package.json | 38 + node_modules/mocha/node_modules/ms/readme.md | 59 + .../node_modules/supports-color/browser.js | 24 + .../node_modules/supports-color/index.js | 152 + .../mocha/node_modules/supports-color/license | 9 + .../node_modules/supports-color/package.json | 58 + .../node_modules/supports-color/readme.md | 77 + node_modules/mocha/package.json | 186 + node_modules/nanoid/LICENSE | 20 + node_modules/nanoid/README.md | 39 + node_modules/nanoid/async/index.browser.cjs | 34 + node_modules/nanoid/async/index.browser.js | 34 + node_modules/nanoid/async/index.cjs | 35 + node_modules/nanoid/async/index.d.ts | 56 + node_modules/nanoid/async/index.js | 35 + node_modules/nanoid/async/index.native.js | 26 + node_modules/nanoid/async/package.json | 12 + node_modules/nanoid/bin/nanoid.cjs | 55 + node_modules/nanoid/index.browser.cjs | 34 + node_modules/nanoid/index.browser.js | 34 + node_modules/nanoid/index.cjs | 45 + node_modules/nanoid/index.d.ts | 91 + node_modules/nanoid/index.js | 45 + node_modules/nanoid/nanoid.js | 1 + node_modules/nanoid/non-secure/index.cjs | 21 + node_modules/nanoid/non-secure/index.d.ts | 33 + node_modules/nanoid/non-secure/index.js | 21 + node_modules/nanoid/non-secure/package.json | 6 + node_modules/nanoid/package.json | 60 + node_modules/nanoid/url-alphabet/index.cjs | 3 + node_modules/nanoid/url-alphabet/index.js | 3 + node_modules/nanoid/url-alphabet/package.json | 6 + node_modules/p-limit/index.d.ts | 42 + node_modules/p-limit/index.js | 71 + node_modules/p-limit/license | 9 + node_modules/p-limit/package.json | 52 + node_modules/p-limit/readme.md | 101 + node_modules/p-locate/index.d.ts | 53 + node_modules/p-locate/index.js | 50 + node_modules/p-locate/license | 9 + node_modules/p-locate/package.json | 54 + node_modules/p-locate/readme.md | 93 + node_modules/path-exists/index.d.ts | 28 + node_modules/path-exists/index.js | 23 + node_modules/path-exists/license | 9 + node_modules/path-exists/package.json | 39 + node_modules/path-exists/readme.md | 52 + node_modules/randombytes/.travis.yml | 15 + node_modules/randombytes/.zuul.yml | 1 + node_modules/randombytes/LICENSE | 21 + node_modules/randombytes/README.md | 14 + node_modules/randombytes/browser.js | 50 + node_modules/randombytes/index.js | 1 + node_modules/randombytes/package.json | 36 + node_modules/randombytes/test.js | 81 + node_modules/require-directory/.jshintrc | 67 + node_modules/require-directory/.npmignore | 1 + node_modules/require-directory/.travis.yml | 3 + node_modules/require-directory/LICENSE | 22 + .../require-directory/README.markdown | 184 + node_modules/require-directory/index.js | 86 + node_modules/require-directory/package.json | 40 + node_modules/safe-buffer/LICENSE | 21 + node_modules/safe-buffer/README.md | 584 + node_modules/safe-buffer/index.d.ts | 187 + node_modules/safe-buffer/index.js | 65 + node_modules/safe-buffer/package.json | 51 + node_modules/serialize-javascript/LICENSE | 27 + node_modules/serialize-javascript/README.md | 142 + node_modules/serialize-javascript/index.js | 268 + .../serialize-javascript/package.json | 36 + node_modules/string-width/index.d.ts | 29 + node_modules/string-width/index.js | 47 + node_modules/string-width/license | 9 + node_modules/string-width/package.json | 56 + node_modules/string-width/readme.md | 50 + node_modules/strip-ansi/index.d.ts | 17 + node_modules/strip-ansi/index.js | 4 + node_modules/strip-ansi/license | 9 + node_modules/strip-ansi/package.json | 54 + node_modules/strip-ansi/readme.md | 46 + node_modules/strip-json-comments/index.d.ts | 36 + node_modules/strip-json-comments/index.js | 77 + node_modules/strip-json-comments/license | 9 + node_modules/strip-json-comments/package.json | 47 + node_modules/strip-json-comments/readme.md | 78 + node_modules/workerpool/HISTORY.md | 288 + node_modules/workerpool/LICENSE | 201 + node_modules/workerpool/README.md | 496 + node_modules/workerpool/dist/worker.js | 224 + node_modules/workerpool/dist/worker.js.map | 1 + node_modules/workerpool/dist/workerpool.js | 1683 ++ .../workerpool/dist/workerpool.js.map | 1 + .../workerpool/dist/workerpool.min.js | 3 + .../dist/workerpool.min.js.LICENSE.txt | 24 + .../workerpool/dist/workerpool.min.js.map | 1 + node_modules/workerpool/package.json | 52 + node_modules/workerpool/src/Pool.js | 441 + node_modules/workerpool/src/Promise.js | 279 + node_modules/workerpool/src/WorkerHandler.js | 502 + .../workerpool/src/debug-port-allocator.js | 28 + node_modules/workerpool/src/environment.js | 36 + .../src/generated/embeddedWorker.js | 6 + node_modules/workerpool/src/header.js | 24 + node_modules/workerpool/src/index.js | 41 + .../workerpool/src/requireFoolWebpack.js | 8 + node_modules/workerpool/src/types.js | 16 + node_modules/workerpool/src/worker.js | 202 + node_modules/wrap-ansi/index.js | 216 + node_modules/wrap-ansi/license | 9 + .../node_modules/ansi-styles/index.d.ts | 345 + .../node_modules/ansi-styles/index.js | 163 + .../node_modules/ansi-styles/license | 9 + .../node_modules/ansi-styles/package.json | 56 + .../node_modules/ansi-styles/readme.md | 152 + .../node_modules/color-convert/CHANGELOG.md | 54 + .../node_modules/color-convert/LICENSE | 21 + .../node_modules/color-convert/README.md | 68 + .../node_modules/color-convert/conversions.js | 839 + .../node_modules/color-convert/index.js | 81 + .../node_modules/color-convert/package.json | 48 + .../node_modules/color-convert/route.js | 97 + .../wrap-ansi/node_modules/color-name/LICENSE | 8 + .../node_modules/color-name/README.md | 11 + .../node_modules/color-name/index.js | 152 + .../node_modules/color-name/package.json | 28 + node_modules/wrap-ansi/package.json | 62 + node_modules/wrap-ansi/readme.md | 91 + node_modules/y18n/CHANGELOG.md | 100 + node_modules/y18n/LICENSE | 13 + node_modules/y18n/README.md | 127 + node_modules/y18n/build/index.cjs | 203 + node_modules/y18n/build/lib/cjs.js | 6 + node_modules/y18n/build/lib/index.js | 174 + .../y18n/build/lib/platform-shims/node.js | 19 + node_modules/y18n/index.mjs | 8 + node_modules/y18n/package.json | 70 + node_modules/yargs-parser/CHANGELOG.md | 226 + node_modules/yargs-parser/LICENSE.txt | 14 + node_modules/yargs-parser/README.md | 518 + node_modules/yargs-parser/browser.js | 29 + node_modules/yargs-parser/build/index.cjs | 1026 + node_modules/yargs-parser/build/lib/index.js | 53 + .../yargs-parser/build/lib/string-utils.js | 56 + .../build/lib/tokenize-arg-string.js | 35 + .../build/lib/yargs-parser-types.js | 1 + .../yargs-parser/build/lib/yargs-parser.js | 1023 + node_modules/yargs-parser/package.json | 87 + node_modules/yargs-unparser/CHANGELOG.md | 82 + node_modules/yargs-unparser/LICENSE | 21 + node_modules/yargs-unparser/README.md | 86 + node_modules/yargs-unparser/index.js | 166 + node_modules/yargs-unparser/package.json | 49 + node_modules/yargs/CHANGELOG.md | 88 + node_modules/yargs/LICENSE | 21 + node_modules/yargs/README.md | 202 + node_modules/yargs/browser.mjs | 7 + node_modules/yargs/build/index.cjs | 2920 +++ node_modules/yargs/build/lib/argsert.js | 62 + node_modules/yargs/build/lib/command.js | 382 + .../yargs/build/lib/completion-templates.js | 47 + node_modules/yargs/build/lib/completion.js | 128 + node_modules/yargs/build/lib/middleware.js | 53 + node_modules/yargs/build/lib/parse-command.js | 32 + .../yargs/build/lib/typings/common-types.js | 9 + .../build/lib/typings/yargs-parser-types.js | 1 + node_modules/yargs/build/lib/usage.js | 548 + .../yargs/build/lib/utils/apply-extends.js | 59 + .../yargs/build/lib/utils/is-promise.js | 5 + .../yargs/build/lib/utils/levenshtein.js | 26 + .../yargs/build/lib/utils/obj-filter.js | 10 + .../yargs/build/lib/utils/process-argv.js | 17 + .../yargs/build/lib/utils/set-blocking.js | 12 + .../yargs/build/lib/utils/which-module.js | 10 + node_modules/yargs/build/lib/validation.js | 308 + node_modules/yargs/build/lib/yargs-factory.js | 1143 + node_modules/yargs/build/lib/yerror.js | 7 + node_modules/yargs/helpers/helpers.mjs | 10 + node_modules/yargs/helpers/index.js | 14 + node_modules/yargs/helpers/package.json | 3 + node_modules/yargs/index.cjs | 39 + node_modules/yargs/index.mjs | 8 + .../yargs/lib/platform-shims/browser.mjs | 92 + node_modules/yargs/lib/platform-shims/esm.mjs | 67 + node_modules/yargs/locales/be.json | 46 + node_modules/yargs/locales/de.json | 46 + node_modules/yargs/locales/en.json | 51 + node_modules/yargs/locales/es.json | 46 + node_modules/yargs/locales/fi.json | 49 + node_modules/yargs/locales/fr.json | 53 + node_modules/yargs/locales/hi.json | 49 + node_modules/yargs/locales/hu.json | 46 + node_modules/yargs/locales/id.json | 50 + node_modules/yargs/locales/it.json | 46 + node_modules/yargs/locales/ja.json | 51 + node_modules/yargs/locales/ko.json | 49 + node_modules/yargs/locales/nb.json | 44 + node_modules/yargs/locales/nl.json | 49 + node_modules/yargs/locales/nn.json | 44 + node_modules/yargs/locales/pirate.json | 13 + node_modules/yargs/locales/pl.json | 49 + node_modules/yargs/locales/pt.json | 45 + node_modules/yargs/locales/pt_BR.json | 48 + node_modules/yargs/locales/ru.json | 46 + node_modules/yargs/locales/th.json | 46 + node_modules/yargs/locales/tr.json | 48 + node_modules/yargs/locales/zh_CN.json | 48 + node_modules/yargs/locales/zh_TW.json | 47 + node_modules/yargs/package.json | 122 + node_modules/yargs/yargs | 9 + node_modules/yocto-queue/index.d.ts | 56 + node_modules/yocto-queue/index.js | 68 + node_modules/yocto-queue/license | 9 + node_modules/yocto-queue/package.json | 43 + node_modules/yocto-queue/readme.md | 64 + package-lock.json | 1146 +- package.json | 11 +- src/__tests__/full.test.js | 3 +- src/__tests__/valZip.test.js | 13 +- src/valZip.js | 15 + 535 files changed, 100835 insertions(+), 201 deletions(-) create mode 100644 .assets/val-zip.svg create mode 100644 node_modules/.bin/_mocha create mode 100644 node_modules/.bin/_mocha.cmd create mode 100644 node_modules/.bin/_mocha.ps1 create mode 100644 node_modules/.bin/flat create mode 100644 node_modules/.bin/flat.cmd create mode 100644 node_modules/.bin/flat.ps1 create mode 100644 node_modules/.bin/he create mode 100644 node_modules/.bin/he.cmd create mode 100644 node_modules/.bin/he.ps1 create mode 100644 node_modules/.bin/js-yaml create mode 100644 node_modules/.bin/js-yaml.cmd create mode 100644 node_modules/.bin/js-yaml.ps1 create mode 100644 node_modules/.bin/mocha create mode 100644 node_modules/.bin/mocha.cmd create mode 100644 node_modules/.bin/mocha.ps1 create mode 100644 node_modules/.bin/nanoid create mode 100644 node_modules/.bin/nanoid.cmd create mode 100644 node_modules/.bin/nanoid.ps1 create mode 100644 node_modules/ansi-colors/LICENSE create mode 100644 node_modules/ansi-colors/README.md create mode 100644 node_modules/ansi-colors/index.js create mode 100644 node_modules/ansi-colors/package.json create mode 100644 node_modules/ansi-colors/symbols.js create mode 100644 node_modules/ansi-colors/types/index.d.ts create mode 100644 node_modules/ansi-regex/index.d.ts create mode 100644 node_modules/ansi-regex/index.js create mode 100644 node_modules/ansi-regex/license create mode 100644 node_modules/ansi-regex/package.json create mode 100644 node_modules/ansi-regex/readme.md create mode 100644 node_modules/argparse/CHANGELOG.md create mode 100644 node_modules/argparse/LICENSE create mode 100644 node_modules/argparse/README.md create mode 100644 node_modules/argparse/argparse.js create mode 100644 node_modules/argparse/lib/sub.js create mode 100644 node_modules/argparse/lib/textwrap.js create mode 100644 node_modules/argparse/package.json create mode 100644 node_modules/browser-stdout/LICENSE create mode 100644 node_modules/browser-stdout/README.md create mode 100644 node_modules/browser-stdout/index.js create mode 100644 node_modules/browser-stdout/package.json create mode 100644 node_modules/camelcase/index.d.ts create mode 100644 node_modules/camelcase/index.js create mode 100644 node_modules/camelcase/license create mode 100644 node_modules/camelcase/package.json create mode 100644 node_modules/camelcase/readme.md create mode 100644 node_modules/cliui/CHANGELOG.md create mode 100644 node_modules/cliui/LICENSE.txt create mode 100644 node_modules/cliui/README.md create mode 100644 node_modules/cliui/build/index.cjs create mode 100644 node_modules/cliui/build/lib/index.js create mode 100644 node_modules/cliui/build/lib/string-utils.js create mode 100644 node_modules/cliui/index.mjs create mode 100644 node_modules/cliui/package.json create mode 100644 node_modules/decamelize/index.d.ts create mode 100644 node_modules/decamelize/index.js create mode 100644 node_modules/decamelize/license create mode 100644 node_modules/decamelize/package.json create mode 100644 node_modules/decamelize/readme.md create mode 100644 node_modules/diff/CONTRIBUTING.md create mode 100644 node_modules/diff/LICENSE create mode 100644 node_modules/diff/README.md create mode 100644 node_modules/diff/dist/diff.js create mode 100644 node_modules/diff/lib/convert/dmp.js create mode 100644 node_modules/diff/lib/convert/xml.js create mode 100644 node_modules/diff/lib/diff/array.js create mode 100644 node_modules/diff/lib/diff/base.js create mode 100644 node_modules/diff/lib/diff/character.js create mode 100644 node_modules/diff/lib/diff/css.js create mode 100644 node_modules/diff/lib/diff/json.js create mode 100644 node_modules/diff/lib/diff/line.js create mode 100644 node_modules/diff/lib/diff/sentence.js create mode 100644 node_modules/diff/lib/diff/word.js create mode 100644 node_modules/diff/lib/index.es6.js create mode 100644 node_modules/diff/lib/index.js create mode 100644 node_modules/diff/lib/index.mjs create mode 100644 node_modules/diff/lib/patch/apply.js create mode 100644 node_modules/diff/lib/patch/create.js create mode 100644 node_modules/diff/lib/patch/merge.js create mode 100644 node_modules/diff/lib/patch/parse.js create mode 100644 node_modules/diff/lib/util/array.js create mode 100644 node_modules/diff/lib/util/distance-iterator.js create mode 100644 node_modules/diff/lib/util/params.js create mode 100644 node_modules/diff/package.json create mode 100644 node_modules/diff/release-notes.md create mode 100644 node_modules/diff/runtime.js create mode 100644 node_modules/emoji-regex/LICENSE-MIT.txt create mode 100644 node_modules/emoji-regex/README.md create mode 100644 node_modules/emoji-regex/es2015/index.js create mode 100644 node_modules/emoji-regex/es2015/text.js create mode 100644 node_modules/emoji-regex/index.d.ts create mode 100644 node_modules/emoji-regex/index.js create mode 100644 node_modules/emoji-regex/package.json create mode 100644 node_modules/emoji-regex/text.js create mode 100644 node_modules/find-up/index.d.ts create mode 100644 node_modules/find-up/index.js create mode 100644 node_modules/find-up/license create mode 100644 node_modules/find-up/package.json create mode 100644 node_modules/find-up/readme.md create mode 100644 node_modules/flat/.travis.yml create mode 100644 node_modules/flat/LICENSE create mode 100644 node_modules/flat/README.md create mode 100644 node_modules/flat/cli.js create mode 100644 node_modules/flat/index.js create mode 100644 node_modules/flat/package.json create mode 100644 node_modules/flat/test/test.js create mode 100644 node_modules/get-caller-file/LICENSE.md create mode 100644 node_modules/get-caller-file/README.md create mode 100644 node_modules/get-caller-file/index.d.ts create mode 100644 node_modules/get-caller-file/index.js create mode 100644 node_modules/get-caller-file/index.js.map create mode 100644 node_modules/get-caller-file/package.json create mode 100644 node_modules/he/LICENSE-MIT.txt create mode 100644 node_modules/he/README.md create mode 100644 node_modules/he/bin/he create mode 100644 node_modules/he/he.js create mode 100644 node_modules/he/man/he.1 create mode 100644 node_modules/he/package.json create mode 100644 node_modules/is-fullwidth-code-point/index.d.ts create mode 100644 node_modules/is-fullwidth-code-point/index.js create mode 100644 node_modules/is-fullwidth-code-point/license create mode 100644 node_modules/is-fullwidth-code-point/package.json create mode 100644 node_modules/is-fullwidth-code-point/readme.md create mode 100644 node_modules/is-plain-obj/index.d.ts create mode 100644 node_modules/is-plain-obj/index.js create mode 100644 node_modules/is-plain-obj/license create mode 100644 node_modules/is-plain-obj/package.json create mode 100644 node_modules/is-plain-obj/readme.md create mode 100644 node_modules/is-unicode-supported/index.d.ts create mode 100644 node_modules/is-unicode-supported/index.js create mode 100644 node_modules/is-unicode-supported/license create mode 100644 node_modules/is-unicode-supported/package.json create mode 100644 node_modules/is-unicode-supported/readme.md create mode 100644 node_modules/js-yaml/CHANGELOG.md create mode 100644 node_modules/js-yaml/LICENSE create mode 100644 node_modules/js-yaml/README.md create mode 100644 node_modules/js-yaml/bin/js-yaml.js create mode 100644 node_modules/js-yaml/dist/js-yaml.js create mode 100644 node_modules/js-yaml/dist/js-yaml.min.js create mode 100644 node_modules/js-yaml/dist/js-yaml.mjs create mode 100644 node_modules/js-yaml/index.js create mode 100644 node_modules/js-yaml/lib/common.js create mode 100644 node_modules/js-yaml/lib/dumper.js create mode 100644 node_modules/js-yaml/lib/exception.js create mode 100644 node_modules/js-yaml/lib/loader.js create mode 100644 node_modules/js-yaml/lib/schema.js create mode 100644 node_modules/js-yaml/lib/schema/core.js create mode 100644 node_modules/js-yaml/lib/schema/default.js create mode 100644 node_modules/js-yaml/lib/schema/failsafe.js create mode 100644 node_modules/js-yaml/lib/schema/json.js create mode 100644 node_modules/js-yaml/lib/snippet.js create mode 100644 node_modules/js-yaml/lib/type.js create mode 100644 node_modules/js-yaml/lib/type/binary.js create mode 100644 node_modules/js-yaml/lib/type/bool.js create mode 100644 node_modules/js-yaml/lib/type/float.js create mode 100644 node_modules/js-yaml/lib/type/int.js create mode 100644 node_modules/js-yaml/lib/type/map.js create mode 100644 node_modules/js-yaml/lib/type/merge.js create mode 100644 node_modules/js-yaml/lib/type/null.js create mode 100644 node_modules/js-yaml/lib/type/omap.js create mode 100644 node_modules/js-yaml/lib/type/pairs.js create mode 100644 node_modules/js-yaml/lib/type/seq.js create mode 100644 node_modules/js-yaml/lib/type/set.js create mode 100644 node_modules/js-yaml/lib/type/str.js create mode 100644 node_modules/js-yaml/lib/type/timestamp.js create mode 100644 node_modules/js-yaml/package.json create mode 100644 node_modules/locate-path/index.d.ts create mode 100644 node_modules/locate-path/index.js create mode 100644 node_modules/locate-path/license create mode 100644 node_modules/locate-path/package.json create mode 100644 node_modules/locate-path/readme.md create mode 100644 node_modules/log-symbols/browser.js create mode 100644 node_modules/log-symbols/index.d.ts create mode 100644 node_modules/log-symbols/index.js create mode 100644 node_modules/log-symbols/license create mode 100644 node_modules/log-symbols/node_modules/ansi-styles/index.d.ts create mode 100644 node_modules/log-symbols/node_modules/ansi-styles/index.js create mode 100644 node_modules/log-symbols/node_modules/ansi-styles/license create mode 100644 node_modules/log-symbols/node_modules/ansi-styles/package.json create mode 100644 node_modules/log-symbols/node_modules/ansi-styles/readme.md create mode 100644 node_modules/log-symbols/node_modules/chalk/index.d.ts create mode 100644 node_modules/log-symbols/node_modules/chalk/license create mode 100644 node_modules/log-symbols/node_modules/chalk/package.json create mode 100644 node_modules/log-symbols/node_modules/chalk/readme.md create mode 100644 node_modules/log-symbols/node_modules/chalk/source/index.js create mode 100644 node_modules/log-symbols/node_modules/chalk/source/templates.js create mode 100644 node_modules/log-symbols/node_modules/chalk/source/util.js create mode 100644 node_modules/log-symbols/node_modules/color-convert/CHANGELOG.md create mode 100644 node_modules/log-symbols/node_modules/color-convert/LICENSE create mode 100644 node_modules/log-symbols/node_modules/color-convert/README.md create mode 100644 node_modules/log-symbols/node_modules/color-convert/conversions.js create mode 100644 node_modules/log-symbols/node_modules/color-convert/index.js create mode 100644 node_modules/log-symbols/node_modules/color-convert/package.json create mode 100644 node_modules/log-symbols/node_modules/color-convert/route.js create mode 100644 node_modules/log-symbols/node_modules/color-name/LICENSE create mode 100644 node_modules/log-symbols/node_modules/color-name/README.md create mode 100644 node_modules/log-symbols/node_modules/color-name/index.js create mode 100644 node_modules/log-symbols/node_modules/color-name/package.json create mode 100644 node_modules/log-symbols/node_modules/has-flag/index.d.ts create mode 100644 node_modules/log-symbols/node_modules/has-flag/index.js create mode 100644 node_modules/log-symbols/node_modules/has-flag/license create mode 100644 node_modules/log-symbols/node_modules/has-flag/package.json create mode 100644 node_modules/log-symbols/node_modules/has-flag/readme.md create mode 100644 node_modules/log-symbols/node_modules/supports-color/browser.js create mode 100644 node_modules/log-symbols/node_modules/supports-color/index.js create mode 100644 node_modules/log-symbols/node_modules/supports-color/license create mode 100644 node_modules/log-symbols/node_modules/supports-color/package.json create mode 100644 node_modules/log-symbols/node_modules/supports-color/readme.md create mode 100644 node_modules/log-symbols/package.json create mode 100644 node_modules/log-symbols/readme.md create mode 100644 node_modules/mocha/LICENSE create mode 100644 node_modules/mocha/README.md create mode 100644 node_modules/mocha/bin/_mocha create mode 100644 node_modules/mocha/bin/mocha.js create mode 100644 node_modules/mocha/browser-entry.js create mode 100644 node_modules/mocha/index.js create mode 100644 node_modules/mocha/lib/browser/highlight-tags.js create mode 100644 node_modules/mocha/lib/browser/parse-query.js create mode 100644 node_modules/mocha/lib/browser/progress.js create mode 100644 node_modules/mocha/lib/browser/template.html create mode 100644 node_modules/mocha/lib/cli/cli.js create mode 100644 node_modules/mocha/lib/cli/collect-files.js create mode 100644 node_modules/mocha/lib/cli/commands.js create mode 100644 node_modules/mocha/lib/cli/config.js create mode 100644 node_modules/mocha/lib/cli/index.js create mode 100644 node_modules/mocha/lib/cli/init.js create mode 100644 node_modules/mocha/lib/cli/lookup-files.js create mode 100644 node_modules/mocha/lib/cli/node-flags.js create mode 100644 node_modules/mocha/lib/cli/one-and-dones.js create mode 100644 node_modules/mocha/lib/cli/options.js create mode 100644 node_modules/mocha/lib/cli/run-helpers.js create mode 100644 node_modules/mocha/lib/cli/run-option-metadata.js create mode 100644 node_modules/mocha/lib/cli/run.js create mode 100644 node_modules/mocha/lib/cli/watch-run.js create mode 100644 node_modules/mocha/lib/context.js create mode 100644 node_modules/mocha/lib/errors.js create mode 100644 node_modules/mocha/lib/hook.js create mode 100644 node_modules/mocha/lib/interfaces/bdd.js create mode 100644 node_modules/mocha/lib/interfaces/common.js create mode 100644 node_modules/mocha/lib/interfaces/exports.js create mode 100644 node_modules/mocha/lib/interfaces/index.js create mode 100644 node_modules/mocha/lib/interfaces/qunit.js create mode 100644 node_modules/mocha/lib/interfaces/tdd.js create mode 100644 node_modules/mocha/lib/mocha.js create mode 100644 node_modules/mocha/lib/mocharc.json create mode 100644 node_modules/mocha/lib/nodejs/buffered-worker-pool.js create mode 100644 node_modules/mocha/lib/nodejs/esm-utils.js create mode 100644 node_modules/mocha/lib/nodejs/file-unloader.js create mode 100644 node_modules/mocha/lib/nodejs/parallel-buffered-runner.js create mode 100644 node_modules/mocha/lib/nodejs/reporters/parallel-buffered.js create mode 100644 node_modules/mocha/lib/nodejs/serializer.js create mode 100644 node_modules/mocha/lib/nodejs/worker.js create mode 100644 node_modules/mocha/lib/pending.js create mode 100644 node_modules/mocha/lib/plugin-loader.js create mode 100644 node_modules/mocha/lib/reporters/base.js create mode 100644 node_modules/mocha/lib/reporters/doc.js create mode 100644 node_modules/mocha/lib/reporters/dot.js create mode 100644 node_modules/mocha/lib/reporters/html.js create mode 100644 node_modules/mocha/lib/reporters/index.js create mode 100644 node_modules/mocha/lib/reporters/json-stream.js create mode 100644 node_modules/mocha/lib/reporters/json.js create mode 100644 node_modules/mocha/lib/reporters/landing.js create mode 100644 node_modules/mocha/lib/reporters/list.js create mode 100644 node_modules/mocha/lib/reporters/markdown.js create mode 100644 node_modules/mocha/lib/reporters/min.js create mode 100644 node_modules/mocha/lib/reporters/nyan.js create mode 100644 node_modules/mocha/lib/reporters/progress.js create mode 100644 node_modules/mocha/lib/reporters/spec.js create mode 100644 node_modules/mocha/lib/reporters/tap.js create mode 100644 node_modules/mocha/lib/reporters/xunit.js create mode 100644 node_modules/mocha/lib/runnable.js create mode 100644 node_modules/mocha/lib/runner.js create mode 100644 node_modules/mocha/lib/stats-collector.js create mode 100644 node_modules/mocha/lib/suite.js create mode 100644 node_modules/mocha/lib/test.js create mode 100644 node_modules/mocha/lib/utils.js create mode 100644 node_modules/mocha/mocha.css create mode 100644 node_modules/mocha/mocha.js create mode 100644 node_modules/mocha/mocha.js.map create mode 100644 node_modules/mocha/node_modules/escape-string-regexp/index.d.ts create mode 100644 node_modules/mocha/node_modules/escape-string-regexp/index.js create mode 100644 node_modules/mocha/node_modules/escape-string-regexp/license create mode 100644 node_modules/mocha/node_modules/escape-string-regexp/package.json create mode 100644 node_modules/mocha/node_modules/escape-string-regexp/readme.md create mode 100644 node_modules/mocha/node_modules/glob/LICENSE create mode 100644 node_modules/mocha/node_modules/glob/README.md create mode 100644 node_modules/mocha/node_modules/glob/common.js create mode 100644 node_modules/mocha/node_modules/glob/glob.js create mode 100644 node_modules/mocha/node_modules/glob/node_modules/brace-expansion/LICENSE create mode 100644 node_modules/mocha/node_modules/glob/node_modules/brace-expansion/README.md create mode 100644 node_modules/mocha/node_modules/glob/node_modules/brace-expansion/index.js create mode 100644 node_modules/mocha/node_modules/glob/node_modules/brace-expansion/package.json create mode 100644 node_modules/mocha/node_modules/glob/node_modules/minimatch/LICENSE create mode 100644 node_modules/mocha/node_modules/glob/node_modules/minimatch/README.md create mode 100644 node_modules/mocha/node_modules/glob/node_modules/minimatch/minimatch.js create mode 100644 node_modules/mocha/node_modules/glob/node_modules/minimatch/package.json create mode 100644 node_modules/mocha/node_modules/glob/package.json create mode 100644 node_modules/mocha/node_modules/glob/sync.js create mode 100644 node_modules/mocha/node_modules/has-flag/index.d.ts create mode 100644 node_modules/mocha/node_modules/has-flag/index.js create mode 100644 node_modules/mocha/node_modules/has-flag/license create mode 100644 node_modules/mocha/node_modules/has-flag/package.json create mode 100644 node_modules/mocha/node_modules/has-flag/readme.md create mode 100644 node_modules/mocha/node_modules/minimatch/LICENSE create mode 100644 node_modules/mocha/node_modules/minimatch/README.md create mode 100644 node_modules/mocha/node_modules/minimatch/lib/path.js create mode 100644 node_modules/mocha/node_modules/minimatch/minimatch.js create mode 100644 node_modules/mocha/node_modules/minimatch/package.json create mode 100644 node_modules/mocha/node_modules/ms/index.js create mode 100644 node_modules/mocha/node_modules/ms/license.md create mode 100644 node_modules/mocha/node_modules/ms/package.json create mode 100644 node_modules/mocha/node_modules/ms/readme.md create mode 100644 node_modules/mocha/node_modules/supports-color/browser.js create mode 100644 node_modules/mocha/node_modules/supports-color/index.js create mode 100644 node_modules/mocha/node_modules/supports-color/license create mode 100644 node_modules/mocha/node_modules/supports-color/package.json create mode 100644 node_modules/mocha/node_modules/supports-color/readme.md create mode 100644 node_modules/mocha/package.json create mode 100644 node_modules/nanoid/LICENSE create mode 100644 node_modules/nanoid/README.md create mode 100644 node_modules/nanoid/async/index.browser.cjs create mode 100644 node_modules/nanoid/async/index.browser.js create mode 100644 node_modules/nanoid/async/index.cjs create mode 100644 node_modules/nanoid/async/index.d.ts create mode 100644 node_modules/nanoid/async/index.js create mode 100644 node_modules/nanoid/async/index.native.js create mode 100644 node_modules/nanoid/async/package.json create mode 100644 node_modules/nanoid/bin/nanoid.cjs create mode 100644 node_modules/nanoid/index.browser.cjs create mode 100644 node_modules/nanoid/index.browser.js create mode 100644 node_modules/nanoid/index.cjs create mode 100644 node_modules/nanoid/index.d.ts create mode 100644 node_modules/nanoid/index.js create mode 100644 node_modules/nanoid/nanoid.js create mode 100644 node_modules/nanoid/non-secure/index.cjs create mode 100644 node_modules/nanoid/non-secure/index.d.ts create mode 100644 node_modules/nanoid/non-secure/index.js create mode 100644 node_modules/nanoid/non-secure/package.json create mode 100644 node_modules/nanoid/package.json create mode 100644 node_modules/nanoid/url-alphabet/index.cjs create mode 100644 node_modules/nanoid/url-alphabet/index.js create mode 100644 node_modules/nanoid/url-alphabet/package.json create mode 100644 node_modules/p-limit/index.d.ts create mode 100644 node_modules/p-limit/index.js create mode 100644 node_modules/p-limit/license create mode 100644 node_modules/p-limit/package.json create mode 100644 node_modules/p-limit/readme.md create mode 100644 node_modules/p-locate/index.d.ts create mode 100644 node_modules/p-locate/index.js create mode 100644 node_modules/p-locate/license create mode 100644 node_modules/p-locate/package.json create mode 100644 node_modules/p-locate/readme.md create mode 100644 node_modules/path-exists/index.d.ts create mode 100644 node_modules/path-exists/index.js create mode 100644 node_modules/path-exists/license create mode 100644 node_modules/path-exists/package.json create mode 100644 node_modules/path-exists/readme.md create mode 100644 node_modules/randombytes/.travis.yml create mode 100644 node_modules/randombytes/.zuul.yml create mode 100644 node_modules/randombytes/LICENSE create mode 100644 node_modules/randombytes/README.md create mode 100644 node_modules/randombytes/browser.js create mode 100644 node_modules/randombytes/index.js create mode 100644 node_modules/randombytes/package.json create mode 100644 node_modules/randombytes/test.js create mode 100644 node_modules/require-directory/.jshintrc create mode 100644 node_modules/require-directory/.npmignore create mode 100644 node_modules/require-directory/.travis.yml create mode 100644 node_modules/require-directory/LICENSE create mode 100644 node_modules/require-directory/README.markdown create mode 100644 node_modules/require-directory/index.js create mode 100644 node_modules/require-directory/package.json create mode 100644 node_modules/safe-buffer/LICENSE create mode 100644 node_modules/safe-buffer/README.md create mode 100644 node_modules/safe-buffer/index.d.ts create mode 100644 node_modules/safe-buffer/index.js create mode 100644 node_modules/safe-buffer/package.json create mode 100644 node_modules/serialize-javascript/LICENSE create mode 100644 node_modules/serialize-javascript/README.md create mode 100644 node_modules/serialize-javascript/index.js create mode 100644 node_modules/serialize-javascript/package.json create mode 100644 node_modules/string-width/index.d.ts create mode 100644 node_modules/string-width/index.js create mode 100644 node_modules/string-width/license create mode 100644 node_modules/string-width/package.json create mode 100644 node_modules/string-width/readme.md create mode 100644 node_modules/strip-ansi/index.d.ts create mode 100644 node_modules/strip-ansi/index.js create mode 100644 node_modules/strip-ansi/license create mode 100644 node_modules/strip-ansi/package.json create mode 100644 node_modules/strip-ansi/readme.md create mode 100644 node_modules/strip-json-comments/index.d.ts create mode 100644 node_modules/strip-json-comments/index.js create mode 100644 node_modules/strip-json-comments/license create mode 100644 node_modules/strip-json-comments/package.json create mode 100644 node_modules/strip-json-comments/readme.md create mode 100644 node_modules/workerpool/HISTORY.md create mode 100644 node_modules/workerpool/LICENSE create mode 100644 node_modules/workerpool/README.md create mode 100644 node_modules/workerpool/dist/worker.js create mode 100644 node_modules/workerpool/dist/worker.js.map create mode 100644 node_modules/workerpool/dist/workerpool.js create mode 100644 node_modules/workerpool/dist/workerpool.js.map create mode 100644 node_modules/workerpool/dist/workerpool.min.js create mode 100644 node_modules/workerpool/dist/workerpool.min.js.LICENSE.txt create mode 100644 node_modules/workerpool/dist/workerpool.min.js.map create mode 100644 node_modules/workerpool/package.json create mode 100644 node_modules/workerpool/src/Pool.js create mode 100644 node_modules/workerpool/src/Promise.js create mode 100644 node_modules/workerpool/src/WorkerHandler.js create mode 100644 node_modules/workerpool/src/debug-port-allocator.js create mode 100644 node_modules/workerpool/src/environment.js create mode 100644 node_modules/workerpool/src/generated/embeddedWorker.js create mode 100644 node_modules/workerpool/src/header.js create mode 100644 node_modules/workerpool/src/index.js create mode 100644 node_modules/workerpool/src/requireFoolWebpack.js create mode 100644 node_modules/workerpool/src/types.js create mode 100644 node_modules/workerpool/src/worker.js create mode 100644 node_modules/wrap-ansi/index.js create mode 100644 node_modules/wrap-ansi/license create mode 100644 node_modules/wrap-ansi/node_modules/ansi-styles/index.d.ts create mode 100644 node_modules/wrap-ansi/node_modules/ansi-styles/index.js create mode 100644 node_modules/wrap-ansi/node_modules/ansi-styles/license create mode 100644 node_modules/wrap-ansi/node_modules/ansi-styles/package.json create mode 100644 node_modules/wrap-ansi/node_modules/ansi-styles/readme.md create mode 100644 node_modules/wrap-ansi/node_modules/color-convert/CHANGELOG.md create mode 100644 node_modules/wrap-ansi/node_modules/color-convert/LICENSE create mode 100644 node_modules/wrap-ansi/node_modules/color-convert/README.md create mode 100644 node_modules/wrap-ansi/node_modules/color-convert/conversions.js create mode 100644 node_modules/wrap-ansi/node_modules/color-convert/index.js create mode 100644 node_modules/wrap-ansi/node_modules/color-convert/package.json create mode 100644 node_modules/wrap-ansi/node_modules/color-convert/route.js create mode 100644 node_modules/wrap-ansi/node_modules/color-name/LICENSE create mode 100644 node_modules/wrap-ansi/node_modules/color-name/README.md create mode 100644 node_modules/wrap-ansi/node_modules/color-name/index.js create mode 100644 node_modules/wrap-ansi/node_modules/color-name/package.json create mode 100644 node_modules/wrap-ansi/package.json create mode 100644 node_modules/wrap-ansi/readme.md create mode 100644 node_modules/y18n/CHANGELOG.md create mode 100644 node_modules/y18n/LICENSE create mode 100644 node_modules/y18n/README.md create mode 100644 node_modules/y18n/build/index.cjs create mode 100644 node_modules/y18n/build/lib/cjs.js create mode 100644 node_modules/y18n/build/lib/index.js create mode 100644 node_modules/y18n/build/lib/platform-shims/node.js create mode 100644 node_modules/y18n/index.mjs create mode 100644 node_modules/y18n/package.json create mode 100644 node_modules/yargs-parser/CHANGELOG.md create mode 100644 node_modules/yargs-parser/LICENSE.txt create mode 100644 node_modules/yargs-parser/README.md create mode 100644 node_modules/yargs-parser/browser.js create mode 100644 node_modules/yargs-parser/build/index.cjs create mode 100644 node_modules/yargs-parser/build/lib/index.js create mode 100644 node_modules/yargs-parser/build/lib/string-utils.js create mode 100644 node_modules/yargs-parser/build/lib/tokenize-arg-string.js create mode 100644 node_modules/yargs-parser/build/lib/yargs-parser-types.js create mode 100644 node_modules/yargs-parser/build/lib/yargs-parser.js create mode 100644 node_modules/yargs-parser/package.json create mode 100644 node_modules/yargs-unparser/CHANGELOG.md create mode 100644 node_modules/yargs-unparser/LICENSE create mode 100644 node_modules/yargs-unparser/README.md create mode 100644 node_modules/yargs-unparser/index.js create mode 100644 node_modules/yargs-unparser/package.json create mode 100644 node_modules/yargs/CHANGELOG.md create mode 100644 node_modules/yargs/LICENSE create mode 100644 node_modules/yargs/README.md create mode 100644 node_modules/yargs/browser.mjs create mode 100644 node_modules/yargs/build/index.cjs create mode 100644 node_modules/yargs/build/lib/argsert.js create mode 100644 node_modules/yargs/build/lib/command.js create mode 100644 node_modules/yargs/build/lib/completion-templates.js create mode 100644 node_modules/yargs/build/lib/completion.js create mode 100644 node_modules/yargs/build/lib/middleware.js create mode 100644 node_modules/yargs/build/lib/parse-command.js create mode 100644 node_modules/yargs/build/lib/typings/common-types.js create mode 100644 node_modules/yargs/build/lib/typings/yargs-parser-types.js create mode 100644 node_modules/yargs/build/lib/usage.js create mode 100644 node_modules/yargs/build/lib/utils/apply-extends.js create mode 100644 node_modules/yargs/build/lib/utils/is-promise.js create mode 100644 node_modules/yargs/build/lib/utils/levenshtein.js create mode 100644 node_modules/yargs/build/lib/utils/obj-filter.js create mode 100644 node_modules/yargs/build/lib/utils/process-argv.js create mode 100644 node_modules/yargs/build/lib/utils/set-blocking.js create mode 100644 node_modules/yargs/build/lib/utils/which-module.js create mode 100644 node_modules/yargs/build/lib/validation.js create mode 100644 node_modules/yargs/build/lib/yargs-factory.js create mode 100644 node_modules/yargs/build/lib/yerror.js create mode 100644 node_modules/yargs/helpers/helpers.mjs create mode 100644 node_modules/yargs/helpers/index.js create mode 100644 node_modules/yargs/helpers/package.json create mode 100644 node_modules/yargs/index.cjs create mode 100644 node_modules/yargs/index.mjs create mode 100644 node_modules/yargs/lib/platform-shims/browser.mjs create mode 100644 node_modules/yargs/lib/platform-shims/esm.mjs create mode 100644 node_modules/yargs/locales/be.json create mode 100644 node_modules/yargs/locales/de.json create mode 100644 node_modules/yargs/locales/en.json create mode 100644 node_modules/yargs/locales/es.json create mode 100644 node_modules/yargs/locales/fi.json create mode 100644 node_modules/yargs/locales/fr.json create mode 100644 node_modules/yargs/locales/hi.json create mode 100644 node_modules/yargs/locales/hu.json create mode 100644 node_modules/yargs/locales/id.json create mode 100644 node_modules/yargs/locales/it.json create mode 100644 node_modules/yargs/locales/ja.json create mode 100644 node_modules/yargs/locales/ko.json create mode 100644 node_modules/yargs/locales/nb.json create mode 100644 node_modules/yargs/locales/nl.json create mode 100644 node_modules/yargs/locales/nn.json create mode 100644 node_modules/yargs/locales/pirate.json create mode 100644 node_modules/yargs/locales/pl.json create mode 100644 node_modules/yargs/locales/pt.json create mode 100644 node_modules/yargs/locales/pt_BR.json create mode 100644 node_modules/yargs/locales/ru.json create mode 100644 node_modules/yargs/locales/th.json create mode 100644 node_modules/yargs/locales/tr.json create mode 100644 node_modules/yargs/locales/zh_CN.json create mode 100644 node_modules/yargs/locales/zh_TW.json create mode 100644 node_modules/yargs/package.json create mode 100644 node_modules/yargs/yargs create mode 100644 node_modules/yocto-queue/index.d.ts create mode 100644 node_modules/yocto-queue/index.js create mode 100644 node_modules/yocto-queue/license create mode 100644 node_modules/yocto-queue/package.json create mode 100644 node_modules/yocto-queue/readme.md diff --git a/.assets/val-zip.svg b/.assets/val-zip.svg new file mode 100644 index 0000000..8aa008a --- /dev/null +++ b/.assets/val-zip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/README.md b/README.md index 41b2643..173181a 100644 --- a/README.md +++ b/README.md @@ -8,20 +8,9 @@ Not every 5 digit number is automatically a zip code... As of now Regular Expres So Why val-zip? Because it is free for commercial use and it is super fast and light weight with only 305kB size. -As of now the Regular Expressions for +![img](./.assets/val-zip.svg) -* Germany -* Austria -* Switzerland -* USA (5-Digit version) -* Belgium -* Denmark -* Czechia -* Finland -* Norway -* Italy - -are available with more coming asap. +As of now the Regular Expressions for Germany, Austria, Switzerland, USA (5-Digit version), Belgium, Denmark, Czechia, Finland, Norway, Italy, Spain, Estonia, Iceland, France, Luxembourg are available with more coming asap. ## Usage @@ -64,31 +53,33 @@ valZip(inputZip_2, userCountry) // returns true Note: All data is heavily modified and does not resemble the original data base at all -| country | last update | license | source | -| ------------- | ----------- | :----------------------------------------------------------------------------------------------------------------------------------: | ---------------------------------------- | -| Austria | 04.01.2023 | none | Österreichische Post Aktiengesellschaft | -| Belgium | 21.11.2021 | none | Bpost | -| Switzerland | 01.01.2023 | [CC-BY](https://creativecommons.org/licenses/by/4.0/legalcode): [Die Schweizerische Post](https://swisspost.opendatasoft.com/pages/home/) | Die Schweizerische Post | -| Czechia | 01.01.2023 | none | Česká pošta | -| Germany | 01.06.2019 | none | Launix | -| Denmark | 22.06.2022 | none | PostNord Danmark | -| United States | 31.12.2020 | none | Internal Revenue Service, US Census | -| Norway | 01.10.2022 | none | Osten Norge AS | -| Finland | 30.01.2023 | none | Posti Group Oy | -| Italy | 26.11.2020 | none | Eurostat | +| country | last update | license | source | +| ------------- | ----------- | :---------------------------------------------------------: | ---------------------------------------------------------------------- | +| Austria | 04.01.2023 | none | Österreichische Post Aktiengesellschaft | +| Belgium | 21.11.2021 | none | Bpost | +| Switzerland | 01.01.2023 | [CC-BY](https://creativecommons.org/licenses/by/4.0/legalcode) | [Die Schweizerische Post](https://swisspost.opendatasoft.com/pages/home/) | +| Czechia | 01.01.2023 | none | Česká pošta | +| Germany | 01.06.2019 | none | Launix | +| Denmark | 22.06.2022 | none | PostNord Danmark | +| United States | 31.12.2020 | none | Internal Revenue Service, US Census | +| Norway | 01.10.2022 | none | Osten Norge AS | +| Finland | 30.01.2023 | none | Posti Group Oy | +| Italy | 26.11.2020 | Eurostat free re-use of data | Eurostat | +| Spain | 26.11.2020 | Eurostat free re-use of data | Eurostat | +| Estonia | 05.02.2023 | none | Republic of Estonia | +| Iceland | 06.02.2023 | none | Íslandspóstur | +| France | 06.02.2023 | Open License v2.0 | [La Poste Groupe](https://www.lapostegroupe.com/fr) | +| Luxembourg | 06.02.2023 | CC-0 | Portail Open Data | Some Countries are missing, just because the official zipcode database is either paywalled or entirely copyrighted. This is the List of countries I am unable to source data from: -| country | limitation | source | -| --------- | ---------------- | ------------------------------------- | -| Poland | only with permit | Poczta Polska Spółka Akcyjna | -| Sweden | paid only | Postnummerservice Norden AB | -| Australia | paid only | Australia Post | -| Spain | paid only | Sociedad Estatal Correos y Telegrafos | - -
+| country | limitation | source | +| --------- | ---------------- | ------------------------------ | +| Poland | only with permit | Poczta Polska Spółka Akcyjna | +| Sweden | paid only | Postnummerservice Norden AB | +| Australia | paid only | Australia Post | -MIT License +MIT License Copyright (c) 2022-today Leonhard Maier diff --git a/dist/val-zip.cjs b/dist/val-zip.cjs index 366213b..afa7d10 100644 --- a/dist/val-zip.cjs +++ b/dist/val-zip.cjs @@ -28,7 +28,12 @@ function valZip(zipCode, countryCode) { FI: new RegExp("^([7890156342]((?<=7)[9042785136]((?<=9)[712659834]((?<=7)[0]((?<=0)[014])|(?<=1)[9504863]((?<=9)[0]|(?<=5)[0]|(?<=0)[104]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[653]((?<=6)[5]|(?<=5)[5]|(?<=3)[0])|(?<=6)[620938]((?<=6)[0]|(?<=2)[0]|(?<=0)[104]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0])|(?<=5)[2]((?<=2)[0])|(?<=9)[41]((?<=4)[0]|(?<=1)[0])|(?<=8)[3916825]((?<=3)[0]|(?<=9)[5]|(?<=1)[0]|(?<=6)[0]|(?<=8)[5]|(?<=2)[0]|(?<=5)[0])|(?<=3)[53]((?<=5)[0]|(?<=3)[0])|(?<=4)[81]((?<=8)[04]|(?<=1)[0]))|(?<=0)[1584962370]((?<=1)[051]((?<=0)[1054]|(?<=5)[014]|(?<=1)[1054])|(?<=5)[0]((?<=0)[014])|(?<=8)[7024]((?<=7)[01]|(?<=0)[0154]|(?<=2)[1054]|(?<=4)[04])|(?<=4)[026]((?<=0)[10]|(?<=2)[1054]|(?<=6)[104])|(?<=9)[140]((?<=1)[014]|(?<=4)[0]|(?<=0)[01])|(?<=6)[20]((?<=2)[1054]|(?<=0)[014])|(?<=2)[81064]((?<=8)[04]|(?<=1)[104]|(?<=0)[014]|(?<=6)[0]|(?<=4)[0])|(?<=3)[04]((?<=0)[104]|(?<=4)[04])|(?<=7)[80]((?<=8)[1054]|(?<=0)[1054])|(?<=0)[0124938]((?<=0)[6]|(?<=1)[0]|(?<=2)[9]|(?<=4)[9]|(?<=9)[0]|(?<=3)[2]|(?<=8)[6]))|(?<=4)[263751498]((?<=2)[50473]((?<=5)[0]|(?<=0)[04]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0])|(?<=6)[73184]((?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[0]|(?<=4)[0])|(?<=3)[08649]((?<=0)[104]|(?<=8)[0]|(?<=6)[0]|(?<=4)[05]|(?<=9)[0])|(?<=7)[0427]((?<=0)[1054]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=5)[49152]((?<=4)[0]|(?<=9)[05]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0])|(?<=1)[2306745]((?<=2)[0154]|(?<=3)[054]|(?<=0)[1054]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0])|(?<=4)[729]((?<=7)[0]|(?<=2)[0]|(?<=9)[0])|(?<=9)[84]((?<=8)[0]|(?<=4)[0])|(?<=8)[4]((?<=4)[0]))|(?<=2)[325491687]((?<=3)[165830]((?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[04])|(?<=2)[21]((?<=2)[0]|(?<=1)[10])|(?<=5)[5317]((?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0])|(?<=4)[903]((?<=9)[0]|(?<=0)[014]|(?<=3)[0])|(?<=9)[538]((?<=5)[0]|(?<=3)[0]|(?<=8)[0])|(?<=1)[40]((?<=4)[0]|(?<=0)[104])|(?<=6)[03]((?<=0)[104]|(?<=3)[0])|(?<=8)[14]((?<=1)[0]|(?<=4)[0])|(?<=7)[41]((?<=4)[0]|(?<=1)[0]))|(?<=7)[453169278]((?<=4)[863]((?<=8)[0]|(?<=6)[0]|(?<=3)[04])|(?<=5)[872]((?<=8)[0]|(?<=7)[0]|(?<=2)[0])|(?<=3)[8253]((?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[421]((?<=4)[0]|(?<=2)[0]|(?<=1)[0])|(?<=6)[309]((?<=3)[0]|(?<=0)[014]|(?<=9)[0])|(?<=9)[631]((?<=6)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[42]((?<=4)[0]|(?<=2)[0])|(?<=7)[07]((?<=0)[04]|(?<=7)[0])|(?<=8)[0]((?<=0)[0]))|(?<=8)[24398576]((?<=2)[105]((?<=1)[04]|(?<=0)[1054]|(?<=5)[04])|(?<=4)[08]((?<=0)[0]|(?<=8)[0])|(?<=3)[01]((?<=0)[074]|(?<=1)[0])|(?<=9)[0]((?<=0)[0])|(?<=8)[587]((?<=5)[0]|(?<=8)[0]|(?<=7)[0])|(?<=5)[0]((?<=0)[0])|(?<=7)[1]((?<=1)[0])|(?<=6)[1]((?<=1)[0]))|(?<=5)[59786]((?<=5)[03]((?<=0)[1054]|(?<=3)[1054])|(?<=9)[9473]((?<=9)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0])|(?<=7)[91704]((?<=9)[0]|(?<=1)[0]|(?<=7)[0]|(?<=0)[104]|(?<=4)[0])|(?<=8)[94]((?<=9)[0]|(?<=4)[0])|(?<=6)[85]((?<=8)[0]|(?<=5)[0]))|(?<=1)[4738261590]((?<=4)[6987]((?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=7)[04])|(?<=7)[624753]((?<=6)[0]|(?<=2)[0]|(?<=4)[50]|(?<=7)[5]|(?<=5)[04]|(?<=3)[0])|(?<=3)[3186]((?<=3)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[094275]((?<=0)[0154]|(?<=9)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=2)[06481]((?<=0)[104]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0])|(?<=6)[8517496]((?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0])|(?<=1)[7536]((?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[04])|(?<=5)[72]((?<=7)[0]|(?<=2)[0])|(?<=9)[2651]((?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[6]))|(?<=3)[382716594]((?<=3)[50612]((?<=5)[0]|(?<=0)[104]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0])|(?<=8)[531]((?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[503]((?<=5)[0]|(?<=0)[014]|(?<=3)[0])|(?<=7)[731]((?<=7)[0]|(?<=3)[0]|(?<=1)[0])|(?<=1)[0213]((?<=0)[1054]|(?<=2)[0]|(?<=1)[0]|(?<=3)[4])|(?<=6)[0472]((?<=0)[104]|(?<=4)[05]|(?<=7)[0]|(?<=2)[0])|(?<=5)[0]((?<=0)[014])|(?<=9)[097]((?<=0)[104]|(?<=9)[0]|(?<=7)[0])|(?<=4)[176]((?<=1)[0]|(?<=7)[0]|(?<=6)[04]))|(?<=6)[197682]((?<=1)[0352]((?<=0)[1054]|(?<=3)[0]|(?<=5)[04]|(?<=2)[0])|(?<=9)[4]((?<=4)[0])|(?<=7)[8]((?<=8)[0])|(?<=6)[2]((?<=2)[0])|(?<=8)[5]((?<=5)[04])|(?<=2)[8]((?<=8)[0])))|(?<=8)[6039251874]((?<=6)[259674813]((?<=2)[4132]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=5)[531]((?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=9)[80]((?<=8)[0]|(?<=0)[0])|(?<=6)[8095]((?<=8)[0]|(?<=0)[104]|(?<=9)[0]|(?<=5)[0])|(?<=7)[91]((?<=9)[0]|(?<=1)[04])|(?<=4)[87604]((?<=8)[0]|(?<=7)[0]|(?<=6)[0]|(?<=0)[104]|(?<=4)[0])|(?<=8)[5107]((?<=5)[0]|(?<=1)[0]|(?<=0)[104]|(?<=7)[0])|(?<=1)[1706]((?<=1)[0]|(?<=7)[0]|(?<=0)[104]|(?<=6)[0])|(?<=3)[605]((?<=6)[0]|(?<=0)[104]|(?<=5)[0]))|(?<=0)[178324590]((?<=1)[306471]((?<=3)[0]|(?<=0)[1054]|(?<=6)[1054]|(?<=4)[1054]|(?<=7)[05]|(?<=1)[04])|(?<=7)[7918]((?<=7)[04]|(?<=9)[01]|(?<=1)[04]|(?<=8)[0])|(?<=8)[5]((?<=5)[0])|(?<=3)[3]((?<=3)[04])|(?<=2)[30216]((?<=3)[04]|(?<=0)[0]|(?<=2)[054]|(?<=1)[0]|(?<=6)[04])|(?<=4)[0]((?<=0)[1054])|(?<=5)[1]((?<=1)[01])|(?<=9)[1]((?<=1)[0])|(?<=0)[2]((?<=2)[0]))|(?<=3)[94738516]((?<=9)[406158]((?<=4)[0]|(?<=0)[014]|(?<=6)[0]|(?<=1)[50]|(?<=5)[0]|(?<=8)[5])|(?<=4)[53860]((?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0])|(?<=7)[50826]((?<=5)[0]|(?<=0)[014]|(?<=8)[0]|(?<=2)[0]|(?<=6)[0])|(?<=3)[324]((?<=3)[0]|(?<=2)[0]|(?<=4)[0])|(?<=8)[738425]((?<=7)[0]|(?<=3)[05]|(?<=8)[0]|(?<=4)[0]|(?<=2)[5]|(?<=5)[5])|(?<=5)[50]((?<=5)[0]|(?<=0)[1504])|(?<=1)[36504]((?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[10]|(?<=4)[0])|(?<=6)[63]((?<=6)[0]|(?<=3)[0]))|(?<=9)[156287439]((?<=1)[14]((?<=1)[0]|(?<=4)[0])|(?<=5)[46]((?<=4)[0]|(?<=6)[0])|(?<=6)[084176]((?<=0)[1054]|(?<=8)[0]|(?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0])|(?<=2)[10]((?<=1)[0]|(?<=0)[014])|(?<=8)[043]((?<=0)[0]|(?<=4)[0]|(?<=3)[0])|(?<=7)[64837]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0])|(?<=4)[403]((?<=4)[0]|(?<=0)[104]|(?<=3)[0])|(?<=3)[32]((?<=3)[0]|(?<=2)[0])|(?<=9)[2]((?<=2)[0]))|(?<=2)[258693147]((?<=2)[2091]((?<=2)[0]|(?<=0)[014]|(?<=9)[0]|(?<=1)[0])|(?<=5)[0891]((?<=0)[104]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0])|(?<=8)[46183725]((?<=4)[0]|(?<=6)[5]|(?<=1)[5]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[07586]((?<=0)[104]|(?<=7)[50]|(?<=5)[5]|(?<=8)[5]|(?<=6)[0])|(?<=9)[0681]((?<=0)[014]|(?<=6)[07]|(?<=8)[0]|(?<=1)[5])|(?<=3)[0865391]((?<=0)[01]|(?<=8)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[5]|(?<=9)[5]|(?<=1)[0])|(?<=1)[268174]((?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0])|(?<=4)[639]((?<=6)[0]|(?<=3)[0]|(?<=9)[0])|(?<=7)[63157]((?<=6)[0]|(?<=3)[04]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]))|(?<=5)[152864937]((?<=1)[504826]((?<=5)[0]|(?<=0)[0154]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[4086]((?<=4)[0]|(?<=0)[0154]|(?<=8)[0]|(?<=6)[0])|(?<=2)[301]((?<=3)[0]|(?<=0)[014]|(?<=1)[0])|(?<=8)[024]((?<=0)[014]|(?<=2)[0]|(?<=4)[0])|(?<=6)[6243]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0])|(?<=4)[3751]((?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0])|(?<=9)[4308]((?<=4)[0]|(?<=3)[0]|(?<=0)[04]|(?<=8)[0])|(?<=3)[421]((?<=4)[0]|(?<=2)[0]|(?<=1)[0])|(?<=7)[31]((?<=3)[0]|(?<=1)[0]))|(?<=1)[243695817]((?<=2)[93076281]((?<=9)[05]|(?<=3)[05]|(?<=0)[104]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=8)[104]|(?<=1)[0])|(?<=4)[53627]((?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0])|(?<=3)[93265]((?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[65]((?<=6)[0]|(?<=5)[0])|(?<=9)[75]((?<=7)[0]|(?<=5)[0])|(?<=5)[769]((?<=7)[0]|(?<=6)[0]|(?<=9)[0])|(?<=8)[6125]((?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=1)[026]((?<=0)[014]|(?<=2)[0]|(?<=6)[0])|(?<=7)[025]((?<=0)[1054]|(?<=2)[0]|(?<=5)[0]))|(?<=8)[6293874150]((?<=6)[409217]((?<=4)[0]|(?<=0)[104]|(?<=9)[0]|(?<=2)[0]|(?<=1)[04]|(?<=7)[0])|(?<=2)[07]((?<=0)[01]|(?<=7)[04])|(?<=9)[403]((?<=4)[0]|(?<=0)[0154]|(?<=3)[0])|(?<=3)[81540]((?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[04])|(?<=8)[2]((?<=2)[0])|(?<=7)[436]((?<=4)[0]|(?<=3)[0]|(?<=6)[0])|(?<=4)[49706]((?<=4)[0]|(?<=9)[0]|(?<=7)[04]|(?<=0)[10]|(?<=6)[0])|(?<=1)[2]((?<=2)[0])|(?<=5)[3]((?<=3)[0])|(?<=0)[8]((?<=8)[6]))|(?<=7)[1492857360]((?<=1)[05]((?<=0)[0154]|(?<=5)[0])|(?<=4)[0]((?<=0)[014])|(?<=9)[15370]((?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0])|(?<=2)[05]((?<=0)[04]|(?<=5)[04])|(?<=8)[530]((?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=5)[0]((?<=0)[04])|(?<=7)[08]((?<=0)[054]|(?<=8)[8])|(?<=3)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[1])|(?<=0)[7]((?<=7)[0]))|(?<=4)[618574]((?<=6)[5]((?<=5)[0])|(?<=1)[0]((?<=0)[0154])|(?<=8)[8]((?<=8)[0])|(?<=5)[4]((?<=4)[0])|(?<=7)[7]((?<=7)[0])|(?<=4)[6]((?<=6)[0])))|(?<=9)[7915284063]((?<=7)[386792514]((?<=3)[9724318]((?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[50]|(?<=1)[0]|(?<=8)[0])|(?<=8)[4189275]((?<=4)[0]|(?<=1)[05]|(?<=8)[0]|(?<=9)[50]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=6)[581349627]((?<=5)[05]|(?<=8)[05]|(?<=1)[50]|(?<=3)[05]|(?<=4)[5]|(?<=9)[0]|(?<=6)[5]|(?<=2)[50]|(?<=7)[50])|(?<=7)[06281]((?<=0)[014]|(?<=6)[50]|(?<=2)[0]|(?<=8)[50]|(?<=1)[5])|(?<=9)[0572648]((?<=0)[014]|(?<=5)[0]|(?<=7)[0]|(?<=2)[05]|(?<=6)[507]|(?<=4)[0]|(?<=8)[0])|(?<=2)[24895]((?<=2)[04]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[382194]((?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0])|(?<=1)[14763]((?<=1)[0]|(?<=4)[504]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0])|(?<=4)[732]((?<=7)[0]|(?<=3)[0]|(?<=2)[0]))|(?<=9)[468921357]((?<=4)[592017463]((?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[01]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0])|(?<=6)[79542061]((?<=7)[0]|(?<=9)[50]|(?<=5)[50]|(?<=4)[05]|(?<=2)[0]|(?<=0)[104]|(?<=6)[50]|(?<=1)[0])|(?<=8)[0673]((?<=0)[014]|(?<=6)[0]|(?<=7)[104]|(?<=3)[104])|(?<=9)[9473185]((?<=9)[094]|(?<=4)[04]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[10]|(?<=5)[04])|(?<=2)[395487]((?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0])|(?<=1)[9703486251]((?<=9)[05]|(?<=7)[0]|(?<=0)[014]|(?<=3)[0514]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0])|(?<=3)[140326]((?<=1)[0]|(?<=4)[0]|(?<=0)[104]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[624513]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[50]|(?<=1)[0]|(?<=3)[0])|(?<=7)[267514]((?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]))|(?<=1)[7216953480]((?<=7)[592018463]((?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[014]|(?<=1)[0]|(?<=8)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[1064]((?<=1)[0]|(?<=0)[04]|(?<=6)[0]|(?<=4)[0])|(?<=1)[0154]((?<=0)[014]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0])|(?<=6)[047326]((?<=0)[104]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0])|(?<=9)[50381]((?<=5)[0]|(?<=0)[104]|(?<=3)[0]|(?<=8)[0]|(?<=1)[054])|(?<=5)[106]((?<=1)[0]|(?<=0)[1054]|(?<=6)[0])|(?<=3)[10]((?<=1)[0]|(?<=0)[04])|(?<=4)[31]((?<=3)[0]|(?<=1)[04])|(?<=8)[0]((?<=0)[04])|(?<=0)[0]((?<=0)[6]))|(?<=5)[468391527]((?<=4)[130924765]((?<=1)[0]|(?<=3)[0]|(?<=0)[10754]|(?<=9)[0]|(?<=2)[1054]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[4621753098]((?<=4)[05]|(?<=6)[0]|(?<=2)[0]|(?<=1)[50]|(?<=7)[50]|(?<=5)[5]|(?<=3)[50]|(?<=0)[104]|(?<=9)[0]|(?<=8)[0])|(?<=8)[40635]((?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0])|(?<=3)[01573642]((?<=0)[04]|(?<=1)[50]|(?<=5)[05]|(?<=7)[05]|(?<=3)[0]|(?<=6)[5]|(?<=4)[0]|(?<=2)[5])|(?<=9)[20439785]((?<=2)[0]|(?<=0)[014]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[04]|(?<=8)[0]|(?<=5)[0])|(?<=1)[6310]((?<=6)[04]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0])|(?<=5)[932640]((?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0])|(?<=2)[3150276]((?<=3)[0]|(?<=1)[0]|(?<=5)[5]|(?<=0)[014]|(?<=2)[50]|(?<=7)[0]|(?<=6)[0])|(?<=7)[51790682]((?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[014]|(?<=6)[0]|(?<=8)[0]|(?<=2)[0]))|(?<=2)[162854397]((?<=1)[8403625]((?<=8)[0]|(?<=4)[04]|(?<=0)[1054]|(?<=3)[04]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[15420]((?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0])|(?<=2)[63241]((?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0])|(?<=8)[13]((?<=1)[0]|(?<=3)[0])|(?<=5)[302]((?<=3)[0]|(?<=0)[01]|(?<=2)[0])|(?<=4)[50473]((?<=5)[0]|(?<=0)[104]|(?<=4)[0]|(?<=7)[0]|(?<=3)[04])|(?<=3)[325]((?<=3)[0]|(?<=2)[0]|(?<=5)[0])|(?<=9)[132]((?<=1)[0]|(?<=3)[04]|(?<=2)[0])|(?<=7)[0]((?<=0)[04]))|(?<=8)[819354762]((?<=8)[521403]((?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=3)[0])|(?<=1)[02]((?<=0)[104]|(?<=2)[0])|(?<=9)[62508739]((?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[1054]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[5])|(?<=3)[651]((?<=6)[0]|(?<=5)[0]|(?<=1)[0])|(?<=5)[7163085]((?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[04]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0])|(?<=4)[4250]((?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[0])|(?<=7)[986271]((?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[04])|(?<=6)[0632]((?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[0])|(?<=2)[3]((?<=3)[0]))|(?<=4)[986471352]((?<=9)[0]((?<=0)[0])|(?<=8)[03]((?<=0)[0]|(?<=3)[04])|(?<=6)[0]((?<=0)[054])|(?<=4)[0536]((?<=0)[01]|(?<=5)[05]|(?<=3)[0]|(?<=6)[0])|(?<=7)[20]((?<=2)[0]|(?<=0)[04])|(?<=1)[0]((?<=0)[1054])|(?<=3)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=2)[0]((?<=0)[0]))|(?<=0)[845216930]((?<=8)[4365201]((?<=4)[04]|(?<=3)[1054]|(?<=6)[0]|(?<=5)[0]|(?<=2)[04]|(?<=0)[054]|(?<=1)[0])|(?<=4)[07456821]((?<=0)[0154]|(?<=7)[0]|(?<=4)[014]|(?<=5)[1054]|(?<=6)[104]|(?<=8)[0]|(?<=2)[054]|(?<=1)[054])|(?<=5)[6027453819]((?<=6)[0]|(?<=0)[1054]|(?<=2)[054]|(?<=7)[1054]|(?<=4)[054]|(?<=5)[054]|(?<=3)[04]|(?<=8)[04]|(?<=1)[04]|(?<=9)[04])|(?<=2)[4253]((?<=4)[054]|(?<=2)[0]|(?<=5)[04]|(?<=3)[054])|(?<=1)[40523]((?<=4)[04]|(?<=0)[1054]|(?<=5)[054]|(?<=2)[04]|(?<=3)[054])|(?<=6)[503267]((?<=5)[014]|(?<=0)[014]|(?<=3)[054]|(?<=2)[054]|(?<=6)[0]|(?<=7)[04])|(?<=9)[104]((?<=1)[0]|(?<=0)[104]|(?<=4)[04])|(?<=3)[1]((?<=1)[01])|(?<=0)[1204538]((?<=1)[54]|(?<=2)[9]|(?<=0)[6]|(?<=4)[9]|(?<=5)[0]|(?<=3)[2]|(?<=8)[6]))|(?<=6)[4397125680]((?<=4)[406]((?<=4)[04]|(?<=0)[04]|(?<=6)[04])|(?<=3)[02]((?<=0)[104]|(?<=2)[054])|(?<=9)[1063]((?<=1)[04]|(?<=0)[054]|(?<=6)[01]|(?<=3)[0])|(?<=7)[0]((?<=0)[0])|(?<=1)[09]((?<=0)[1054]|(?<=9)[0])|(?<=2)[0]((?<=0)[0154])|(?<=5)[0]((?<=0)[014])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[8]((?<=8)[6]))|(?<=3)[154263789]((?<=1)[978604]((?<=9)[05]|(?<=7)[0]|(?<=8)[70]|(?<=6)[0]|(?<=0)[014]|(?<=4)[04])|(?<=5)[94]((?<=9)[0]|(?<=4)[0])|(?<=4)[4027]((?<=4)[0]|(?<=0)[01]|(?<=2)[0]|(?<=7)[0])|(?<=2)[582794]((?<=5)[0]|(?<=8)[0]|(?<=2)[05]|(?<=7)[70]|(?<=9)[0]|(?<=4)[0])|(?<=6)[0]((?<=0)[1054])|(?<=3)[95]((?<=9)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[03]((?<=0)[0]|(?<=3)[04])|(?<=9)[0]((?<=0)[0])))|(?<=0)[0273845169]((?<=0)[9356078124]((?<=9)[0247158369]((?<=0)[05]|(?<=2)[0154]|(?<=4)[0154]|(?<=7)[1054]|(?<=1)[05]|(?<=5)[05]|(?<=8)[1054]|(?<=3)[1504]|(?<=6)[054]|(?<=9)[054])|(?<=3)[3529701648]((?<=3)[104]|(?<=5)[0154]|(?<=2)[014]|(?<=9)[0154]|(?<=7)[104]|(?<=0)[0154]|(?<=1)[04]|(?<=6)[0]|(?<=4)[10]|(?<=8)[1054])|(?<=5)[1207836549]((?<=1)[1054]|(?<=2)[1054]|(?<=0)[014]|(?<=7)[04]|(?<=8)[104]|(?<=3)[1054]|(?<=6)[0154]|(?<=5)[104]|(?<=4)[04]|(?<=9)[04])|(?<=6)[5731286094]((?<=5)[04]|(?<=7)[015]|(?<=3)[054]|(?<=1)[04]|(?<=2)[105]|(?<=8)[04]|(?<=6)[1054]|(?<=0)[105]|(?<=9)[04]|(?<=4)[1054])|(?<=0)[2839154067]((?<=2)[2635094187]|(?<=8)[190874652]|(?<=3)[316098472]|(?<=9)[8095716]|(?<=1)[825741693]|(?<=5)[3021487956]|(?<=4)[180359627]|(?<=0)[362]|(?<=6)[501362487]|(?<=7)[5967014])|(?<=7)[6728103459]((?<=6)[0154]|(?<=7)[1054]|(?<=2)[0154]|(?<=8)[105]|(?<=1)[1054]|(?<=0)[1054]|(?<=3)[04]|(?<=4)[104]|(?<=5)[104]|(?<=9)[0154])|(?<=8)[0618247359]((?<=0)[04]|(?<=6)[10]|(?<=1)[0154]|(?<=8)[04]|(?<=2)[054]|(?<=4)[054]|(?<=7)[04]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0])|(?<=1)[094378562]((?<=0)[214057]|(?<=9)[10]|(?<=4)[104]|(?<=3)[0154]|(?<=7)[014]|(?<=8)[01574]|(?<=5)[1054]|(?<=6)[104]|(?<=2)[1054])|(?<=2)[1648039572]((?<=1)[0154]|(?<=6)[04]|(?<=4)[1054]|(?<=8)[014]|(?<=0)[104]|(?<=3)[01254]|(?<=9)[0]|(?<=5)[1054]|(?<=7)[104]|(?<=2)[0514])|(?<=4)[12430]((?<=1)[014]|(?<=2)[1054]|(?<=4)[104]|(?<=3)[104]|(?<=0)[0154]))|(?<=2)[7130524698]((?<=7)[670183524]((?<=6)[0154]|(?<=7)[1054]|(?<=0)[0154]|(?<=1)[105]|(?<=8)[104]|(?<=3)[04]|(?<=5)[054]|(?<=2)[05]|(?<=4)[04])|(?<=1)[435207861]((?<=4)[0]|(?<=3)[0154]|(?<=5)[1054]|(?<=2)[04]|(?<=0)[1054]|(?<=7)[0154]|(?<=8)[04]|(?<=6)[04]|(?<=1)[0])|(?<=3)[2864039]((?<=2)[0154]|(?<=8)[0]|(?<=6)[1054]|(?<=4)[04]|(?<=0)[04]|(?<=3)[054]|(?<=9)[04])|(?<=0)[1276403]((?<=1)[04]|(?<=2)[02]|(?<=7)[0]|(?<=6)[6]|(?<=4)[4]|(?<=0)[8]|(?<=3)[3])|(?<=5)[5148927]((?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[04]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=2)[841706395]((?<=8)[054]|(?<=4)[014]|(?<=1)[1054]|(?<=7)[0154]|(?<=0)[0174]|(?<=6)[04]|(?<=3)[1054]|(?<=9)[0]|(?<=5)[04])|(?<=4)[3270694185]((?<=3)[1054]|(?<=2)[01]|(?<=7)[01]|(?<=0)[1054]|(?<=6)[04]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[04]|(?<=5)[04])|(?<=6)[62015387]((?<=6)[0154]|(?<=2)[104]|(?<=0)[0154]|(?<=1)[0154]|(?<=5)[04]|(?<=3)[1054]|(?<=8)[04]|(?<=7)[7])|(?<=9)[2748]((?<=2)[1054]|(?<=7)[0]|(?<=4)[1054]|(?<=8)[0])|(?<=8)[2186]((?<=2)[0]|(?<=1)[0]|(?<=8)[054]|(?<=6)[0]))|(?<=7)[592617384]((?<=5)[9615083]((?<=9)[0]|(?<=6)[054]|(?<=1)[0]|(?<=5)[0]|(?<=0)[04]|(?<=8)[0]|(?<=3)[0])|(?<=9)[1485370296]((?<=1)[0]|(?<=4)[05]|(?<=8)[0]|(?<=5)[5]|(?<=3)[0]|(?<=7)[0]|(?<=0)[1054]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0])|(?<=2)[382]((?<=3)[01]|(?<=8)[0]|(?<=2)[0])|(?<=6)[809]((?<=8)[0]|(?<=0)[10]|(?<=9)[0])|(?<=1)[95371]((?<=9)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[104]|(?<=1)[04])|(?<=7)[50428]((?<=5)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[0])|(?<=3)[726915]((?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0])|(?<=8)[137902584]((?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[04]|(?<=2)[0]|(?<=5)[0]|(?<=8)[04]|(?<=4)[0])|(?<=4)[15]((?<=1)[0]|(?<=5)[0]))|(?<=3)[2738164]((?<=2)[25]((?<=2)[0]|(?<=5)[04])|(?<=7)[91]((?<=9)[0]|(?<=1)[0])|(?<=3)[02]((?<=0)[04]|(?<=2)[0])|(?<=8)[751]((?<=7)[0]|(?<=5)[04]|(?<=1)[0])|(?<=1)[05]((?<=0)[0154]|(?<=5)[0])|(?<=6)[20]((?<=2)[0]|(?<=0)[0154])|(?<=4)[03]((?<=0)[054]|(?<=3)[0]))|(?<=8)[54713286]((?<=5)[0]((?<=0)[104])|(?<=4)[85]((?<=8)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[10])|(?<=1)[50]((?<=5)[104]|(?<=0)[0154])|(?<=3)[56]((?<=5)[04]|(?<=6)[0])|(?<=2)[0]((?<=0)[1054])|(?<=8)[0]((?<=0)[0])|(?<=6)[8]((?<=8)[0]))|(?<=4)[362174598]((?<=3)[8072569341]((?<=8)[0]|(?<=0)[1054]|(?<=7)[0]|(?<=2)[105]|(?<=5)[0]|(?<=6)[04]|(?<=9)[0]|(?<=3)[04]|(?<=4)[04]|(?<=1)[0])|(?<=6)[08632]((?<=0)[1054]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[04])|(?<=2)[645203]((?<=6)[014]|(?<=4)[0]|(?<=5)[104]|(?<=2)[04]|(?<=0)[1054]|(?<=3)[04])|(?<=1)[375]((?<=3)[104]|(?<=7)[0]|(?<=5)[0])|(?<=7)[74]((?<=7)[0]|(?<=4)[0])|(?<=4)[8420361]((?<=8)[0]|(?<=4)[04]|(?<=2)[04]|(?<=0)[0154]|(?<=3)[1054]|(?<=6)[0]|(?<=1)[054])|(?<=5)[30]((?<=3)[0]|(?<=0)[104])|(?<=9)[24]((?<=2)[0]|(?<=4)[0])|(?<=8)[42]((?<=4)[0]|(?<=2)[0]))|(?<=5)[84521976]((?<=8)[03582641]((?<=0)[0154]|(?<=3)[104]|(?<=5)[0]|(?<=8)[0]|(?<=2)[04]|(?<=6)[0]|(?<=4)[04]|(?<=1)[04])|(?<=4)[067534]((?<=0)[1054]|(?<=6)[054]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0])|(?<=5)[1]((?<=1)[0])|(?<=2)[50]((?<=5)[0]|(?<=0)[1054])|(?<=1)[0]((?<=0)[0])|(?<=9)[50]((?<=5)[0]|(?<=0)[104])|(?<=7)[2]((?<=2)[0])|(?<=6)[2]((?<=2)[0]))|(?<=1)[3567814290]((?<=3)[0795684]((?<=0)[0514]|(?<=7)[041]|(?<=9)[104]|(?<=5)[104]|(?<=6)[1054]|(?<=8)[0]|(?<=4)[04])|(?<=5)[312]((?<=3)[0412]|(?<=1)[0154]|(?<=2)[0541])|(?<=6)[8632507419]((?<=8)[04]|(?<=6)[1054]|(?<=3)[051]|(?<=2)[0154]|(?<=5)[014]|(?<=0)[1054]|(?<=7)[104]|(?<=4)[104]|(?<=1)[1504]|(?<=9)[041])|(?<=7)[21537046]((?<=2)[104]|(?<=1)[014]|(?<=5)[0]|(?<=3)[104]|(?<=7)[0]|(?<=0)[0541]|(?<=4)[104]|(?<=6)[01])|(?<=8)[130624]((?<=1)[0]|(?<=3)[0]|(?<=0)[1054]|(?<=6)[0]|(?<=2)[0]|(?<=4)[04])|(?<=1)[8529]((?<=8)[0]|(?<=5)[1054]|(?<=2)[0]|(?<=9)[0])|(?<=4)[25908]((?<=2)[05]|(?<=5)[1054]|(?<=9)[054]|(?<=0)[1054]|(?<=8)[014])|(?<=2)[6083]((?<=6)[10]|(?<=0)[1054]|(?<=8)[041]|(?<=3)[04])|(?<=9)[04]((?<=0)[0154]|(?<=4)[0])|(?<=0)[05432]((?<=0)[96]|(?<=5)[531]|(?<=4)[4]|(?<=3)[0]|(?<=2)[2]))|(?<=6)[15498276]((?<=1)[05]((?<=0)[10584]|(?<=5)[104])|(?<=5)[30]((?<=3)[0]|(?<=0)[0])|(?<=4)[05]((?<=0)[0154]|(?<=5)[04])|(?<=9)[5]((?<=5)[0])|(?<=8)[385]((?<=3)[0]|(?<=8)[0]|(?<=5)[0])|(?<=2)[0]((?<=0)[0])|(?<=7)[5]((?<=5)[0])|(?<=6)[5]((?<=5)[0]))|(?<=9)[8154629]((?<=8)[1]((?<=1)[0])|(?<=1)[2]((?<=2)[04])|(?<=5)[2]((?<=2)[0])|(?<=4)[3]((?<=3)[04])|(?<=6)[3]((?<=3)[0])|(?<=2)[2]((?<=2)[04])|(?<=9)[3]((?<=3)[0])))|(?<=1)[3459162708]((?<=3)[7231984560]((?<=7)[20]((?<=2)[0154]|(?<=0)[014])|(?<=2)[15207]((?<=1)[0154]|(?<=5)[0]|(?<=2)[0]|(?<=0)[104]|(?<=7)[0])|(?<=3)[30]((?<=3)[0]|(?<=0)[04])|(?<=1)[013]((?<=0)[1054]|(?<=1)[01]|(?<=3)[0154])|(?<=9)[0]((?<=0)[0])|(?<=8)[08]((?<=0)[0]|(?<=8)[0])|(?<=4)[3]((?<=3)[0])|(?<=5)[03]((?<=0)[1504]|(?<=3)[0])|(?<=6)[0]((?<=0)[04])|(?<=0)[3]((?<=3)[5]))|(?<=4)[629845713]((?<=6)[1982]((?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0])|(?<=2)[04]((?<=0)[0154]|(?<=4)[0])|(?<=9)[863]((?<=8)[0]|(?<=6)[0]|(?<=3)[0])|(?<=8)[7142]((?<=7)[0]|(?<=1)[04]|(?<=4)[0]|(?<=2)[0])|(?<=4)[53]((?<=5)[0]|(?<=3)[0])|(?<=5)[03]((?<=0)[04]|(?<=3)[0])|(?<=7)[70]((?<=7)[0]|(?<=0)[04])|(?<=1)[4]((?<=4)[0])|(?<=3)[0]((?<=0)[04]))|(?<=5)[1589723640]((?<=1)[417056]((?<=4)[1054]|(?<=1)[1054]|(?<=7)[05]|(?<=0)[014]|(?<=5)[104]|(?<=6)[054])|(?<=5)[065284]((?<=0)[0154]|(?<=6)[1054]|(?<=5)[0154]|(?<=2)[0]|(?<=8)[0]|(?<=4)[04])|(?<=8)[764103852]((?<=7)[1054]|(?<=6)[04]|(?<=4)[0]|(?<=1)[054]|(?<=0)[10]|(?<=3)[05]|(?<=8)[04]|(?<=5)[0]|(?<=2)[0])|(?<=9)[580]((?<=5)[04]|(?<=8)[0]|(?<=0)[10])|(?<=7)[0]((?<=0)[1054])|(?<=2)[40173]((?<=4)[0154]|(?<=0)[074]|(?<=1)[054]|(?<=7)[0]|(?<=3)[0])|(?<=3)[204]((?<=2)[0]|(?<=0)[04]|(?<=4)[0])|(?<=6)[18]((?<=1)[0]|(?<=8)[05])|(?<=4)[6]((?<=6)[0])|(?<=0)[8]((?<=8)[6]))|(?<=9)[671492358]((?<=6)[507132]((?<=5)[014]|(?<=0)[01]|(?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=7)[0374]((?<=0)[014]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0])|(?<=1)[612]((?<=6)[0]|(?<=1)[04]|(?<=2)[0])|(?<=4)[832716]((?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[04]|(?<=6)[0])|(?<=9)[215]((?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=2)[5316]((?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=3)[217]((?<=2)[0]|(?<=1)[0]|(?<=7)[0])|(?<=5)[41]((?<=4)[0]|(?<=1)[0])|(?<=8)[5]((?<=5)[0]))|(?<=1)[1397]((?<=1)[1032]((?<=1)[14]|(?<=0)[0154]|(?<=3)[054]|(?<=2)[054])|(?<=3)[1]((?<=1)[01])|(?<=9)[1]((?<=1)[0])|(?<=7)[1]((?<=1)[054]))|(?<=6)[279356418]((?<=2)[70683]((?<=7)[0]|(?<=0)[104]|(?<=6)[0]|(?<=8)[0]|(?<=3)[0])|(?<=7)[931]((?<=9)[0]|(?<=3)[0]|(?<=1)[04])|(?<=9)[607]((?<=6)[0]|(?<=0)[0154]|(?<=7)[0])|(?<=3)[051932]((?<=0)[1054]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0])|(?<=5)[410]((?<=4)[0]|(?<=1)[0]|(?<=0)[0])|(?<=6)[7031]((?<=7)[0]|(?<=0)[104]|(?<=3)[0]|(?<=1)[0])|(?<=4)[5]((?<=5)[0])|(?<=1)[06]((?<=0)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[104]))|(?<=2)[672413958]((?<=6)[043]((?<=0)[04]|(?<=4)[0]|(?<=3)[0])|(?<=7)[50]((?<=5)[0]|(?<=0)[014])|(?<=2)[41]((?<=4)[04]|(?<=1)[0])|(?<=4)[50]((?<=5)[0]|(?<=0)[104])|(?<=1)[307]((?<=3)[0]|(?<=0)[104]|(?<=7)[0])|(?<=3)[851]((?<=8)[0]|(?<=5)[0]|(?<=1)[04])|(?<=9)[25]((?<=2)[0]|(?<=5)[0])|(?<=5)[42]((?<=4)[04]|(?<=2)[04])|(?<=8)[2]((?<=2)[0]))|(?<=7)[453817926]((?<=4)[47351]((?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0])|(?<=5)[103]((?<=1)[0]|(?<=0)[014]|(?<=3)[0])|(?<=3)[2]((?<=2)[0])|(?<=8)[0754]((?<=0)[104]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[2513]((?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[04])|(?<=7)[418]((?<=4)[0]|(?<=1)[0]|(?<=8)[0])|(?<=9)[753]((?<=7)[0]|(?<=5)[0]|(?<=3)[0])|(?<=2)[402]((?<=4)[0]|(?<=0)[1054]|(?<=2)[0])|(?<=6)[13]((?<=1)[0]|(?<=3)[0]))|(?<=0)[426937158]((?<=4)[71428]((?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[104]|(?<=8)[0])|(?<=2)[3175]((?<=3)[0]|(?<=1)[104]|(?<=7)[0]|(?<=5)[0])|(?<=6)[0482561]((?<=0)[1054]|(?<=4)[014]|(?<=8)[0]|(?<=2)[0]|(?<=5)[04]|(?<=6)[0]|(?<=1)[1])|(?<=9)[064]((?<=0)[1054]|(?<=6)[04]|(?<=4)[0])|(?<=3)[523806]((?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[1054]|(?<=6)[04])|(?<=7)[1]((?<=1)[0])|(?<=1)[426]((?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[27]((?<=2)[04]|(?<=7)[0])|(?<=8)[2]((?<=2)[0]))|(?<=8)[1263]((?<=1)[3025]((?<=3)[0]|(?<=0)[1054]|(?<=2)[0]|(?<=5)[04])|(?<=2)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=3)[0]((?<=0)[04])))|(?<=5)[0562391874]((?<=0)[361975280]((?<=3)[50]((?<=5)[0]|(?<=0)[0])|(?<=6)[07]((?<=0)[04]|(?<=7)[04])|(?<=1)[05739628]((?<=0)[1054]|(?<=5)[0]|(?<=7)[04]|(?<=3)[04]|(?<=9)[054]|(?<=6)[0]|(?<=2)[04]|(?<=8)[0])|(?<=9)[7]((?<=7)[04])|(?<=7)[70]((?<=7)[0]|(?<=0)[0])|(?<=5)[20]((?<=2)[0]|(?<=0)[04])|(?<=2)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[4]((?<=4)[9]))|(?<=5)[79513846]((?<=7)[0]((?<=0)[0])|(?<=9)[1]((?<=1)[0])|(?<=5)[1]((?<=1)[0])|(?<=1)[02]((?<=0)[1054]|(?<=2)[1054])|(?<=3)[320]((?<=3)[0]|(?<=2)[0]|(?<=0)[04])|(?<=8)[0]((?<=0)[104])|(?<=4)[20]((?<=2)[04]|(?<=0)[0])|(?<=6)[1]((?<=1)[05]))|(?<=6)[86431572]((?<=8)[0]((?<=0)[014])|(?<=6)[41]((?<=4)[0]|(?<=1)[0])|(?<=4)[14]((?<=1)[0]|(?<=4)[0])|(?<=3)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[402]((?<=4)[0]|(?<=0)[104]|(?<=2)[0])|(?<=5)[15]((?<=1)[0]|(?<=5)[0])|(?<=7)[31]((?<=3)[0]|(?<=1)[0])|(?<=2)[1]((?<=1)[0]))|(?<=2)[9357186240]((?<=9)[8276]((?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0])|(?<=3)[62043]((?<=6)[0]|(?<=2)[0]|(?<=0)[014]|(?<=4)[0]|(?<=3)[0])|(?<=5)[512]((?<=5)[10]|(?<=1)[0]|(?<=2)[0])|(?<=7)[206438]((?<=2)[0]|(?<=0)[015]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0])|(?<=1)[501]((?<=5)[0]|(?<=0)[04]|(?<=1)[0])|(?<=8)[539]((?<=5)[0]|(?<=3)[0]|(?<=9)[0])|(?<=6)[21]((?<=2)[0]|(?<=1)[0])|(?<=2)[073]((?<=0)[104]|(?<=7)[0]|(?<=3)[0])|(?<=4)[2]((?<=2)[0])|(?<=0)[2]((?<=2)[0]))|(?<=3)[918542630]((?<=9)[052]((?<=0)[04]|(?<=5)[04]|(?<=2)[0])|(?<=1)[03]((?<=0)[0145]|(?<=3)[0])|(?<=8)[315]((?<=3)[0]|(?<=1)[04]|(?<=5)[1054])|(?<=5)[05]((?<=0)[1054]|(?<=5)[04])|(?<=4)[02]((?<=0)[0]|(?<=2)[0])|(?<=2)[0]((?<=0)[054])|(?<=6)[50]((?<=5)[0]|(?<=0)[054])|(?<=3)[0]((?<=0)[1054])|(?<=0)[08]((?<=0)[6]|(?<=8)[6]))|(?<=9)[57482361]((?<=5)[213]((?<=2)[0]|(?<=1)[10]|(?<=3)[0])|(?<=7)[321]((?<=3)[0]|(?<=2)[0]|(?<=1)[0])|(?<=4)[1]((?<=1)[0])|(?<=8)[201]((?<=2)[0]|(?<=0)[0]|(?<=1)[0])|(?<=2)[1]((?<=1)[0])|(?<=3)[21]((?<=2)[0]|(?<=1)[0])|(?<=6)[1]((?<=1)[0])|(?<=1)[03]((?<=0)[10]|(?<=3)[0]))|(?<=1)[849637251]((?<=8)[821659]((?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0])|(?<=4)[64235]((?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0])|(?<=9)[8043]((?<=8)[0]|(?<=0)[1054]|(?<=4)[0]|(?<=3)[0])|(?<=6)[702]((?<=7)[0]|(?<=0)[01]|(?<=2)[0])|(?<=3)[41836]((?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[5]|(?<=6)[0])|(?<=7)[6482]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0])|(?<=2)[076]((?<=0)[1054]|(?<=7)[0]|(?<=6)[0])|(?<=5)[42]((?<=4)[0]|(?<=2)[0])|(?<=1)[3]((?<=3)[0]))|(?<=8)[324817596]((?<=3)[06592]((?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0])|(?<=2)[062]((?<=0)[10]|(?<=6)[0]|(?<=2)[0])|(?<=4)[2135]((?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[475386]((?<=4)[0]|(?<=7)[50]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=7)[072]((?<=0)[01]|(?<=7)[0]|(?<=2)[0])|(?<=5)[50287]((?<=5)[0]|(?<=0)[014]|(?<=2)[0]|(?<=8)[0]|(?<=7)[0])|(?<=9)[1402]((?<=1)[0]|(?<=4)[0]|(?<=0)[104]|(?<=2)[0])|(?<=6)[15982]((?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]))|(?<=7)[75216380]((?<=7)[1]((?<=1)[04])|(?<=5)[1]((?<=1)[04])|(?<=2)[1302]((?<=1)[054]|(?<=3)[0]|(?<=0)[104]|(?<=2)[0])|(?<=1)[7302]((?<=7)[04]|(?<=3)[04]|(?<=0)[1054]|(?<=2)[0])|(?<=6)[0]((?<=0)[0])|(?<=3)[1]((?<=1)[0])|(?<=8)[1]((?<=1)[0])|(?<=0)[9]((?<=9)[0]))|(?<=4)[19487523]((?<=1)[2019]((?<=2)[0]|(?<=0)[0154]|(?<=1)[0]|(?<=9)[0])|(?<=9)[542631]((?<=5)[0]|(?<=4)[0]|(?<=2)[04]|(?<=6)[0]|(?<=3)[0]|(?<=1)[5])|(?<=4)[3961]((?<=3)[0]|(?<=9)[0]|(?<=6)[0]|(?<=1)[0])|(?<=8)[502]((?<=5)[0]|(?<=0)[014]|(?<=2)[0])|(?<=7)[1275]((?<=1)[04]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=5)[519038]((?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[1054]|(?<=3)[0]|(?<=8)[0])|(?<=2)[3756]((?<=3)[05]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0])|(?<=3)[3190]((?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0])))|(?<=6)[4382016579]((?<=4)[276495318]((?<=2)[6304251]((?<=6)[04]|(?<=3)[0]|(?<=0)[104]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0])|(?<=7)[04762]((?<=0)[105]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0])|(?<=6)[1]((?<=1)[0])|(?<=4)[49685]((?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=8)[0]|(?<=5)[0])|(?<=9)[03]((?<=0)[01]|(?<=3)[0])|(?<=5)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=3)[7025]((?<=7)[0]|(?<=0)[04]|(?<=2)[0]|(?<=5)[0])|(?<=1)[04]((?<=0)[014]|(?<=4)[0])|(?<=8)[32541]((?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]))|(?<=3)[914583762]((?<=9)[2150]((?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0])|(?<=1)[06352]((?<=0)[104]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0])|(?<=4)[5031]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=5)[1403]((?<=1)[0]|(?<=4)[0]|(?<=0)[10]|(?<=3)[0])|(?<=8)[9830]((?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[04])|(?<=3)[4063527]((?<=4)[0]|(?<=0)[1054]|(?<=6)[0]|(?<=3)[0]|(?<=5)[50]|(?<=2)[0]|(?<=7)[0])|(?<=7)[087]((?<=0)[1054]|(?<=8)[0]|(?<=7)[0])|(?<=6)[60481]((?<=6)[0]|(?<=0)[04]|(?<=4)[0]|(?<=8)[0]|(?<=1)[04])|(?<=2)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0]))|(?<=8)[936582471]((?<=9)[27431]((?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[04])|(?<=3)[87092]((?<=8)[0]|(?<=7)[04]|(?<=0)[04]|(?<=9)[0]|(?<=2)[0])|(?<=6)[06392]((?<=0)[1054]|(?<=6)[04]|(?<=3)[0]|(?<=9)[0]|(?<=2)[04])|(?<=5)[507386]((?<=5)[504]|(?<=0)[104]|(?<=7)[04]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[703214]((?<=7)[04]|(?<=0)[0]|(?<=3)[0]|(?<=2)[04]|(?<=1)[0]|(?<=4)[0])|(?<=2)[2134]((?<=2)[0]|(?<=1)[0]|(?<=3)[04]|(?<=4)[0])|(?<=4)[1]((?<=1)[04])|(?<=7)[50]((?<=5)[0]|(?<=0)[04])|(?<=1)[05]((?<=0)[04]|(?<=5)[0]))|(?<=2)[723968514]((?<=7)[254163]((?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[4980362]((?<=4)[0]|(?<=9)[50]|(?<=8)[0]|(?<=0)[1054]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=3)[1704985]((?<=1)[0]|(?<=7)[504]|(?<=0)[104]|(?<=4)[0]|(?<=9)[5]|(?<=8)[0]|(?<=5)[0])|(?<=9)[50429]((?<=5)[0]|(?<=0)[104]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0])|(?<=6)[024136]((?<=0)[014]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[04])|(?<=8)[7401368]((?<=7)[0]|(?<=4)[0]|(?<=0)[04]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0])|(?<=5)[41702]((?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=0)[10]|(?<=2)[0])|(?<=1)[7365908]((?<=7)[50]|(?<=3)[0]|(?<=6)[05]|(?<=5)[0]|(?<=9)[0]|(?<=0)[1054]|(?<=8)[5])|(?<=4)[32714]((?<=3)[50]|(?<=2)[014]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]))|(?<=0)[254718306]((?<=2)[802]((?<=8)[0]|(?<=0)[04]|(?<=2)[04])|(?<=5)[516]((?<=5)[04]|(?<=1)[1054]|(?<=6)[0])|(?<=4)[52]((?<=5)[0]|(?<=2)[0])|(?<=7)[62]((?<=6)[0]|(?<=2)[0])|(?<=1)[1502]((?<=1)[01]|(?<=5)[074]|(?<=0)[1054]|(?<=2)[054])|(?<=8)[0]((?<=0)[104])|(?<=3)[2]((?<=2)[054])|(?<=0)[06]((?<=0)[6]|(?<=6)[01])|(?<=6)[4]((?<=4)[0]))|(?<=1)[194723658]((?<=1)[80275164]((?<=8)[0]|(?<=0)[04]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0])|(?<=9)[581462]((?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0])|(?<=4)[1740365]((?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[104]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=7)[2613]((?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0])|(?<=2)[578392]((?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0])|(?<=3)[85304176]((?<=8)[0]|(?<=5)[0]|(?<=3)[04]|(?<=0)[1054]|(?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0])|(?<=6)[30584]((?<=3)[0]|(?<=0)[0154]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0])|(?<=5)[5062]((?<=5)[0]|(?<=0)[104]|(?<=6)[0]|(?<=2)[0])|(?<=8)[6402851]((?<=6)[0]|(?<=4)[0]|(?<=0)[1054]|(?<=2)[0]|(?<=8)[0]|(?<=5)[0]|(?<=1)[0]))|(?<=6)[479821635]((?<=4)[7042653]((?<=7)[0]|(?<=0)[0154]|(?<=4)[104]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0])|(?<=7)[13]((?<=1)[0]|(?<=3)[0])|(?<=9)[503871]((?<=5)[0]|(?<=0)[014]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=1)[0])|(?<=8)[201435]((?<=2)[0]|(?<=0)[014]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[04])|(?<=2)[836092471]((?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[104]|(?<=9)[50]|(?<=2)[0]|(?<=4)[0]|(?<=7)[04]|(?<=1)[0])|(?<=1)[406]((?<=4)[104]|(?<=0)[04]|(?<=6)[0])|(?<=6)[0468]((?<=0)[04]|(?<=4)[04]|(?<=6)[0]|(?<=8)[0])|(?<=3)[2574063]((?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[104]|(?<=6)[0]|(?<=3)[0])|(?<=5)[361095842]((?<=3)[104]|(?<=6)[0]|(?<=1)[04]|(?<=0)[014]|(?<=9)[0]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]))|(?<=5)[1426937580]((?<=1)[703]((?<=7)[0]|(?<=0)[1054]|(?<=3)[01])|(?<=4)[17568]((?<=1)[04]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0])|(?<=2)[308]((?<=3)[104]|(?<=0)[104]|(?<=8)[054])|(?<=6)[135]((?<=1)[014]|(?<=3)[0]|(?<=5)[0])|(?<=9)[327]((?<=3)[0]|(?<=2)[0]|(?<=7)[0])|(?<=3)[07258]((?<=0)[1054]|(?<=7)[045]|(?<=2)[04]|(?<=5)[04]|(?<=8)[04])|(?<=7)[316]((?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=5)[2]((?<=2)[0])|(?<=8)[07]((?<=0)[0]|(?<=7)[0])|(?<=0)[8]((?<=8)[6]))|(?<=7)[197342865]((?<=1)[0]((?<=0)[1054])|(?<=9)[0]((?<=0)[04])|(?<=7)[0]((?<=0)[1054])|(?<=3)[0]((?<=0)[04])|(?<=4)[10]((?<=1)[0]|(?<=0)[04])|(?<=2)[0]((?<=0)[04])|(?<=8)[0]((?<=0)[05])|(?<=6)[0]((?<=0)[504])|(?<=5)[0]((?<=0)[0]))|(?<=9)[65384917]((?<=6)[06]((?<=0)[1054]|(?<=6)[0])|(?<=5)[517]((?<=5)[0]|(?<=1)[0]|(?<=7)[0])|(?<=3)[1043]((?<=1)[0]|(?<=0)[104]|(?<=4)[0]|(?<=3)[0])|(?<=8)[532]((?<=5)[0]|(?<=3)[0]|(?<=2)[0])|(?<=4)[1542]((?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0])|(?<=9)[58271]((?<=5)[014]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0])|(?<=1)[075]((?<=0)[104]|(?<=7)[0]|(?<=5)[04])|(?<=7)[053]((?<=0)[104]|(?<=5)[0]|(?<=3)[0])))|(?<=3)[2590614837]((?<=2)[571824963]((?<=5)[602]((?<=6)[0]|(?<=0)[04]|(?<=2)[0])|(?<=7)[704631]((?<=7)[0]|(?<=0)[1054]|(?<=4)[01]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0])|(?<=1)[40]((?<=4)[0]|(?<=0)[0])|(?<=8)[3061]((?<=3)[0]|(?<=0)[1054]|(?<=6)[0]|(?<=1)[0])|(?<=2)[850761]((?<=8)[0]|(?<=5)[0]|(?<=0)[1054]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0])|(?<=4)[4531]((?<=4)[014]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=9)[21]((?<=2)[0]|(?<=1)[0])|(?<=6)[12]((?<=1)[0]|(?<=2)[0])|(?<=3)[0]((?<=0)[0]))|(?<=5)[732568491]((?<=7)[504]((?<=5)[0]|(?<=0)[014]|(?<=4)[0])|(?<=3)[02]((?<=0)[1054]|(?<=2)[0])|(?<=2)[6247]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0])|(?<=5)[20435]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0])|(?<=6)[031]((?<=0)[104]|(?<=3)[0]|(?<=1)[0])|(?<=8)[02]((?<=0)[1054]|(?<=2)[0])|(?<=4)[082]((?<=0)[04]|(?<=8)[0]|(?<=2)[0])|(?<=9)[9]((?<=9)[0])|(?<=1)[0]((?<=0)[0]))|(?<=9)[591476238]((?<=5)[0938]((?<=0)[1054]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0])|(?<=9)[639284]((?<=6)[50]|(?<=3)[04]|(?<=9)[0]|(?<=2)[0]|(?<=8)[0]|(?<=4)[0])|(?<=1)[08153796]((?<=0)[014]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[5]|(?<=6)[04])|(?<=4)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=7)[0875]((?<=0)[1054]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0])|(?<=6)[216]((?<=2)[0]|(?<=1)[0]|(?<=6)[0])|(?<=2)[903]((?<=9)[0]|(?<=0)[04]|(?<=3)[0])|(?<=3)[6481]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0])|(?<=8)[821]((?<=8)[0]|(?<=2)[04]|(?<=1)[0]))|(?<=0)[413]((?<=4)[2]((?<=2)[014])|(?<=1)[0]((?<=0)[017854])|(?<=3)[0]((?<=0)[04]))|(?<=6)[452896173]((?<=4)[325]((?<=3)[0]|(?<=2)[0]|(?<=5)[0])|(?<=5)[72]((?<=7)[0]|(?<=2)[0])|(?<=2)[80472]((?<=8)[04]|(?<=0)[1054]|(?<=4)[04]|(?<=7)[0]|(?<=2)[054])|(?<=8)[184]((?<=1)[0]|(?<=8)[0]|(?<=4)[0])|(?<=9)[13]((?<=1)[04]|(?<=3)[0])|(?<=6)[064]((?<=0)[104]|(?<=6)[0]|(?<=4)[0])|(?<=1)[120]((?<=1)[04]|(?<=2)[0]|(?<=0)[0])|(?<=7)[62]((?<=6)[0]|(?<=2)[0])|(?<=3)[4]((?<=4)[0]))|(?<=1)[3647815290]((?<=3)[854710]((?<=8)[04]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=0)[04])|(?<=6)[420153]((?<=4)[104]|(?<=2)[0]|(?<=0)[014]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=4)[650719]((?<=6)[0]|(?<=5)[0]|(?<=0)[1054]|(?<=7)[0]|(?<=1)[0]|(?<=9)[0])|(?<=7)[20536]((?<=2)[0]|(?<=0)[04]|(?<=5)[0]|(?<=3)[0]|(?<=6)[104])|(?<=8)[6153]((?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[74613]((?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0])|(?<=5)[032]((?<=0)[104]|(?<=3)[0]|(?<=2)[0])|(?<=2)[53]((?<=5)[0]|(?<=3)[0])|(?<=9)[57036]((?<=5)[0]|(?<=7)[0]|(?<=0)[10]|(?<=3)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[6]))|(?<=4)[564839127]((?<=5)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=6)[40]((?<=4)[0]|(?<=0)[014])|(?<=4)[5132]((?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=8)[70]((?<=7)[04]|(?<=0)[0154])|(?<=3)[032]((?<=0)[014]|(?<=3)[0]|(?<=2)[0])|(?<=9)[53817]((?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0])|(?<=1)[14853]((?<=1)[01]|(?<=4)[0]|(?<=8)[0]|(?<=5)[04]|(?<=3)[0])|(?<=2)[476]((?<=4)[04]|(?<=7)[0]|(?<=6)[04])|(?<=7)[3174]((?<=3)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]))|(?<=8)[732416985]((?<=7)[2605741]((?<=2)[0]|(?<=6)[0]|(?<=0)[1054]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[04])|(?<=3)[670]((?<=6)[0]|(?<=7)[0]|(?<=0)[04])|(?<=2)[082715]((?<=0)[1054]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[10]|(?<=5)[0])|(?<=4)[9276]((?<=9)[0]|(?<=2)[04]|(?<=7)[0]|(?<=6)[04])|(?<=1)[3240]((?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[04])|(?<=6)[0857]((?<=0)[014]|(?<=8)[0]|(?<=5)[0]|(?<=7)[0])|(?<=9)[1752]((?<=1)[0]|(?<=7)[0]|(?<=5)[014]|(?<=2)[0])|(?<=8)[064]((?<=0)[04]|(?<=6)[0]|(?<=4)[01])|(?<=5)[1]((?<=1)[0]))|(?<=3)[2473589016]((?<=2)[531074]((?<=5)[104]|(?<=3)[104]|(?<=1)[0154]|(?<=0)[104]|(?<=7)[1054]|(?<=4)[0])|(?<=4)[7138205]((?<=7)[0154]|(?<=1)[014]|(?<=3)[0]|(?<=8)[054]|(?<=2)[0]|(?<=0)[1054]|(?<=5)[0])|(?<=7)[1302]((?<=1)[1054]|(?<=3)[014]|(?<=0)[10]|(?<=2)[1054])|(?<=3)[30814]((?<=3)[01]|(?<=0)[054]|(?<=8)[0]|(?<=1)[1054]|(?<=4)[104])|(?<=5)[328406]((?<=3)[104]|(?<=2)[01]|(?<=8)[01574]|(?<=4)[1054]|(?<=0)[104]|(?<=6)[104])|(?<=8)[408257]((?<=4)[014]|(?<=0)[1054]|(?<=8)[104]|(?<=2)[1054]|(?<=5)[014]|(?<=7)[054])|(?<=9)[68502]((?<=6)[0154]|(?<=8)[0]|(?<=5)[054]|(?<=0)[1054]|(?<=2)[0])|(?<=0)[0138]((?<=0)[6]|(?<=1)[43]|(?<=3)[2]|(?<=8)[6])|(?<=1)[80]((?<=8)[04]|(?<=0)[105874])|(?<=6)[18]((?<=1)[04]|(?<=8)[04]))|(?<=7)[483715692]((?<=4)[72]((?<=7)[04]|(?<=2)[0])|(?<=8)[0635]((?<=0)[0154]|(?<=6)[0]|(?<=3)[054]|(?<=5)[0])|(?<=3)[7581]((?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0])|(?<=7)[4270]((?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0])|(?<=1)[208453]((?<=2)[0154]|(?<=0)[0514]|(?<=8)[0]|(?<=4)[04]|(?<=5)[05]|(?<=3)[05])|(?<=5)[63507]((?<=6)[05]|(?<=3)[0]|(?<=5)[104]|(?<=0)[1054]|(?<=7)[054])|(?<=6)[30]((?<=3)[04]|(?<=0)[1054])|(?<=9)[610]((?<=6)[0]|(?<=1)[051]|(?<=0)[0])|(?<=2)[041]((?<=0)[0]|(?<=4)[10]|(?<=1)[0])))|(?<=4)[3804512679]((?<=3)[516492378]((?<=5)[2604]((?<=2)[0]|(?<=6)[0]|(?<=0)[104]|(?<=4)[0])|(?<=1)[037]((?<=0)[0154]|(?<=3)[0]|(?<=7)[0])|(?<=6)[164]((?<=1)[0]|(?<=6)[0]|(?<=4)[0])|(?<=4)[93824]((?<=9)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=4)[0])|(?<=9)[604]((?<=6)[0]|(?<=0)[014]|(?<=4)[0])|(?<=2)[2574]((?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0])|(?<=3)[409]((?<=4)[0]|(?<=0)[0]|(?<=9)[0])|(?<=7)[20]((?<=2)[0]|(?<=0)[104])|(?<=8)[40]((?<=4)[0]|(?<=0)[0]))|(?<=8)[73614289]((?<=7)[17520]((?<=1)[0]|(?<=7)[01]|(?<=5)[0]|(?<=2)[0]|(?<=0)[04])|(?<=3)[150]((?<=1)[04]|(?<=5)[04]|(?<=0)[0])|(?<=6)[0]((?<=0)[1054])|(?<=1)[03]((?<=0)[0154]|(?<=3)[0])|(?<=4)[01]((?<=0)[1054]|(?<=1)[0])|(?<=2)[1230]((?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=9)[103]((?<=1)[04]|(?<=0)[0]|(?<=3)[0]))|(?<=0)[4593268710]((?<=4)[02]((?<=0)[0]|(?<=2)[0])|(?<=5)[023]((?<=0)[054]|(?<=2)[1054]|(?<=3)[104])|(?<=9)[305]((?<=3)[04]|(?<=0)[05]|(?<=5)[0154])|(?<=3)[425]((?<=4)[1054]|(?<=2)[0154]|(?<=5)[10])|(?<=2)[705]((?<=7)[0154]|(?<=0)[041]|(?<=5)[04])|(?<=6)[63042]((?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[04]|(?<=2)[0])|(?<=8)[02]((?<=0)[1054]|(?<=2)[0])|(?<=7)[204]((?<=2)[0]|(?<=0)[1054]|(?<=4)[04])|(?<=1)[0]((?<=0)[1054])|(?<=0)[0145]((?<=0)[6]|(?<=1)[41]|(?<=4)[9]|(?<=5)[6]))|(?<=4)[129473568]((?<=1)[750269]((?<=7)[0]|(?<=5)[0]|(?<=0)[0154]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0])|(?<=2)[05826]((?<=0)[104]|(?<=5)[04]|(?<=8)[04]|(?<=2)[0]|(?<=6)[0])|(?<=9)[7152]((?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0])|(?<=4)[06428]((?<=0)[10]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[0])|(?<=7)[94736]((?<=9)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[50372]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0])|(?<=5)[0398]((?<=0)[1054]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0])|(?<=6)[38714]((?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0])|(?<=8)[086]((?<=0)[104]|(?<=8)[04]|(?<=6)[0]))|(?<=5)[93127468]((?<=9)[14]((?<=1)[104]|(?<=4)[0])|(?<=3)[367]((?<=3)[0]|(?<=6)[05]|(?<=7)[104])|(?<=1)[30652]((?<=3)[05]|(?<=0)[1054]|(?<=6)[054]|(?<=5)[04]|(?<=2)[0])|(?<=2)[0]((?<=0)[014])|(?<=7)[0542]((?<=0)[1054]|(?<=5)[0]|(?<=4)[04]|(?<=2)[054])|(?<=4)[16]((?<=1)[01]|(?<=6)[0])|(?<=6)[1]((?<=1)[0154])|(?<=8)[1]((?<=1)[0]))|(?<=1)[9283547610]((?<=9)[072483]((?<=0)[014]|(?<=7)[0]|(?<=2)[50]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0])|(?<=2)[3176924]((?<=3)[104]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0])|(?<=8)[604872]((?<=6)[0]|(?<=0)[104]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0])|(?<=3)[25913746]((?<=2)[5]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[104]|(?<=7)[0]|(?<=4)[104]|(?<=6)[0])|(?<=5)[4036258]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[014]|(?<=5)[0]|(?<=8)[0])|(?<=4)[19504]((?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=0)[104]|(?<=4)[0])|(?<=7)[5317]((?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0])|(?<=6)[36]((?<=3)[0]|(?<=6)[104])|(?<=1)[2684]((?<=2)[0]|(?<=6)[014]|(?<=8)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[6]))|(?<=2)[647189352]((?<=6)[06]((?<=0)[014]|(?<=6)[0])|(?<=4)[4]((?<=4)[0])|(?<=7)[20]((?<=2)[01]|(?<=0)[0154])|(?<=1)[40]((?<=4)[0]|(?<=0)[1504])|(?<=8)[524730]((?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=0)[0])|(?<=9)[13]((?<=1)[0]|(?<=3)[0])|(?<=3)[03]((?<=0)[014]|(?<=3)[0])|(?<=5)[62]((?<=6)[0]|(?<=2)[0])|(?<=2)[2]((?<=2)[04]))|(?<=6)[9815472]((?<=9)[05136]((?<=0)[014]|(?<=5)[0]|(?<=1)[04]|(?<=3)[0]|(?<=6)[0])|(?<=8)[106]((?<=1)[0]|(?<=0)[1054]|(?<=6)[0])|(?<=1)[41]((?<=4)[04]|(?<=1)[0])|(?<=5)[73]((?<=7)[0]|(?<=3)[0])|(?<=4)[530]((?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=7)[531]((?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[3]((?<=3)[0]))|(?<=7)[476283519]((?<=4)[94065]((?<=9)[0]|(?<=4)[0]|(?<=0)[0154]|(?<=6)[0]|(?<=5)[0])|(?<=7)[61]((?<=6)[0]|(?<=1)[04])|(?<=6)[15]((?<=1)[0]|(?<=5)[0])|(?<=2)[60]((?<=6)[0]|(?<=0)[015])|(?<=8)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=3)[51]((?<=5)[0]|(?<=1)[0])|(?<=5)[42]((?<=4)[0]|(?<=2)[0])|(?<=1)[51]((?<=5)[0]|(?<=1)[0])|(?<=9)[01]((?<=0)[0]|(?<=1)[0]))|(?<=9)[49872653]((?<=4)[061982]((?<=0)[1054]|(?<=6)[01]|(?<=1)[104]|(?<=9)[0]|(?<=8)[0]|(?<=2)[04])|(?<=9)[0368]((?<=0)[014]|(?<=3)[04]|(?<=6)[0]|(?<=8)[0])|(?<=8)[46]((?<=4)[0]|(?<=6)[0])|(?<=7)[7306258]((?<=7)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0])|(?<=2)[402971]((?<=4)[0]|(?<=0)[0]|(?<=2)[04]|(?<=9)[0]|(?<=7)[05]|(?<=1)[0])|(?<=6)[3164]((?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0])|(?<=5)[4172]((?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=2)[0])|(?<=3)[04]((?<=0)[0]|(?<=4)[0])))|(?<=2)[1675940238]((?<=1)[6927148350]((?<=6)[68201753]((?<=6)[01]|(?<=8)[0]|(?<=2)[04]|(?<=0)[0154]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0])|(?<=9)[30]((?<=3)[0]|(?<=0)[10])|(?<=2)[3751906824]((?<=3)[04]|(?<=7)[0]|(?<=5)[0154]|(?<=1)[04]|(?<=9)[10]|(?<=0)[0154]|(?<=6)[0]|(?<=8)[054]|(?<=2)[0]|(?<=4)[04])|(?<=7)[274615]((?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0])|(?<=1)[064913582]((?<=0)[1054]|(?<=6)[0]|(?<=4)[04]|(?<=9)[5]|(?<=1)[04]|(?<=3)[0]|(?<=5)[0]|(?<=8)[04]|(?<=2)[0])|(?<=4)[952831]((?<=9)[04]|(?<=5)[0]|(?<=2)[01542]|(?<=8)[0]|(?<=3)[0]|(?<=1)[04])|(?<=8)[9278604]((?<=9)[0]|(?<=2)[0]|(?<=7)[014]|(?<=8)[0]|(?<=6)[0]|(?<=0)[10]|(?<=4)[0])|(?<=3)[4836517]((?<=4)[0]|(?<=8)[104]|(?<=3)[05]|(?<=6)[0]|(?<=5)[04]|(?<=1)[0]|(?<=7)[0])|(?<=5)[427093615]((?<=4)[0]|(?<=2)[0]|(?<=7)[01]|(?<=0)[014]|(?<=9)[0]|(?<=3)[1054]|(?<=6)[0]|(?<=1)[0]|(?<=5)[5])|(?<=0)[08]((?<=0)[6]|(?<=8)[6]))|(?<=6)[91826754]((?<=9)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=1)[0]((?<=0)[0154])|(?<=8)[24]((?<=2)[0]|(?<=4)[05])|(?<=2)[0]((?<=0)[04])|(?<=6)[6]((?<=6)[104])|(?<=7)[42]((?<=4)[0]|(?<=2)[0])|(?<=5)[16]((?<=1)[0]|(?<=6)[0])|(?<=4)[1]((?<=1)[0]))|(?<=7)[415278369]((?<=4)[5032]((?<=5)[0]|(?<=0)[104]|(?<=3)[04]|(?<=2)[0])|(?<=1)[301657]((?<=3)[0]|(?<=0)[014]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0])|(?<=5)[10]((?<=1)[0154]|(?<=0)[104])|(?<=2)[6352]((?<=6)[0]|(?<=3)[014]|(?<=5)[0]|(?<=2)[0])|(?<=7)[5413]((?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0])|(?<=8)[0264]((?<=0)[104]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0])|(?<=3)[241]((?<=2)[04]|(?<=4)[0]|(?<=1)[0])|(?<=6)[0547]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0])|(?<=9)[21]((?<=2)[0]|(?<=1)[0]))|(?<=5)[536192847]((?<=5)[604257]((?<=6)[0]|(?<=0)[104]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0])|(?<=3)[7392684]((?<=7)[0]|(?<=3)[04]|(?<=9)[04]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0])|(?<=6)[63514]((?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=1)[196387]((?<=1)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0])|(?<=9)[514306]((?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0])|(?<=2)[63514]((?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=8)[372641]((?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0])|(?<=4)[26713]((?<=2)[0]|(?<=6)[04]|(?<=7)[0]|(?<=1)[04]|(?<=3)[0])|(?<=7)[6031]((?<=6)[0]|(?<=0)[104]|(?<=3)[0]|(?<=1)[0]))|(?<=9)[38267195]((?<=3)[2514]((?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=8)[6183]((?<=6)[0]|(?<=1)[104]|(?<=8)[0]|(?<=3)[0])|(?<=2)[7058]((?<=7)[0]|(?<=0)[1054]|(?<=5)[104]|(?<=8)[0])|(?<=6)[0348]((?<=0)[104]|(?<=3)[10]|(?<=4)[0]|(?<=8)[0])|(?<=7)[265049]((?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0])|(?<=1)[80]((?<=8)[0]|(?<=0)[015])|(?<=9)[04]((?<=0)[104]|(?<=4)[0])|(?<=5)[7]((?<=7)[0]))|(?<=4)[2189]((?<=2)[846]((?<=8)[05]|(?<=4)[05]|(?<=6)[04])|(?<=1)[30]((?<=3)[0]|(?<=0)[1054])|(?<=8)[0]((?<=0)[1054])|(?<=9)[1]((?<=1)[0]))|(?<=0)[1257380694]((?<=1)[0]((?<=0)[0514])|(?<=2)[1504]((?<=1)[054]|(?<=5)[0154]|(?<=0)[104]|(?<=4)[104])|(?<=5)[204]((?<=2)[0154]|(?<=0)[015]|(?<=4)[0154])|(?<=7)[8540623]((?<=8)[0154]|(?<=5)[104]|(?<=4)[0154]|(?<=0)[1054]|(?<=6)[1054]|(?<=2)[04]|(?<=3)[054])|(?<=3)[8620]((?<=8)[104]|(?<=6)[0154]|(?<=2)[1054]|(?<=0)[054])|(?<=8)[810]((?<=8)[04]|(?<=1)[1054]|(?<=0)[01])|(?<=0)[0213]((?<=0)[6]|(?<=2)[5]|(?<=1)[4]|(?<=3)[2])|(?<=6)[61]((?<=6)[04]|(?<=1)[1054])|(?<=9)[06]((?<=0)[054]|(?<=6)[0])|(?<=4)[60]((?<=6)[04]|(?<=0)[04]))|(?<=2)[914827356]((?<=9)[35241]((?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0])|(?<=1)[5043621]((?<=5)[015]|(?<=0)[015]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[015])|(?<=4)[13]((?<=1)[105]|(?<=3)[0])|(?<=8)[1432]((?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0])|(?<=2)[247]((?<=2)[0]|(?<=4)[0]|(?<=7)[0])|(?<=7)[132]((?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=3)[3214]((?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0])|(?<=5)[253]((?<=2)[0]|(?<=5)[0]|(?<=3)[0])|(?<=6)[31]((?<=3)[0]|(?<=1)[0]))|(?<=3)[18632594]((?<=1)[402]((?<=4)[04]|(?<=0)[104]|(?<=2)[0])|(?<=8)[804]((?<=8)[0]|(?<=0)[0154]|(?<=4)[0])|(?<=6)[06]((?<=0)[01]|(?<=6)[0])|(?<=3)[196]((?<=1)[014]|(?<=9)[0]|(?<=6)[0])|(?<=2)[061]((?<=0)[10]|(?<=6)[04]|(?<=1)[0])|(?<=5)[0]((?<=0)[1054])|(?<=9)[365]((?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=4)[5]((?<=5)[0]))|(?<=8)[382754169]((?<=3)[6730]((?<=6)[0154]|(?<=7)[04]|(?<=3)[0]|(?<=0)[04])|(?<=8)[480]((?<=4)[04]|(?<=8)[0]|(?<=0)[04])|(?<=2)[6240]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[04])|(?<=7)[6]((?<=6)[0])|(?<=5)[4806]((?<=4)[0]|(?<=8)[0]|(?<=0)[04]|(?<=6)[0])|(?<=4)[053]((?<=0)[10574]|(?<=5)[04]|(?<=3)[04])|(?<=1)[0923]((?<=0)[0154]|(?<=9)[0]|(?<=2)[04]|(?<=3)[1054])|(?<=6)[016]((?<=0)[014]|(?<=1)[054]|(?<=6)[0])|(?<=9)[0]((?<=0)[04])))))$"), IT: new RegExp("^([6784230195]((?<=6)[67540321]((?<=6)[01]((?<=0)[41352]((?<=4)[04123567]|(?<=1)[012456789]|(?<=3)[01234687]|(?<=5)[0124]|(?<=2)[12360])|(?<=1)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[243516]((?<=2)[0123456789]|(?<=4)[134056789]|(?<=3)[0123456789]|(?<=5)[1203456789]|(?<=1)[0234579]|(?<=6)[012346789])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[21]((?<=2)[023467589]|(?<=1)[01234579])|(?<=1)[2]((?<=2)[123456789]))|(?<=4)[01]((?<=0)[1324]((?<=1)[10234568]|(?<=3)[120345679]|(?<=2)[01345678]|(?<=4)[120345679])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[2134]((?<=2)[0124567]|(?<=1)[1035892]|(?<=3)[013457689]|(?<=4)[34018])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[1]))|(?<=3)[0189]((?<=0)[9786]((?<=9)[564231]|(?<=7)[529763148]|(?<=8)[32174658]|(?<=6)[374618925])|(?<=1)[0]((?<=0)[0])|(?<=8)[25314]((?<=2)[48356721]|(?<=5)[72583146]|(?<=3)[872456319]|(?<=1)[653214]|(?<=4)[42671385])|(?<=9)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[213]((?<=2)[102456789]|(?<=1)[01245789]|(?<=3)[5296481])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[4231]((?<=4)[1203495678]|(?<=2)[613405892]|(?<=3)[06234798]|(?<=1)[1230])|(?<=1)[2]((?<=2)[12])))|(?<=7)[5062134]((?<=5)[01]((?<=0)[12]((?<=1)[1023456789]|(?<=2)[1234056789])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[21354]((?<=2)[1203456789]|(?<=1)[013456789]|(?<=3)[2378]|(?<=5)[46]|(?<=4)[234])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12]))|(?<=6)[10]((?<=1)[2]((?<=2)[315])|(?<=0)[1]((?<=1)[1263745]))|(?<=2)[10]((?<=1)[0]((?<=0)[0])|(?<=0)[12]((?<=1)[2345789]|(?<=2)[0123456789]))|(?<=1)[01]((?<=0)[23145]((?<=2)[1023456789]|(?<=3)[1203456789]|(?<=1)[1023456789]|(?<=4)[1230578]|(?<=5)[1])|(?<=1)[2]((?<=2)[12]))|(?<=3)[01]((?<=0)[31425]((?<=3)[1203456789]|(?<=1)[1023456789]|(?<=4)[0123456789]|(?<=2)[0123456789]|(?<=5)[1234506789])|(?<=1)[0]((?<=0)[0]))|(?<=4)[01]((?<=0)[21]((?<=2)[01234678]|(?<=1)[1234567890])|(?<=1)[2]((?<=2)[123])))|(?<=8)[5879321046]((?<=5)[01]((?<=0)[12534]((?<=1)[012345678]|(?<=2)[0123456789]|(?<=5)[0123456789]|(?<=3)[0123456789]|(?<=4)[02346789])|(?<=1)[0]((?<=0)[0]))|(?<=8)[0189]((?<=0)[54627]((?<=5)[50146]|(?<=4)[01256479]|(?<=6)[0274589]|(?<=2)[10245]|(?<=7)[01])|(?<=1)[0]((?<=0)[0])|(?<=8)[2314]((?<=2)[42153]|(?<=3)[34687512]|(?<=1)[73124869]|(?<=4)[21])|(?<=9)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[1243756]((?<=1)[0123456789]|(?<=2)[012346789]|(?<=4)[102345678]|(?<=3)[123045678]|(?<=7)[0123456]|(?<=5)[109345678]|(?<=6)[012469])|(?<=1)[0]((?<=0)[0]))|(?<=9)[0189]((?<=0)[342615]((?<=3)[012354689]|(?<=4)[0123456789]|(?<=2)[0123456789]|(?<=6)[03459]|(?<=1)[123045678]|(?<=5)[024678])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12345])|(?<=8)[312645]((?<=3)[2314]|(?<=1)[78645923]|(?<=2)[2341]|(?<=6)[2316478]|(?<=4)[1342]|(?<=5)[123])|(?<=9)[0]((?<=0)[0]))|(?<=3)[01]((?<=0)[21435]((?<=2)[012345789]|(?<=1)[102345678]|(?<=4)[0123456789]|(?<=3)[124056789]|(?<=5)[1023456789])|(?<=1)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[132]((?<=1)[103845679]|(?<=3)[10723468]|(?<=2)[1072435689])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[12345]((?<=1)[0123467]|(?<=2)[10234578]|(?<=3)[1023546789]|(?<=4)[12304679]|(?<=5)[9012345678])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[12574368]((?<=1)[123467890]|(?<=2)[1234506789]|(?<=5)[103645789]|(?<=7)[1023457689]|(?<=4)[120456789]|(?<=3)[102345689]|(?<=6)[123579]|(?<=8)[1])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[1234567]))|(?<=4)[01]((?<=0)[412389567]((?<=4)[234056798]|(?<=1)[1203456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=8)[120345678]|(?<=9)[1205689]|(?<=5)[91230567]|(?<=6)[01256897]|(?<=7)[03456789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12345]))|(?<=6)[01]((?<=0)[3124897]((?<=3)[0145236789]|(?<=1)[1023456789]|(?<=2)[1023456789]|(?<=4)[1023456879]|(?<=8)[0123456789]|(?<=9)[12307456]|(?<=7)[123045789])|(?<=1)[07]((?<=0)[0]|(?<=7)[0])))|(?<=4)[047138265]((?<=0)[01]((?<=0)[415236]((?<=4)[61238]|(?<=1)[1023456789]|(?<=5)[02457193]|(?<=2)[10234567]|(?<=3)[23405678]|(?<=6)[012345689])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[1]))|(?<=4)[01]((?<=0)[1423]((?<=1)[1259]|(?<=4)[279]|(?<=2)[1270368]|(?<=3)[4739])|(?<=1)[2]((?<=2)[1234]))|(?<=7)[05189]((?<=0)[2314]((?<=2)[10578]|(?<=3)[20459]|(?<=1)[1230456789]|(?<=4)[23])|(?<=5)[2]((?<=2)[12])|(?<=1)[2]((?<=2)[12])|(?<=8)[164532]((?<=1)[4]|(?<=6)[128345697]|(?<=4)[132]|(?<=5)[354]|(?<=3)[6473852]|(?<=2)[426])|(?<=9)[2]((?<=2)[1234]))|(?<=1)[01]((?<=0)[31524]((?<=3)[012346789]|(?<=1)[123456789]|(?<=5)[123456789]|(?<=2)[123567089]|(?<=4)[23456089])|(?<=1)[2]((?<=2)[123456]))|(?<=3)[01]((?<=0)[53412]((?<=5)[1238960]|(?<=3)[2056789]|(?<=4)[123457609]|(?<=1)[1203456789]|(?<=2)[124589])|(?<=1)[2]((?<=2)[123456]))|(?<=8)[01]((?<=0)[132]((?<=1)[1234578]|(?<=3)[1234]|(?<=2)[245607])|(?<=1)[2]((?<=2)[12345]))|(?<=2)[01]((?<=0)[2134]((?<=2)[012364578]|(?<=1)[1234567089]|(?<=3)[134520]|(?<=4)[1023456789])|(?<=1)[2]((?<=2)[1234]))|(?<=6)[01]((?<=0)[14325]((?<=1)[12340789]|(?<=4)[1023456789]|(?<=3)[164320579]|(?<=2)[130456789]|(?<=5)[1])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[132]((?<=1)[12057849]|(?<=3)[1230456789]|(?<=2)[12034567])|(?<=1)[0]((?<=0)[0])))|(?<=2)[9452630718]((?<=9)[01]((?<=0)[132]((?<=1)[0123546789]|(?<=3)[1]|(?<=2)[1203456789])|(?<=1)[2]((?<=2)[12]))|(?<=4)[01]((?<=0)[621354]((?<=6)[0139245678]|(?<=2)[1206345789]|(?<=1)[0173456289]|(?<=3)[0173456892]|(?<=5)[1203458679]|(?<=4)[0123456789])|(?<=1)[2]((?<=2)[123456789]))|(?<=5)[01]((?<=0)[13724865]((?<=1)[0123456789]|(?<=3)[0123456789]|(?<=7)[1023456879]|(?<=2)[0123456789]|(?<=4)[023456789]|(?<=8)[1203456789]|(?<=6)[10234589]|(?<=5)[1034256789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[123456]))|(?<=2)[01]((?<=0)[374216]((?<=3)[1230456789]|(?<=7)[0123456789]|(?<=4)[0145623]|(?<=2)[410835679]|(?<=1)[023451786]|(?<=6)[01369])|(?<=1)[0]((?<=0)[0]))|(?<=6)[0189]((?<=0)[2143]((?<=2)[0123456789]|(?<=1)[0142375689]|(?<=4)[0124536789]|(?<=3)[0123456789])|(?<=1)[0]((?<=0)[0])|(?<=8)[321546]((?<=3)[412356789]|(?<=2)[12345678]|(?<=1)[12345678]|(?<=5)[123457689]|(?<=4)[124356789]|(?<=6)[6123457])|(?<=9)[0]((?<=0)[0]))|(?<=3)[8901]((?<=8)[2841903765]((?<=2)[123457689]|(?<=8)[135046879]|(?<=4)[125386794]|(?<=1)[16734589]|(?<=9)[0123485967]|(?<=0)[125748]|(?<=3)[1237456]|(?<=7)[01346579]|(?<=6)[124578]|(?<=5)[12457])|(?<=9)[0]((?<=0)[0])|(?<=0)[10324]((?<=1)[0126345789]|(?<=0)[9]|(?<=3)[102345678]|(?<=2)[102345679]|(?<=4)[1])|(?<=1)[0]((?<=0)[0]))|(?<=0)[0189]((?<=0)[8240567193]((?<=8)[1023845679]|(?<=2)[0123456789]|(?<=4)[4106758293]|(?<=0)[483712569]|(?<=5)[7916034258]|(?<=6)[0123456789]|(?<=7)[9405673281]|(?<=1)[0123456789]|(?<=9)[1023456789]|(?<=3)[8912674035])|(?<=1)[23456]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[12])|(?<=8)[68425137]((?<=6)[4217635]|(?<=8)[621354]|(?<=4)[7216543]|(?<=2)[543162]|(?<=5)[3765142]|(?<=1)[361524]|(?<=3)[62354817]|(?<=7)[5432671])|(?<=9)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[241536]((?<=2)[0123456789]|(?<=4)[0123457689]|(?<=1)[0123456789]|(?<=5)[0162345789]|(?<=3)[102456789]|(?<=6)[1])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[142536]((?<=1)[0123456789]|(?<=4)[1023456789]|(?<=2)[1203456789]|(?<=5)[1023456789]|(?<=3)[0912345678]|(?<=6)[21])|(?<=1)[0]((?<=0)[0]))|(?<=8)[0189]((?<=0)[146725]((?<=1)[012345679]|(?<=4)[130567]|(?<=6)[12405689]|(?<=7)[1230456789]|(?<=2)[148]|(?<=5)[30])|(?<=1)[0]((?<=0)[0])|(?<=8)[4719635280]((?<=4)[126534]|(?<=7)[713569]|(?<=1)[123456789]|(?<=9)[91345867]|(?<=6)[1523468]|(?<=3)[12368]|(?<=5)[123456789]|(?<=2)[1238467]|(?<=8)[173456]|(?<=0)[12345])|(?<=9)[2]((?<=2)[12345])))|(?<=3)[4398251076]((?<=4)[01]((?<=0)[71]((?<=7)[0123647859]|(?<=1)[16580])|(?<=1)[72345]((?<=7)[0]|(?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[1]))|(?<=3)[01]((?<=0)[897425136]((?<=8)[01234567]|(?<=9)[0245879]|(?<=7)[02546789]|(?<=4)[1028345679]|(?<=2)[0123495678]|(?<=5)[1029345678]|(?<=1)[1035627849]|(?<=3)[1203456789]|(?<=6)[1])|(?<=1)[70]((?<=7)[0]|(?<=0)[0]))|(?<=9)[01]((?<=0)[41532]((?<=4)[0123456789]|(?<=1)[0123457896]|(?<=5)[712305648]|(?<=3)[6012345789]|(?<=2)[0712345689])|(?<=1)[0]((?<=0)[0]))|(?<=8)[01]((?<=0)[649157823]((?<=6)[1023475968]|(?<=4)[192350678]|(?<=9)[234875169]|(?<=1)[103567829]|(?<=5)[012935674]|(?<=7)[193745680]|(?<=8)[03265789]|(?<=2)[023758649]|(?<=3)[120345768])|(?<=1)[2]((?<=2)[123]))|(?<=2)[01]((?<=0)[2314]((?<=2)[126037]|(?<=3)[102348567]|(?<=1)[60342]|(?<=4)[1023465])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[3241]((?<=3)[12045678]|(?<=2)[1023456789]|(?<=4)[016234578]|(?<=1)[0123456789])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123]))|(?<=1)[01]((?<=0)[31452]((?<=3)[0123456789]|(?<=1)[120345687]|(?<=4)[013456789]|(?<=5)[1203456789]|(?<=2)[1420356789])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[213]((?<=2)[0123546789]|(?<=1)[03456]|(?<=3)[1204536789])|(?<=1)[234567]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[123456789]|(?<=7)[123456]))|(?<=7)[01]((?<=0)[145326]((?<=1)[0123467895]|(?<=4)[102345679]|(?<=5)[0123456789]|(?<=3)[0125689]|(?<=2)[10234689]|(?<=6)[0346789])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[12]))|(?<=6)[01]((?<=0)[2475163]((?<=2)[0234567891]|(?<=4)[58203674]|(?<=7)[70123568]|(?<=5)[70123456]|(?<=1)[1203456]|(?<=6)[143506]|(?<=3)[0123456])|(?<=1)[0]((?<=0)[0])))|(?<=0)[3420198765]((?<=3)[01]((?<=0)[4123]((?<=4)[0123456789]|(?<=1)[012346789]|(?<=2)[1023456789]|(?<=3)[1230456789])|(?<=1)[0]((?<=0)[0]))|(?<=4)[01]((?<=0)[123]((?<=1)[1024567389]|(?<=2)[012345679]|(?<=3)[1])|(?<=1)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[1243]((?<=1)[123045689]|(?<=2)[0123456]|(?<=4)[0123456789]|(?<=3)[012345789])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[2456731]((?<=2)[1023456789]|(?<=4)[1203456789]|(?<=5)[1234589]|(?<=6)[123056789]|(?<=7)[235678419]|(?<=3)[1023456789]|(?<=1)[0325789])|(?<=1)[123456789]((?<=1)[89]|(?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[123456789]|(?<=7)[123456789]|(?<=8)[123456789]|(?<=9)[123456789]))|(?<=1)[01]((?<=0)[213]((?<=2)[12304578]|(?<=1)[012456789]|(?<=3)[023456789])|(?<=1)[0]((?<=0)[0]))|(?<=9)[01]((?<=0)[316452798]((?<=3)[2315607894]|(?<=1)[2801345679]|(?<=6)[7908123456]|(?<=4)[254780139]|(?<=5)[0123456789]|(?<=2)[8102346579]|(?<=7)[1023458679]|(?<=9)[0123457689]|(?<=8)[019238564])|(?<=1)[237]((?<=2)[123456789]|(?<=3)[1234]|(?<=7)[0]))|(?<=8)[01]((?<=0)[3412]((?<=3)[102689]|(?<=4)[02456789]|(?<=1)[0162578]|(?<=2)[1230456789])|(?<=1)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[24135]((?<=2)[0123456789]|(?<=4)[103456789]|(?<=1)[0123456789]|(?<=3)[0123456789]|(?<=5)[12])|(?<=1)[0]((?<=0)[0]))|(?<=6)[01]((?<=0)[83461572]((?<=8)[1349]|(?<=3)[13405689]|(?<=4)[234156079]|(?<=6)[12034569]|(?<=1)[02469]|(?<=5)[0345679]|(?<=7)[3]|(?<=2)[123456789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12345]))|(?<=5)[01]((?<=0)[213]((?<=2)[102345689]|(?<=1)[123456078]|(?<=3)[124059])|(?<=1)[0]((?<=0)[0])))|(?<=1)[6897254301]((?<=6)[01]((?<=0)[1324]((?<=1)[1234560789]|(?<=3)[612034589]|(?<=2)[1203456789]|(?<=4)[1234056789])|(?<=1)[23456]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[1234567]))|(?<=8)[01]((?<=0)[321]((?<=3)[0513427689]|(?<=2)[061273584]|(?<=1)[0217345689])|(?<=1)[0]((?<=0)[0]))|(?<=9)[01]((?<=0)[321]((?<=3)[132478]|(?<=2)[1058]|(?<=1)[123450678])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[1234567]))|(?<=7)[01]((?<=0)[23145]((?<=2)[108234756]|(?<=3)[123045789]|(?<=1)[12457039]|(?<=4)[153027648]|(?<=5)[17426835])|(?<=1)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[72153468]((?<=7)[1042356789]|(?<=2)[1023456789]|(?<=1)[0123456789]|(?<=5)[10345628]|(?<=3)[1203456789]|(?<=4)[0123456789]|(?<=6)[012345689]|(?<=8)[10234789])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[1624537]((?<=1)[102356789]|(?<=6)[0123456789]|(?<=2)[1206345789]|(?<=4)[7120345689]|(?<=5)[0123649578]|(?<=3)[1203456789]|(?<=7)[0123456789])|(?<=1)[2]((?<=2)[12]))|(?<=4)[01]((?<=0)[42135]((?<=4)[1062435789]|(?<=2)[2015364]|(?<=1)[0143285679]|(?<=3)[012345679]|(?<=5)[123045789])|(?<=1)[0]((?<=0)[0]))|(?<=3)[8901]((?<=8)[617429583]((?<=6)[12463578]|(?<=1)[1264578]|(?<=7)[12843567]|(?<=4)[134578]|(?<=2)[134]|(?<=9)[13456789]|(?<=5)[13456]|(?<=8)[12783456]|(?<=3)[6135])|(?<=9)[0]((?<=0)[0])|(?<=0)[23416]((?<=2)[1902364578]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=1)[210789]|(?<=6)[0])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[167489253]((?<=1)[1023456789]|(?<=6)[0123456789]|(?<=7)[0123495678]|(?<=4)[01623458]|(?<=8)[0123456978]|(?<=9)[12034589]|(?<=2)[02345689]|(?<=5)[1203459678]|(?<=3)[124056798])|(?<=1)[2345]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456]))|(?<=1)[01]((?<=0)[12]((?<=1)[012345678]|(?<=2)[023456789])|(?<=1)[0]((?<=0)[0])))|(?<=9)[235480761]((?<=2)[10]((?<=1)[0]((?<=0)[0])|(?<=0)[123]((?<=1)[0123456789]|(?<=2)[1023456789]|(?<=3)[1]))|(?<=3)[01]((?<=0)[1]((?<=1)[0123456789])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[2314]((?<=2)[01254789]|(?<=3)[1234056789]|(?<=1)[1234560789]|(?<=4)[1023456789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[1]))|(?<=4)[01]((?<=0)[1]((?<=1)[1023456789])|(?<=1)[0]((?<=0)[0]))|(?<=8)[01]((?<=0)[723564]((?<=7)[0123456789]|(?<=2)[012356789]|(?<=3)[0123456789]|(?<=5)[130456789]|(?<=6)[0123456789]|(?<=4)[0123456789])|(?<=1)[23456]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[12345678]))|(?<=0)[01]((?<=0)[21345]((?<=2)[1023456789]|(?<=1)[0123456789]|(?<=3)[0123456789]|(?<=4)[1230456789]|(?<=5)[1])|(?<=1)[2345]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[1]))|(?<=7)[01]((?<=0)[1]((?<=1)[1230456789])|(?<=1)[0]((?<=0)[0]))|(?<=6)[01]((?<=0)[1]((?<=1)[1203456789])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[123]((?<=1)[1234567809]|(?<=2)[1234567809]|(?<=3)[1])|(?<=1)[0]((?<=0)[0])))|(?<=5)[2087546193]((?<=2)[01]((?<=0)[3124]((?<=3)[1235678]|(?<=1)[1068945]|(?<=2)[16924578]|(?<=4)[3145678])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[132456]((?<=1)[23489]|(?<=3)[12345869]|(?<=2)[82356]|(?<=4)[1]|(?<=5)[012345689]|(?<=6)[2305678])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[12345]))|(?<=8)[01]((?<=0)[34125]((?<=3)[134678]|(?<=4)[2345]|(?<=1)[1249570]|(?<=2)[234560]|(?<=5)[1345])|(?<=1)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[231]((?<=2)[0123578]|(?<=3)[41203678]|(?<=1)[46])|(?<=1)[2]((?<=2)[12345678]))|(?<=5)[01]((?<=0)[125436]((?<=1)[12569]|(?<=2)[235107]|(?<=5)[14]|(?<=4)[125709]|(?<=3)[102345689]|(?<=6)[4])|(?<=1)[0]((?<=0)[0]))|(?<=4)[01]((?<=0)[123]((?<=1)[1453602]|(?<=2)[136789]|(?<=3)[358])|(?<=1)[0]((?<=0)[0]))|(?<=6)[01]((?<=0)[3142]((?<=3)[123540678]|(?<=1)[12790]|(?<=4)[0123568]|(?<=2)[120589])|(?<=1)[2]((?<=2)[12345678]))|(?<=1)[01]((?<=0)[231]((?<=2)[408]|(?<=3)[156794]|(?<=1)[13056789])|(?<=1)[0]((?<=0)[0]))|(?<=9)[01]((?<=0)[21]((?<=2)[514]|(?<=1)[536])|(?<=1)[0]((?<=0)[0]))|(?<=3)[01]((?<=0)[2431]((?<=2)[12345670]|(?<=4)[10235789]|(?<=3)[145607]|(?<=1)[192345678])|(?<=1)[0]((?<=0)[0])))))$"), NO: new RegExp("^([0123456789]((?<=0)[0123456789]((?<=0)[01234568]((?<=0)[1]|(?<=1)[058]|(?<=2)[1468]|(?<=3)[012347]|(?<=4)[05678]|(?<=5)[05]|(?<=6)[0]|(?<=8)[1])|(?<=1)[0123456789]((?<=0)[12345679]|(?<=1)[0123456789]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[0]|(?<=5)[012345789]|(?<=6)[012456789]|(?<=7)[0123456789]|(?<=8)[012345678]|(?<=9)[01234568])|(?<=2)[01345678]((?<=0)[123478]|(?<=1)[12345678]|(?<=3)[0]|(?<=4)[047]|(?<=5)[0123456789]|(?<=6)[02345678]|(?<=7)[0123456789]|(?<=8)[0123467])|(?<=3)[012345678]((?<=0)[123456789]|(?<=1)[13456789]|(?<=2)[3]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123])|(?<=4)[012456789]((?<=0)[1234569]|(?<=1)[01235]|(?<=2)[1234]|(?<=4)[0125]|(?<=5)[012456789]|(?<=6)[012345789]|(?<=7)[023456789]|(?<=8)[0123456789]|(?<=9)[0123456])|(?<=5)[012456789]((?<=0)[123456789]|(?<=1)[01235678]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345678])|(?<=6)[01256789]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[012346]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[01234])|(?<=7)[0156789]((?<=0)[125]|(?<=1)[02]|(?<=5)[012345678]|(?<=6)[0345678]|(?<=7)[0123456789]|(?<=8)[123456789]|(?<=9)[01])|(?<=8)[0456789]((?<=0)[1567]|(?<=4)[0]|(?<=5)[012345678]|(?<=6)[01234]|(?<=7)[01234567]|(?<=8)[01234]|(?<=9)[01])|(?<=9)[015678]((?<=0)[1234578]|(?<=1)[345]|(?<=5)[0123456789]|(?<=6)[023489]|(?<=7)[012356789]|(?<=8)[012345678]))|(?<=1)[0123456789]((?<=0)[015678]((?<=0)[1356789]|(?<=1)[1]|(?<=5)[123456]|(?<=6)[12345789]|(?<=7)[1]|(?<=8)[1346789])|(?<=1)[015678]((?<=0)[1289]|(?<=1)[2]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[026789]|(?<=8)[1245789])|(?<=2)[0156789]((?<=0)[13457]|(?<=1)[45]|(?<=5)[0123456789]|(?<=6)[236]|(?<=7)[01234589]|(?<=8)[13456]|(?<=9)[0145])|(?<=3)[0123456789]((?<=0)[0123456789]|(?<=1)[12346789]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[0124689]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[12356789]|(?<=8)[013456789]|(?<=9)[012345679])|(?<=4)[012345678]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0123459]|(?<=3)[012345]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[123456789]|(?<=7)[0123456789]|(?<=8)[012345678])|(?<=5)[0123456789]((?<=0)[1234689]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345]|(?<=5)[056]|(?<=6)[01]|(?<=7)[0]|(?<=8)[01]|(?<=9)[012346789])|(?<=6)[0123456789]((?<=0)[12456789]|(?<=1)[023456789]|(?<=2)[012345689]|(?<=3)[02346789]|(?<=4)[0123]|(?<=5)[01345789]|(?<=6)[1234567]|(?<=7)[01235689]|(?<=8)[0234]|(?<=9)[02])|(?<=7)[0123456789]((?<=0)[123456789]|(?<=1)[01234589]|(?<=2)[01234567]|(?<=3)[034589]|(?<=4)[023567]|(?<=5)[123479]|(?<=6)[0123456789]|(?<=7)[126789]|(?<=8)[123456789]|(?<=9)[01234689])|(?<=8)[012356789]((?<=0)[123456789]|(?<=1)[123456]|(?<=2)[013578]|(?<=3)[0123]|(?<=5)[0129]|(?<=6)[0167]|(?<=7)[0158]|(?<=8)[0]|(?<=9)[01234])|(?<=9)[01234567]((?<=0)[013]|(?<=1)[012467]|(?<=2)[013456789]|(?<=3)[01]|(?<=4)[01]|(?<=5)[014]|(?<=6)[013]|(?<=7)[01]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[013456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456]|(?<=4)[01]|(?<=5)[012345678]|(?<=6)[01236789]|(?<=7)[012346]|(?<=8)[01]|(?<=9)[01234])|(?<=1)[0123567]((?<=0)[01]|(?<=1)[046]|(?<=2)[013]|(?<=3)[0234]|(?<=5)[01]|(?<=6)[01234567]|(?<=7)[0])|(?<=2)[012345678]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[034567]|(?<=3)[01235]|(?<=4)[01]|(?<=5)[16]|(?<=6)[01456]|(?<=7)[01]|(?<=8)[03])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[01456]|(?<=5)[0135]|(?<=6)[0145]|(?<=7)[23]|(?<=8)[0123456789]|(?<=9)[01])|(?<=4)[012345678]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0245678]|(?<=4)[01234678]|(?<=5)[01]|(?<=6)[01]|(?<=7)[678]|(?<=8)[0145678])|(?<=5)[014568]((?<=0)[01]|(?<=1)[023]|(?<=4)[0124]|(?<=5)[0125]|(?<=6)[01]|(?<=8)[0124])|(?<=6)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[12346789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[012345678]|(?<=9)[0345])|(?<=7)[1234567]((?<=1)[12345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[023]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[01257]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[013478]|(?<=6)[0123467]|(?<=7)[09]|(?<=8)[012]|(?<=9)[03])|(?<=9)[012345678]((?<=0)[0179]|(?<=1)[078]|(?<=2)[039]|(?<=3)[03679]|(?<=4)[03]|(?<=5)[02349]|(?<=6)[0567]|(?<=7)[23457]|(?<=8)[5]))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[012345678]|(?<=5)[01345678]|(?<=6)[013456]|(?<=7)[01234567]|(?<=8)[0123456789]|(?<=9)[0125])|(?<=1)[0123456789]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[12345789]|(?<=4)[0123458]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[12345679])|(?<=2)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[123456789]|(?<=6)[012345789]|(?<=7)[014567]|(?<=8)[01245]|(?<=9)[0124567])|(?<=3)[0234567]((?<=0)[0123]|(?<=2)[012]|(?<=3)[01]|(?<=4)[012]|(?<=5)[015789]|(?<=6)[01]|(?<=7)[01])|(?<=4)[01234789]((?<=0)[123456789]|(?<=1)[01234]|(?<=2)[015678]|(?<=3)[01]|(?<=4)[012]|(?<=7)[012456789]|(?<=8)[012345]|(?<=9)[0])|(?<=5)[0123456789]((?<=0)[12347]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456]|(?<=5)[01]|(?<=6)[01]|(?<=7)[015679]|(?<=8)[018]|(?<=9)[35])|(?<=6)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0124]|(?<=4)[678]|(?<=5)[0268]|(?<=6)[0156]|(?<=7)[123456789]|(?<=8)[0134]|(?<=9)[0127])|(?<=7)[0123456789]((?<=0)[123457]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012346789]|(?<=5)[03]|(?<=6)[06]|(?<=7)[02]|(?<=8)[0135789]|(?<=9)[012345689])|(?<=8)[0123456789]((?<=0)[012345]|(?<=1)[012]|(?<=2)[05]|(?<=3)[0123456]|(?<=4)[01489]|(?<=5)[02345]|(?<=6)[4]|(?<=7)[0]|(?<=8)[02345678]|(?<=9)[0135])|(?<=9)[012345679]((?<=0)[123456]|(?<=1)[0123456789]|(?<=2)[0124589]|(?<=3)[013679]|(?<=4)[012346789]|(?<=5)[0]|(?<=6)[012567]|(?<=7)[0]|(?<=9)[13456789]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[123456]|(?<=4)[123456789]|(?<=5)[0123456789]|(?<=6)[38]|(?<=7)[01236789]|(?<=8)[123456789]|(?<=9)[0123456789])|(?<=1)[0123456789]((?<=0)[02345]|(?<=1)[09]|(?<=2)[01346789]|(?<=3)[0479]|(?<=4)[68]|(?<=5)[0234689]|(?<=6)[0134789]|(?<=7)[034]|(?<=8)[0127]|(?<=9)[8])|(?<=2)[03456789]((?<=0)[0189]|(?<=3)[034579]|(?<=4)[04]|(?<=5)[0]|(?<=6)[0245]|(?<=7)[02456]|(?<=8)[0]|(?<=9)[1456789])|(?<=3)[0123456789]((?<=0)[126789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345678]|(?<=6)[012345789]|(?<=7)[012345689]|(?<=8)[014579]|(?<=9)[0123456789])|(?<=4)[02346789]((?<=0)[01234567]|(?<=2)[0]|(?<=3)[24689]|(?<=4)[013]|(?<=6)[0235]|(?<=7)[3]|(?<=8)[0456]|(?<=9)[012])|(?<=5)[0123456789]((?<=0)[1234789]|(?<=1)[345679]|(?<=2)[012345689]|(?<=3)[2456]|(?<=4)[014]|(?<=5)[0123478]|(?<=6)[03]|(?<=7)[5679]|(?<=8)[068]|(?<=9)[0567])|(?<=6)[0123456789]((?<=0)[45689]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[678]|(?<=6)[123456]|(?<=7)[0123456789]|(?<=8)[123456789]|(?<=9)[13456789])|(?<=7)[0123456789]((?<=0)[01235678]|(?<=1)[5]|(?<=2)[0145]|(?<=3)[03457]|(?<=4)[12456789]|(?<=5)[456]|(?<=6)[068]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012345])|(?<=8)[0123456789]((?<=0)[123489]|(?<=1)[025678]|(?<=2)[01234578]|(?<=3)[024689]|(?<=4)[12346789]|(?<=5)[123456789]|(?<=6)[234589]|(?<=7)[06789]|(?<=8)[456789]|(?<=9)[123468])|(?<=9)[01235789]((?<=0)[0123459]|(?<=1)[0256]|(?<=2)[01]|(?<=3)[4]|(?<=5)[0123567]|(?<=7)[1234]|(?<=8)[05]|(?<=9)[034]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[3456789]|(?<=1)[0123456789]|(?<=2)[012]|(?<=3)[123456789]|(?<=4)[1235]|(?<=5)[23456789]|(?<=6)[378]|(?<=7)[235]|(?<=8)[129]|(?<=9)[346789])|(?<=1)[012345678]((?<=0)[1456789]|(?<=1)[13456789]|(?<=2)[124]|(?<=3)[0124567]|(?<=4)[12345678]|(?<=5)[12345]|(?<=6)[012345]|(?<=7)[012346789]|(?<=8)[34])|(?<=2)[012345689]((?<=0)[01236789]|(?<=1)[012345678]|(?<=2)[123456789]|(?<=3)[01256789]|(?<=4)[34]|(?<=5)[1234789]|(?<=6)[01234578]|(?<=8)[123456]|(?<=9)[139])|(?<=3)[0123456789]((?<=0)[0123456789]|(?<=1)[014589]|(?<=2)[1235679]|(?<=3)[134567]|(?<=4)[123567]|(?<=5)[034578]|(?<=6)[0356]|(?<=7)[1489]|(?<=8)[0124578]|(?<=9)[2346789])|(?<=4)[0123456789]((?<=0)[12346789]|(?<=1)[0123456789]|(?<=2)[0378]|(?<=3)[07]|(?<=4)[034579]|(?<=5)[012345789]|(?<=6)[02345]|(?<=7)[023456]|(?<=8)[046]|(?<=9)[89])|(?<=5)[0123456789]((?<=0)[123456789]|(?<=1)[12456789]|(?<=2)[1235789]|(?<=3)[12345678]|(?<=4)[12456789]|(?<=5)[014569]|(?<=6)[012356789]|(?<=7)[04568]|(?<=8)[02345689]|(?<=9)[0134568])|(?<=6)[01234589]((?<=0)[01245]|(?<=1)[024]|(?<=2)[06789]|(?<=3)[0123567]|(?<=4)[0123456789]|(?<=5)[0123]|(?<=8)[0357]|(?<=9)[03456])|(?<=7)[012345678]((?<=0)[0123456789]|(?<=1)[01234589]|(?<=2)[0123456789]|(?<=3)[012346]|(?<=4)[1235679]|(?<=5)[012]|(?<=6)[03]|(?<=7)[0356789]|(?<=8)[012345678])|(?<=8)[0123456789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012345679]|(?<=3)[012345678]|(?<=4)[1345789]|(?<=5)[12345789]|(?<=6)[123456789]|(?<=7)[236789]|(?<=8)[146789]|(?<=9)[23569])|(?<=9)[013456789]((?<=0)[234678]|(?<=1)[123456789]|(?<=3)[156789]|(?<=4)[1378]|(?<=5)[1234567]|(?<=6)[01234567]|(?<=7)[0789]|(?<=8)[1234567]|(?<=9)[134]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[01234568]|(?<=3)[045679]|(?<=4)[045678]|(?<=5)[0245789]|(?<=6)[02345789]|(?<=7)[05689]|(?<=8)[023456789]|(?<=9)[01245689])|(?<=1)[0123456789]((?<=0)[0123456]|(?<=1)[0]|(?<=2)[01]|(?<=3)[3489]|(?<=4)[01234679]|(?<=5)[0123456]|(?<=6)[0156]|(?<=7)[014]|(?<=8)[34]|(?<=9)[06])|(?<=2)[0123456789]((?<=0)[01]|(?<=1)[0123456789]|(?<=2)[0234]|(?<=3)[089]|(?<=4)[09]|(?<=5)[059]|(?<=6)[0345]|(?<=7)[02]|(?<=8)[0123567]|(?<=9)[012345678])|(?<=3)[01235689]((?<=0)[01]|(?<=1)[05]|(?<=2)[0]|(?<=3)[019]|(?<=5)[0]|(?<=6)[01345]|(?<=8)[56789]|(?<=9)[0123456789])|(?<=4)[0123456789]((?<=0)[12345789]|(?<=1)[012345689]|(?<=2)[012359]|(?<=3)[013456]|(?<=4)[034567]|(?<=5)[02345678]|(?<=6)[012]|(?<=7)[01256]|(?<=8)[01]|(?<=9)[0349])|(?<=5)[0123479]((?<=0)[12346789]|(?<=1)[01245678]|(?<=2)[012345789]|(?<=3)[012389]|(?<=4)[6789]|(?<=7)[01]|(?<=9)[01])|(?<=6)[012345789]((?<=0)[01]|(?<=1)[01234]|(?<=2)[023789]|(?<=3)[01236789]|(?<=4)[012345]|(?<=5)[02356789]|(?<=7)[0145]|(?<=8)[036789]|(?<=9)[034789])|(?<=7)[0123456789]((?<=0)[0123478]|(?<=1)[013456789]|(?<=2)[136789]|(?<=3)[047]|(?<=4)[01]|(?<=5)[01]|(?<=6)[13]|(?<=7)[012346789]|(?<=8)[123489]|(?<=9)[0123456789])|(?<=8)[0123456789]((?<=0)[0123456789]|(?<=1)[012345789]|(?<=2)[01236789]|(?<=3)[01]|(?<=4)[1345789]|(?<=5)[123456789]|(?<=6)[136789]|(?<=7)[0123456789]|(?<=8)[1245678]|(?<=9)[1345689])|(?<=9)[012456789]((?<=0)[012356789]|(?<=1)[023456789]|(?<=2)[146789]|(?<=4)[012467]|(?<=5)[13789]|(?<=6)[1346789]|(?<=7)[135678]|(?<=8)[02345678]|(?<=9)[134567]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[3456]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[6789]|(?<=7)[0124589]|(?<=8)[012389]|(?<=9)[123789])|(?<=1)[0123456789]((?<=0)[015]|(?<=1)[01234569]|(?<=2)[015679]|(?<=3)[0]|(?<=4)[02]|(?<=5)[012369]|(?<=6)[0456789]|(?<=7)[045678]|(?<=8)[01]|(?<=9)[04])|(?<=2)[0123456789]((?<=0)[01367]|(?<=1)[123]|(?<=2)[13478]|(?<=3)[1245689]|(?<=4)[01234567]|(?<=5)[025679]|(?<=6)[0134678]|(?<=7)[034]|(?<=8)[02456789]|(?<=9)[0158])|(?<=3)[0123456789]((?<=0)[0123]|(?<=1)[05689]|(?<=2)[0179]|(?<=3)[1234568]|(?<=4)[01235]|(?<=5)[01345678]|(?<=6)[1]|(?<=7)[0245]|(?<=8)[034678]|(?<=9)[123789])|(?<=4)[0123456789]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[23456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345678])|(?<=5)[0123456789]((?<=0)[0123456789]|(?<=1)[0123479]|(?<=2)[059]|(?<=3)[013]|(?<=4)[019]|(?<=5)[01]|(?<=6)[0236]|(?<=7)[0]|(?<=8)[0134]|(?<=9)[016])|(?<=6)[01235679]((?<=0)[0123456789]|(?<=1)[09]|(?<=2)[02349]|(?<=3)[01234]|(?<=5)[012345678]|(?<=6)[01]|(?<=7)[012]|(?<=9)[01])|(?<=7)[012345679]((?<=0)[12345789]|(?<=1)[012345678]|(?<=2)[4569]|(?<=3)[023456789]|(?<=4)[0124568]|(?<=5)[01]|(?<=6)[01]|(?<=7)[017]|(?<=9)[01567])|(?<=8)[01256789]((?<=0)[0123458]|(?<=1)[0789]|(?<=2)[0123]|(?<=5)[6]|(?<=6)[0349]|(?<=7)[0134678]|(?<=8)[1245]|(?<=9)[0123678])|(?<=9)[02456789]((?<=0)[012]|(?<=2)[4]|(?<=4)[014]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0139]|(?<=8)[012356]|(?<=9)[0345]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[01234569]|(?<=2)[012356789]|(?<=3)[0178]|(?<=4)[1789]|(?<=5)[0678]|(?<=6)[2345]|(?<=7)[01234569]|(?<=8)[456789]|(?<=9)[123456789])|(?<=1)[0123456789]((?<=0)[0238]|(?<=1)[048]|(?<=2)[08]|(?<=3)[04568]|(?<=4)[0569]|(?<=5)[01789]|(?<=6)[018]|(?<=7)[089]|(?<=8)[123456789]|(?<=9)[0235678])|(?<=2)[012356789]((?<=0)[012356789]|(?<=1)[014589]|(?<=2)[06]|(?<=3)[0123]|(?<=5)[012356]|(?<=6)[0146]|(?<=7)[0134568]|(?<=8)[1356789]|(?<=9)[0478])|(?<=3)[012456789]((?<=0)[0159]|(?<=1)[01234567]|(?<=2)[0234568]|(?<=4)[0]|(?<=5)[27]|(?<=6)[01]|(?<=7)[0234678]|(?<=8)[024578]|(?<=9)[0238])|(?<=4)[0123456789]((?<=0)[0123456789]|(?<=1)[01234569]|(?<=2)[68]|(?<=3)[0289]|(?<=4)[57]|(?<=5)[059]|(?<=6)[59]|(?<=7)[05]|(?<=8)[0134589]|(?<=9)[3])|(?<=5)[012349]((?<=0)[123456789]|(?<=1)[023456789]|(?<=2)[0123]|(?<=3)[0134569]|(?<=4)[036]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[1234789]|(?<=1)[013456789]|(?<=2)[246]|(?<=3)[08]|(?<=4)[01234678]|(?<=5)[12456789]|(?<=6)[013456]|(?<=7)[2]|(?<=8)[12345]|(?<=9)[123456])|(?<=7)[0234567]((?<=0)[01]|(?<=2)[0345]|(?<=3)[0235]|(?<=4)[023]|(?<=5)[0234]|(?<=6)[246]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[0123459]|(?<=1)[3]|(?<=2)[07]|(?<=3)[0]|(?<=4)[24]|(?<=5)[0124]|(?<=6)[015]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0127])|(?<=9)[012678]((?<=0)[012456789]|(?<=1)[0]|(?<=2)[012]|(?<=6)[01]|(?<=7)[67]|(?<=8)[123456]))|(?<=9)[0123456789]((?<=0)[0123456]((?<=0)[6789]|(?<=1)[0123456789]|(?<=2)[0123479]|(?<=3)[0478]|(?<=4)[023569]|(?<=5)[05679]|(?<=6)[02489])|(?<=1)[0123456789]((?<=0)[0123456789]|(?<=1)[089]|(?<=2)[08]|(?<=3)[01245678]|(?<=4)[0123456789]|(?<=5)[123456789]|(?<=6)[1239]|(?<=7)[0134568]|(?<=8)[01245679]|(?<=9)[023457])|(?<=2)[456789]((?<=4)[0]|(?<=5)[123456789]|(?<=6)[012356789]|(?<=7)[0123456789]|(?<=8)[012345678]|(?<=9)[01234689])|(?<=3)[012356789]((?<=0)[023456789]|(?<=1)[0156]|(?<=2)[12569]|(?<=3)[456]|(?<=5)[0578]|(?<=6)[05]|(?<=7)[02369]|(?<=8)[012456789]|(?<=9)[1235])|(?<=4)[012345789]((?<=0)[23456789]|(?<=1)[14569]|(?<=2)[034567]|(?<=3)[069]|(?<=4)[012345678]|(?<=5)[013456]|(?<=7)[01569]|(?<=8)[0123456789]|(?<=9)[678])|(?<=5)[01234589]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[123678]|(?<=4)[015]|(?<=5)[02]|(?<=8)[0234567]|(?<=9)[0135])|(?<=6)[0125679]((?<=0)[01239]|(?<=1)[01256]|(?<=2)[014]|(?<=5)[017]|(?<=6)[4]|(?<=7)[02]|(?<=9)[012])|(?<=7)[0123456789]((?<=0)[09]|(?<=1)[01234567]|(?<=2)[2]|(?<=3)[01234567]|(?<=4)[02]|(?<=5)[01]|(?<=6)[0234568]|(?<=7)[01235]|(?<=8)[2]|(?<=9)[0])|(?<=8)[0124]((?<=0)[01234]|(?<=1)[015]|(?<=2)[06]|(?<=4)[0123456])|(?<=9)[01235689]((?<=0)[01]|(?<=1)[0124567]|(?<=2)[56]|(?<=3)[05]|(?<=5)[01]|(?<=6)[0]|(?<=8)[012]|(?<=9)[01]))))$"), - US: new RegExp("^([0123456789]((?<=0)[012345678]((?<=0)[6789]((?<=6)[0123456789]((?<=0)[1236]|(?<=1)[01267]|(?<=2)[2347]|(?<=3)[1678]|(?<=4)[167]|(?<=5)[02369]|(?<=6)[02479]|(?<=7)[04678]|(?<=8)[023578]|(?<=9)[02348])|(?<=7)[0123456789]((?<=0)[3457]|(?<=1)[456789]|(?<=2)[035789]|(?<=3)[015689]|(?<=4)[015]|(?<=5)[147]|(?<=6)[5679]|(?<=7)[123578]|(?<=8)[02346]|(?<=9)[145])|(?<=8)[02345]((?<=0)[2]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01])|(?<=9)[012345678]((?<=0)[1679]|(?<=1)[123578]|(?<=2)[0134567]|(?<=3)[4]|(?<=4)[9]|(?<=5)[0123679]|(?<=6)[0125689]|(?<=7)[169]|(?<=8)[2357]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[0123]|(?<=2)[026789]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[03467]|(?<=6)[023689]|(?<=7)[01234579]|(?<=8)[01234589]|(?<=9)[2345678])|(?<=1)[01245]((?<=0)[3456789]|(?<=1)[89]|(?<=2)[89]|(?<=4)[4]|(?<=5)[1])|(?<=2)[0234567]((?<=0)[1]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[023457]|(?<=5)[3456789]|(?<=6)[02467]|(?<=7)[0])|(?<=3)[0345678]((?<=0)[1]|(?<=3)[01789]|(?<=4)[01234679]|(?<=5)[0145]|(?<=6)[04678]|(?<=7)[035689]|(?<=8)[0])|(?<=4)[234567]((?<=2)[0]|(?<=3)[012468]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[023489]|(?<=7)[345])|(?<=5)[0123456789]((?<=0)[134567]|(?<=1)[05689]|(?<=2)[01234579]|(?<=3)[124567]|(?<=4)[01235]|(?<=5)[0]|(?<=6)[0124689]|(?<=7)[01]|(?<=8)[1358]|(?<=9)[0])|(?<=6)[01]((?<=0)[23456789]|(?<=1)[012])|(?<=7)[01234567]((?<=0)[12]|(?<=1)[89]|(?<=2)[01]|(?<=3)[01]|(?<=4)[01256789]|(?<=5)[2467]|(?<=6)[0]|(?<=7)[023568])|(?<=8)[0123456789]((?<=0)[13]|(?<=1)[0]|(?<=2)[1467]|(?<=3)[02345]|(?<=4)[01345]|(?<=5)[0124]|(?<=6)[02347]|(?<=7)[69]|(?<=8)[067]|(?<=9)[0])|(?<=9)[012345678]((?<=0)[1245678]|(?<=1)[35]|(?<=2)[1239]|(?<=3)[078]|(?<=4)[0459]|(?<=5)[012]|(?<=6)[0569]|(?<=7)[0]|(?<=8)[2345]))|(?<=2)[0123456789]((?<=0)[123456789]((?<=1)[9]|(?<=2)[156]|(?<=3)[0258]|(?<=4)[3578]|(?<=5)[02346]|(?<=6)[1267]|(?<=7)[12]|(?<=8)[1]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[89]|(?<=1)[01345689]|(?<=2)[012456789]|(?<=3)[012345689]|(?<=4)[01234589]|(?<=5)[0125]|(?<=6)[39]|(?<=7)[016]|(?<=8)[04689]|(?<=9)[019])|(?<=2)[01]((?<=0)[35]|(?<=1)[05])|(?<=3)[02345678]((?<=0)[12]|(?<=2)[245]|(?<=3)[02389]|(?<=4)[1367]|(?<=5)[01679]|(?<=6)[04678]|(?<=7)[059]|(?<=8)[2])|(?<=4)[2456789]((?<=2)[01]|(?<=4)[56]|(?<=5)[123789]|(?<=6)[01245678]|(?<=7)[2468]|(?<=8)[12]|(?<=9)[234])|(?<=5)[345678]((?<=3)[2456789]|(?<=4)[023]|(?<=5)[346789]|(?<=6)[12348]|(?<=7)[156]|(?<=8)[4])|(?<=6)[034567]((?<=0)[1]|(?<=3)[01235789]|(?<=4)[123456789]|(?<=5)[023579]|(?<=6)[034678]|(?<=7)[01235])|(?<=7)[012346789]((?<=0)[23]|(?<=1)[35789]|(?<=2)[013456]|(?<=3)[89]|(?<=4)[0345678]|(?<=6)[0234679]|(?<=7)[0179]|(?<=8)[0]|(?<=9)[01])|(?<=8)[0123456789]((?<=0)[246789]|(?<=1)[2345678]|(?<=2)[23456789]|(?<=3)[012356789]|(?<=4)[012]|(?<=5)[2789]|(?<=6)[01345]|(?<=7)[12345689]|(?<=8)[125689]|(?<=9)[1234568])|(?<=9)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[01]))|(?<=3)[0123456789]((?<=0)[345678]((?<=3)[1234678]|(?<=4)[23456789]|(?<=5)[123457]|(?<=6)[0234]|(?<=7)[01679]|(?<=8)[2467])|(?<=1)[01]((?<=0)[123469]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[5678]|(?<=2)[012345679]|(?<=3)[0134578]|(?<=4)[01234569]|(?<=5)[13456789]|(?<=6)[01234689]|(?<=7)[35689]|(?<=8)[012457]|(?<=9)[013])|(?<=3)[0]((?<=0)[1347])|(?<=4)[34567]((?<=3)[1]|(?<=4)[0123456789]|(?<=5)[0125678]|(?<=6)[124567]|(?<=7)[0])|(?<=5)[6789]((?<=6)[1]|(?<=7)[04569]|(?<=8)[01234568]|(?<=9)[023578])|(?<=6)[0]((?<=0)[12345789])|(?<=7)[45678]((?<=4)[01358]|(?<=5)[01235]|(?<=6)[568]|(?<=7)[013479]|(?<=8)[01245])|(?<=8)[0123456789]((?<=0)[19]|(?<=1)[012346789]|(?<=2)[034567]|(?<=3)[02356789]|(?<=4)[012456789]|(?<=5)[012345678]|(?<=6)[01245789]|(?<=7)[0123458]|(?<=8)[234567]|(?<=9)[047])|(?<=9)[01]((?<=0)[123456789]|(?<=1)[01]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[1235689]|(?<=1)[01579]|(?<=2)[012479]|(?<=3)[02789]|(?<=4)[01236789]|(?<=5)[01567]|(?<=6)[1234689]|(?<=7)[123469]|(?<=8)[345678]|(?<=9)[0123567])|(?<=1)[01]((?<=0)[12356789]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[0679]|(?<=2)[012467]|(?<=3)[146789]|(?<=4)[0]|(?<=5)[023456789]|(?<=6)[013578]|(?<=7)[01456]|(?<=8)[01245679]|(?<=9)[024])|(?<=3)[3456]((?<=3)[0]|(?<=4)[12456789]|(?<=5)[012345789]|(?<=6)[034])|(?<=4)[0123456789]((?<=0)[168]|(?<=1)[0123456789]|(?<=2)[1246789]|(?<=3)[01458]|(?<=4)[123489]|(?<=5)[01345679]|(?<=6)[0123489]|(?<=7)[12345689]|(?<=8)[15789]|(?<=9)[0123567])|(?<=5)[34567]((?<=3)[05789]|(?<=4)[13478]|(?<=5)[134568]|(?<=6)[2348]|(?<=7)[012345689])|(?<=6)[0123456789]((?<=0)[5679]|(?<=1)[1234679]|(?<=2)[2345678]|(?<=3)[0145]|(?<=4)[0235689]|(?<=5)[0234578]|(?<=6)[0246789]|(?<=7)[1345679]|(?<=8)[013456]|(?<=9)[134])|(?<=7)[345678]((?<=3)[02345679]|(?<=4)[023567]|(?<=5)[0678]|(?<=6)[012345689]|(?<=7)[234679]|(?<=8)[013567])|(?<=8)[456]((?<=4)[13789]|(?<=5)[12345689]|(?<=6)[01234])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[012578]|(?<=2)[0123456789]|(?<=3)[026789]|(?<=4)[01234579]|(?<=5)[01235678]|(?<=6)[1345679]|(?<=7)[01345689]|(?<=8)[123456789]|(?<=9)[2]))|(?<=5)[012346789]((?<=0)[03456789]((?<=0)[19]|(?<=3)[0123456789]|(?<=4)[0123568]|(?<=5)[01235689]|(?<=6)[0125789]|(?<=7)[01235679]|(?<=8)[134689]|(?<=9)[1])|(?<=1)[0456]((?<=0)[1]|(?<=4)[123689]|(?<=5)[01234568]|(?<=6)[1])|(?<=2)[056]((?<=0)[1]|(?<=5)[0123457]|(?<=6)[012])|(?<=3)[0456]((?<=0)[1]|(?<=4)[0123456]|(?<=5)[012345689]|(?<=6)[0123])|(?<=4)[03456789]((?<=0)[13458]|(?<=3)[9]|(?<=4)[012345678]|(?<=5)[02456789]|(?<=6)[123458]|(?<=7)[1234678]|(?<=8)[12356789]|(?<=9)[1245])|(?<=6)[045678]((?<=0)[2]|(?<=4)[01789]|(?<=5)[01234568]|(?<=6)[0134679]|(?<=7)[023456789]|(?<=8)[012])|(?<=7)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[234678]|(?<=5)[13789]|(?<=6)[0123456789]|(?<=7)[02345678])|(?<=8)[1234567]((?<=1)[9]|(?<=2)[012456789]|(?<=3)[023679]|(?<=4)[0123567]|(?<=5)[0135789]|(?<=6)[02678]|(?<=7)[12345])|(?<=9)[0]((?<=0)[1234567]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[12]|(?<=1)[03689]|(?<=2)[01234679]|(?<=3)[123579]|(?<=4)[023]|(?<=5)[123789]|(?<=6)[012356789]|(?<=7)[01234689]|(?<=8)[0124589]|(?<=9)[0123568])|(?<=1)[012]((?<=0)[356789]|(?<=1)[0124789]|(?<=2)[0])|(?<=2)[2345678]((?<=2)[6]|(?<=3)[1245789]|(?<=4)[123789]|(?<=5)[045689]|(?<=6)[0234689]|(?<=7)[789]|(?<=8)[012])|(?<=3)[23456789]((?<=2)[0]|(?<=3)[012345689]|(?<=4)[0]|(?<=5)[0134579]|(?<=6)[05]|(?<=7)[013456789]|(?<=8)[024579]|(?<=9)[0])|(?<=4)[0123456789]((?<=0)[1359]|(?<=1)[023456789]|(?<=2)[02346]|(?<=3)[789]|(?<=4)[12347]|(?<=5)[015679]|(?<=6)[01789]|(?<=7)[01235789]|(?<=8)[0123489]|(?<=9)[28])|(?<=5)[12]((?<=1)[0123456789]|(?<=2)[45])|(?<=6)[01]((?<=0)[45678]|(?<=1)[01245])|(?<=7)[0156789]((?<=0)[24568]|(?<=1)[026]|(?<=5)[0123456789]|(?<=6)[23]|(?<=7)[06789]|(?<=8)[234567]|(?<=9)[0134568])|(?<=8)[012345789]((?<=0)[147]|(?<=1)[012]|(?<=2)[045]|(?<=3)[01]|(?<=4)[0]|(?<=5)[01345]|(?<=7)[078]|(?<=8)[03]|(?<=9)[067])|(?<=9)[0]((?<=0)[123567]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[12345689]|(?<=1)[01234678]|(?<=2)[012346789]|(?<=3)[01234569]|(?<=4)[01234567]|(?<=5)[0245789]|(?<=6)[023456789]|(?<=7)[0123456789]|(?<=8)[0123678]|(?<=9)[02345])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0124])|(?<=2)[0]((?<=0)[1234568])|(?<=3)[01]((?<=0)[24567]|(?<=1)[01])|(?<=4)[012345678]((?<=0)[1357]|(?<=1)[06789]|(?<=2)[01234]|(?<=3)[025689]|(?<=4)[0246]|(?<=5)[02678]|(?<=6)[01235]|(?<=7)[0]|(?<=8)[01])|(?<=5)[012]((?<=0)[1234568]|(?<=1)[234]|(?<=2)[24])|(?<=6)[0234567]((?<=0)[1345678]|(?<=2)[014678]|(?<=3)[012]|(?<=4)[0123456789]|(?<=5)[0267]|(?<=6)[01236]|(?<=7)[0567])|(?<=7)[0123456]((?<=0)[1234]|(?<=1)[126789]|(?<=2)[01234678]|(?<=3)[012345789]|(?<=4)[0678]|(?<=5)[0135678]|(?<=6)[024])|(?<=8)[02345678]((?<=0)[13]|(?<=2)[01235678]|(?<=3)[0123468]|(?<=4)[02346789]|(?<=5)[012367]|(?<=6)[03569]|(?<=7)[01468]|(?<=8)[0125])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[0124678]|(?<=3)[01234569]|(?<=4)[056]|(?<=5)[0]|(?<=6)[01]|(?<=7)[04679]|(?<=8)[01]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0124569]|(?<=2)[01236789]|(?<=3)[0123456789]|(?<=4)[1235689]|(?<=5)[012345679]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[013456789]|(?<=9)[012345678])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=2)[01234567]((?<=0)[12345]|(?<=1)[0257]|(?<=2)[13456]|(?<=3)[024]|(?<=4)[012345678]|(?<=5)[1]|(?<=6)[0]|(?<=7)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01246789]|(?<=2)[012346789]|(?<=3)[02]|(?<=4)[01345689]|(?<=5)[023]|(?<=6)[01])|(?<=4)[0]((?<=0)[1236])|(?<=5)[0123456]((?<=0)[125]|(?<=1)[012458]|(?<=2)[0578]|(?<=3)[03456]|(?<=4)[024]|(?<=5)[0134589]|(?<=6)[012])|(?<=6)[012349]((?<=0)[89]|(?<=1)[0189]|(?<=2)[089]|(?<=3)[8]|(?<=4)[018]|(?<=9)[01])|(?<=7)[02345]((?<=0)[1]|(?<=2)[01234]|(?<=3)[01234568]|(?<=4)[012]|(?<=5)[01235789])|(?<=8)[0123456789]((?<=0)[124579]|(?<=1)[0267]|(?<=2)[0123456789]|(?<=3)[0123567]|(?<=4)[0468]|(?<=5)[0234789]|(?<=6)[13579]|(?<=7)[2369]|(?<=8)[024679]|(?<=9)[0])|(?<=9)[0]((?<=0)[124])))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[0123467]((?<=0)[12345679]|(?<=1)[012346789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[04]|(?<=6)[59]|(?<=7)[5])|(?<=1)[0125679]((?<=0)[3]|(?<=1)[01259]|(?<=2)[8]|(?<=5)[234]|(?<=6)[25789]|(?<=7)[012347]|(?<=9)[9])|(?<=2)[78]((?<=7)[189]|(?<=8)[02])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[0124])|(?<=4)[567]((?<=5)[123456789]|(?<=6)[0123456789]|(?<=7)[012345])|(?<=5)[0123456789]((?<=0)[12345679]|(?<=1)[01246789]|(?<=2)[0234678]|(?<=3)[0235678]|(?<=4)[012356789]|(?<=5)[023]|(?<=6)[0267]|(?<=7)[036789]|(?<=8)[0389]|(?<=9)[0145678])|(?<=6)[0]((?<=0)[134567])|(?<=7)[01]((?<=0)[13456789]|(?<=1)[0])|(?<=8)[0]((?<=0)[1345])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[012345678]|(?<=3)[0123]|(?<=4)[01]|(?<=5)[023468]|(?<=6)[0234589]|(?<=7)[0345679]|(?<=8)[03456789]|(?<=9)[023468]))|(?<=1)[0123456789]((?<=0)[0123459]((?<=0)[1345]|(?<=1)[0]|(?<=2)[0134]|(?<=3)[0]|(?<=4)[02]|(?<=5)[0]|(?<=9)[6])|(?<=1)[0]((?<=0)[1234569])|(?<=2)[01234]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[9])|(?<=3)[5678]((?<=5)[456789]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[5])|(?<=4)[1235]((?<=1)[123456789]|(?<=2)[012346789]|(?<=3)[0234569]|(?<=5)[1])|(?<=5)[0123456789]((?<=0)[179]|(?<=1)[0468]|(?<=2)[0]|(?<=3)[0]|(?<=4)[25789]|(?<=5)[02346789]|(?<=6)[0135689]|(?<=7)[025679]|(?<=8)[01]|(?<=9)[068])|(?<=6)[9]((?<=9)[12347])|(?<=7)[0123456789]((?<=0)[1234569]|(?<=1)[03456789]|(?<=2)[01245679]|(?<=3)[0123589]|(?<=4)[0123679]|(?<=5)[12345678]|(?<=6)[23456789]|(?<=7)[0126789]|(?<=8)[02346789]|(?<=9)[012345678])|(?<=8)[0]((?<=0)[134])|(?<=9)[0345678]((?<=0)[1]|(?<=3)[01234579]|(?<=4)[01246789]|(?<=5)[0123456789]|(?<=6)[01234578]|(?<=7)[01235678]|(?<=8)[0]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[789]|(?<=1)[05789]|(?<=2)[02345789]|(?<=3)[123567]|(?<=4)[0123567]|(?<=5)[12346789]|(?<=6)[0123456789]|(?<=7)[01245678]|(?<=8)[234567]|(?<=9)[02345])|(?<=1)[0123456789]((?<=0)[68]|(?<=1)[05678]|(?<=2)[012345]|(?<=3)[01246789]|(?<=4)[034789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[0234567]|(?<=8)[023456789]|(?<=9)[02345678])|(?<=2)[012]((?<=0)[23456789]|(?<=1)[01]|(?<=2)[26])|(?<=3)[0]((?<=0)[23456789])|(?<=4)[0123456789]((?<=0)[145679]|(?<=1)[012346789]|(?<=2)[01234789]|(?<=3)[012345689]|(?<=4)[01234689]|(?<=5)[0123456789]|(?<=6)[01345689]|(?<=7)[0123457]|(?<=8)[012345679]|(?<=9)[01234568])|(?<=5)[0123456789]((?<=0)[123478]|(?<=1)[2345678]|(?<=2)[0123456789]|(?<=3)[01348]|(?<=4)[023456789]|(?<=5)[03]|(?<=6)[1345679]|(?<=7)[0124578]|(?<=8)[0123569]|(?<=9)[024])|(?<=6)[0]((?<=0)[134])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[9]|(?<=2)[01234569]|(?<=3)[234678]|(?<=4)[012356789]|(?<=5)[012489]|(?<=6)[023456789]|(?<=7)[0156789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13489]|(?<=1)[01245679]|(?<=2)[0123478]|(?<=3)[123456789]|(?<=4)[12345679]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012348]|(?<=8)[34567])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[0123456789]|(?<=2)[012346789]|(?<=3)[02345679]|(?<=4)[123456]|(?<=5)[02356789]|(?<=6)[01245679]|(?<=7)[023456789]|(?<=8)[0135679]|(?<=9)[23678]))|(?<=3)[0123456789]((?<=0)[23456789]((?<=2)[0146789]|(?<=3)[012345679]|(?<=4)[01245]|(?<=5)[12347]|(?<=6)[01235689]|(?<=7)[1234678]|(?<=8)[0123478]|(?<=9)[02])|(?<=1)[0123456]((?<=0)[12348]|(?<=1)[0123456789]|(?<=2)[012346]|(?<=3)[124568]|(?<=4)[012345678]|(?<=5)[23456789]|(?<=6)[0234567])|(?<=2)[01249]((?<=0)[23456789]|(?<=1)[012459]|(?<=2)[4]|(?<=4)[4]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[1234589]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[12345789]|(?<=4)[023568]|(?<=5)[023457]|(?<=6)[0134578])|(?<=4)[0123456789]((?<=0)[2346789]|(?<=1)[0135678]|(?<=2)[01458]|(?<=3)[1356789]|(?<=4)[01]|(?<=5)[0245679]|(?<=6)[01489]|(?<=7)[01235678]|(?<=8)[02345689]|(?<=9)[012345])|(?<=5)[0]((?<=0)[12])|(?<=6)[0123456789]((?<=0)[1235678]|(?<=1)[123456789]|(?<=2)[01234568]|(?<=3)[023456789]|(?<=4)[012356789]|(?<=5)[01245689]|(?<=6)[012456789]|(?<=7)[02345689]|(?<=8)[0123457]|(?<=9)[012345679])|(?<=7)[3456789]((?<=3)[01234689]|(?<=4)[034678]|(?<=5)[01234567]|(?<=6)[0]|(?<=7)[45678]|(?<=8)[0234678]|(?<=9)[0567])|(?<=8)[0123456]((?<=0)[12346789]|(?<=1)[012345]|(?<=2)[0567]|(?<=3)[0234589]|(?<=4)[1234679]|(?<=5)[069]|(?<=6)[012345])|(?<=9)[0]((?<=0)[12345]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[145689]|(?<=1)[123]|(?<=2)[0456789]|(?<=3)[012345679]|(?<=4)[012378]|(?<=5)[12456789]|(?<=6)[012356789]|(?<=7)[025]|(?<=8)[012356]|(?<=9)[1248])|(?<=1)[01234567]((?<=0)[123589]|(?<=1)[123]|(?<=2)[05679]|(?<=3)[01245689]|(?<=4)[135]|(?<=5)[0]|(?<=6)[6789]|(?<=7)[01234])|(?<=2)[0126]((?<=0)[12346789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=6)[01])|(?<=3)[0]((?<=0)[12345])|(?<=4)[12345678]((?<=1)[134568]|(?<=2)[0234578]|(?<=3)[2357]|(?<=4)[15]|(?<=5)[0346]|(?<=6)[2346789]|(?<=7)[01256789]|(?<=8)[0125679])|(?<=5)[0123456789]((?<=0)[24567]|(?<=1)[012345679]|(?<=2)[125679]|(?<=3)[0234679]|(?<=4)[12345689]|(?<=5)[015679]|(?<=6)[01489]|(?<=7)[12]|(?<=8)[05689]|(?<=9)[012])|(?<=6)[0124]((?<=0)[456789]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=4)[2])|(?<=7)[012345678]((?<=0)[16789]|(?<=1)[012456789]|(?<=2)[012346789]|(?<=3)[12356789]|(?<=4)[0123478]|(?<=5)[0234567]|(?<=6)[079]|(?<=7)[0245789]|(?<=8)[1234578])|(?<=8)[0123456789]((?<=0)[123456789]|(?<=1)[023456789]|(?<=2)[01234567]|(?<=3)[06789]|(?<=4)[0123567]|(?<=5)[0345689]|(?<=6)[014579]|(?<=7)[01234789]|(?<=8)[01234569]|(?<=9)[1234578])|(?<=9)[0]((?<=0)[1345]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[1345679]|(?<=1)[0245789]|(?<=2)[01245678]|(?<=3)[0134578]|(?<=4)[2345679]|(?<=5)[012345679]|(?<=6)[012345678]|(?<=7)[1245678]|(?<=8)[123456789]|(?<=9)[0])|(?<=1)[01234]((?<=0)[12468]|(?<=1)[026]|(?<=2)[02369]|(?<=3)[1235679]|(?<=4)[02345678])|(?<=2)[012346789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[23456789]|(?<=4)[13]|(?<=6)[0]|(?<=7)[5]|(?<=8)[2]|(?<=9)[0])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[01234567]|(?<=2)[01234579]|(?<=3)[0123478]|(?<=4)[012456789]|(?<=5)[0123789]|(?<=6)[012345678]|(?<=7)[06789]|(?<=8)[0])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0123679]|(?<=2)[012345789]|(?<=3)[012345678]|(?<=4)[023456789]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[023456789]|(?<=8)[0234689]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[12]|(?<=1)[0]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[0124567]|(?<=5)[01245789]|(?<=6)[012345])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[012356789]|(?<=2)[023456789]|(?<=3)[123456789]|(?<=4)[012467]|(?<=5)[0568]|(?<=6)[0123568]|(?<=7)[0123456789]|(?<=8)[012346789]|(?<=9)[01235678])|(?<=7)[012345678]((?<=0)[15]|(?<=1)[01234567]|(?<=2)[012345789]|(?<=3)[012346789]|(?<=4)[1245678]|(?<=5)[0234679]|(?<=6)[0123457]|(?<=7)[0123456789]|(?<=8)[0134])|(?<=8)[0234567]((?<=0)[1]|(?<=2)[1345789]|(?<=3)[124]|(?<=4)[0156789]|(?<=5)[1367]|(?<=6)[0134568]|(?<=7)[0])|(?<=9)[023456]((?<=0)[124569]|(?<=2)[0123456789]|(?<=3)[0145678]|(?<=4)[02345689]|(?<=5)[12345678]|(?<=6)[0123]))|(?<=6)[0123456789]((?<=0)[023456]((?<=0)[12]|(?<=2)[02345789]|(?<=3)[0345678]|(?<=4)[015689]|(?<=5)[012345679]|(?<=6)[136])|(?<=1)[01234567]((?<=0)[125]|(?<=1)[01234567]|(?<=2)[013457]|(?<=3)[0123467]|(?<=4)[0123568]|(?<=5)[01345679]|(?<=6)[01]|(?<=7)[2])|(?<=2)[0123456]((?<=0)[1]|(?<=1)[0123478]|(?<=2)[0234689]|(?<=3)[0235689]|(?<=4)[0245689]|(?<=5)[0345689]|(?<=6)[023])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[1234679]|(?<=2)[1236789]|(?<=3)[12345]|(?<=4)[01234567]|(?<=5)[01234]|(?<=6)[01245]|(?<=7)[01234])|(?<=4)[012347]((?<=0)[1234567]|(?<=1)[012567]|(?<=2)[01234678]|(?<=3)[034568]|(?<=4)[01234]|(?<=7)[5])|(?<=5)[01456]((?<=0)[123456789]|(?<=1)[01]|(?<=4)[6]|(?<=5)[0]|(?<=6)[3])|(?<=6)[0123456789]((?<=0)[12]|(?<=1)[13679]|(?<=2)[0123457]|(?<=3)[013456789]|(?<=4)[015678]|(?<=5)[01245679]|(?<=6)[12456789]|(?<=7)[012345789]|(?<=8)[0234569]|(?<=9)[123459])|(?<=7)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[0123458]|(?<=4)[0345689]|(?<=5)[0])|(?<=8)[02345678]((?<=0)[123]|(?<=2)[012356789]|(?<=3)[023456789]|(?<=4)[01345789]|(?<=5)[12345689]|(?<=6)[0134568]|(?<=7)[012456789]|(?<=8)[12])|(?<=9)[012345]((?<=0)[1]|(?<=1)[012457]|(?<=2)[012356789]|(?<=3)[02356789]|(?<=4)[0123678]|(?<=5)[0]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[2345679]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[01345678]|(?<=8)[0124678]|(?<=9)[034789])|(?<=1)[012]((?<=0)[12349]|(?<=1)[0123]|(?<=2)[0])|(?<=2)[01234567]((?<=0)[12]|(?<=1)[01234579]|(?<=2)[01234589]|(?<=3)[2356789]|(?<=4)[0134679]|(?<=5)[0123457]|(?<=6)[012345678]|(?<=7)[1])|(?<=3)[01234567]((?<=0)[1234679]|(?<=1)[13456789]|(?<=2)[01234579]|(?<=3)[19]|(?<=4)[0234579]|(?<=5)[02356]|(?<=6)[01234568]|(?<=7)[012])|(?<=4)[0]((?<=0)[1234678])|(?<=5)[012345678]((?<=0)[12456789]|(?<=1)[26789]|(?<=2)[0279]|(?<=3)[24568]|(?<=4)[0357]|(?<=5)[012457]|(?<=6)[0235689]|(?<=7)[02689]|(?<=8)[124])|(?<=6)[0]((?<=0)[1236])|(?<=7)[0234567]((?<=0)[12]|(?<=2)[0134789]|(?<=3)[0179]|(?<=4)[0245789]|(?<=5)[012468]|(?<=6)[0234589]|(?<=7)[1246789])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[02345]|(?<=2)[0123479]|(?<=3)[024567]|(?<=4)[0124567]|(?<=5)[01356789]|(?<=6)[01245678]|(?<=7)[0268]|(?<=8)[01456789])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[012359]|(?<=3)[0134568]|(?<=4)[1345689]|(?<=5)[123479]|(?<=6)[0134578]|(?<=7)[024689]|(?<=8)[01235]))|(?<=8)[0123456789]((?<=0)[123456789]((?<=1)[1234578]|(?<=2)[0]|(?<=3)[01245678]|(?<=4)[012569]|(?<=5)[12345689]|(?<=6)[2345679]|(?<=7)[012346789]|(?<=8)[0135678]|(?<=9)[12])|(?<=1)[09]((?<=0)[123469]|(?<=9)[5])|(?<=2)[012345]((?<=0)[12]|(?<=1)[0124689]|(?<=2)[0123459]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[02456])|(?<=3)[0234567]((?<=0)[12]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0234679]|(?<=5)[0134567]|(?<=6)[0]|(?<=7)[012])|(?<=4)[01234567]((?<=0)[357]|(?<=1)[134579]|(?<=2)[014568]|(?<=3)[013456789]|(?<=4)[0134567]|(?<=5)[12345678]|(?<=6)[01234569]|(?<=7)[0123])|(?<=5)[01]((?<=0)[345789]|(?<=1)[02789])|(?<=6)[0123456]((?<=0)[23]|(?<=1)[02456789]|(?<=2)[123456789]|(?<=3)[012456]|(?<=4)[01234]|(?<=5)[1567]|(?<=6)[01])|(?<=7)[0]((?<=0)[12456789])|(?<=8)[012345]((?<=0)[1]|(?<=1)[024678]|(?<=2)[012345689]|(?<=3)[012347]|(?<=4)[02345678]|(?<=5)[0134])|(?<=9)[012345678]((?<=0)[12]|(?<=1)[23457]|(?<=2)[013579]|(?<=3)[023568]|(?<=4)[02467]|(?<=5)[0145]|(?<=6)[02469]|(?<=7)[02467]|(?<=8)[0]))|(?<=9)[013456789]((?<=0)[0123456789]((?<=0)[12346789]|(?<=1)[0234578]|(?<=2)[01235679]|(?<=3)[01234568]|(?<=4)[013467]|(?<=5)[0234567]|(?<=6)[013467]|(?<=7)[02345689]|(?<=8)[123567]|(?<=9)[0456])|(?<=1)[012345]((?<=0)[2346789]|(?<=1)[12345689]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[01234])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[012679]|(?<=2)[0]|(?<=3)[035]|(?<=4)[123458]|(?<=5)[0258]|(?<=6)[23579]|(?<=7)[2345]|(?<=8)[023]|(?<=9)[0])|(?<=4)[02345679]((?<=0)[1356]|(?<=2)[2568]|(?<=3)[5678]|(?<=4)[0246]|(?<=5)[3467]|(?<=6)[02458]|(?<=7)[23457]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[1345678]|(?<=1)[01268]|(?<=2)[023569]|(?<=3)[0345689]|(?<=4)[0134579]|(?<=5)[01459]|(?<=6)[02457])|(?<=6)[01]((?<=0)[12456789]|(?<=1)[01])|(?<=7)[0123]((?<=0)[123679]|(?<=1)[01367]|(?<=2)[0]|(?<=3)[0123456])|(?<=8)[01]((?<=0)[123456789]|(?<=1)[0])|(?<=9)[0345678]((?<=0)[124]|(?<=3)[0134689]|(?<=4)[0134567]|(?<=5)[01234568]|(?<=6)[0234678]|(?<=7)[013579]|(?<=8)[0])))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[04]|(?<=3)[267]|(?<=4)[5]|(?<=5)[279]|(?<=6)[4])|(?<=1)[0123456789]((?<=0)[569]|(?<=1)[012579]|(?<=2)[0149]|(?<=3)[02567]|(?<=4)[13478]|(?<=5)[1258]|(?<=6)[4569]|(?<=7)[0156]|(?<=8)[01467]|(?<=9)[01478])|(?<=2)[023456]((?<=0)[4]|(?<=2)[0]|(?<=3)[0]|(?<=4)[05]|(?<=5)[0]|(?<=6)[0])|(?<=3)[1789]((?<=1)[79]|(?<=7)[3]|(?<=8)[8]|(?<=9)[0])|(?<=4)[0123]((?<=0)[8]|(?<=1)[58]|(?<=2)[27]|(?<=3)[1])|(?<=5)[1234569]((?<=1)[05]|(?<=2)[0]|(?<=3)[05]|(?<=4)[02]|(?<=5)[1]|(?<=6)[056]|(?<=9)[1])|(?<=6)[0123456789]((?<=0)[1236789]|(?<=1)[12356789]|(?<=2)[012345689]|(?<=3)[024679]|(?<=4)[056]|(?<=5)[036789]|(?<=6)[01247]|(?<=7)[045678]|(?<=8)[0456789]|(?<=9)[0235])|(?<=7)[0123456789]((?<=0)[15678]|(?<=1)[012456]|(?<=2)[01234]|(?<=3)[23567]|(?<=4)[02345678]|(?<=5)[14589]|(?<=6)[23459]|(?<=7)[01246789]|(?<=8)[12345]|(?<=9)[4])|(?<=8)[13456789]((?<=1)[245678]|(?<=3)[23789]|(?<=4)[12]|(?<=5)[012345]|(?<=6)[01268]|(?<=7)[1246789]|(?<=8)[0269]|(?<=9)[24569])|(?<=9)[01]((?<=0)[123456]|(?<=1)[02]))|(?<=1)[012456789]((?<=0)[0123456789]((?<=0)[159]|(?<=1)[023457]|(?<=2)[389]|(?<=3)[0124567]|(?<=4)[02345678]|(?<=5)[0123467]|(?<=6)[01]|(?<=7)[145678]|(?<=8)[2457]|(?<=9)[03])|(?<=1)[0123456]((?<=0)[2458]|(?<=1)[1347]|(?<=2)[028]|(?<=3)[01236]|(?<=4)[046]|(?<=5)[2345678]|(?<=6)[0123])|(?<=2)[0123458]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0134679]|(?<=4)[04]|(?<=5)[012]|(?<=8)[567])|(?<=4)[0]((?<=0)[12359])|(?<=5)[023456]((?<=0)[2]|(?<=2)[01349]|(?<=3)[012689]|(?<=4)[01235]|(?<=5)[057]|(?<=6)[012])|(?<=6)[01234567]((?<=0)[17]|(?<=1)[02379]|(?<=2)[023456789]|(?<=3)[1245689]|(?<=4)[01345789]|(?<=5)[012345789]|(?<=6)[0123456789]|(?<=7)[12356789])|(?<=7)[0123456789]((?<=0)[12345]|(?<=1)[013456789]|(?<=2)[237]|(?<=3)[3478]|(?<=4)[026]|(?<=5)[045678]|(?<=6)[2679]|(?<=7)[01346789]|(?<=8)[0123478]|(?<=9)[0134578])|(?<=8)[012345679]((?<=0)[14]|(?<=1)[01347]|(?<=2)[12469]|(?<=3)[0578]|(?<=4)[0129]|(?<=5)[0136]|(?<=6)[12345679]|(?<=7)[1245]|(?<=9)[0])|(?<=9)[0123]((?<=0)[1234]|(?<=1)[12345789]|(?<=2)[01]|(?<=3)[0]))|(?<=2)[0123456789]((?<=0)[0123467]((?<=0)[3]|(?<=1)[5]|(?<=2)[567]|(?<=3)[012359]|(?<=4)[12346]|(?<=6)[06]|(?<=7)[9])|(?<=1)[0235789]((?<=0)[12]|(?<=2)[45]|(?<=3)[4]|(?<=5)[0123]|(?<=7)[2]|(?<=8)[012]|(?<=9)[123])|(?<=2)[01]((?<=0)[12345679]|(?<=1)[134])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[01245])|(?<=4)[02345678]((?<=0)[15678]|(?<=2)[7]|(?<=3)[235678]|(?<=4)[38]|(?<=5)[4]|(?<=6)[09]|(?<=7)[236]|(?<=8)[0258])|(?<=5)[012345678]((?<=0)[3489]|(?<=1)[14]|(?<=2)[09]|(?<=3)[4589]|(?<=4)[268]|(?<=5)[1346]|(?<=6)[07]|(?<=7)[268]|(?<=8)[0])|(?<=6)[0123456]((?<=0)[123]|(?<=1)[01]|(?<=2)[03457]|(?<=3)[079]|(?<=4)[0123456]|(?<=5)[024567]|(?<=6)[034])|(?<=7)[01234]((?<=0)[19]|(?<=1)[12345689]|(?<=2)[023456789]|(?<=3)[012345678]|(?<=4)[0123679])|(?<=8)[012345]((?<=0)[127]|(?<=1)[0125]|(?<=2)[0147]|(?<=3)[01245]|(?<=4)[012345679]|(?<=5)[013])|(?<=9)[012345678]((?<=0)[12348]|(?<=1)[1]|(?<=2)[023]|(?<=3)[1256789]|(?<=4)[0236789]|(?<=5)[2789]|(?<=6)[034789]|(?<=7)[12346]|(?<=8)[09]))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[2459]|(?<=1)[15]|(?<=2)[123457]|(?<=3)[02589]|(?<=4)[0357]|(?<=5)[0569]|(?<=6)[01235689]|(?<=7)[012569]|(?<=8)[134569]|(?<=9)[123])|(?<=1)[0123456789]((?<=0)[23689]|(?<=1)[01234679]|(?<=2)[034689]|(?<=3)[089]|(?<=4)[016789]|(?<=5)[036]|(?<=6)[01389]|(?<=7)[3567]|(?<=8)[0158]|(?<=9)[2])|(?<=2)[123589]((?<=1)[9]|(?<=2)[0123456789]|(?<=3)[01345678]|(?<=5)[0]|(?<=8)[4]|(?<=9)[48])|(?<=3)[01234589]((?<=0)[1234678]|(?<=1)[0456]|(?<=2)[012345]|(?<=3)[67]|(?<=4)[7]|(?<=5)[046789]|(?<=8)[9]|(?<=9)[58])|(?<=4)[01234568]((?<=0)[15789]|(?<=1)[0345678]|(?<=2)[012367]|(?<=3)[02345678]|(?<=4)[012]|(?<=5)[12345679]|(?<=6)[0124]|(?<=8)[0678])|(?<=5)[0125]((?<=0)[2345789]|(?<=1)[01378]|(?<=2)[3]|(?<=5)[1])|(?<=6)[05689]((?<=0)[12345678]|(?<=5)[1]|(?<=6)[123456789]|(?<=8)[1]|(?<=9)[01236])|(?<=7)[0]((?<=0)[1234789])|(?<=8)[023456789]((?<=0)[135]|(?<=2)[14789]|(?<=3)[012346789]|(?<=4)[01234567]|(?<=5)[0167]|(?<=6)[0678]|(?<=7)[0245689]|(?<=8)[12345789]|(?<=9)[0134789])|(?<=9)[01234567]((?<=0)[19]|(?<=1)[579]|(?<=2)[012347]|(?<=3)[04678]|(?<=4)[2347]|(?<=5)[024589]|(?<=6)[0234678]|(?<=7)[046]))|(?<=4)[0123456789]((?<=0)[1256789]((?<=1)[123456789]|(?<=2)[02]|(?<=5)[34589]|(?<=6)[0145679]|(?<=7)[0236789]|(?<=8)[23456789]|(?<=9)[01235])|(?<=1)[012345678]((?<=0)[1245]|(?<=1)[2]|(?<=2)[0124789]|(?<=3)[12346789]|(?<=4)[12789]|(?<=5)[013]|(?<=6)[12578]|(?<=7)[14569]|(?<=8)[45])|(?<=2)[0123456789]((?<=0)[12]|(?<=1)[01679]|(?<=2)[014568]|(?<=3)[0679]|(?<=4)[34568]|(?<=5)[0168]|(?<=6)[03569]|(?<=7)[012379]|(?<=8)[0123]|(?<=9)[023])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[2345678]|(?<=3)[03]|(?<=4)[0378]|(?<=5)[0124]|(?<=6)[01368]|(?<=7)[04578]|(?<=8)[012])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[12356]|(?<=2)[126]|(?<=3)[0123579]|(?<=4)[01258]|(?<=5)[0789]|(?<=6)[04579]|(?<=7)[1234679]|(?<=8)[234567])|(?<=5)[0123456789]((?<=0)[1234]|(?<=1)[57]|(?<=2)[01236789]|(?<=3)[014689]|(?<=4)[019]|(?<=5)[01345678]|(?<=6)[23569]|(?<=7)[0124789]|(?<=8)[01689]|(?<=9)[02345789])|(?<=6)[012345]((?<=0)[12345679]|(?<=1)[234]|(?<=2)[02]|(?<=3)[014579]|(?<=4)[169]|(?<=5)[167])|(?<=7)[01234]((?<=0)[1]|(?<=1)[24569]|(?<=2)[469]|(?<=3)[136789]|(?<=4)[07])|(?<=8)[0123456789]((?<=0)[18]|(?<=1)[135678]|(?<=2)[23678]|(?<=3)[01469]|(?<=4)[3456789]|(?<=5)[013457]|(?<=6)[0126789]|(?<=7)[0123489]|(?<=8)[012478]|(?<=9)[2458])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[0568]|(?<=2)[0457]|(?<=3)[1458]|(?<=4)[13456]|(?<=5)[147]|(?<=6)[236]|(?<=7)[0467]|(?<=8)[13456]|(?<=9)[13]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[235789]|(?<=1)[159]|(?<=2)[12458]|(?<=3)[013569]|(?<=4)[0345789]|(?<=5)[13479]|(?<=6)[012347]|(?<=7)[0156]|(?<=8)[123568]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[236789]|(?<=1)[01234589]|(?<=2)[13456]|(?<=3)[023469]|(?<=4)[012389]|(?<=5)[2469]|(?<=6)[0124589]|(?<=7)[347]|(?<=8)[013567]|(?<=9)[3])|(?<=2)[01345678]((?<=0)[12345689]|(?<=1)[134]|(?<=3)[1459]|(?<=4)[134578]|(?<=5)[1239]|(?<=6)[01245678]|(?<=7)[0156]|(?<=8)[567])|(?<=3)[0128]((?<=0)[1234569]|(?<=1)[12345]|(?<=2)[0]|(?<=8)[7])|(?<=4)[01234]((?<=0)[1345]|(?<=1)[1349]|(?<=2)[012578]|(?<=3)[012478]|(?<=4)[2346])|(?<=5)[01234567]((?<=0)[12345678]|(?<=1)[012457]|(?<=2)[013469]|(?<=3)[0457]|(?<=4)[01457]|(?<=5)[0579]|(?<=6)[0457]|(?<=7)[013])|(?<=6)[0123456789]((?<=0)[1678]|(?<=1)[127]|(?<=2)[1458]|(?<=3)[0245789]|(?<=4)[4679]|(?<=5)[01234]|(?<=6)[1679]|(?<=7)[012468]|(?<=8)[58]|(?<=9)[0269])|(?<=7)[05]((?<=0)[12345]|(?<=5)[5])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[012378]|(?<=2)[03567]|(?<=3)[12679]|(?<=4)[01345689]|(?<=5)[13457]|(?<=6)[24568]|(?<=7)[0135689]|(?<=8)[02])|(?<=9)[012345678]((?<=0)[124789]|(?<=1)[135678]|(?<=2)[0128]|(?<=3)[268]|(?<=4)[23]|(?<=5)[18]|(?<=6)[269]|(?<=7)[126789]|(?<=8)[14569]))|(?<=6)[012345678]((?<=0)[034567]((?<=0)[3]|(?<=3)[0123456789]|(?<=4)[017]|(?<=5)[05689]|(?<=6)[02]|(?<=7)[045])|(?<=1)[0345678]((?<=0)[145]|(?<=3)[34678]|(?<=4)[1236789]|(?<=5)[01259]|(?<=6)[012479]|(?<=7)[058]|(?<=8)[0147])|(?<=2)[0123456789]((?<=0)[1235689]|(?<=1)[0578]|(?<=2)[248]|(?<=3)[04678]|(?<=4)[1]|(?<=5)[03479]|(?<=6)[01346789]|(?<=7)[013568]|(?<=8)[0235789]|(?<=9)[123468])|(?<=3)[02345678]((?<=0)[1]|(?<=2)[01357]|(?<=3)[05789]|(?<=4)[236789]|(?<=5)[14]|(?<=6)[1269]|(?<=7)[24678]|(?<=8)[456])|(?<=4)[0123456]((?<=0)[458]|(?<=1)[012569]|(?<=2)[12456]|(?<=3)[015678]|(?<=4)[03478]|(?<=5)[126]|(?<=6)[3])|(?<=5)[0123456789]((?<=0)[1568]|(?<=1)[9]|(?<=2)[0145]|(?<=3)[47]|(?<=4)[123467]|(?<=5)[49]|(?<=6)[0238]|(?<=7)[012456]|(?<=8)[125678]|(?<=9)[01])|(?<=6)[012356789]((?<=0)[1]|(?<=1)[01579]|(?<=2)[13479]|(?<=3)[168]|(?<=5)[16]|(?<=6)[027]|(?<=7)[1689]|(?<=8)[014]|(?<=9)[01])|(?<=7)[0123456]((?<=0)[457]|(?<=1)[014679]|(?<=2)[026]|(?<=3)[19]|(?<=4)[3]|(?<=5)[0357]|(?<=6)[1347])|(?<=8)[01234568]((?<=0)[12478]|(?<=1)[024578]|(?<=2)[3]|(?<=3)[368]|(?<=4)[57]|(?<=5)[125]|(?<=6)[56]|(?<=8)[46]))|(?<=7)[0123456789]((?<=0)[012345]((?<=0)[679]|(?<=1)[12346789]|(?<=2)[01234578]|(?<=3)[0]|(?<=4)[01235678]|(?<=5)[012345])|(?<=1)[012]((?<=0)[1345679]|(?<=1)[0]|(?<=2)[7])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[23457]|(?<=2)[9]|(?<=3)[1359]|(?<=4)[234789]|(?<=5)[23689]|(?<=6)[02358]|(?<=7)[8]|(?<=8)[12348]|(?<=9)[12589])|(?<=3)[01234567]((?<=0)[1256]|(?<=1)[01234567]|(?<=2)[056]|(?<=3)[02]|(?<=4)[012349]|(?<=5)[015678]|(?<=6)[0]|(?<=7)[014679])|(?<=4)[015]((?<=0)[1356789]|(?<=1)[012]|(?<=5)[5])|(?<=5)[0123456789]((?<=0)[123456789]|(?<=1)[01346789]|(?<=2)[012345679]|(?<=3)[0134679]|(?<=4)[0124569]|(?<=5)[135679]|(?<=6)[023589]|(?<=7)[0123467]|(?<=8)[123479]|(?<=9)[1234679])|(?<=6)[019]((?<=0)[13456789]|(?<=1)[0234567]|(?<=9)[57])|(?<=7)[01]((?<=0)[1345789]|(?<=1)[23])|(?<=8)[0123456789]((?<=0)[13456789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[012479]|(?<=4)[012345679]|(?<=5)[01235678]|(?<=6)[01234569]|(?<=7)[0123456789]|(?<=8)[012345689]|(?<=9)[012367])|(?<=9)[012345678]((?<=0)[9]|(?<=1)[05679]|(?<=2)[0123456789]|(?<=3)[256789]|(?<=4)[12346789]|(?<=5)[0346789]|(?<=6)[02456789]|(?<=7)[0234689]|(?<=8)[012356]))|(?<=8)[0123456789]((?<=0)[012345789]((?<=0)[1679]|(?<=1)[26789]|(?<=2)[013457]|(?<=3)[1234679]|(?<=4)[0123]|(?<=5)[246]|(?<=7)[123456789]|(?<=8)[013689]|(?<=9)[01278])|(?<=1)[01234567]((?<=0)[12345789]|(?<=1)[024579]|(?<=2)[045789]|(?<=3)[3456789]|(?<=4)[467]|(?<=5)[029]|(?<=6)[0346789]|(?<=7)[034])|(?<=2)[0124678]((?<=0)[23456789]|(?<=1)[01234567]|(?<=2)[367]|(?<=4)[4]|(?<=6)[29]|(?<=7)[03478]|(?<=8)[02])|(?<=3)[0123456789]((?<=0)[1345678]|(?<=1)[012458]|(?<=2)[035678]|(?<=3)[01234789]|(?<=4)[012345789]|(?<=5)[01256789]|(?<=6)[023456789]|(?<=7)[123456789]|(?<=8)[234567]|(?<=9)[012345689])|(?<=4)[012345678]((?<=0)[1359]|(?<=1)[12]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[12345789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0289]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[1489]|(?<=1)[01235689]|(?<=2)[013456789]|(?<=3)[0123789]|(?<=4)[023467]|(?<=5)[1234567]|(?<=6)[02]|(?<=7)[012345789]|(?<=8)[01245679]|(?<=9)[04])|(?<=6)[0123456789]((?<=0)[1245679]|(?<=1)[012356789]|(?<=2)[123456789]|(?<=3)[0145678]|(?<=4)[01234569]|(?<=5)[012345789]|(?<=6)[023456789]|(?<=7)[012356789]|(?<=8)[123459]|(?<=9)[023478])|(?<=7)[0123456789]((?<=0)[1245789]|(?<=1)[0123456789]|(?<=2)[0123569]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[123456789]|(?<=6)[12368]|(?<=7)[012345789]|(?<=8)[12356789]|(?<=9)[012])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0]((?<=0)[124569]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[1369]|(?<=1)[04568]|(?<=2)[0]|(?<=3)[01236789]|(?<=4)[0245678]|(?<=5)[12345689]|(?<=6)[123579]|(?<=7)[0234589]|(?<=8)[012])|(?<=1)[012345678]((?<=0)[124578]|(?<=1)[1234578]|(?<=2)[2356789]|(?<=3)[03578]|(?<=4)[2568]|(?<=5)[0234]|(?<=6)[01234689]|(?<=7)[02578]|(?<=8)[0])|(?<=2)[012]((?<=0)[13456789]|(?<=1)[02]|(?<=2)[359])|(?<=3)[012345678]((?<=0)[12367]|(?<=1)[6]|(?<=2)[0123459]|(?<=3)[0123458]|(?<=4)[0169]|(?<=5)[1356]|(?<=6)[04589]|(?<=7)[023456789]|(?<=8)[458])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[0248]|(?<=2)[04569]|(?<=3)[12456789]|(?<=4)[05689]|(?<=5)[0123568]|(?<=6)[14689]|(?<=7)[0124579]|(?<=8)[1235678]|(?<=9)[23])|(?<=5)[0123456789]((?<=0)[156]|(?<=1)[012689]|(?<=2)[0567]|(?<=3)[026]|(?<=4)[0134567]|(?<=5)[0456]|(?<=6)[03456789]|(?<=7)[01245679]|(?<=8)[01234589]|(?<=9)[012346])|(?<=6)[0123456789]((?<=0)[1579]|(?<=1)[13457]|(?<=2)[0145678]|(?<=3)[014589]|(?<=4)[0234569]|(?<=5)[01345789]|(?<=6)[1245679]|(?<=7)[012368]|(?<=8)[012345679]|(?<=9)[012367])|(?<=7)[01234]((?<=0)[246789]|(?<=1)[024578]|(?<=2)[046789]|(?<=3)[023]|(?<=4)[1235])|(?<=8)[01234569]((?<=0)[1359]|(?<=1)[02679]|(?<=2)[146789]|(?<=3)[124568]|(?<=4)[012345789]|(?<=5)[136]|(?<=6)[0]|(?<=9)[9])|(?<=9)[01234]((?<=0)[245679]|(?<=1)[012568]|(?<=2)[012346789]|(?<=3)[24569]|(?<=4)[01345])))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24589]|(?<=1)[12346789]|(?<=2)[12458]|(?<=3)[0234589]|(?<=4)[0134567]|(?<=5)[24568]|(?<=6)[024678]|(?<=7)[0125689]|(?<=8)[023478]|(?<=9)[023467])|(?<=1)[012345678]((?<=0)[12345678]|(?<=1)[01345678]|(?<=2)[0124567]|(?<=3)[24579]|(?<=4)[1345789]|(?<=5)[237]|(?<=6)[158]|(?<=7)[01356789]|(?<=8)[02345789])|(?<=2)[0123456789]((?<=0)[456]|(?<=1)[345678]|(?<=2)[023489]|(?<=3)[03468]|(?<=4)[018]|(?<=5)[01236789]|(?<=6)[03589]|(?<=7)[234567]|(?<=8)[145689]|(?<=9)[01234567])|(?<=3)[0123456]((?<=0)[356789]|(?<=1)[0123456789]|(?<=2)[246789]|(?<=3)[1246789]|(?<=4)[0124569]|(?<=5)[04]|(?<=6)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123457]|(?<=2)[01356789]|(?<=3)[469]|(?<=4)[125689]|(?<=5)[012345678]|(?<=6)[0147]|(?<=7)[01347])|(?<=5)[0123456789]((?<=0)[1467]|(?<=1)[01236789]|(?<=2)[01235789]|(?<=3)[013456789]|(?<=4)[012356789]|(?<=5)[2345789]|(?<=6)[02345678]|(?<=7)[123567]|(?<=8)[12]|(?<=9)[78])|(?<=6)[012345678]((?<=0)[125679]|(?<=1)[9]|(?<=2)[012345789]|(?<=3)[013459]|(?<=4)[12368]|(?<=5)[056]|(?<=6)[023456789]|(?<=7)[378]|(?<=8)[03])|(?<=7)[012345]((?<=0)[1578]|(?<=1)[01]|(?<=2)[014568]|(?<=3)[01345689]|(?<=4)[01267]|(?<=5)[0123567])|(?<=8)[0123]((?<=0)[235789]|(?<=1)[02345678]|(?<=2)[012348]|(?<=3)[03])|(?<=9)[01]((?<=0)[145679]|(?<=1)[2]))|(?<=1)[023456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[12456789]|(?<=2)[012345789]|(?<=3)[0123456789]|(?<=4)[1245679]|(?<=5)[0124578]|(?<=6)[0123456789]|(?<=7)[01256789]|(?<=8)[12345789]|(?<=9)[01234678])|(?<=2)[012]((?<=0)[1467]|(?<=1)[01367]|(?<=2)[0])|(?<=3)[0123]((?<=0)[1235789]|(?<=1)[234568]|(?<=2)[012346789]|(?<=3)[13])|(?<=4)[012]((?<=0)[1456789]|(?<=1)[0159]|(?<=2)[1])|(?<=5)[01234569]((?<=0)[13]|(?<=1)[023689]|(?<=2)[023457]|(?<=3)[23579]|(?<=4)[23456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=9)[9])|(?<=6)[023459]((?<=0)[1256]|(?<=2)[02345679]|(?<=3)[012456789]|(?<=4)[1235789]|(?<=5)[0]|(?<=9)[89])|(?<=7)[0123456789]((?<=0)[14579]|(?<=1)[12469]|(?<=2)[0127]|(?<=3)[0358]|(?<=4)[3479]|(?<=5)[0367]|(?<=6)[3458]|(?<=7)[1234589]|(?<=8)[0134789]|(?<=9)[01234568])|(?<=8)[0123]((?<=0)[1345678]|(?<=1)[012456]|(?<=2)[012345679]|(?<=3)[01236])|(?<=9)[0]((?<=0)[1345679]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[389]|(?<=1)[13]|(?<=2)[456]|(?<=3)[348]|(?<=4)[0346]|(?<=5)[234589]|(?<=6)[01234568]|(?<=7)[1239]|(?<=8)[0123467]|(?<=9)[124567])|(?<=1)[0123456789]((?<=0)[2]|(?<=1)[0234789]|(?<=2)[4789]|(?<=3)[01234679]|(?<=4)[01578]|(?<=5)[79]|(?<=6)[23489]|(?<=7)[4679]|(?<=8)[01279]|(?<=9)[0235])|(?<=2)[01234567]((?<=0)[23456789]|(?<=1)[01246789]|(?<=2)[012345678]|(?<=3)[34]|(?<=4)[46]|(?<=5)[046789]|(?<=6)[6]|(?<=7)[7])|(?<=3)[01234569]((?<=0)[13456789]|(?<=1)[01237]|(?<=2)[0123478]|(?<=3)[0123467]|(?<=4)[034678]|(?<=5)[0125689]|(?<=6)[01]|(?<=9)[9])|(?<=4)[0123456]((?<=0)[1345789]|(?<=1)[03]|(?<=2)[01345678]|(?<=3)[01235789]|(?<=4)[02345689]|(?<=5)[569]|(?<=6)[0123456])|(?<=5)[012345678]((?<=0)[123456789]|(?<=1)[124]|(?<=2)[6]|(?<=3)[0134569]|(?<=4)[12478]|(?<=5)[0]|(?<=6)[13456789]|(?<=7)[01789]|(?<=8)[03])|(?<=6)[012345689]((?<=0)[1356789]|(?<=1)[0256789]|(?<=2)[12568]|(?<=3)[149]|(?<=4)[0138]|(?<=5)[368]|(?<=6)[46789]|(?<=8)[0136]|(?<=9)[23467])|(?<=7)[0123456789]((?<=0)[123789]|(?<=1)[234]|(?<=2)[03456]|(?<=3)[02568]|(?<=4)[46]|(?<=5)[01479]|(?<=6)[345678]|(?<=7)[135689]|(?<=8)[049]|(?<=9)[268])|(?<=8)[01239]((?<=0)[13456789]|(?<=1)[01246789]|(?<=2)[012456789]|(?<=3)[01235679]|(?<=9)[9])|(?<=9)[0234567]((?<=0)[1345789]|(?<=2)[02567]|(?<=3)[1457]|(?<=4)[089]|(?<=5)[0123589]|(?<=6)[023678]|(?<=7)[06]))|(?<=3)[013456789]((?<=0)[01234567]((?<=0)[149]|(?<=1)[02345689]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[023]|(?<=5)[01456]|(?<=6)[023456789]|(?<=7)[0136])|(?<=1)[023456789]((?<=0)[19]|(?<=2)[256789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[045678]|(?<=6)[01256789]|(?<=7)[023456789]|(?<=8)[012345679]|(?<=9)[0346])|(?<=3)[012358]((?<=0)[145689]|(?<=1)[12345679]|(?<=2)[12345678]|(?<=3)[0124]|(?<=5)[1]|(?<=8)[8])|(?<=4)[0123456789]((?<=0)[13456789]|(?<=1)[01234578]|(?<=2)[68]|(?<=3)[012345678]|(?<=4)[0124569]|(?<=5)[58]|(?<=6)[012379]|(?<=7)[0123678]|(?<=8)[03467]|(?<=9)[368])|(?<=5)[0123456789]((?<=0)[3]|(?<=1)[0134]|(?<=2)[1357]|(?<=3)[048]|(?<=4)[012345789]|(?<=5)[0689]|(?<=6)[35679]|(?<=7)[0234689]|(?<=8)[45]|(?<=9)[24678])|(?<=6)[01234]((?<=0)[2345679]|(?<=1)[0123456789]|(?<=2)[014569]|(?<=3)[457]|(?<=4)[7])|(?<=7)[0145678]((?<=0)[123456789]|(?<=1)[0123456]|(?<=4)[4]|(?<=5)[569]|(?<=6)[0123457]|(?<=7)[01234678]|(?<=8)[1256])|(?<=8)[0123456789]((?<=0)[1359]|(?<=1)[01235]|(?<=2)[357]|(?<=3)[045789]|(?<=4)[0134789]|(?<=5)[0123456789]|(?<=6)[0578]|(?<=7)[023567]|(?<=8)[014]|(?<=9)[0678])|(?<=9)[0123456789]((?<=0)[1345789]|(?<=1)[234679]|(?<=2)[01248]|(?<=3)[0156]|(?<=4)[4678]|(?<=5)[0234567]|(?<=6)[0567]|(?<=7)[12346]|(?<=8)[0123]|(?<=9)[013]))|(?<=4)[124679]((?<=1)[01234]((?<=0)[1234589]|(?<=1)[0234679]|(?<=2)[0]|(?<=3)[45789]|(?<=4)[0125])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[0125679]|(?<=2)[123489]|(?<=3)[123456789]|(?<=4)[0123]|(?<=5)[01]|(?<=6)[6789]|(?<=7)[5]|(?<=8)[56789]|(?<=9)[123])|(?<=4)[23456789]((?<=2)[089]|(?<=3)[12346]|(?<=4)[25689]|(?<=5)[023]|(?<=6)[15]|(?<=7)[01234569]|(?<=8)[012478]|(?<=9)[18])|(?<=6)[01356789]((?<=0)[1246789]|(?<=1)[034]|(?<=3)[789]|(?<=5)[2345]|(?<=6)[1789]|(?<=7)[79]|(?<=8)[134589]|(?<=9)[0158])|(?<=7)[0123456789]((?<=0)[5]|(?<=1)[145]|(?<=2)[9]|(?<=3)[14679]|(?<=4)[134678]|(?<=5)[3689]|(?<=6)[0129]|(?<=7)[123]|(?<=8)[5678]|(?<=9)[7])|(?<=9)[45789]((?<=4)[5679]|(?<=5)[012367]|(?<=7)[24]|(?<=8)[123467]|(?<=9)[0467]))|(?<=5)[012456789]((?<=0)[0123456789]((?<=0)[4567]|(?<=1)[03469]|(?<=2)[023]|(?<=3)[123456]|(?<=4)[0234569]|(?<=5)[1234578]|(?<=6)[012348]|(?<=7)[01234789]|(?<=8)[023579]|(?<=9)[14678])|(?<=1)[12345678]((?<=1)[12456789]|(?<=2)[0145678]|(?<=3)[01356]|(?<=4)[36789]|(?<=5)[01]|(?<=6)[0]|(?<=7)[1235689]|(?<=8)[0134568])|(?<=2)[012345]((?<=0)[3456789]|(?<=1)[012345678]|(?<=2)[1234689]|(?<=3)[345]|(?<=4)[2349]|(?<=5)[4])|(?<=4)[0456789]((?<=0)[1456]|(?<=4)[123467]|(?<=5)[236789]|(?<=6)[0123469]|(?<=7)[034567]|(?<=8)[017]|(?<=9)[01])|(?<=5)[0456789]((?<=0)[134]|(?<=4)[012345689]|(?<=5)[023459]|(?<=6)[345]|(?<=7)[0123456789]|(?<=8)[0124567]|(?<=9)[234])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[01345689]|(?<=2)[012]|(?<=3)[0234]|(?<=4)[0356789]|(?<=5)[01234]|(?<=6)[01]|(?<=7)[012347])|(?<=7)[34567]((?<=3)[9]|(?<=4)[01456789]|(?<=5)[012456789]|(?<=6)[01345689]|(?<=7)[123456])|(?<=8)[0129]((?<=0)[123568]|(?<=1)[016]|(?<=2)[4]|(?<=9)[6])|(?<=9)[056789]((?<=0)[134567]|(?<=5)[012346789]|(?<=6)[0123678]|(?<=7)[12345689]|(?<=8)[01346789]|(?<=9)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[35689]|(?<=1)[0367]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[01236789]|(?<=5)[12347]|(?<=6)[4679]|(?<=7)[1589]|(?<=8)[012389]|(?<=9)[123])|(?<=1)[013]((?<=0)[1456789]|(?<=1)[01234567]|(?<=3)[0])|(?<=2)[05678]((?<=0)[13567]|(?<=5)[01568]|(?<=6)[023456789]|(?<=7)[12346789]|(?<=8)[0])|(?<=3)[01234567]((?<=0)[135]|(?<=1)[012346789]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[03456]|(?<=5)[0123]|(?<=6)[02]|(?<=7)[013456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0156]|(?<=3)[2569]|(?<=4)[12456]|(?<=5)[13456]|(?<=6)[07]|(?<=7)[0134567]|(?<=8)[0123])|(?<=5)[012345678]((?<=0)[23579]|(?<=1)[1238]|(?<=2)[123456789]|(?<=3)[02589]|(?<=4)[012345789]|(?<=5)[0135689]|(?<=6)[0124789]|(?<=7)[1245689]|(?<=8)[0123457])|(?<=6)[015689]((?<=0)[23456789]|(?<=1)[01235789]|(?<=5)[2]|(?<=6)[3]|(?<=8)[8]|(?<=9)[35])|(?<=7)[023456789]((?<=0)[13]|(?<=2)[023678]|(?<=3)[268]|(?<=4)[012489]|(?<=5)[01234689]|(?<=6)[13456789]|(?<=7)[356]|(?<=8)[23456]|(?<=9)[023])|(?<=8)[034567]((?<=0)[14]|(?<=3)[02]|(?<=4)[9]|(?<=5)[01234568]|(?<=6)[01235679]|(?<=7)[014579])|(?<=9)[012]((?<=0)[1478]|(?<=1)[023569]|(?<=2)[125]))|(?<=7)[012346789]((?<=0)[123456789]((?<=1)[02345689]|(?<=2)[02356789]|(?<=3)[01234567]|(?<=4)[0236789]|(?<=5)[0125789]|(?<=6)[0124679]|(?<=7)[2345689]|(?<=8)[023567]|(?<=9)[015678])|(?<=1)[0123456789]((?<=0)[1]|(?<=1)[058]|(?<=2)[2789]|(?<=3)[024578]|(?<=4)[012345689]|(?<=5)[013]|(?<=6)[0567]|(?<=7)[124589]|(?<=8)[013456789]|(?<=9)[01])|(?<=2)[0123]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[018]|(?<=3)[28])|(?<=3)[0123456789]((?<=0)[12356789]|(?<=1)[01235678]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[0123578]|(?<=5)[012345679]|(?<=6)[01235679]|(?<=7)[0345679]|(?<=8)[013578]|(?<=9)[14678])|(?<=4)[0125]((?<=0)[23456789]|(?<=1)[012569]|(?<=2)[1]|(?<=5)[0])|(?<=6)[01245689]((?<=0)[14]|(?<=1)[45678]|(?<=2)[0]|(?<=4)[01235]|(?<=5)[06789]|(?<=6)[0345]|(?<=8)[0123678]|(?<=9)[0124])|(?<=7)[01234567]((?<=0)[1589]|(?<=1)[0134569]|(?<=2)[12345679]|(?<=3)[012378]|(?<=4)[2358]|(?<=5)[234567]|(?<=6)[0234569]|(?<=7)[012479])|(?<=8)[0123456789]((?<=0)[134679]|(?<=1)[013489]|(?<=2)[015689]|(?<=3)[0]|(?<=4)[01356789]|(?<=5)[12347]|(?<=6)[0123569]|(?<=7)[012346789]|(?<=8)[0125678]|(?<=9)[012])|(?<=9)[0123]((?<=0)[29]|(?<=1)[2456789]|(?<=2)[012349]|(?<=3)[1248]))|(?<=8)[0123456789]((?<=0)[012345678]((?<=0)[124678]|(?<=1)[1256789]|(?<=2)[13489]|(?<=3)[04679]|(?<=4)[0124679]|(?<=5)[0234789]|(?<=6)[0136789]|(?<=7)[05679]|(?<=8)[0])|(?<=1)[012345]((?<=0)[3456789]|(?<=1)[123456789]|(?<=2)[025678]|(?<=3)[1234589]|(?<=4)[1]|(?<=5)[2])|(?<=2)[023456]((?<=0)[1]|(?<=2)[0124569]|(?<=3)[0123567]|(?<=4)[012]|(?<=5)[13456789]|(?<=6)[01])|(?<=3)[0123456789]((?<=0)[15]|(?<=1)[0135678]|(?<=2)[016789]|(?<=3)[0234789]|(?<=4)[01234578]|(?<=5)[1256789]|(?<=6)[12356789]|(?<=7)[0124569]|(?<=8)[012789]|(?<=9)[012])|(?<=4)[0245678]((?<=0)[1]|(?<=2)[5]|(?<=4)[9]|(?<=5)[012345679]|(?<=6)[0123489]|(?<=7)[12345678]|(?<=8)[1235678])|(?<=5)[045678]((?<=0)[13456]|(?<=4)[12345789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[012345789]|(?<=8)[01235789])|(?<=6)[012345678]((?<=0)[136]|(?<=1)[014789]|(?<=2)[01235679]|(?<=3)[123579]|(?<=4)[1234567]|(?<=5)[0124589]|(?<=6)[134568]|(?<=7)[0123467]|(?<=8)[035])|(?<=7)[02345678]((?<=0)[13]|(?<=2)[012356]|(?<=3)[0123678]|(?<=4)[04568]|(?<=5)[13469]|(?<=6)[01245789]|(?<=7)[123468]|(?<=8)[1])|(?<=8)[0234567]((?<=0)[14]|(?<=2)[146789]|(?<=3)[3489]|(?<=4)[1346789]|(?<=5)[01256789]|(?<=6)[02345689]|(?<=7)[013689])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[34567]|(?<=2)[012345789]|(?<=3)[0]|(?<=4)[01346789]|(?<=5)[012347]|(?<=6)[1234567]))|(?<=9)[012345678]((?<=0)[3456789]((?<=3)[89]|(?<=4)[0124567]|(?<=5)[146789]|(?<=6)[123679]|(?<=7)[13489]|(?<=8)[2368]|(?<=9)[024567])|(?<=1)[012456789]((?<=0)[8]|(?<=1)[01345679]|(?<=2)[0]|(?<=4)[045689]|(?<=5)[0234679]|(?<=6)[026789]|(?<=7)[0345679]|(?<=8)[039]|(?<=9)[1234])|(?<=2)[01367]((?<=0)[1234689]|(?<=1)[0123678]|(?<=3)[2]|(?<=6)[9]|(?<=7)[2])|(?<=3)[023456]((?<=0)[1579]|(?<=2)[02345678]|(?<=3)[0256789]|(?<=4)[125678]|(?<=5)[0245689]|(?<=6)[01234567])|(?<=4)[02345678]((?<=0)[126]|(?<=2)[12356789]|(?<=3)[79]|(?<=4)[03]|(?<=5)[12569]|(?<=6)[12456]|(?<=7)[0456789]|(?<=8)[0123])|(?<=5)[023456789]((?<=0)[137]|(?<=2)[059]|(?<=3)[0124]|(?<=4)[0]|(?<=5)[36]|(?<=6)[0123457]|(?<=7)[123467]|(?<=8)[1]|(?<=9)[5])|(?<=6)[023456]((?<=0)[1]|(?<=2)[9]|(?<=3)[01358]|(?<=4)[13578]|(?<=5)[23467]|(?<=6)[123456789])|(?<=7)[034567]((?<=0)[125]|(?<=3)[05679]|(?<=4)[0134567]|(?<=5)[0123569]|(?<=6)[2679]|(?<=7)[1236])|(?<=8)[123456789]((?<=1)[3579]|(?<=2)[345678]|(?<=3)[2467]|(?<=4)[01256]|(?<=5)[149]|(?<=6)[1267]|(?<=7)[07]|(?<=8)[56]|(?<=9)[7])))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[01234567]((?<=0)[346789]|(?<=1)[012349]|(?<=2)[02356]|(?<=3)[1367]|(?<=4)[015679]|(?<=5)[01256789]|(?<=6)[01235789]|(?<=7)[015678])|(?<=1)[0124567]((?<=0)[4789]|(?<=1)[015789]|(?<=2)[1]|(?<=4)[023456]|(?<=5)[0257]|(?<=6)[0125]|(?<=7)[015678])|(?<=2)[012345789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012389]|(?<=3)[1]|(?<=4)[1235]|(?<=5)[8]|(?<=7)[2]|(?<=8)[0]|(?<=9)[19])|(?<=3)[123456789]((?<=1)[01236]|(?<=2)[248]|(?<=3)[04679]|(?<=4)[2678]|(?<=5)[01356789]|(?<=6)[013]|(?<=7)[012469]|(?<=8)[0357]|(?<=9)[01])|(?<=4)[012345678]((?<=0)[2349]|(?<=1)[9]|(?<=2)[2]|(?<=3)[47]|(?<=4)[024578]|(?<=5)[6]|(?<=6)[0148]|(?<=7)[25]|(?<=8)[1469])|(?<=5)[0123]((?<=0)[2345789]|(?<=1)[0134567]|(?<=2)[6]|(?<=3)[6])|(?<=6)[0]((?<=0)[1])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[9]|(?<=3)[47]|(?<=4)[014]|(?<=5)[9]|(?<=6)[39]|(?<=7)[1])|(?<=8)[01234567]((?<=0)[13678]|(?<=1)[035689]|(?<=2)[0346789]|(?<=3)[01]|(?<=4)[034579]|(?<=5)[4568]|(?<=6)[2358]|(?<=7)[034])|(?<=9)[0123456789]((?<=0)[236]|(?<=1)[345]|(?<=2)[137]|(?<=3)[59]|(?<=4)[01369]|(?<=5)[38]|(?<=6)[245]|(?<=7)[279]|(?<=8)[1238]|(?<=9)[57]))|(?<=1)[012345678]((?<=0)[013456789]((?<=0)[12345678]|(?<=1)[0145678]|(?<=3)[013459]|(?<=4)[012345689]|(?<=5)[12569]|(?<=6)[34]|(?<=7)[13456]|(?<=8)[0356]|(?<=9)[1234578])|(?<=1)[02345678]((?<=0)[12]|(?<=2)[149]|(?<=3)[259]|(?<=4)[123469]|(?<=5)[9]|(?<=6)[4689]|(?<=7)[1459]|(?<=8)[0139])|(?<=2)[01234567]((?<=0)[134]|(?<=1)[469]|(?<=2)[246]|(?<=3)[01248]|(?<=4)[0]|(?<=5)[04567]|(?<=6)[0234578]|(?<=7)[14])|(?<=3)[01345689]((?<=0)[1]|(?<=1)[0147]|(?<=3)[29]|(?<=4)[8]|(?<=5)[12]|(?<=6)[04567]|(?<=8)[56]|(?<=9)[07])|(?<=4)[0267]((?<=0)[8]|(?<=2)[15]|(?<=6)[45]|(?<=7)[2])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[23479]|(?<=2)[24678]|(?<=3)[145789]|(?<=4)[03478]|(?<=5)[345789]|(?<=6)[0234678]|(?<=7)[12])|(?<=6)[0123456]((?<=0)[1234567]|(?<=1)[2569]|(?<=2)[12]|(?<=3)[01256]|(?<=4)[023579]|(?<=5)[01359]|(?<=6)[03679])|(?<=7)[01234567]((?<=0)[1]|(?<=1)[2349]|(?<=2)[123579]|(?<=3)[159]|(?<=4)[0569]|(?<=5)[149]|(?<=6)[02346]|(?<=7)[2345678])|(?<=8)[0123456]((?<=0)[4]|(?<=1)[02579]|(?<=2)[124568]|(?<=3)[123456789]|(?<=4)[0345789]|(?<=5)[589]|(?<=6)[12]))|(?<=2)[01234567]((?<=0)[02345678]((?<=0)[13]|(?<=2)[012345789]|(?<=3)[1256789]|(?<=4)[0145789]|(?<=5)[0134568]|(?<=6)[01469]|(?<=7)[1689]|(?<=8)[1235678])|(?<=1)[0234567]((?<=0)[134]|(?<=2)[023479]|(?<=3)[0134]|(?<=4)[01]|(?<=5)[134679]|(?<=6)[03467]|(?<=7)[01])|(?<=2)[012345678]((?<=0)[2467]|(?<=1)[01457]|(?<=2)[03]|(?<=3)[246]|(?<=4)[0]|(?<=5)[2469]|(?<=6)[1256]|(?<=7)[3456]|(?<=8)[056])|(?<=3)[0234567]((?<=0)[13]|(?<=2)[012345678]|(?<=3)[023789]|(?<=4)[345789]|(?<=5)[012456]|(?<=6)[16789]|(?<=7)[012468])|(?<=4)[0123456]((?<=0)[4689]|(?<=1)[013]|(?<=2)[0]|(?<=3)[167]|(?<=4)[01245]|(?<=5)[01235689]|(?<=6)[1234])|(?<=5)[0123456]((?<=0)[13]|(?<=1)[689]|(?<=2)[8]|(?<=3)[39]|(?<=4)[14]|(?<=5)[3]|(?<=6)[567])|(?<=6)[02345]((?<=0)[23]|(?<=2)[9]|(?<=3)[13458]|(?<=4)[279]|(?<=5)[3])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[235678]|(?<=2)[124689]|(?<=3)[23]|(?<=4)[0123689]|(?<=5)[34789]|(?<=6)[245]|(?<=7)[6]|(?<=8)[248]))|(?<=3)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[12356789]|(?<=3)[0123567]|(?<=4)[04567]|(?<=5)[0456]|(?<=6)[01245678]|(?<=7)[0124678]|(?<=8)[01245])|(?<=1)[0123456]((?<=0)[1235679]|(?<=1)[01235679]|(?<=2)[35678]|(?<=3)[05678]|(?<=4)[023456789]|(?<=5)[012345678]|(?<=6)[024])|(?<=2)[01234]((?<=0)[12345679]|(?<=1)[012345789]|(?<=2)[01234789]|(?<=3)[0125]|(?<=4)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01456789]|(?<=2)[0123456]|(?<=3)[01234678]|(?<=4)[012345678]|(?<=5)[016789]|(?<=6)[0])|(?<=4)[0123456]((?<=0)[23678]|(?<=1)[02346]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[0235679]|(?<=5)[012678]|(?<=6)[023456789])|(?<=5)[01234567]((?<=0)[12456]|(?<=1)[01256789]|(?<=2)[0123456789]|(?<=3)[01234567]|(?<=4)[01235789]|(?<=5)[1345678]|(?<=6)[05679]|(?<=7)[01])|(?<=6)[012]((?<=0)[456789]|(?<=1)[012345679]|(?<=2)[03])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[136789]|(?<=2)[01234578]|(?<=3)[012345689]|(?<=4)[06789]|(?<=5)[045689]|(?<=6)[0124678]|(?<=7)[123789]|(?<=8)[023678]|(?<=9)[13])|(?<=8)[01234]((?<=0)[245]|(?<=1)[12]|(?<=2)[124]|(?<=3)[0267]|(?<=4)[02345])|(?<=9)[012345678]((?<=0)[12356789]|(?<=1)[023457]|(?<=2)[0568]|(?<=3)[01234589]|(?<=4)[02345678]|(?<=5)[0123]|(?<=6)[123478]|(?<=7)[123467]|(?<=8)[13568]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[134]|(?<=1)[0127]|(?<=2)[123468]|(?<=3)[0259]|(?<=4)[01456789]|(?<=5)[0234567]|(?<=6)[024578]|(?<=7)[02467]|(?<=8)[01245679]|(?<=9)[023459])|(?<=1)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345679])|(?<=2)[012345678]((?<=0)[123]|(?<=1)[24567]|(?<=2)[134]|(?<=3)[0123456]|(?<=4)[013]|(?<=5)[013456]|(?<=6)[0246]|(?<=7)[0234568]|(?<=8)[015678])|(?<=3)[0123]((?<=0)[12345678]|(?<=1)[012349]|(?<=2)[015]|(?<=3)[3])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[0123578]|(?<=2)[0345789]|(?<=3)[0126789]|(?<=4)[01234569]|(?<=5)[01245]|(?<=6)[0]|(?<=7)[013]|(?<=8)[1345]|(?<=9)[013])|(?<=5)[015]((?<=0)[2345679]|(?<=1)[01245]|(?<=5)[5])|(?<=6)[0123456789]((?<=0)[16789]|(?<=1)[01234589]|(?<=2)[012456789]|(?<=3)[0234789]|(?<=4)[0134567]|(?<=5)[1234679]|(?<=6)[01235679]|(?<=7)[0125678]|(?<=8)[01235789]|(?<=9)[013579])|(?<=7)[0123]((?<=0)[23456789]|(?<=1)[048]|(?<=2)[01]|(?<=3)[0])|(?<=8)[0123456789]((?<=0)[24579]|(?<=1)[134578]|(?<=2)[0245678]|(?<=3)[036789]|(?<=4)[01234679]|(?<=5)[01345679]|(?<=6)[14567]|(?<=7)[0458]|(?<=8)[012379]|(?<=9)[0])|(?<=9)[0]((?<=0)[1234567]))|(?<=5)[012345678]((?<=0)[0134567]((?<=0)[1235]|(?<=1)[1345]|(?<=3)[023469]|(?<=4)[0124]|(?<=5)[0123456]|(?<=6)[2456789]|(?<=7)[0])|(?<=1)[01234567]((?<=0)[123567]|(?<=1)[123589]|(?<=2)[0123]|(?<=3)[01235]|(?<=4)[024678]|(?<=5)[023456789]|(?<=6)[0246789]|(?<=7)[12467])|(?<=2)[0123456]((?<=0)[23456789]|(?<=1)[123456789]|(?<=2)[0345679]|(?<=3)[01236789]|(?<=4)[0123456789]|(?<=5)[125]|(?<=6)[7])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[012456789]|(?<=5)[01234689]|(?<=6)[0123589]|(?<=7)[012378]|(?<=8)[012345789]|(?<=9)[0])|(?<=4)[0123456]((?<=0)[234569]|(?<=1)[045679]|(?<=2)[034689]|(?<=3)[0123459]|(?<=4)[09]|(?<=5)[89]|(?<=6)[9])|(?<=5)[0]((?<=0)[123456])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0123489]|(?<=3)[01468]|(?<=4)[0245678]|(?<=5)[012346789]|(?<=6)[01239]|(?<=7)[1234789]|(?<=8)[0124568]|(?<=9)[023456789])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[014569]|(?<=2)[013479]|(?<=3)[2459]|(?<=4)[0123456]|(?<=5)[0]|(?<=6)[0146789]|(?<=7)[01235689]|(?<=8)[0234689])|(?<=8)[0123456789]((?<=0)[1456789]|(?<=1)[02345679]|(?<=2)[012678]|(?<=3)[0123568]|(?<=4)[01345689]|(?<=5)[01345689]|(?<=6)[0123456789]|(?<=7)[012345679]|(?<=8)[0123456789]|(?<=9)[013456789]))|(?<=6)[0123456789]((?<=0)[0134567]((?<=0)[1]|(?<=1)[12367]|(?<=3)[0123456789]|(?<=4)[0145789]|(?<=5)[0125678]|(?<=6)[0234589]|(?<=7)[0124567])|(?<=1)[012345678]((?<=0)[234567]|(?<=1)[0123578]|(?<=2)[012345678]|(?<=3)[0135]|(?<=4)[02346789]|(?<=5)[0145678]|(?<=6)[012345678]|(?<=7)[012356]|(?<=8)[012346])|(?<=2)[0123456789]((?<=0)[1234568]|(?<=1)[46789]|(?<=2)[012456789]|(?<=3)[145679]|(?<=4)[01]|(?<=5)[0469]|(?<=6)[08]|(?<=7)[8]|(?<=8)[0]|(?<=9)[0])|(?<=3)[012456789]((?<=0)[12347]|(?<=1)[0129]|(?<=2)[012347]|(?<=4)[01256789]|(?<=5)[06]|(?<=6)[0568]|(?<=7)[1345679]|(?<=8)[1235]|(?<=9)[01234])|(?<=4)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=5)[0123456789]((?<=0)[124678]|(?<=1)[013467]|(?<=2)[468]|(?<=3)[01246789]|(?<=4)[02345]|(?<=5)[023456]|(?<=6)[12357]|(?<=7)[01234]|(?<=8)[02]|(?<=9)[05])|(?<=6)[0123]((?<=0)[1]|(?<=1)[345679]|(?<=2)[48]|(?<=3)[57])|(?<=7)[0123456789]((?<=0)[123456]|(?<=1)[014]|(?<=2)[135]|(?<=3)[012378]|(?<=4)[01235678]|(?<=5)[059]|(?<=6)[0134567]|(?<=7)[012346789]|(?<=8)[13456789]|(?<=9)[123456789])|(?<=8)[01234]((?<=0)[23456789]|(?<=1)[45689]|(?<=2)[5]|(?<=3)[5]|(?<=4)[5])|(?<=9)[0123456789]((?<=0)[12]|(?<=1)[0134579]|(?<=2)[023689]|(?<=3)[01236789]|(?<=4)[013567]|(?<=5)[0123789]|(?<=6)[012578]|(?<=7)[014589]|(?<=8)[02456789]|(?<=9)[012468]))|(?<=7)[0123456789]((?<=0)[012346]((?<=0)[136]|(?<=1)[012678]|(?<=2)[012345]|(?<=3)[012345678]|(?<=4)[0123]|(?<=6)[0])|(?<=1)[01234567]((?<=0)[2468]|(?<=1)[012456789]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[012357]|(?<=5)[0]|(?<=6)[01234567]|(?<=7)[02457])|(?<=2)[02345678]((?<=0)[13]|(?<=2)[0345679]|(?<=3)[012456]|(?<=4)[03467]|(?<=5)[0]|(?<=6)[0345]|(?<=7)[0234]|(?<=8)[0123])|(?<=3)[023456789]((?<=0)[23456]|(?<=2)[04567]|(?<=3)[01456789]|(?<=4)[0124568]|(?<=5)[123456789]|(?<=6)[0126789]|(?<=7)[0134]|(?<=8)[012345678]|(?<=9)[02346])|(?<=4)[0234567]((?<=0)[134568]|(?<=2)[01479]|(?<=3)[12345678]|(?<=4)[135689]|(?<=5)[123456789]|(?<=6)[0245789]|(?<=7)[01])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[234569]|(?<=2)[012345789]|(?<=3)[1257]|(?<=4)[126]|(?<=5)[012378]|(?<=6)[12478]|(?<=7)[3456789]|(?<=8)[014568]|(?<=9)[01678])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[0123569]|(?<=2)[0]|(?<=3)[01345789]|(?<=4)[089]|(?<=5)[4]|(?<=6)[056]|(?<=7)[0]|(?<=8)[3])|(?<=7)[012]((?<=0)[8]|(?<=1)[012345]|(?<=2)[05])|(?<=8)[0345678]((?<=0)[234579]|(?<=3)[1234678]|(?<=4)[01256789]|(?<=5)[01345789]|(?<=6)[01235689]|(?<=7)[0124569]|(?<=8)[01245])|(?<=9)[0123456789]((?<=0)[145679]|(?<=1)[678]|(?<=2)[012345689]|(?<=3)[023]|(?<=4)[01234689]|(?<=5)[01245789]|(?<=6)[03456789]|(?<=7)[014578]|(?<=8)[0123679]|(?<=9)[0123457]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123569]|(?<=1)[457]|(?<=2)[1235678]|(?<=3)[02345689]|(?<=4)[012345789]|(?<=5)[0149]|(?<=6)[02345679]|(?<=7)[01234569]|(?<=8)[01234589]|(?<=9)[12345678])|(?<=1)[0123456789]((?<=0)[134589]|(?<=1)[14678]|(?<=2)[0245678]|(?<=3)[01345789]|(?<=4)[013456]|(?<=5)[024789]|(?<=6)[012456789]|(?<=7)[0346789]|(?<=8)[023456789]|(?<=9)[0123578])|(?<=2)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[013456789]|(?<=3)[03456789]|(?<=4)[023])|(?<=3)[0123456789]((?<=0)[124679]|(?<=1)[0234567]|(?<=2)[02346789]|(?<=3)[1456]|(?<=4)[01268]|(?<=5)[03679]|(?<=6)[0237]|(?<=7)[01457]|(?<=8)[01236]|(?<=9)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[0124569]|(?<=5)[01345678]|(?<=6)[0123456789]|(?<=7)[012356])|(?<=5)[0123]((?<=0)[2345679]|(?<=1)[9]|(?<=2)[9]|(?<=3)[2])|(?<=6)[0123456]((?<=0)[123479]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[0279]|(?<=5)[0123456789]|(?<=6)[12])|(?<=7)[01234567]((?<=0)[13568]|(?<=1)[0]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0123456789]|(?<=5)[045679]|(?<=6)[01235678]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[16789]|(?<=1)[1356789]|(?<=2)[01234579]|(?<=3)[1245678]|(?<=4)[012356789]|(?<=5)[0123456789]|(?<=6)[0124567]|(?<=7)[0123456789]|(?<=8)[01345689]|(?<=9)[01234567])|(?<=9)[013]((?<=0)[6]|(?<=1)[01257]|(?<=3)[3]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1246789]|(?<=1)[0123457]|(?<=2)[1246789]|(?<=3)[01234678]|(?<=4)[0235678]|(?<=5)[01235678]|(?<=6)[01345678]|(?<=7)[012345689]|(?<=8)[02345789]|(?<=9)[0123456789])|(?<=1)[0123]((?<=0)[123467]|(?<=1)[1235679]|(?<=2)[056789]|(?<=3)[0])|(?<=2)[02345678]((?<=0)[123]|(?<=2)[014789]|(?<=3)[02345678]|(?<=4)[01256789]|(?<=5)[012345689]|(?<=6)[123456789]|(?<=7)[0124679]|(?<=8)[23456789])|(?<=3)[01234]((?<=0)[12345679]|(?<=1)[025689]|(?<=2)[012356789]|(?<=3)[012356789]|(?<=4)[0123456789])|(?<=4)[0123456]((?<=0)[12345689]|(?<=1)[0125789]|(?<=2)[0134568]|(?<=3)[014567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[014])|(?<=5)[01234]((?<=0)[3456789]|(?<=1)[29]|(?<=2)[5]|(?<=3)[4]|(?<=4)[468])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[012356789]|(?<=3)[0123456789]|(?<=4)[02345689]|(?<=5)[01345679]|(?<=6)[034578]|(?<=7)[045679]|(?<=8)[02345689]|(?<=9)[06])|(?<=7)[0123456789]((?<=0)[15679]|(?<=1)[02356789]|(?<=2)[012456789]|(?<=3)[03568]|(?<=4)[03456789]|(?<=5)[1235679]|(?<=6)[0245689]|(?<=7)[045679]|(?<=8)[012348]|(?<=9)[13569])|(?<=8)[0123456789]((?<=0)[125678]|(?<=1)[245678]|(?<=2)[0125679]|(?<=3)[13456789]|(?<=4)[01789]|(?<=5)[23458]|(?<=6)[123468]|(?<=7)[012346789]|(?<=8)[0134567]|(?<=9)[123456])|(?<=9)[01234567]((?<=0)[12358]|(?<=1)[012356789]|(?<=2)[012579]|(?<=3)[01458]|(?<=4)[25678]|(?<=5)[023589]|(?<=6)[01235789]|(?<=7)[01])))|(?<=5)[0123456789]((?<=0)[012345678]((?<=0)[01234567]((?<=0)[12356789]|(?<=1)[0234]|(?<=2)[012356789]|(?<=3)[12345689]|(?<=4)[01246789]|(?<=5)[01245678]|(?<=6)[0123456789]|(?<=7)[01234568])|(?<=1)[01234567]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0134])|(?<=2)[01234567]((?<=0)[1678]|(?<=1)[012346789]|(?<=2)[02356789]|(?<=3)[0123456789]|(?<=4)[012346789]|(?<=5)[01245678]|(?<=6)[12345689]|(?<=7)[12345678])|(?<=3)[012]((?<=0)[9]|(?<=1)[012345679]|(?<=2)[0123457])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0134678]|(?<=3)[012345689]|(?<=4)[0146789]|(?<=5)[0123456789]|(?<=6)[01456789]|(?<=7)[012356789]|(?<=8)[0234])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[01235689]|(?<=4)[01234568]|(?<=5)[1246789]|(?<=6)[012356789]|(?<=7)[013456789]|(?<=8)[123568]|(?<=9)[012345789])|(?<=6)[012345678]((?<=0)[123456789]|(?<=1)[12369]|(?<=2)[0123456789]|(?<=3)[01234568]|(?<=4)[12345789]|(?<=5)[012345789]|(?<=6)[02456789]|(?<=7)[01234567]|(?<=8)[012])|(?<=7)[0]((?<=0)[1237])|(?<=8)[03456]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[012356789]|(?<=5)[134789]|(?<=6)[01234]))|(?<=1)[0123456]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01245689]|(?<=2)[023456789]|(?<=3)[013456789]|(?<=4)[01456789]|(?<=5)[01234568]|(?<=6)[0123])|(?<=1)[01]((?<=0)[1345689]|(?<=1)[1])|(?<=2)[0345]((?<=0)[1]|(?<=3)[01245789]|(?<=4)[0123456789]|(?<=5)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1348]|(?<=4)[0123567]|(?<=5)[014578]|(?<=6)[03456])|(?<=4)[03456]((?<=0)[1]|(?<=3)[012369]|(?<=4)[0123456789]|(?<=5)[01234589]|(?<=6)[0123567])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[0]|(?<=2)[01356789]|(?<=3)[01234567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012356789])|(?<=6)[0345]((?<=0)[1]|(?<=3)[0126789]|(?<=4)[056789]|(?<=5)[012346]))|(?<=2)[012345678]((?<=0)[034567]((?<=0)[123]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[023467]|(?<=6)[045689]|(?<=7)[0123456789])|(?<=1)[034567]((?<=0)[1]|(?<=3)[23456]|(?<=4)[012467]|(?<=5)[1456789]|(?<=6)[012345689]|(?<=7)[0125])|(?<=2)[012345]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[123567]|(?<=4)[01256789]|(?<=5)[123457])|(?<=3)[0123456]((?<=0)[1256789]|(?<=1)[02345678]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[012456789]|(?<=5)[12345689]|(?<=6)[12])|(?<=4)[01]((?<=0)[12345]|(?<=1)[1])|(?<=5)[03456789]((?<=0)[1]|(?<=3)[0134567]|(?<=4)[023489]|(?<=5)[01234567]|(?<=6)[012356789]|(?<=7)[0123467]|(?<=8)[0134568]|(?<=9)[01345])|(?<=6)[0123456]((?<=0)[1]|(?<=1)[9]|(?<=2)[0134567]|(?<=3)[0125789]|(?<=4)[0145679]|(?<=5)[0123456789]|(?<=6)[0])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0126789]|(?<=3)[012789]|(?<=4)[256789]|(?<=5)[0123456789]|(?<=6)[0156789]|(?<=7)[1234678])|(?<=8)[0]((?<=0)[123467]))|(?<=3)[01245789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[0123456789]|(?<=2)[0123479]|(?<=3)[123456789]|(?<=4)[02456789]|(?<=5)[01789]|(?<=6)[13569]|(?<=7)[02345689]|(?<=8)[0135689]|(?<=9)[012345789])|(?<=1)[0123456789]((?<=0)[3458]|(?<=1)[04589]|(?<=2)[01256789]|(?<=3)[0279]|(?<=4)[0234679]|(?<=5)[0134678]|(?<=6)[78]|(?<=7)[026789]|(?<=8)[12345689]|(?<=9)[0125])|(?<=2)[01239]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[35]|(?<=9)[5])|(?<=4)[0]((?<=0)[23456])|(?<=5)[0123456789]((?<=0)[12345678]|(?<=1)[015678]|(?<=2)[012356789]|(?<=3)[01234678]|(?<=4)[01345689]|(?<=5)[013456789]|(?<=6)[0123569]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[034789])|(?<=7)[0129]((?<=0)[3456]|(?<=1)[13456789]|(?<=2)[6]|(?<=9)[2])|(?<=8)[012]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[01567])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[01369]|(?<=2)[02345689]|(?<=3)[012345679]|(?<=4)[012346789]|(?<=5)[01234569]|(?<=6)[01234589]))|(?<=4)[0123456789]((?<=0)[0128]((?<=0)[12345679]|(?<=1)[134567]|(?<=2)[012345678]|(?<=8)[2])|(?<=1)[012345678]((?<=0)[123467]|(?<=1)[0123459]|(?<=2)[013456789]|(?<=3)[056789]|(?<=4)[0139]|(?<=5)[012345679]|(?<=6)[012569]|(?<=7)[013457]|(?<=8)[0])|(?<=2)[01234]((?<=0)[1245789]|(?<=1)[01234567]|(?<=2)[0789]|(?<=3)[0245]|(?<=4)[1567])|(?<=3)[01]((?<=0)[12347]|(?<=1)[13])|(?<=4)[0123456789]((?<=0)[1356789]|(?<=1)[01234678]|(?<=2)[012345678]|(?<=3)[03567]|(?<=4)[01236789]|(?<=5)[012456789]|(?<=6)[02345679]|(?<=7)[0134569]|(?<=8)[012456789]|(?<=9)[0134589])|(?<=5)[0123456]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[0145679]|(?<=3)[0146789]|(?<=4)[0125678]|(?<=5)[02456789]|(?<=6)[01234568])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[012345689]|(?<=2)[123456789]|(?<=3)[012456789]|(?<=4)[234568]|(?<=5)[0123456789]|(?<=6)[0145679]|(?<=7)[0])|(?<=7)[0234567]((?<=0)[13]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[01256789]|(?<=5)[01456789]|(?<=6)[01236789]|(?<=7)[0123])|(?<=8)[0123456789]((?<=0)[156]|(?<=1)[023479]|(?<=2)[01246789]|(?<=3)[0256789]|(?<=4)[0123456789]|(?<=5)[03456789]|(?<=6)[124578]|(?<=7)[0123456]|(?<=8)[089]|(?<=9)[1356])|(?<=9)[012345678]((?<=0)[1249]|(?<=1)[1345]|(?<=2)[1236789]|(?<=3)[012357]|(?<=4)[0123456789]|(?<=5)[026]|(?<=6)[012345678]|(?<=7)[014789]|(?<=8)[0123456]))|(?<=5)[01346789]((?<=0)[0123456789]((?<=0)[1356789]|(?<=1)[12346789]|(?<=2)[0145679]|(?<=3)[0123678]|(?<=4)[012345679]|(?<=5)[1234567]|(?<=6)[035689]|(?<=7)[012345679]|(?<=8)[0245789]|(?<=9)[02])|(?<=1)[01235]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0]|(?<=5)[05])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[01245789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[023456789]|(?<=6)[02346789]|(?<=7)[012345689]|(?<=8)[12456789]|(?<=9)[015678])|(?<=4)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[123456789]|(?<=5)[045])|(?<=6)[01]((?<=0)[12345679]|(?<=1)[23456])|(?<=7)[0123456789]((?<=0)[23456789]|(?<=1)[01236789]|(?<=2)[0123456]|(?<=3)[1234568]|(?<=4)[124689]|(?<=5)[0123678]|(?<=6)[0345789]|(?<=7)[1259]|(?<=8)[01234567]|(?<=9)[0235678])|(?<=8)[01]((?<=0)[2345678]|(?<=1)[0124])|(?<=9)[0123456789]((?<=0)[1234569]|(?<=1)[02789]|(?<=2)[012345679]|(?<=3)[1234569]|(?<=4)[01345679]|(?<=5)[012345679]|(?<=6)[012345789]|(?<=7)[012345679]|(?<=8)[12357]|(?<=9)[012]))|(?<=6)[01234567]((?<=0)[0123456789]((?<=0)[1379]|(?<=1)[0134679]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[1234568]|(?<=5)[01245678]|(?<=6)[023589]|(?<=7)[123458]|(?<=8)[01235789]|(?<=9)[013678])|(?<=1)[012345678]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[01235789]|(?<=3)[1246789]|(?<=4)[012345679]|(?<=5)[012356789]|(?<=6)[012456789]|(?<=7)[01234568]|(?<=8)[013567])|(?<=2)[0123456789]((?<=0)[1789]|(?<=1)[01245689]|(?<=2)[0123456789]|(?<=3)[0125679]|(?<=4)[0134589]|(?<=5)[1235678]|(?<=6)[0234567]|(?<=7)[01346789]|(?<=8)[012345789]|(?<=9)[1234567])|(?<=3)[012345678]((?<=0)[134789]|(?<=1)[012345689]|(?<=2)[013456789]|(?<=3)[01245689]|(?<=4)[023579]|(?<=5)[023456789]|(?<=6)[01234789]|(?<=7)[13456789]|(?<=8)[1245679])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[5]|(?<=3)[134578]|(?<=4)[012346789]|(?<=5)[02358]|(?<=6)[1456789]|(?<=7)[0234579]|(?<=8)[124])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[134567]|(?<=4)[0123456789]|(?<=5)[0123467]|(?<=6)[02356789]|(?<=7)[012345689]|(?<=8)[013456789]|(?<=9)[0124])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[136789]|(?<=3)[034679]|(?<=4)[14679]|(?<=5)[012345789]|(?<=6)[01236789]|(?<=7)[012368]|(?<=8)[0134568])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[013456]|(?<=2)[0123456789]|(?<=3)[12345678]|(?<=4)[248]|(?<=5)[01456789]|(?<=6)[0123]))|(?<=7)[01234567]((?<=0)[01234567]((?<=0)[1234567]|(?<=1)[02345678]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[012356789]|(?<=5)[012345789]|(?<=6)[123456789]|(?<=7)[01235678])|(?<=1)[019]((?<=0)[345678]|(?<=1)[07]|(?<=9)[7])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0134567]|(?<=3)[123456789]|(?<=4)[12356789]|(?<=5)[1256789]|(?<=6)[012345689]|(?<=7)[01234689])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[1234589]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[0345689]|(?<=6)[123456789]|(?<=7)[0134569]|(?<=8)[0123456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[01246789]|(?<=3)[023456789]|(?<=4)[0125689]|(?<=5)[0124567]|(?<=6)[0156789]|(?<=7)[012345679]|(?<=8)[1])|(?<=5)[02345678]((?<=0)[1]|(?<=2)[012389]|(?<=3)[1234678]|(?<=4)[013478]|(?<=5)[12359]|(?<=6)[02346789]|(?<=7)[0124679]|(?<=8)[045])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012356]|(?<=3)[01234689]|(?<=4)[01245689]|(?<=5)[0126789]|(?<=6)[01])|(?<=7)[0123456789]((?<=0)[1236]|(?<=1)[46789]|(?<=2)[0245]|(?<=3)[02578]|(?<=4)[14578]|(?<=5)[01245689]|(?<=6)[01234679]|(?<=7)[023569]|(?<=8)[023578]|(?<=9)[012349]))|(?<=8)[012345678]((?<=0)[012345678]((?<=0)[12456789]|(?<=1)[1235678]|(?<=2)[179]|(?<=3)[0123568]|(?<=4)[012356789]|(?<=5)[12346789]|(?<=6)[012345789]|(?<=7)[12456789]|(?<=8)[1])|(?<=1)[0]((?<=0)[2345])|(?<=2)[012345678]((?<=0)[12345]|(?<=1)[024689]|(?<=2)[02345789]|(?<=3)[01356789]|(?<=4)[01349]|(?<=5)[01456789]|(?<=6)[0125679]|(?<=7)[012345678]|(?<=8)[12])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[013678]|(?<=2)[134579]|(?<=3)[012589]|(?<=4)[134568]|(?<=5)[123567]|(?<=6)[12356789]|(?<=7)[02479]|(?<=8)[012456])|(?<=4)[0123456789]((?<=0)[125]|(?<=1)[3568]|(?<=2)[012345689]|(?<=3)[013689]|(?<=4)[0123458]|(?<=5)[124568]|(?<=6)[013467]|(?<=7)[2456789]|(?<=8)[01234678]|(?<=9)[024567])|(?<=5)[02345678]((?<=0)[1345]|(?<=2)[013489]|(?<=3)[012358]|(?<=4)[012459]|(?<=5)[2489]|(?<=6)[012345689]|(?<=7)[01235679]|(?<=8)[01])|(?<=6)[02345]((?<=0)[1]|(?<=2)[0123567]|(?<=3)[0124689]|(?<=4)[012345679]|(?<=5)[0123456])|(?<=7)[0123456789]((?<=0)[13457]|(?<=1)[012368]|(?<=2)[12357]|(?<=3)[0134567]|(?<=4)[01468]|(?<=5)[0256789]|(?<=6)[0123589]|(?<=7)[01235689]|(?<=8)[12345789]|(?<=9)[02345])|(?<=8)[0345]((?<=0)[1]|(?<=3)[01358]|(?<=4)[34579]|(?<=5)[2346]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[123678]|(?<=1)[012345689]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[13467]|(?<=5)[02345789]|(?<=6)[123456789]|(?<=7)[012456789]|(?<=8)[12356789])|(?<=1)[0]((?<=0)[1256])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[12345789]|(?<=2)[12356]|(?<=3)[01]|(?<=4)[0123478]|(?<=5)[023456789]|(?<=6)[0123]|(?<=7)[03456])|(?<=3)[012345]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[23467]|(?<=3)[0236789]|(?<=4)[34579]|(?<=5)[134])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[01246789]|(?<=2)[012457]|(?<=3)[023456]|(?<=4)[01234678]|(?<=5)[0123467]|(?<=6)[0123456789]|(?<=7)[12479]|(?<=8)[02345679])|(?<=5)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[012578]|(?<=4)[024567])|(?<=6)[0234]((?<=0)[12]|(?<=2)[35]|(?<=3)[12345689]|(?<=4)[0234578])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[0134568]|(?<=2)[01245789]|(?<=3)[0123569]|(?<=4)[01356789]|(?<=5)[01245689]|(?<=6)[012])|(?<=8)[01234567]((?<=0)[12348]|(?<=1)[2]|(?<=2)[013456789]|(?<=3)[012347]|(?<=4)[012345678]|(?<=5)[1345689]|(?<=6)[0345678]|(?<=7)[012345])|(?<=9)[0123]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[02356789]|(?<=3)[01234567])))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24578]|(?<=1)[0234568]|(?<=2)[012569]|(?<=3)[01345]|(?<=4)[012345678]|(?<=5)[0136]|(?<=6)[0124789]|(?<=7)[01234567]|(?<=8)[1345789]|(?<=9)[0136789])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[0123589]|(?<=2)[03469]|(?<=3)[01345679]|(?<=4)[01234568]|(?<=5)[01234567]|(?<=6)[023459]|(?<=7)[12345678]|(?<=8)[01345789]|(?<=9)[012345])|(?<=2)[0]((?<=0)[1238])|(?<=3)[0]((?<=0)[1245])|(?<=4)[0123456789]((?<=0)[12346789]|(?<=1)[0156789]|(?<=2)[012345689]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[012356789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[01247]|(?<=9)[01])|(?<=5)[01234568]((?<=0)[123456]|(?<=1)[0123456789]|(?<=2)[013567]|(?<=3)[01246789]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[01345]|(?<=8)[56])|(?<=6)[0123456]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[012346789]|(?<=4)[012345679]|(?<=5)[12345679]|(?<=6)[01])|(?<=7)[01]((?<=0)[67]|(?<=1)[24])|(?<=8)[02]((?<=0)[345]|(?<=2)[7])|(?<=9)[01234567]((?<=0)[1]|(?<=1)[012345789]|(?<=2)[01246789]|(?<=3)[012345689]|(?<=4)[0125689]|(?<=5)[0123456789]|(?<=6)[012346789]|(?<=7)[034]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1678]|(?<=1)[012345689]|(?<=2)[014578]|(?<=3)[0126789]|(?<=4)[12346789]|(?<=5)[0123479]|(?<=6)[01234578]|(?<=7)[012345789]|(?<=8)[0145789]|(?<=9)[1])|(?<=1)[01]((?<=0)[1234789]|(?<=1)[1245])|(?<=2)[0345678]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[01246789]|(?<=6)[012345]|(?<=7)[023456789]|(?<=8)[12345])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[01245689]|(?<=5)[034689]|(?<=6)[01234789]|(?<=7)[0123456789])|(?<=4)[0123456789]((?<=0)[12]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[0123789]|(?<=5)[01234589]|(?<=6)[0256789]|(?<=7)[0123456789]|(?<=8)[02345689]|(?<=9)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[679]|(?<=2)[0345689]|(?<=3)[012345679]|(?<=4)[012345678]|(?<=5)[02349]|(?<=6)[012345789]|(?<=7)[012])|(?<=6)[012]((?<=0)[234567]|(?<=1)[01456]|(?<=2)[5])|(?<=7)[0234567]((?<=0)[145]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345789]|(?<=5)[01234569]|(?<=6)[0149]|(?<=7)[012345678])|(?<=8)[012345678]((?<=0)[12]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[012349]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[23456]|(?<=7)[012345678]|(?<=8)[0234])|(?<=9)[12345]((?<=1)[0123479]|(?<=2)[04589]|(?<=3)[0123678]|(?<=4)[012349]|(?<=5)[13567]))|(?<=2)[023456789]((?<=0)[0123456789]((?<=0)[1269]|(?<=1)[0123456789]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0456789]|(?<=5)[01234689]|(?<=6)[012379]|(?<=7)[456789]|(?<=8)[0123456789]|(?<=9)[01234578])|(?<=2)[0123456789]((?<=0)[1345678]|(?<=1)[456789]|(?<=2)[01356]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[0345678]|(?<=6)[012345689]|(?<=7)[12345789]|(?<=8)[01245689]|(?<=9)[234578])|(?<=3)[012345678]((?<=0)[15]|(?<=1)[123469]|(?<=2)[013456]|(?<=3)[04689]|(?<=4)[013456789]|(?<=5)[123456789]|(?<=6)[0123567]|(?<=7)[0345689]|(?<=8)[0])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[0134789]|(?<=2)[012345678]|(?<=3)[1234689]|(?<=4)[0123456789]|(?<=5)[012489]|(?<=6)[0123456789]|(?<=7)[13456789]|(?<=8)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[01236]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[01345678]|(?<=6)[013578]|(?<=7)[0123])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[0123578]|(?<=2)[12456789]|(?<=3)[0134589]|(?<=4)[02349]|(?<=5)[056]|(?<=6)[1345678]|(?<=7)[0123457]|(?<=8)[124589]|(?<=9)[012345])|(?<=7)[01]((?<=0)[123467]|(?<=1)[12])|(?<=8)[0123456789]((?<=0)[136789]|(?<=1)[012456789]|(?<=2)[012345789]|(?<=3)[012356789]|(?<=4)[1234689]|(?<=5)[01234689]|(?<=6)[012345789]|(?<=7)[012456789]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[1235678]|(?<=1)[02456789]|(?<=2)[01234678]|(?<=3)[01234589]|(?<=4)[01236789]|(?<=5)[012346789]|(?<=6)[012345679]|(?<=7)[0245679]|(?<=8)[234578]|(?<=9)[02456789]))|(?<=3)[013456789]((?<=0)[0123456789]((?<=0)[5]|(?<=1)[012345679]|(?<=2)[013568]|(?<=3)[01346789]|(?<=4)[012345789]|(?<=5)[012356]|(?<=6)[0189]|(?<=7)[0123479]|(?<=8)[04789]|(?<=9)[01])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[013467]|(?<=5)[5])|(?<=3)[03456789]((?<=0)[134]|(?<=3)[023469]|(?<=4)[1345789]|(?<=5)[012379]|(?<=6)[12356789]|(?<=7)[3679]|(?<=8)[0123456789]|(?<=9)[0])|(?<=4)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[0135678]|(?<=5)[012346789]|(?<=6)[012356789]|(?<=7)[1234])|(?<=5)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[1256789]|(?<=6)[013567])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[013678]|(?<=4)[058]|(?<=5)[03456]|(?<=6)[02345]|(?<=7)[0345])|(?<=7)[0345678]((?<=0)[13]|(?<=3)[025689]|(?<=4)[02345678]|(?<=5)[0158]|(?<=6)[034679]|(?<=7)[0145]|(?<=8)[0123457])|(?<=8)[02345678]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[03479]|(?<=4)[0156789]|(?<=5)[012357]|(?<=6)[0236789]|(?<=7)[0346789]|(?<=8)[02])|(?<=9)[03456]((?<=0)[1]|(?<=3)[2345679]|(?<=4)[012345]|(?<=5)[01234567]|(?<=6)[0124567]))|(?<=4)[0145678]((?<=0)[0123456789]((?<=0)[1]|(?<=1)[12456789]|(?<=2)[012489]|(?<=3)[04567]|(?<=4)[08]|(?<=5)[02345678]|(?<=6)[012345678]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[023678])|(?<=1)[0123456]((?<=0)[125689]|(?<=1)[012346789]|(?<=2)[03456789]|(?<=3)[012346789]|(?<=4)[5679]|(?<=5)[012345678]|(?<=6)[134567])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[13456789]|(?<=6)[1356789]|(?<=7)[01345679]|(?<=8)[012345679]|(?<=9)[012346789])|(?<=5)[0]((?<=0)[134567])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[023458]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[01478]|(?<=7)[0123469]|(?<=8)[123689])|(?<=7)[023456789]((?<=0)[1]|(?<=2)[0234568]|(?<=3)[034589]|(?<=4)[012345678]|(?<=5)[02569]|(?<=6)[123579]|(?<=7)[012689]|(?<=8)[01348]|(?<=9)[0])|(?<=8)[034567]((?<=0)[14]|(?<=3)[0123456]|(?<=4)[01234789]|(?<=5)[0456789]|(?<=6)[1235678]|(?<=7)[034]))|(?<=5)[012345678]((?<=0)[012345678]((?<=0)[1]|(?<=1)[0134678]|(?<=2)[03456]|(?<=3)[24579]|(?<=4)[0136789]|(?<=5)[0123489]|(?<=6)[123456789]|(?<=7)[2456789]|(?<=8)[012345])|(?<=1)[0]((?<=0)[19])|(?<=2)[01345678]((?<=0)[123]|(?<=1)[56]|(?<=3)[0123679]|(?<=4)[034678]|(?<=5)[01456789]|(?<=6)[012345]|(?<=7)[045689]|(?<=8)[01234567])|(?<=3)[023456]((?<=0)[15]|(?<=2)[012345679]|(?<=3)[023456789]|(?<=4)[045789]|(?<=5)[0145]|(?<=6)[0])|(?<=4)[0345678]((?<=0)[19]|(?<=3)[689]|(?<=4)[013469]|(?<=5)[23679]|(?<=6)[123468]|(?<=7)[039]|(?<=8)[346])|(?<=5)[023456789]((?<=0)[1]|(?<=2)[9]|(?<=3)[456]|(?<=4)[1238]|(?<=5)[025679]|(?<=6)[04567]|(?<=7)[01]|(?<=8)[0234689]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[1345689]|(?<=1)[012346789]|(?<=2)[02345679]|(?<=3)[01234578]|(?<=4)[0146789]|(?<=5)[02345678]|(?<=6)[012346789]|(?<=7)[24569]|(?<=8)[0125689]|(?<=9)[02])|(?<=7)[0123456789]((?<=0)[245678]|(?<=1)[0123457]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0124567]|(?<=5)[2345679]|(?<=6)[01246789]|(?<=7)[012345789]|(?<=8)[13456789]|(?<=9)[013])|(?<=8)[019]((?<=0)[1234679]|(?<=1)[0]|(?<=9)[7]))|(?<=6)[012456789]((?<=0)[0123456789]((?<=0)[2678]|(?<=1)[02345678]|(?<=2)[0134567]|(?<=3)[012359]|(?<=4)[0123456789]|(?<=5)[023468]|(?<=6)[012467]|(?<=7)[01235689]|(?<=8)[035678]|(?<=9)[0123457])|(?<=1)[016]((?<=0)[1234569]|(?<=1)[1258]|(?<=6)[0])|(?<=2)[0125]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013467]|(?<=5)[1])|(?<=4)[012345]((?<=0)[12346789]|(?<=1)[123456789]|(?<=2)[2345789]|(?<=3)[124689]|(?<=4)[0129]|(?<=5)[1])|(?<=5)[012345]((?<=0)[1236789]|(?<=1)[0245678]|(?<=2)[01234678]|(?<=3)[123456789]|(?<=4)[012346789]|(?<=5)[024])|(?<=6)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[12])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[0123467]|(?<=2)[045]|(?<=3)[2345689]|(?<=4)[0123689]|(?<=5)[1345678]|(?<=6)[012379]|(?<=7)[012356789]|(?<=8)[0123])|(?<=8)[034567]((?<=0)[1]|(?<=3)[034589]|(?<=4)[023569]|(?<=5)[012346789]|(?<=6)[012345689]|(?<=7)[0123])|(?<=9)[034567]((?<=0)[1]|(?<=3)[02356789]|(?<=4)[012345689]|(?<=5)[1235689]|(?<=6)[01234678]|(?<=7)[0]))|(?<=7)[0123456789]((?<=0)[01234567]((?<=0)[1234589]|(?<=1)[0236789]|(?<=2)[012345689]|(?<=3)[0156789]|(?<=4)[12579]|(?<=5)[0123456789]|(?<=6)[01235678]|(?<=7)[01234])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0124789]|(?<=2)[02347]|(?<=3)[1234578]|(?<=4)[0234679]|(?<=5)[0124569])|(?<=2)[01236]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013678]|(?<=3)[025]|(?<=6)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[0234567]|(?<=4)[01245679]|(?<=5)[1234567]|(?<=6)[0134])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0678]|(?<=2)[023578]|(?<=3)[0126789]|(?<=4)[123456789]|(?<=5)[012456789]|(?<=6)[04678]|(?<=7)[034568]|(?<=8)[0123457]|(?<=9)[012])|(?<=5)[012345678]((?<=0)[125]|(?<=1)[012345689]|(?<=2)[01234569]|(?<=3)[0]|(?<=4)[345678]|(?<=5)[0234679]|(?<=6)[01345678]|(?<=7)[02345689]|(?<=8)[134])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[12356789]|(?<=3)[1245789]|(?<=4)[023456789]|(?<=5)[01346789]|(?<=6)[0134579]|(?<=7)[12345])|(?<=7)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[123678]|(?<=6)[124])|(?<=8)[0345678]((?<=0)[1]|(?<=3)[1456789]|(?<=4)[0123469]|(?<=5)[0134579]|(?<=6)[012345789]|(?<=7)[016789]|(?<=8)[02])|(?<=9)[05]((?<=0)[1]|(?<=5)[01234]))|(?<=8)[013456789]((?<=0)[01234567]((?<=0)[1234578]|(?<=1)[0456789]|(?<=2)[023589]|(?<=3)[01346789]|(?<=4)[01245678]|(?<=5)[056789]|(?<=6)[123456789]|(?<=7)[0123])|(?<=1)[012345678]((?<=0)[245678]|(?<=1)[01234678]|(?<=2)[23478]|(?<=3)[012345678]|(?<=4)[247]|(?<=5)[247]|(?<=6)[4]|(?<=7)[8]|(?<=8)[23])|(?<=3)[012345678]((?<=0)[134579]|(?<=1)[03456789]|(?<=2)[0123456789]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[01245789]|(?<=6)[01245678]|(?<=7)[01256789]|(?<=8)[012])|(?<=4)[0123456]((?<=0)[12345679]|(?<=1)[03456789]|(?<=2)[0123489]|(?<=3)[01346789]|(?<=4)[012345678]|(?<=5)[02345678]|(?<=6)[01234567])|(?<=5)[01238]((?<=0)[2345678]|(?<=1)[02467]|(?<=2)[01234678]|(?<=3)[12]|(?<=8)[8])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[12345678]|(?<=4)[01234789]|(?<=5)[1234589]|(?<=6)[012345679])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[023456789]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[12356789]|(?<=6)[013456789]|(?<=7)[01346789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13]|(?<=1)[02345678]|(?<=2)[012345678]|(?<=3)[12345678]|(?<=4)[012345679]|(?<=5)[02345689]|(?<=6)[01234569]|(?<=7)[012345689]|(?<=8)[123])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[023456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[02456789]|(?<=6)[01467]|(?<=7)[0123456789]|(?<=8)[012]))|(?<=9)[0123]((?<=0)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[02346789]|(?<=4)[0123456])|(?<=1)[0234567]((?<=0)[1]|(?<=2)[01235789]|(?<=3)[0123458]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[12356789]|(?<=7)[01])|(?<=2)[012]((?<=0)[1]|(?<=1)[01246789]|(?<=2)[01])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1345679]|(?<=4)[0135678]|(?<=5)[012345678]|(?<=6)[01567])))|(?<=7)[0123456789]((?<=0)[01345678]((?<=0)[03456789]((?<=0)[12356]|(?<=3)[0126789]|(?<=4)[01379]|(?<=5)[0123678]|(?<=6)[2578]|(?<=7)[012569]|(?<=8)[0234567]|(?<=9)[0124])|(?<=1)[12346]((?<=1)[23456789]|(?<=2)[123456789]|(?<=3)[019]|(?<=4)[8]|(?<=6)[3])|(?<=3)[013456789]((?<=0)[1]|(?<=1)[0]|(?<=3)[9]|(?<=4)[0123456]|(?<=5)[23456789]|(?<=6)[034]|(?<=7)[23457]|(?<=8)[0]|(?<=9)[0123457])|(?<=4)[0234567]((?<=0)[123]|(?<=2)[0267]|(?<=3)[135678]|(?<=4)[123456789]|(?<=5)[012345678]|(?<=6)[0123456]|(?<=7)[1])|(?<=5)[0123456789]((?<=0)[13678]|(?<=1)[023456789]|(?<=2)[02345689]|(?<=3)[1234578]|(?<=4)[1234689]|(?<=5)[01245689]|(?<=6)[03]|(?<=7)[05678]|(?<=8)[01234569]|(?<=9)[12])|(?<=6)[0123456]((?<=0)[1579]|(?<=1)[15]|(?<=2)[9]|(?<=3)[01234789]|(?<=4)[0345678]|(?<=5)[0123456789]|(?<=6)[0123589])|(?<=7)[0123456789]((?<=0)[6]|(?<=1)[012459]|(?<=2)[123569]|(?<=3)[0234679]|(?<=4)[034789]|(?<=5)[02345679]|(?<=6)[0123479]|(?<=7)[02345678]|(?<=8)[02356789]|(?<=9)[1])|(?<=8)[0123]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[05]|(?<=3)[6]))|(?<=1)[012346789]((?<=0)[012345678]((?<=0)[12346789]|(?<=1)[689]|(?<=2)[134789]|(?<=3)[01234789]|(?<=4)[03456789]|(?<=5)[125]|(?<=6)[013456789]|(?<=7)[0123589]|(?<=8)[2])|(?<=1)[012]((?<=0)[13456789]|(?<=1)[012589]|(?<=2)[9])|(?<=2)[0123456789]((?<=0)[1239]|(?<=1)[289]|(?<=2)[0235679]|(?<=3)[0234578]|(?<=4)[12357]|(?<=5)[013469]|(?<=6)[0134689]|(?<=7)[025679]|(?<=8)[026]|(?<=9)[125])|(?<=3)[01234567]((?<=0)[123]|(?<=1)[6]|(?<=2)[0235678]|(?<=3)[013469]|(?<=4)[012356]|(?<=5)[013456789]|(?<=6)[026789]|(?<=7)[1358])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[01456789]|(?<=2)[23456789]|(?<=3)[0234589]|(?<=4)[1679]|(?<=5)[0245679]|(?<=6)[12356789]|(?<=7)[23459]|(?<=8)[0356]|(?<=9)[7])|(?<=6)[034567]((?<=0)[123]|(?<=3)[01589]|(?<=4)[023467]|(?<=5)[1234589]|(?<=6)[0123567]|(?<=7)[0145678])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0124568]|(?<=3)[0]|(?<=4)[02345789]|(?<=5)[12389]|(?<=6)[23456]|(?<=7)[02])|(?<=8)[023456]((?<=0)[1]|(?<=2)[023567]|(?<=3)[123456789]|(?<=4)[12567]|(?<=5)[12345789]|(?<=6)[012456])|(?<=9)[012345679]((?<=0)[19]|(?<=1)[3]|(?<=2)[1239]|(?<=3)[357]|(?<=4)[0123459]|(?<=5)[0236789]|(?<=6)[0124589]|(?<=7)[0123]|(?<=9)[89]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[012345679]|(?<=2)[0123456789]|(?<=3)[01245689]|(?<=4)[01245678]|(?<=5)[1235789]|(?<=6)[013456789]|(?<=7)[0234569]|(?<=8)[012345678]|(?<=9)[9])|(?<=1)[0123456789]((?<=0)[1234678]|(?<=1)[012346789]|(?<=2)[012356789]|(?<=3)[012345679]|(?<=4)[0123]|(?<=5)[02367]|(?<=6)[056789]|(?<=7)[035689]|(?<=8)[0123]|(?<=9)[9])|(?<=2)[012]((?<=0)[1245679]|(?<=1)[012]|(?<=2)[37])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[135]|(?<=2)[02456789]|(?<=3)[0123589]|(?<=4)[012678]|(?<=5)[01234589]|(?<=6)[0456789]|(?<=7)[0234679]|(?<=8)[34679]|(?<=9)[012456])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[012345679]|(?<=2)[12456789]|(?<=3)[012345678]|(?<=4)[01234579]|(?<=5)[03456789]|(?<=6)[0124679]|(?<=7)[0123689]|(?<=8)[2])|(?<=5)[012345678]((?<=0)[1]|(?<=1)[23579]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[02346]|(?<=5)[03456]|(?<=6)[012456789]|(?<=7)[1236789]|(?<=8)[13457])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[15679]|(?<=2)[34689]|(?<=3)[012345689]|(?<=4)[012458]|(?<=5)[01358]|(?<=6)[0123689]|(?<=7)[02579]|(?<=8)[023567])|(?<=7)[01234567]((?<=0)[134]|(?<=1)[2345789]|(?<=2)[1279]|(?<=3)[024689]|(?<=4)[024579]|(?<=5)[12368]|(?<=6)[012489]|(?<=7)[346])|(?<=8)[023456]((?<=0)[12]|(?<=2)[1346789]|(?<=3)[02345789]|(?<=4)[0123567]|(?<=5)[12345678]|(?<=6)[035])|(?<=9)[012345]((?<=0)[13458]|(?<=1)[6]|(?<=2)[13678]|(?<=3)[02345678]|(?<=4)[013456789]|(?<=5)[0125689]))|(?<=3)[01456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123468]|(?<=4)[012345789]|(?<=5)[0123456789]|(?<=6)[123456789]|(?<=7)[012345789]|(?<=8)[02469]|(?<=9)[02356789])|(?<=1)[01234567]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[012789]|(?<=3)[012459]|(?<=4)[1259]|(?<=5)[019]|(?<=6)[0259]|(?<=7)[039])|(?<=4)[02345689]((?<=0)[1]|(?<=2)[5]|(?<=3)[023456789]|(?<=4)[012346789]|(?<=5)[035689]|(?<=6)[013]|(?<=8)[178]|(?<=9)[1])|(?<=5)[0234567]((?<=0)[1357]|(?<=2)[0136789]|(?<=3)[0123789]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[02456789]|(?<=7)[0123])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0245678]|(?<=3)[289]|(?<=4)[124567]|(?<=5)[014589]|(?<=6)[012346789]|(?<=7)[3])|(?<=7)[01234567]((?<=0)[135]|(?<=1)[6789]|(?<=2)[0246789]|(?<=3)[013456789]|(?<=4)[1234679]|(?<=5)[03456789]|(?<=6)[0123468]|(?<=7)[0123])|(?<=8)[03456]((?<=0)[1]|(?<=3)[2458]|(?<=4)[012348]|(?<=5)[1235789]|(?<=6)[0])|(?<=9)[03456]((?<=0)[1]|(?<=3)[123789]|(?<=4)[245679]|(?<=5)[01]|(?<=6)[0]))|(?<=4)[013456789]((?<=0)[012345678]((?<=0)[12368]|(?<=1)[01245679]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[1245678]|(?<=5)[012345689]|(?<=6)[012368]|(?<=7)[012345789]|(?<=8)[012345])|(?<=1)[012347]((?<=0)[345678]|(?<=1)[0245679]|(?<=2)[06789]|(?<=3)[01234567]|(?<=4)[56]|(?<=7)[1])|(?<=3)[034567]((?<=0)[1]|(?<=3)[0123789]|(?<=4)[0234679]|(?<=5)[02489]|(?<=6)[013456789]|(?<=7)[0])|(?<=4)[0234567]((?<=0)[13]|(?<=2)[12356789]|(?<=3)[01245678]|(?<=4)[12567]|(?<=5)[012456789]|(?<=6)[0234789]|(?<=7)[0127])|(?<=5)[0234567]((?<=0)[1]|(?<=2)[12358]|(?<=3)[0134568]|(?<=4)[03679]|(?<=5)[2345678]|(?<=6)[0123579]|(?<=7)[0124678])|(?<=6)[0345]((?<=0)[14]|(?<=3)[012367]|(?<=4)[013467]|(?<=5)[0123])|(?<=7)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[01345678]|(?<=4)[013578]|(?<=5)[034569]|(?<=6)[0146])|(?<=8)[02345678]((?<=0)[14]|(?<=2)[045679]|(?<=3)[01234679]|(?<=4)[0234589]|(?<=5)[01245679]|(?<=6)[0456789]|(?<=7)[12358]|(?<=8)[0134])|(?<=9)[03456]((?<=0)[12]|(?<=3)[0125679]|(?<=4)[0123456789]|(?<=5)[1345679]|(?<=6)[023456]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[12679]|(?<=1)[039]|(?<=2)[0123458]|(?<=3)[2345689]|(?<=4)[012348]|(?<=5)[0124678]|(?<=6)[01235789]|(?<=7)[01245678]|(?<=8)[012789]|(?<=9)[02348])|(?<=1)[012345678]((?<=0)[123459]|(?<=1)[045679]|(?<=2)[4567]|(?<=3)[2457]|(?<=4)[012346789]|(?<=5)[023456789]|(?<=6)[01345679]|(?<=7)[23]|(?<=8)[0129])|(?<=2)[012345678]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[03456789]|(?<=3)[012345678]|(?<=4)[01346789]|(?<=5)[1234]|(?<=6)[1]|(?<=7)[0]|(?<=8)[7])|(?<=3)[9]((?<=9)[0])|(?<=4)[0123456789]((?<=0)[1279]|(?<=1)[012345678]|(?<=2)[01234689]|(?<=3)[123456789]|(?<=4)[0126789]|(?<=5)[01234579]|(?<=6)[0289]|(?<=7)[0123456789]|(?<=8)[0126789]|(?<=9)[01234567])|(?<=5)[0567]((?<=0)[13]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[01234])|(?<=6)[03456789]((?<=0)[12345]|(?<=3)[01389]|(?<=4)[0123457]|(?<=5)[01246789]|(?<=6)[12789]|(?<=7)[012]|(?<=8)[01234679]|(?<=9)[1234])|(?<=7)[0156789]((?<=0)[123456789]|(?<=1)[1]|(?<=5)[012456789]|(?<=6)[023456]|(?<=7)[01389]|(?<=8)[0234589]|(?<=9)[012])|(?<=8)[034568]((?<=0)[13]|(?<=3)[13589]|(?<=4)[0456789]|(?<=5)[01235689]|(?<=6)[0125]|(?<=8)[46])|(?<=9)[02345678]((?<=0)[134]|(?<=2)[5689]|(?<=3)[0123456789]|(?<=4)[1234689]|(?<=5)[1469]|(?<=6)[01245689]|(?<=7)[2345679]|(?<=8)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[125689]|(?<=1)[012345678]|(?<=2)[01238]|(?<=3)[134569]|(?<=4)[013489]|(?<=5)[01234589]|(?<=6)[0134567]|(?<=7)[01378]|(?<=8)[245678]|(?<=9)[23])|(?<=1)[012345678]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[03679]|(?<=3)[123457]|(?<=4)[08]|(?<=5)[5]|(?<=6)[4]|(?<=7)[79]|(?<=8)[02])|(?<=2)[01234567]((?<=0)[135789]|(?<=1)[0]|(?<=2)[5678]|(?<=3)[03489]|(?<=4)[0145789]|(?<=5)[0123589]|(?<=6)[12345678]|(?<=7)[0123])|(?<=3)[015678]((?<=0)[125689]|(?<=1)[01]|(?<=5)[147]|(?<=6)[034567]|(?<=7)[0123479]|(?<=8)[0489])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[4679]|(?<=3)[01235679]|(?<=4)[2345689]|(?<=5)[02345789]|(?<=6)[023469]|(?<=7)[012456]|(?<=8)[13467]|(?<=9)[01])|(?<=5)[012345679]((?<=0)[124]|(?<=1)[1389]|(?<=2)[0234578]|(?<=3)[014789]|(?<=4)[123489]|(?<=5)[04679]|(?<=6)[15679]|(?<=7)[0134789]|(?<=9)[6789])|(?<=6)[23456789]((?<=2)[12346789]|(?<=3)[0123456789]|(?<=4)[0123589]|(?<=5)[01234567]|(?<=6)[014567]|(?<=7)[013689]|(?<=8)[0125679]|(?<=9)[0123])|(?<=7)[019]((?<=0)[145678]|(?<=1)[012]|(?<=9)[8])|(?<=8)[023456789]((?<=0)[12]|(?<=2)[0134578]|(?<=3)[12467]|(?<=4)[124589]|(?<=5)[2346789]|(?<=6)[124569]|(?<=7)[01234578]|(?<=8)[024578]|(?<=9)[0])|(?<=9)[0345]((?<=0)[1234589]|(?<=3)[02345679]|(?<=4)[0135]|(?<=5)[013578]))|(?<=7)[023456789]((?<=0)[0123456789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345689])|(?<=2)[0]((?<=0)[4])|(?<=3)[0123456789]((?<=0)[12346]|(?<=1)[68]|(?<=2)[0678]|(?<=3)[145689]|(?<=4)[01256]|(?<=5)[01456789]|(?<=6)[02345789]|(?<=7)[123456789]|(?<=8)[01245689]|(?<=9)[6])|(?<=4)[0123456789]((?<=0)[167]|(?<=1)[245789]|(?<=2)[023689]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[013456789]|(?<=8)[012345689]|(?<=9)[348])|(?<=5)[0123456789]((?<=0)[234567]|(?<=1)[0145789]|(?<=2)[013]|(?<=3)[012345689]|(?<=4)[1567]|(?<=5)[0145]|(?<=6)[01234568]|(?<=7)[13578]|(?<=8)[01234567]|(?<=9)[0178])|(?<=6)[123456]((?<=1)[12345679]|(?<=2)[234579]|(?<=3)[02]|(?<=4)[02]|(?<=5)[015679]|(?<=6)[012345])|(?<=7)[01]((?<=0)[1235678]|(?<=1)[3])|(?<=8)[0345678]((?<=0)[12378]|(?<=3)[013567]|(?<=4)[035]|(?<=5)[235679]|(?<=6)[1345678]|(?<=7)[1235689]|(?<=8)[02])|(?<=9)[056789]((?<=0)[145]|(?<=5)[0147]|(?<=6)[0123489]|(?<=7)[013456789]|(?<=8)[234678]|(?<=9)[01345]))|(?<=8)[0123456789]((?<=0)[01234567]((?<=0)[123456789]|(?<=1)[012345679]|(?<=2)[123456789]|(?<=3)[9]|(?<=4)[013456]|(?<=5)[0256789]|(?<=6)[12345679]|(?<=7)[0123456])|(?<=1)[0123456]((?<=0)[124789]|(?<=1)[12346789]|(?<=2)[12345]|(?<=3)[023]|(?<=4)[012345678]|(?<=5)[012459]|(?<=6)[01234])|(?<=2)[0123456]((?<=0)[12345789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[02345789]|(?<=5)[0123456789]|(?<=6)[01346])|(?<=3)[3456789]((?<=3)[02689]|(?<=4)[0123479]|(?<=5)[1235789]|(?<=6)[012389]|(?<=7)[012345679]|(?<=8)[0234579]|(?<=9)[013])|(?<=4)[01]((?<=0)[12456789]|(?<=1)[0123456789])|(?<=5)[0123456789]((?<=0)[134]|(?<=1)[6]|(?<=2)[016]|(?<=3)[56789]|(?<=4)[01235789]|(?<=5)[02789]|(?<=6)[012345679]|(?<=7)[023456789]|(?<=8)[02345689]|(?<=9)[0123456789])|(?<=6)[012345678]((?<=0)[256789]|(?<=1)[0123456789]|(?<=2)[01234689]|(?<=3)[12345689]|(?<=4)[0123458]|(?<=5)[023456789]|(?<=6)[01234569]|(?<=7)[0124567]|(?<=8)[1])|(?<=7)[012345]((?<=0)[12345]|(?<=1)[279]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[12456789]|(?<=5)[012346789])|(?<=8)[02345678]((?<=0)[12]|(?<=2)[789]|(?<=3)[02346789]|(?<=4)[0123]|(?<=5)[012]|(?<=6)[01]|(?<=7)[012379]|(?<=8)[013456])|(?<=9)[3456]((?<=3)[123458]|(?<=4)[0123456789]|(?<=5)[0134679]|(?<=6)[23]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[012345689]|(?<=2)[124579]|(?<=3)[1234569]|(?<=4)[0123456]|(?<=5)[12346789]|(?<=6)[1234568]|(?<=7)[02389]|(?<=8)[012345678]|(?<=9)[12345678])|(?<=1)[012]((?<=0)[12346789]|(?<=1)[0189]|(?<=2)[14])|(?<=2)[023456]((?<=0)[1]|(?<=2)[035679]|(?<=3)[01345679]|(?<=4)[0134578]|(?<=5)[01256789]|(?<=6)[1])|(?<=3)[12345678]((?<=1)[12346]|(?<=2)[234569]|(?<=3)[0169]|(?<=4)[234567]|(?<=5)[01356789]|(?<=6)[034679]|(?<=7)[01236789]|(?<=8)[0123])|(?<=4)[012]((?<=0)[123467]|(?<=1)[0123456]|(?<=2)[34])|(?<=5)[0123456]((?<=0)[1234568]|(?<=1)[012789]|(?<=2)[0156789]|(?<=3)[023456789]|(?<=4)[013456789]|(?<=5)[36]|(?<=6)[0123567])|(?<=6)[09]((?<=0)[123567]|(?<=9)[9])|(?<=7)[012345678]((?<=0)[13567]|(?<=1)[3489]|(?<=2)[01]|(?<=3)[0134589]|(?<=4)[1234589]|(?<=5)[245689]|(?<=6)[1234569]|(?<=7)[02678]|(?<=8)[0123589])|(?<=8)[2345]((?<=2)[1]|(?<=3)[02456789]|(?<=4)[2356789]|(?<=5)[12345])|(?<=9)[0123]((?<=0)[12345678]|(?<=1)[12568]|(?<=2)[024578]|(?<=3)[024568])))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[01234]((?<=0)[23457]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[013]|(?<=4)[5])|(?<=1)[0123]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[0123456789]|(?<=3)[012345678])|(?<=2)[0123469]((?<=0)[2345679]|(?<=1)[01245689]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[1679]|(?<=6)[046]|(?<=9)[034])|(?<=3)[01]((?<=0)[12345]|(?<=1)[0])|(?<=4)[0123456789]((?<=0)[13]|(?<=1)[9]|(?<=2)[012345678]|(?<=3)[02345689]|(?<=4)[02346789]|(?<=5)[12345679]|(?<=6)[1356789]|(?<=7)[01345689]|(?<=8)[01237]|(?<=9)[8])|(?<=5)[012345]((?<=0)[134]|(?<=1)[0234567]|(?<=2)[014568]|(?<=3)[0245678]|(?<=4)[02345679]|(?<=5)[0])|(?<=6)[012345]((?<=0)[123]|(?<=1)[0125]|(?<=2)[01234]|(?<=3)[14]|(?<=4)[02345689]|(?<=5)[01234])|(?<=7)[02345]((?<=0)[15]|(?<=2)[01236789]|(?<=3)[1234567]|(?<=4)[012345679]|(?<=5)[0145789])|(?<=8)[012346]((?<=0)[1245789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[0123456]|(?<=4)[0]|(?<=6)[01234])|(?<=9)[01235]((?<=0)[23456789]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[089]|(?<=5)[1]))|(?<=1)[0123456]((?<=0)[0123456789]((?<=0)[1345678]|(?<=1)[9]|(?<=2)[01234579]|(?<=3)[0369]|(?<=4)[01345679]|(?<=5)[0245789]|(?<=6)[23479]|(?<=7)[1367]|(?<=8)[12479]|(?<=9)[012])|(?<=1)[02345]((?<=0)[1]|(?<=2)[012345689]|(?<=3)[0123678]|(?<=4)[01346789]|(?<=5)[1245])|(?<=2)[012345]((?<=0)[1]|(?<=1)[012]|(?<=2)[012345678]|(?<=3)[0235679]|(?<=4)[012348]|(?<=5)[123])|(?<=3)[023]((?<=0)[13]|(?<=2)[01345678]|(?<=3)[01245])|(?<=4)[0123]((?<=0)[13]|(?<=1)[0135689]|(?<=2)[23456789]|(?<=3)[012345])|(?<=5)[02]((?<=0)[134567]|(?<=2)[01234567])|(?<=6)[012345]((?<=0)[1]|(?<=1)[0125]|(?<=2)[01345]|(?<=3)[01235789]|(?<=4)[012356789]|(?<=5)[0234567]))|(?<=2)[0123456789]((?<=0)[05678]((?<=0)[1579]|(?<=5)[01234589]|(?<=6)[013]|(?<=7)[023]|(?<=8)[1234])|(?<=1)[9]((?<=9)[0])|(?<=2)[0124]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[1234579]|(?<=4)[0234])|(?<=3)[0123]((?<=0)[1]|(?<=1)[0]|(?<=2)[1234579]|(?<=3)[12456])|(?<=4)[012345]((?<=0)[1]|(?<=1)[0124]|(?<=2)[012368]|(?<=3)[012345]|(?<=4)[0123]|(?<=5)[0])|(?<=5)[012]((?<=0)[1]|(?<=1)[023456]|(?<=2)[03])|(?<=6)[0234]((?<=0)[149]|(?<=2)[0]|(?<=3)[0356789]|(?<=4)[0234689])|(?<=7)[0123]((?<=0)[1]|(?<=1)[012468]|(?<=2)[013579]|(?<=3)[012])|(?<=8)[034]((?<=0)[1]|(?<=3)[123456789]|(?<=4)[245])|(?<=9)[0234]((?<=0)[1]|(?<=2)[2359]|(?<=3)[023456789]|(?<=4)[12345]))|(?<=3)[012345678]((?<=0)[012]((?<=0)[1]|(?<=1)[1234]|(?<=2)[5])|(?<=1)[012]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[01234678])|(?<=2)[012345678]((?<=0)[12349]|(?<=1)[01234578]|(?<=2)[013678]|(?<=3)[23456789]|(?<=4)[13456]|(?<=5)[012345]|(?<=6)[123]|(?<=7)[124678]|(?<=8)[13567])|(?<=3)[012345]((?<=0)[12]|(?<=1)[123468]|(?<=2)[01234578]|(?<=3)[02345678]|(?<=4)[01246789]|(?<=5)[02345])|(?<=4)[0123456]((?<=0)[1246]|(?<=1)[4]|(?<=2)[012345789]|(?<=3)[134568]|(?<=4)[02345689]|(?<=5)[01245]|(?<=6)[023456789])|(?<=5)[02345]((?<=0)[1]|(?<=2)[023456]|(?<=3)[035679]|(?<=4)[0123456789]|(?<=5)[2345])|(?<=6)[012345678]((?<=0)[2457]|(?<=1)[0125679]|(?<=2)[2346789]|(?<=3)[12346789]|(?<=4)[12345678]|(?<=5)[014567]|(?<=6)[0169]|(?<=7)[0267]|(?<=8)[67])|(?<=7)[012]((?<=0)[234569]|(?<=1)[2346]|(?<=2)[05])|(?<=8)[01234567]((?<=0)[12345689]|(?<=1)[012345]|(?<=2)[1234567]|(?<=3)[02345679]|(?<=4)[0123456789]|(?<=5)[01245678]|(?<=6)[0146789]|(?<=7)[012346]))|(?<=4)[0134567]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[034578]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[012345679]|(?<=7)[01234568]|(?<=8)[012345678]|(?<=9)[2345678])|(?<=1)[012358]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[013489]|(?<=3)[8]|(?<=5)[0]|(?<=8)[0])|(?<=3)[01234]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[01])|(?<=4)[01]((?<=0)[13458]|(?<=1)[4])|(?<=5)[01234]((?<=0)[1]|(?<=1)[123568]|(?<=2)[01235689]|(?<=3)[012345679]|(?<=4)[02])|(?<=6)[023456]((?<=0)[1246]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[023456789]|(?<=5)[1234567]|(?<=6)[023457])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[01234567]|(?<=7)[0234569]|(?<=8)[01234]|(?<=9)[0]))|(?<=5)[01235679]((?<=0)[0123458]((?<=0)[346789]|(?<=1)[23456789]|(?<=2)[012346789]|(?<=3)[123457]|(?<=4)[0123458]|(?<=5)[0134]|(?<=8)[3567])|(?<=1)[123479]((?<=1)[89]|(?<=2)[01238]|(?<=3)[125789]|(?<=4)[012357]|(?<=7)[23]|(?<=9)[1234])|(?<=2)[012345689]((?<=0)[123456789]|(?<=1)[0235]|(?<=2)[456]|(?<=3)[346]|(?<=4)[89]|(?<=5)[013456789]|(?<=6)[023468]|(?<=8)[12346]|(?<=9)[5678])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0]|(?<=2)[012345689]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[0123457]|(?<=7)[1345789]|(?<=8)[12378]|(?<=9)[0256])|(?<=5)[0345]((?<=0)[1]|(?<=3)[01234569]|(?<=4)[0123456]|(?<=5)[01234])|(?<=6)[012345]((?<=0)[12356789]|(?<=1)[013456789]|(?<=2)[012345679]|(?<=3)[012345789]|(?<=4)[013568]|(?<=5)[0348])|(?<=7)[012345]((?<=0)[1456789]|(?<=1)[012345689]|(?<=2)[1346]|(?<=3)[045679]|(?<=4)[12356789]|(?<=5)[0567])|(?<=9)[01234]((?<=0)[12]|(?<=1)[12]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[012]))|(?<=6)[0345]((?<=0)[012345]((?<=0)[1345]|(?<=1)[15678]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[0234567]|(?<=5)[234])|(?<=3)[012345]((?<=0)[135]|(?<=1)[345]|(?<=2)[012345679]|(?<=3)[12345678]|(?<=4)[3]|(?<=5)[1])|(?<=4)[01234]((?<=0)[13469]|(?<=1)[13]|(?<=2)[69]|(?<=3)[12345678]|(?<=4)[012345])|(?<=5)[012345]((?<=0)[2345678]|(?<=1)[01245]|(?<=2)[0]|(?<=3)[58]|(?<=4)[0457]|(?<=5)[6]))|(?<=7)[01345789]((?<=0)[012345678]((?<=0)[1245678]|(?<=1)[012345678]|(?<=2)[0123456789]|(?<=3)[1245678]|(?<=4)[0123456789]|(?<=5)[12369]|(?<=6)[012348]|(?<=7)[02]|(?<=8)[3])|(?<=1)[01245]((?<=0)[12456789]|(?<=1)[0123467]|(?<=2)[01234]|(?<=4)[4]|(?<=5)[1])|(?<=3)[0124567]((?<=0)[15]|(?<=1)[01235679]|(?<=2)[01235678]|(?<=4)[7]|(?<=5)[7]|(?<=6)[45]|(?<=7)[5])|(?<=4)[012569]((?<=0)[12]|(?<=1)[02356789]|(?<=2)[01]|(?<=5)[5]|(?<=6)[1]|(?<=9)[9])|(?<=5)[012345678]((?<=0)[15678]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[0125789]|(?<=4)[034789]|(?<=5)[1234678]|(?<=6)[0245679]|(?<=7)[135789]|(?<=8)[0123])|(?<=7)[012345]((?<=0)[1]|(?<=1)[0123458]|(?<=2)[23489]|(?<=3)[0123456]|(?<=4)[0235679]|(?<=5)[023])|(?<=8)[023]((?<=0)[1]|(?<=2)[01345789]|(?<=3)[012])|(?<=9)[034]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[0123]))|(?<=8)[01234]((?<=0)[012345678]((?<=0)[12345789]|(?<=1)[12]|(?<=2)[0123456789]|(?<=3)[0489]|(?<=4)[0123456789]|(?<=5)[12356]|(?<=6)[135]|(?<=7)[2]|(?<=8)[1])|(?<=1)[0123]((?<=0)[13]|(?<=1)[2345689]|(?<=2)[01456]|(?<=3)[02456])|(?<=2)[0123456]((?<=0)[13]|(?<=1)[0]|(?<=2)[0]|(?<=3)[012]|(?<=4)[024]|(?<=5)[023456]|(?<=6)[0234578])|(?<=3)[012345]((?<=0)[1]|(?<=1)[0124678]|(?<=2)[1345]|(?<=3)[06789]|(?<=4)[0123456789]|(?<=5)[012345])|(?<=4)[0123]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[12467]|(?<=3)[014569]))|(?<=9)[0134578]((?<=0)[012345678]((?<=0)[1234578]|(?<=1)[012345789]|(?<=2)[0125679]|(?<=3)[01249]|(?<=4)[023456789]|(?<=5)[24]|(?<=6)[01]|(?<=7)[04]|(?<=8)[1456])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[035789]|(?<=2)[0123489]|(?<=3)[014589]|(?<=4)[123456789]|(?<=5)[68]|(?<=6)[169]|(?<=7)[89]|(?<=8)[3]|(?<=9)[1])|(?<=3)[01]((?<=0)[1]|(?<=1)[01456789])|(?<=4)[01234569]((?<=0)[2345689]|(?<=1)[01234589]|(?<=2)[0123456789]|(?<=3)[01346789]|(?<=4)[012456789]|(?<=5)[01]|(?<=6)[0]|(?<=9)[6])|(?<=5)[0125]((?<=0)[123689]|(?<=1)[0129]|(?<=2)[13]|(?<=5)[7])|(?<=7)[0]((?<=0)[13456])|(?<=8)[01238]((?<=0)[1]|(?<=1)[5]|(?<=2)[0123568]|(?<=3)[012345]|(?<=8)[3])))|(?<=9)[0123456789]((?<=0)[02345678]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[26789]|(?<=6)[123456789]|(?<=7)[1379]|(?<=8)[9]|(?<=9)[45])|(?<=2)[0123456789]((?<=0)[1]|(?<=1)[012]|(?<=2)[012]|(?<=3)[02]|(?<=4)[0125789]|(?<=5)[045]|(?<=6)[02356]|(?<=7)[024578]|(?<=8)[0]|(?<=9)[0123])|(?<=3)[0]((?<=0)[12345])|(?<=4)[0]((?<=0)[12345])|(?<=5)[0]((?<=0)[123456])|(?<=6)[02345678]((?<=0)[123456]|(?<=2)[013]|(?<=3)[0189]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=7)[012345]((?<=0)[1346]|(?<=1)[023567]|(?<=2)[03]|(?<=3)[12]|(?<=4)[0234567]|(?<=5)[5])|(?<=8)[01234]((?<=0)[2345678]|(?<=1)[0345]|(?<=2)[2]|(?<=3)[1]|(?<=4)[0]))|(?<=1)[0123456789]((?<=0)[01234]((?<=0)[1678]|(?<=1)[016]|(?<=2)[04]|(?<=3)[0]|(?<=4)[026])|(?<=1)[02]((?<=0)[1345678]|(?<=2)[5])|(?<=2)[01]((?<=0)[12345678]|(?<=1)[04])|(?<=3)[0123456789]((?<=0)[123467]|(?<=1)[16]|(?<=2)[01456]|(?<=3)[015]|(?<=4)[02345]|(?<=5)[012456]|(?<=6)[01247]|(?<=7)[17]|(?<=8)[147]|(?<=9)[0])|(?<=4)[0123]((?<=0)[12356]|(?<=1)[1]|(?<=2)[3]|(?<=3)[6])|(?<=5)[0]((?<=0)[12456])|(?<=6)[0]((?<=0)[1245678])|(?<=7)[0123456789]((?<=0)[12689]|(?<=1)[01]|(?<=2)[234]|(?<=3)[012379]|(?<=4)[014568]|(?<=5)[02459]|(?<=6)[12345678]|(?<=7)[0356]|(?<=8)[0469]|(?<=9)[012])|(?<=8)[0]((?<=0)[13])|(?<=9)[01345678]((?<=0)[1256]|(?<=1)[0134567]|(?<=3)[1245]|(?<=4)[1258]|(?<=5)[0]|(?<=6)[23]|(?<=7)[78]|(?<=8)[0]))|(?<=2)[012345678]((?<=0)[0123456789]((?<=0)[34789]|(?<=1)[0149]|(?<=2)[01456789]|(?<=3)[67]|(?<=4)[0]|(?<=5)[456789]|(?<=6)[0145679]|(?<=7)[0158]|(?<=8)[12346]|(?<=9)[1236])|(?<=1)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[012346789]|(?<=3)[0124569]|(?<=4)[057]|(?<=5)[45]|(?<=6)[1]|(?<=7)[39]|(?<=8)[2])|(?<=2)[012345678]((?<=0)[13]|(?<=1)[01]|(?<=2)[02357]|(?<=3)[013469]|(?<=4)[01239]|(?<=5)[012346789]|(?<=6)[024678]|(?<=7)[0345678]|(?<=8)[012345])|(?<=3)[0123456789]((?<=0)[145789]|(?<=1)[0134567]|(?<=2)[0124578]|(?<=3)[2356789]|(?<=4)[124567]|(?<=5)[024689]|(?<=6)[34589]|(?<=7)[1234678]|(?<=8)[24569]|(?<=9)[1245789])|(?<=4)[01]((?<=0)[14578]|(?<=1)[015])|(?<=5)[0123456789]((?<=0)[13456789]|(?<=1)[8]|(?<=2)[1]|(?<=3)[0269]|(?<=4)[34589]|(?<=5)[1357]|(?<=6)[1237]|(?<=7)[01]|(?<=8)[234567]|(?<=9)[01256])|(?<=6)[0123456789]((?<=0)[2346]|(?<=1)[02478]|(?<=2)[045679]|(?<=3)[07]|(?<=4)[6789]|(?<=5)[13567]|(?<=6)[0123]|(?<=7)[2356789]|(?<=8)[38]|(?<=9)[1247])|(?<=7)[08]((?<=0)[1345678]|(?<=8)[02])|(?<=8)[0234678]((?<=0)[1245678]|(?<=2)[13]|(?<=3)[1235]|(?<=4)[01345]|(?<=6)[0156789]|(?<=7)[09]|(?<=8)[012367]))|(?<=3)[012345679]((?<=0)[012346]((?<=0)[134]|(?<=1)[0235]|(?<=2)[123]|(?<=3)[0356]|(?<=4)[0123]|(?<=6)[034567])|(?<=1)[01]((?<=0)[135689]|(?<=1)[017])|(?<=2)[0123456789]((?<=0)[12345678]|(?<=1)[02589]|(?<=2)[01234567]|(?<=3)[045789]|(?<=4)[012345679]|(?<=5)[01245678]|(?<=6)[01235678]|(?<=7)[012467]|(?<=8)[03567]|(?<=9)[12])|(?<=3)[01]((?<=0)[1456789]|(?<=1)[1234])|(?<=4)[0123456]((?<=0)[125789]|(?<=1)[0]|(?<=2)[0246789]|(?<=3)[023467]|(?<=4)[0124569]|(?<=5)[0123458]|(?<=6)[0135])|(?<=5)[012345689]((?<=0)[15]|(?<=1)[02346789]|(?<=2)[2346789]|(?<=3)[012456]|(?<=4)[134569]|(?<=5)[0123458]|(?<=6)[0123]|(?<=8)[1]|(?<=9)[1])|(?<=6)[01234567]((?<=0)[12345689]|(?<=1)[01245689]|(?<=2)[012345678]|(?<=3)[01345678]|(?<=4)[01345678]|(?<=5)[0123467]|(?<=6)[02456789]|(?<=7)[035])|(?<=7)[01234]((?<=0)[123456]|(?<=1)[01]|(?<=2)[01235678]|(?<=3)[07]|(?<=4)[01])|(?<=9)[023456]((?<=0)[15678]|(?<=2)[01345678]|(?<=3)[023]|(?<=4)[034]|(?<=5)[0345]|(?<=6)[02]))|(?<=4)[013456789]((?<=0)[01234678]((?<=0)[25]|(?<=1)[04589]|(?<=2)[0124578]|(?<=3)[078]|(?<=4)[0134]|(?<=6)[012356]|(?<=7)[04]|(?<=8)[05679])|(?<=1)[012358]((?<=0)[2345789]|(?<=1)[01245678]|(?<=2)[1234789]|(?<=3)[01234]|(?<=5)[8]|(?<=8)[8])|(?<=3)[0]((?<=0)[13456])|(?<=4)[0]((?<=0)[1234])|(?<=5)[0123456789]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[013568]|(?<=3)[01345689]|(?<=4)[12456789]|(?<=5)[01235689]|(?<=6)[0123456789]|(?<=7)[123456789]|(?<=8)[02356789]|(?<=9)[01256789])|(?<=6)[012]((?<=0)[12356789]|(?<=1)[012389]|(?<=2)[1])|(?<=7)[012]((?<=0)[23456789]|(?<=1)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0234567]((?<=0)[134]|(?<=2)[0234589]|(?<=3)[013789]|(?<=4)[015679]|(?<=5)[012467]|(?<=6)[0345]|(?<=7)[0123]))|(?<=5)[0123456789]((?<=0)[01234567]((?<=0)[2345678]|(?<=1)[0234789]|(?<=2)[03]|(?<=3)[023579]|(?<=4)[1356]|(?<=5)[0134]|(?<=6)[02456]|(?<=7)[0356])|(?<=1)[1234]((?<=1)[01236789]|(?<=2)[0123456789]|(?<=3)[012345689]|(?<=4)[08])|(?<=2)[012345]((?<=0)[2345679]|(?<=1)[01259]|(?<=2)[012345678]|(?<=3)[012367]|(?<=4)[0256789]|(?<=5)[1234578])|(?<=3)[0123456789]((?<=0)[1345679]|(?<=1)[012356789]|(?<=2)[0123456789]|(?<=3)[0345678]|(?<=4)[01568]|(?<=5)[0145678]|(?<=6)[013456789]|(?<=7)[0245679]|(?<=8)[02356789]|(?<=9)[1])|(?<=4)[0123456789]((?<=0)[134579]|(?<=1)[02579]|(?<=2)[012356789]|(?<=3)[0125679]|(?<=4)[12345689]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[0126]|(?<=8)[02568]|(?<=9)[02347])|(?<=5)[0123456789]((?<=0)[13]|(?<=1)[149]|(?<=2)[145678]|(?<=3)[1678]|(?<=4)[02356789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[013]|(?<=8)[579]|(?<=9)[5])|(?<=6)[0123456789]((?<=0)[12345678]|(?<=1)[02345689]|(?<=2)[013456789]|(?<=3)[0123456789]|(?<=4)[012568]|(?<=5)[0123589]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345789])|(?<=7)[01234567]((?<=0)[139]|(?<=1)[3457]|(?<=2)[01268]|(?<=3)[56]|(?<=4)[267]|(?<=5)[78]|(?<=6)[25]|(?<=7)[6])|(?<=8)[12346]((?<=1)[1456789]|(?<=2)[0123456789]|(?<=3)[01234578]|(?<=4)[123]|(?<=6)[4])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[023456789]|(?<=2)[0235689]|(?<=3)[02456789]|(?<=4)[123456789]|(?<=5)[013456789]|(?<=6)[01235689]|(?<=7)[012345789]|(?<=8)[1234678]|(?<=9)[13]))|(?<=6)[01789]((?<=0)[0123456789]((?<=0)[1236789]|(?<=1)[01345679]|(?<=2)[012345789]|(?<=3)[12345789]|(?<=4)[014678]|(?<=5)[012456789]|(?<=6)[12345789]|(?<=7)[134568]|(?<=8)[045678]|(?<=9)[0123467])|(?<=1)[0123456]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0234567]|(?<=4)[0123568]|(?<=5)[05]|(?<=6)[1])|(?<=7)[0123456789]((?<=0)[1345678]|(?<=1)[0234679]|(?<=2)[0256789]|(?<=3)[012478]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[012345689]|(?<=7)[012346789]|(?<=8)[0123569]|(?<=9)[01235679])|(?<=8)[12456]((?<=1)[3456789]|(?<=2)[01256]|(?<=4)[8]|(?<=5)[03789]|(?<=6)[03])|(?<=9)[125]((?<=1)[03567]|(?<=2)[89]|(?<=5)[012]))|(?<=7)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[13456789]|(?<=2)[012346789]|(?<=3)[012345789]|(?<=4)[012589]|(?<=5)[01345678]|(?<=6)[0234578]|(?<=7)[018]|(?<=8)[069])|(?<=1)[01234]((?<=0)[1236789]|(?<=1)[0123456789]|(?<=2)[1234578]|(?<=3)[012345678]|(?<=4)[01456789])|(?<=2)[012356]((?<=0)[12345689]|(?<=1)[0123456789]|(?<=2)[01234579]|(?<=3)[012369]|(?<=5)[8]|(?<=6)[67])|(?<=3)[0123456789]((?<=0)[123456]|(?<=1)[07]|(?<=2)[1245679]|(?<=3)[013568]|(?<=4)[12345678]|(?<=5)[012578]|(?<=6)[012456789]|(?<=7)[01345678]|(?<=8)[01345689]|(?<=9)[01246])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[012345679]|(?<=2)[03469]|(?<=3)[012456789]|(?<=4)[12346789]|(?<=5)[0123456789]|(?<=6)[1235679]|(?<=7)[0136789]|(?<=8)[0146789]|(?<=9)[023456789])|(?<=5)[0234]((?<=0)[1234]|(?<=2)[0234567]|(?<=3)[012456789]|(?<=4)[0134])|(?<=6)[0234]((?<=0)[134]|(?<=2)[01234567]|(?<=3)[023456789]|(?<=4)[01])|(?<=7)[0123456]((?<=0)[12379]|(?<=1)[012]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[1]|(?<=5)[01234689]|(?<=6)[01])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[0234789]|(?<=2)[0345678]|(?<=3)[03456789]|(?<=4)[01234568]|(?<=5)[0679]|(?<=6)[245789]|(?<=7)[034567]|(?<=8)[023456])|(?<=9)[012]((?<=0)[123456789]|(?<=1)[013478]|(?<=2)[0]))|(?<=8)[012345689]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[01249]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[02357]|(?<=5)[012356789]|(?<=6)[58]|(?<=7)[02457]|(?<=8)[7]|(?<=9)[2])|(?<=1)[0123456789]((?<=0)[123456789]|(?<=1)[0256789]|(?<=2)[1256]|(?<=3)[346]|(?<=4)[468]|(?<=5)[458]|(?<=6)[468]|(?<=7)[478]|(?<=8)[8]|(?<=9)[589])|(?<=2)[023456789]((?<=0)[13478]|(?<=2)[01234569]|(?<=3)[02356789]|(?<=4)[01345789]|(?<=5)[01235678]|(?<=6)[0123467]|(?<=7)[0123456789]|(?<=8)[0123468]|(?<=9)[024567])|(?<=3)[0123456789]((?<=0)[345]|(?<=1)[01245]|(?<=2)[01356789]|(?<=3)[012356789]|(?<=4)[02569]|(?<=5)[013456789]|(?<=6)[012345678]|(?<=7)[01234567]|(?<=8)[0123578]|(?<=9)[01246])|(?<=4)[0123469]((?<=0)[23456789]|(?<=1)[68]|(?<=2)[124]|(?<=3)[0389]|(?<=4)[34567]|(?<=6)[567]|(?<=9)[89])|(?<=5)[0123456789]((?<=0)[12356]|(?<=1)[236]|(?<=2)[04678]|(?<=3)[012356789]|(?<=4)[124678]|(?<=5)[0256789]|(?<=6)[02345689]|(?<=7)[0125679]|(?<=8)[0123456789]|(?<=9)[0123567])|(?<=6)[012345678]((?<=0)[12345679]|(?<=1)[01234679]|(?<=2)[01345689]|(?<=3)[12589]|(?<=4)[012345789]|(?<=5)[01]|(?<=6)[012345]|(?<=7)[012345]|(?<=8)[23456])|(?<=8)[0123456]((?<=0)[12]|(?<=1)[12345679]|(?<=2)[12346789]|(?<=3)[0123467]|(?<=4)[013456789]|(?<=5)[012356789]|(?<=6)[02])|(?<=9)[02345]((?<=0)[1238]|(?<=2)[12356]|(?<=3)[023456789]|(?<=4)[01234678]|(?<=5)[0123]))|(?<=9)[0123456789]((?<=0)[01234]((?<=0)[1345689]|(?<=1)[12346789]|(?<=2)[01235679]|(?<=3)[01234679]|(?<=4)[0])|(?<=1)[012345678]((?<=0)[12359]|(?<=1)[013456789]|(?<=2)[12345689]|(?<=3)[013456789]|(?<=4)[01346789]|(?<=5)[0123456789]|(?<=6)[013679]|(?<=7)[013469]|(?<=8)[015])|(?<=2)[0125]((?<=0)[12345678]|(?<=1)[2678]|(?<=2)[34]|(?<=5)[18])|(?<=3)[0234567]((?<=0)[1]|(?<=2)[01234689]|(?<=3)[035678]|(?<=4)[13456789]|(?<=5)[0234679]|(?<=6)[0123]|(?<=7)[1])|(?<=4)[0]((?<=0)[123])|(?<=5)[013456789]((?<=0)[12345678]|(?<=1)[356789]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0123456789]|(?<=6)[13456789]|(?<=7)[123456789]|(?<=8)[01356789]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[23456789]|(?<=1)[012345]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[012345])|(?<=7)[0123456789]((?<=0)[12345679]|(?<=1)[24]|(?<=2)[012345679]|(?<=3)[02346789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012345678]|(?<=8)[012345689]|(?<=9)[01])|(?<=8)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[02356]|(?<=4)[01]|(?<=5)[0])|(?<=9)[012]((?<=0)[13]|(?<=1)[89]|(?<=2)[1235679])))))$") + US: new RegExp("^([0123456789]((?<=0)[012345678]((?<=0)[6789]((?<=6)[0123456789]((?<=0)[1236]|(?<=1)[01267]|(?<=2)[2347]|(?<=3)[1678]|(?<=4)[167]|(?<=5)[02369]|(?<=6)[02479]|(?<=7)[04678]|(?<=8)[023578]|(?<=9)[02348])|(?<=7)[0123456789]((?<=0)[3457]|(?<=1)[456789]|(?<=2)[035789]|(?<=3)[015689]|(?<=4)[015]|(?<=5)[147]|(?<=6)[5679]|(?<=7)[123578]|(?<=8)[02346]|(?<=9)[145])|(?<=8)[02345]((?<=0)[2]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01])|(?<=9)[012345678]((?<=0)[1679]|(?<=1)[123578]|(?<=2)[0134567]|(?<=3)[4]|(?<=4)[9]|(?<=5)[0123679]|(?<=6)[0125689]|(?<=7)[169]|(?<=8)[2357]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[0123]|(?<=2)[026789]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[03467]|(?<=6)[023689]|(?<=7)[01234579]|(?<=8)[01234589]|(?<=9)[2345678])|(?<=1)[01245]((?<=0)[3456789]|(?<=1)[89]|(?<=2)[89]|(?<=4)[4]|(?<=5)[1])|(?<=2)[0234567]((?<=0)[1]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[023457]|(?<=5)[3456789]|(?<=6)[02467]|(?<=7)[0])|(?<=3)[0345678]((?<=0)[1]|(?<=3)[01789]|(?<=4)[01234679]|(?<=5)[0145]|(?<=6)[04678]|(?<=7)[035689]|(?<=8)[0])|(?<=4)[234567]((?<=2)[0]|(?<=3)[012468]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[023489]|(?<=7)[345])|(?<=5)[0123456789]((?<=0)[134567]|(?<=1)[05689]|(?<=2)[01234579]|(?<=3)[124567]|(?<=4)[01235]|(?<=5)[0]|(?<=6)[0124689]|(?<=7)[01]|(?<=8)[1358]|(?<=9)[0])|(?<=6)[01]((?<=0)[23456789]|(?<=1)[012])|(?<=7)[01234567]((?<=0)[12]|(?<=1)[89]|(?<=2)[01]|(?<=3)[01]|(?<=4)[01256789]|(?<=5)[2467]|(?<=6)[0]|(?<=7)[023568])|(?<=8)[0123456789]((?<=0)[13]|(?<=1)[0]|(?<=2)[1467]|(?<=3)[02345]|(?<=4)[01345]|(?<=5)[0124]|(?<=6)[02347]|(?<=7)[69]|(?<=8)[067]|(?<=9)[0])|(?<=9)[012345678]((?<=0)[1245678]|(?<=1)[35]|(?<=2)[1239]|(?<=3)[078]|(?<=4)[0459]|(?<=5)[012]|(?<=6)[0569]|(?<=7)[0]|(?<=8)[2345]))|(?<=2)[0123456789]((?<=0)[123456789]((?<=1)[9]|(?<=2)[156]|(?<=3)[0258]|(?<=4)[3578]|(?<=5)[02346]|(?<=6)[1267]|(?<=7)[12]|(?<=8)[1]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[89]|(?<=1)[01345689]|(?<=2)[012456789]|(?<=3)[012345689]|(?<=4)[01234589]|(?<=5)[0125]|(?<=6)[39]|(?<=7)[016]|(?<=8)[04689]|(?<=9)[019])|(?<=2)[01]((?<=0)[35]|(?<=1)[05])|(?<=3)[02345678]((?<=0)[12]|(?<=2)[245]|(?<=3)[02389]|(?<=4)[1367]|(?<=5)[01679]|(?<=6)[04678]|(?<=7)[059]|(?<=8)[2])|(?<=4)[2456789]((?<=2)[01]|(?<=4)[56]|(?<=5)[123789]|(?<=6)[01245678]|(?<=7)[2468]|(?<=8)[12]|(?<=9)[234])|(?<=5)[345678]((?<=3)[2456789]|(?<=4)[023]|(?<=5)[346789]|(?<=6)[12348]|(?<=7)[156]|(?<=8)[4])|(?<=6)[034567]((?<=0)[1]|(?<=3)[01235789]|(?<=4)[123456789]|(?<=5)[023579]|(?<=6)[034678]|(?<=7)[01235])|(?<=7)[012346789]((?<=0)[23]|(?<=1)[35789]|(?<=2)[013456]|(?<=3)[89]|(?<=4)[0345678]|(?<=6)[0234679]|(?<=7)[0179]|(?<=8)[0]|(?<=9)[01])|(?<=8)[0123456789]((?<=0)[246789]|(?<=1)[2345678]|(?<=2)[23456789]|(?<=3)[012356789]|(?<=4)[012]|(?<=5)[2789]|(?<=6)[01345]|(?<=7)[12345689]|(?<=8)[125689]|(?<=9)[1234568])|(?<=9)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[01]))|(?<=3)[0123456789]((?<=0)[345678]((?<=3)[1234678]|(?<=4)[23456789]|(?<=5)[123457]|(?<=6)[0234]|(?<=7)[01679]|(?<=8)[2467])|(?<=1)[01]((?<=0)[123469]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[5678]|(?<=2)[012345679]|(?<=3)[0134578]|(?<=4)[01234569]|(?<=5)[13456789]|(?<=6)[01234689]|(?<=7)[35689]|(?<=8)[012457]|(?<=9)[013])|(?<=3)[0]((?<=0)[1347])|(?<=4)[34567]((?<=3)[1]|(?<=4)[0123456789]|(?<=5)[0125678]|(?<=6)[124567]|(?<=7)[0])|(?<=5)[6789]((?<=6)[1]|(?<=7)[04569]|(?<=8)[01234568]|(?<=9)[023578])|(?<=6)[0]((?<=0)[12345789])|(?<=7)[45678]((?<=4)[01358]|(?<=5)[01235]|(?<=6)[568]|(?<=7)[013479]|(?<=8)[01245])|(?<=8)[0123456789]((?<=0)[19]|(?<=1)[012346789]|(?<=2)[034567]|(?<=3)[02356789]|(?<=4)[012456789]|(?<=5)[012345678]|(?<=6)[01245789]|(?<=7)[0123458]|(?<=8)[234567]|(?<=9)[047])|(?<=9)[01]((?<=0)[123456789]|(?<=1)[01]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[1235689]|(?<=1)[01579]|(?<=2)[012479]|(?<=3)[02789]|(?<=4)[01236789]|(?<=5)[01567]|(?<=6)[1234689]|(?<=7)[123469]|(?<=8)[345678]|(?<=9)[0123567])|(?<=1)[01]((?<=0)[12356789]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[0679]|(?<=2)[012467]|(?<=3)[146789]|(?<=4)[0]|(?<=5)[023456789]|(?<=6)[013578]|(?<=7)[01456]|(?<=8)[01245679]|(?<=9)[024])|(?<=3)[3456]((?<=3)[0]|(?<=4)[12456789]|(?<=5)[012345789]|(?<=6)[034])|(?<=4)[0123456789]((?<=0)[168]|(?<=1)[0123456789]|(?<=2)[1246789]|(?<=3)[01458]|(?<=4)[123489]|(?<=5)[01345679]|(?<=6)[0123489]|(?<=7)[12345689]|(?<=8)[15789]|(?<=9)[0123567])|(?<=5)[34567]((?<=3)[05789]|(?<=4)[13478]|(?<=5)[134568]|(?<=6)[2348]|(?<=7)[012345689])|(?<=6)[0123456789]((?<=0)[5679]|(?<=1)[1234679]|(?<=2)[2345678]|(?<=3)[0145]|(?<=4)[0235689]|(?<=5)[0234578]|(?<=6)[0246789]|(?<=7)[1345679]|(?<=8)[013456]|(?<=9)[134])|(?<=7)[345678]((?<=3)[02345679]|(?<=4)[023567]|(?<=5)[0678]|(?<=6)[012345689]|(?<=7)[234679]|(?<=8)[013567])|(?<=8)[456]((?<=4)[13789]|(?<=5)[12345689]|(?<=6)[01234])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[012578]|(?<=2)[0123456789]|(?<=3)[026789]|(?<=4)[01234579]|(?<=5)[01235678]|(?<=6)[1345679]|(?<=7)[01345689]|(?<=8)[123456789]|(?<=9)[2]))|(?<=5)[012346789]((?<=0)[03456789]((?<=0)[19]|(?<=3)[0123456789]|(?<=4)[0123568]|(?<=5)[01235689]|(?<=6)[0125789]|(?<=7)[01235679]|(?<=8)[134689]|(?<=9)[1])|(?<=1)[0456]((?<=0)[1]|(?<=4)[123689]|(?<=5)[01234568]|(?<=6)[1])|(?<=2)[056]((?<=0)[1]|(?<=5)[0123457]|(?<=6)[012])|(?<=3)[0456]((?<=0)[1]|(?<=4)[0123456]|(?<=5)[012345689]|(?<=6)[0123])|(?<=4)[03456789]((?<=0)[13458]|(?<=3)[9]|(?<=4)[012345678]|(?<=5)[02456789]|(?<=6)[123458]|(?<=7)[1234678]|(?<=8)[12356789]|(?<=9)[1245])|(?<=6)[045678]((?<=0)[2]|(?<=4)[01789]|(?<=5)[01234568]|(?<=6)[0134679]|(?<=7)[023456789]|(?<=8)[012])|(?<=7)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[234678]|(?<=5)[13789]|(?<=6)[0123456789]|(?<=7)[02345678])|(?<=8)[1234567]((?<=1)[9]|(?<=2)[012456789]|(?<=3)[023679]|(?<=4)[0123567]|(?<=5)[0135789]|(?<=6)[02678]|(?<=7)[12345])|(?<=9)[0]((?<=0)[1234567]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[12]|(?<=1)[03689]|(?<=2)[01234679]|(?<=3)[123579]|(?<=4)[023]|(?<=5)[123789]|(?<=6)[012356789]|(?<=7)[01234689]|(?<=8)[0124589]|(?<=9)[0123568])|(?<=1)[012]((?<=0)[356789]|(?<=1)[0124789]|(?<=2)[0])|(?<=2)[2345678]((?<=2)[6]|(?<=3)[1245789]|(?<=4)[123789]|(?<=5)[045689]|(?<=6)[0234689]|(?<=7)[789]|(?<=8)[012])|(?<=3)[23456789]((?<=2)[0]|(?<=3)[012345689]|(?<=4)[0]|(?<=5)[0134579]|(?<=6)[05]|(?<=7)[013456789]|(?<=8)[024579]|(?<=9)[0])|(?<=4)[0123456789]((?<=0)[1359]|(?<=1)[023456789]|(?<=2)[02346]|(?<=3)[789]|(?<=4)[12347]|(?<=5)[015679]|(?<=6)[01789]|(?<=7)[01235789]|(?<=8)[0123489]|(?<=9)[28])|(?<=5)[12]((?<=1)[0123456789]|(?<=2)[45])|(?<=6)[01]((?<=0)[45678]|(?<=1)[01245])|(?<=7)[0156789]((?<=0)[24568]|(?<=1)[026]|(?<=5)[0123456789]|(?<=6)[23]|(?<=7)[06789]|(?<=8)[234567]|(?<=9)[0134568])|(?<=8)[012345789]((?<=0)[147]|(?<=1)[012]|(?<=2)[045]|(?<=3)[01]|(?<=4)[0]|(?<=5)[01345]|(?<=7)[078]|(?<=8)[03]|(?<=9)[067])|(?<=9)[0]((?<=0)[123567]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[12345689]|(?<=1)[01234678]|(?<=2)[012346789]|(?<=3)[01234569]|(?<=4)[01234567]|(?<=5)[0245789]|(?<=6)[023456789]|(?<=7)[0123456789]|(?<=8)[0123678]|(?<=9)[02345])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0124])|(?<=2)[0]((?<=0)[1234568])|(?<=3)[01]((?<=0)[24567]|(?<=1)[01])|(?<=4)[012345678]((?<=0)[1357]|(?<=1)[06789]|(?<=2)[01234]|(?<=3)[025689]|(?<=4)[0246]|(?<=5)[02678]|(?<=6)[01235]|(?<=7)[0]|(?<=8)[01])|(?<=5)[012]((?<=0)[1234568]|(?<=1)[234]|(?<=2)[24])|(?<=6)[0234567]((?<=0)[1345678]|(?<=2)[014678]|(?<=3)[012]|(?<=4)[0123456789]|(?<=5)[0267]|(?<=6)[01236]|(?<=7)[0567])|(?<=7)[0123456]((?<=0)[1234]|(?<=1)[126789]|(?<=2)[01234678]|(?<=3)[012345789]|(?<=4)[0678]|(?<=5)[0135678]|(?<=6)[024])|(?<=8)[02345678]((?<=0)[13]|(?<=2)[01235678]|(?<=3)[0123468]|(?<=4)[02346789]|(?<=5)[012367]|(?<=6)[03569]|(?<=7)[01468]|(?<=8)[0125])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[0124678]|(?<=3)[01234569]|(?<=4)[056]|(?<=5)[0]|(?<=6)[01]|(?<=7)[04679]|(?<=8)[01]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0124569]|(?<=2)[01236789]|(?<=3)[0123456789]|(?<=4)[1235689]|(?<=5)[012345679]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[013456789]|(?<=9)[012345678])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=2)[01234567]((?<=0)[12345]|(?<=1)[0257]|(?<=2)[13456]|(?<=3)[024]|(?<=4)[012345678]|(?<=5)[1]|(?<=6)[0]|(?<=7)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01246789]|(?<=2)[012346789]|(?<=3)[02]|(?<=4)[01345689]|(?<=5)[023]|(?<=6)[01])|(?<=4)[0]((?<=0)[1236])|(?<=5)[0123456]((?<=0)[125]|(?<=1)[012458]|(?<=2)[0578]|(?<=3)[03456]|(?<=4)[024]|(?<=5)[0134589]|(?<=6)[012])|(?<=6)[012349]((?<=0)[89]|(?<=1)[0189]|(?<=2)[089]|(?<=3)[8]|(?<=4)[018]|(?<=9)[01])|(?<=7)[02345]((?<=0)[1]|(?<=2)[01234]|(?<=3)[01234568]|(?<=4)[012]|(?<=5)[01235789])|(?<=8)[0123456789]((?<=0)[124579]|(?<=1)[0267]|(?<=2)[0123456789]|(?<=3)[0123567]|(?<=4)[0468]|(?<=5)[0234789]|(?<=6)[13579]|(?<=7)[2369]|(?<=8)[024679]|(?<=9)[0])|(?<=9)[0]((?<=0)[124])))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[0123467]((?<=0)[12345679]|(?<=1)[012346789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[04]|(?<=6)[59]|(?<=7)[5])|(?<=1)[0125679]((?<=0)[3]|(?<=1)[01259]|(?<=2)[8]|(?<=5)[234]|(?<=6)[25789]|(?<=7)[012347]|(?<=9)[9])|(?<=2)[78]((?<=7)[189]|(?<=8)[02])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[0124])|(?<=4)[567]((?<=5)[123456789]|(?<=6)[0123456789]|(?<=7)[012345])|(?<=5)[0123456789]((?<=0)[12345679]|(?<=1)[01246789]|(?<=2)[0234678]|(?<=3)[0235678]|(?<=4)[012356789]|(?<=5)[023]|(?<=6)[0267]|(?<=7)[036789]|(?<=8)[0389]|(?<=9)[0145678])|(?<=6)[0]((?<=0)[134567])|(?<=7)[01]((?<=0)[13456789]|(?<=1)[0])|(?<=8)[0]((?<=0)[1345])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[012345678]|(?<=3)[0123]|(?<=4)[01]|(?<=5)[023468]|(?<=6)[0234589]|(?<=7)[0345679]|(?<=8)[03456789]|(?<=9)[023468]))|(?<=1)[0123456789]((?<=0)[0123459]((?<=0)[1345]|(?<=1)[0]|(?<=2)[0134]|(?<=3)[0]|(?<=4)[02]|(?<=5)[0]|(?<=9)[6])|(?<=1)[0]((?<=0)[1234569])|(?<=2)[01234]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[9])|(?<=3)[5678]((?<=5)[456789]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[5])|(?<=4)[1235]((?<=1)[123456789]|(?<=2)[012346789]|(?<=3)[0234569]|(?<=5)[1])|(?<=5)[0123456789]((?<=0)[179]|(?<=1)[0468]|(?<=2)[0]|(?<=3)[0]|(?<=4)[25789]|(?<=5)[02346789]|(?<=6)[0135689]|(?<=7)[025679]|(?<=8)[01]|(?<=9)[068])|(?<=6)[9]((?<=9)[12347])|(?<=7)[0123456789]((?<=0)[1234569]|(?<=1)[03456789]|(?<=2)[01245679]|(?<=3)[0123589]|(?<=4)[0123679]|(?<=5)[12345678]|(?<=6)[23456789]|(?<=7)[0126789]|(?<=8)[02346789]|(?<=9)[012345678])|(?<=8)[0]((?<=0)[134])|(?<=9)[0345678]((?<=0)[1]|(?<=3)[01234579]|(?<=4)[01246789]|(?<=5)[0123456789]|(?<=6)[01234578]|(?<=7)[01235678]|(?<=8)[0]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[789]|(?<=1)[05789]|(?<=2)[02345789]|(?<=3)[123567]|(?<=4)[0123567]|(?<=5)[12346789]|(?<=6)[0123456789]|(?<=7)[01245678]|(?<=8)[234567]|(?<=9)[02345])|(?<=1)[0123456789]((?<=0)[68]|(?<=1)[05678]|(?<=2)[012345]|(?<=3)[01246789]|(?<=4)[034789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[0234567]|(?<=8)[023456789]|(?<=9)[02345678])|(?<=2)[012]((?<=0)[23456789]|(?<=1)[01]|(?<=2)[26])|(?<=3)[0]((?<=0)[23456789])|(?<=4)[0123456789]((?<=0)[145679]|(?<=1)[012346789]|(?<=2)[01234789]|(?<=3)[012345689]|(?<=4)[01234689]|(?<=5)[0123456789]|(?<=6)[01345689]|(?<=7)[0123457]|(?<=8)[012345679]|(?<=9)[01234568])|(?<=5)[0123456789]((?<=0)[123478]|(?<=1)[2345678]|(?<=2)[0123456789]|(?<=3)[01348]|(?<=4)[023456789]|(?<=5)[03]|(?<=6)[1345679]|(?<=7)[0124578]|(?<=8)[0123569]|(?<=9)[024])|(?<=6)[0]((?<=0)[134])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[9]|(?<=2)[01234569]|(?<=3)[234678]|(?<=4)[012356789]|(?<=5)[012489]|(?<=6)[023456789]|(?<=7)[0156789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13489]|(?<=1)[01245679]|(?<=2)[0123478]|(?<=3)[123456789]|(?<=4)[12345679]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012348]|(?<=8)[34567])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[0123456789]|(?<=2)[012346789]|(?<=3)[02345679]|(?<=4)[123456]|(?<=5)[02356789]|(?<=6)[01245679]|(?<=7)[023456789]|(?<=8)[0135679]|(?<=9)[23678]))|(?<=3)[0123456789]((?<=0)[23456789]((?<=2)[0146789]|(?<=3)[012345679]|(?<=4)[01245]|(?<=5)[12347]|(?<=6)[01235689]|(?<=7)[1234678]|(?<=8)[0123478]|(?<=9)[02])|(?<=1)[0123456]((?<=0)[12348]|(?<=1)[0123456789]|(?<=2)[012346]|(?<=3)[124568]|(?<=4)[012345678]|(?<=5)[23456789]|(?<=6)[0234567])|(?<=2)[01249]((?<=0)[23456789]|(?<=1)[012459]|(?<=2)[4]|(?<=4)[4]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[1234589]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[12345789]|(?<=4)[023568]|(?<=5)[023457]|(?<=6)[0134578])|(?<=4)[0123456789]((?<=0)[2346789]|(?<=1)[0135678]|(?<=2)[01458]|(?<=3)[1356789]|(?<=4)[01]|(?<=5)[0245679]|(?<=6)[01489]|(?<=7)[01235678]|(?<=8)[02345689]|(?<=9)[012345])|(?<=5)[0]((?<=0)[12])|(?<=6)[0123456789]((?<=0)[1235678]|(?<=1)[123456789]|(?<=2)[01234568]|(?<=3)[023456789]|(?<=4)[012356789]|(?<=5)[01245689]|(?<=6)[012456789]|(?<=7)[02345689]|(?<=8)[0123457]|(?<=9)[012345679])|(?<=7)[3456789]((?<=3)[01234689]|(?<=4)[034678]|(?<=5)[01234567]|(?<=6)[0]|(?<=7)[45678]|(?<=8)[0234678]|(?<=9)[0567])|(?<=8)[0123456]((?<=0)[12346789]|(?<=1)[012345]|(?<=2)[0567]|(?<=3)[0234589]|(?<=4)[1234679]|(?<=5)[069]|(?<=6)[012345])|(?<=9)[0]((?<=0)[12345]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[145689]|(?<=1)[123]|(?<=2)[0456789]|(?<=3)[012345679]|(?<=4)[012378]|(?<=5)[12456789]|(?<=6)[012356789]|(?<=7)[025]|(?<=8)[012356]|(?<=9)[1248])|(?<=1)[01234567]((?<=0)[123589]|(?<=1)[123]|(?<=2)[05679]|(?<=3)[01245689]|(?<=4)[135]|(?<=5)[0]|(?<=6)[6789]|(?<=7)[01234])|(?<=2)[0126]((?<=0)[12346789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=6)[01])|(?<=3)[0]((?<=0)[12345])|(?<=4)[12345678]((?<=1)[134568]|(?<=2)[0234578]|(?<=3)[2357]|(?<=4)[15]|(?<=5)[0346]|(?<=6)[2346789]|(?<=7)[01256789]|(?<=8)[0125679])|(?<=5)[0123456789]((?<=0)[24567]|(?<=1)[012345679]|(?<=2)[125679]|(?<=3)[0234679]|(?<=4)[12345689]|(?<=5)[015679]|(?<=6)[01489]|(?<=7)[12]|(?<=8)[05689]|(?<=9)[012])|(?<=6)[0124]((?<=0)[456789]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=4)[2])|(?<=7)[012345678]((?<=0)[16789]|(?<=1)[012456789]|(?<=2)[012346789]|(?<=3)[12356789]|(?<=4)[0123478]|(?<=5)[0234567]|(?<=6)[079]|(?<=7)[0245789]|(?<=8)[1234578])|(?<=8)[0123456789]((?<=0)[123456789]|(?<=1)[023456789]|(?<=2)[01234567]|(?<=3)[06789]|(?<=4)[0123567]|(?<=5)[0345689]|(?<=6)[014579]|(?<=7)[01234789]|(?<=8)[01234569]|(?<=9)[1234578])|(?<=9)[0]((?<=0)[1345]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[1345679]|(?<=1)[0245789]|(?<=2)[01245678]|(?<=3)[0134578]|(?<=4)[2345679]|(?<=5)[012345679]|(?<=6)[012345678]|(?<=7)[1245678]|(?<=8)[123456789]|(?<=9)[0])|(?<=1)[01234]((?<=0)[12468]|(?<=1)[026]|(?<=2)[02369]|(?<=3)[1235679]|(?<=4)[02345678])|(?<=2)[012346789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[23456789]|(?<=4)[13]|(?<=6)[0]|(?<=7)[5]|(?<=8)[2]|(?<=9)[0])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[01234567]|(?<=2)[01234579]|(?<=3)[0123478]|(?<=4)[012456789]|(?<=5)[0123789]|(?<=6)[012345678]|(?<=7)[06789]|(?<=8)[0])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0123679]|(?<=2)[012345789]|(?<=3)[012345678]|(?<=4)[023456789]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[023456789]|(?<=8)[0234689]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[12]|(?<=1)[0]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[0124567]|(?<=5)[01245789]|(?<=6)[012345])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[012356789]|(?<=2)[023456789]|(?<=3)[123456789]|(?<=4)[012467]|(?<=5)[0568]|(?<=6)[0123568]|(?<=7)[0123456789]|(?<=8)[012346789]|(?<=9)[01235678])|(?<=7)[012345678]((?<=0)[15]|(?<=1)[01234567]|(?<=2)[012345789]|(?<=3)[012346789]|(?<=4)[1245678]|(?<=5)[0234679]|(?<=6)[0123457]|(?<=7)[0123456789]|(?<=8)[0134])|(?<=8)[0234567]((?<=0)[1]|(?<=2)[1345789]|(?<=3)[124]|(?<=4)[0156789]|(?<=5)[1367]|(?<=6)[0134568]|(?<=7)[0])|(?<=9)[023456]((?<=0)[124569]|(?<=2)[0123456789]|(?<=3)[0145678]|(?<=4)[02345689]|(?<=5)[12345678]|(?<=6)[0123]))|(?<=6)[0123456789]((?<=0)[023456]((?<=0)[12]|(?<=2)[02345789]|(?<=3)[0345678]|(?<=4)[015689]|(?<=5)[012345679]|(?<=6)[136])|(?<=1)[01234567]((?<=0)[125]|(?<=1)[01234567]|(?<=2)[013457]|(?<=3)[0123467]|(?<=4)[0123568]|(?<=5)[01345679]|(?<=6)[01]|(?<=7)[2])|(?<=2)[0123456]((?<=0)[1]|(?<=1)[0123478]|(?<=2)[0234689]|(?<=3)[0235689]|(?<=4)[0245689]|(?<=5)[0345689]|(?<=6)[023])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[1234679]|(?<=2)[1236789]|(?<=3)[12345]|(?<=4)[01234567]|(?<=5)[01234]|(?<=6)[01245]|(?<=7)[01234])|(?<=4)[012347]((?<=0)[1234567]|(?<=1)[012567]|(?<=2)[01234678]|(?<=3)[034568]|(?<=4)[01234]|(?<=7)[5])|(?<=5)[01456]((?<=0)[123456789]|(?<=1)[01]|(?<=4)[6]|(?<=5)[0]|(?<=6)[3])|(?<=6)[0123456789]((?<=0)[12]|(?<=1)[13679]|(?<=2)[0123457]|(?<=3)[013456789]|(?<=4)[015678]|(?<=5)[01245679]|(?<=6)[12456789]|(?<=7)[012345789]|(?<=8)[0234569]|(?<=9)[123459])|(?<=7)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[0123458]|(?<=4)[0345689]|(?<=5)[0])|(?<=8)[02345678]((?<=0)[123]|(?<=2)[012356789]|(?<=3)[023456789]|(?<=4)[01345789]|(?<=5)[12345689]|(?<=6)[0134568]|(?<=7)[012456789]|(?<=8)[12])|(?<=9)[012345]((?<=0)[1]|(?<=1)[012457]|(?<=2)[012356789]|(?<=3)[02356789]|(?<=4)[0123678]|(?<=5)[0]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[2345679]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[01345678]|(?<=8)[0124678]|(?<=9)[034789])|(?<=1)[012]((?<=0)[12349]|(?<=1)[0123]|(?<=2)[0])|(?<=2)[01234567]((?<=0)[12]|(?<=1)[01234579]|(?<=2)[01234589]|(?<=3)[2356789]|(?<=4)[0134679]|(?<=5)[0123457]|(?<=6)[012345678]|(?<=7)[1])|(?<=3)[01234567]((?<=0)[1234679]|(?<=1)[13456789]|(?<=2)[01234579]|(?<=3)[19]|(?<=4)[0234579]|(?<=5)[02356]|(?<=6)[01234568]|(?<=7)[012])|(?<=4)[0]((?<=0)[1234678])|(?<=5)[012345678]((?<=0)[12456789]|(?<=1)[26789]|(?<=2)[0279]|(?<=3)[24568]|(?<=4)[0357]|(?<=5)[012457]|(?<=6)[0235689]|(?<=7)[02689]|(?<=8)[124])|(?<=6)[0]((?<=0)[1236])|(?<=7)[0234567]((?<=0)[12]|(?<=2)[0134789]|(?<=3)[0179]|(?<=4)[0245789]|(?<=5)[012468]|(?<=6)[0234589]|(?<=7)[1246789])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[02345]|(?<=2)[0123479]|(?<=3)[024567]|(?<=4)[0124567]|(?<=5)[01356789]|(?<=6)[01245678]|(?<=7)[0268]|(?<=8)[01456789])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[012359]|(?<=3)[0134568]|(?<=4)[1345689]|(?<=5)[123479]|(?<=6)[0134578]|(?<=7)[024689]|(?<=8)[01235]))|(?<=8)[0123456789]((?<=0)[123456789]((?<=1)[1234578]|(?<=2)[0]|(?<=3)[01245678]|(?<=4)[012569]|(?<=5)[12345689]|(?<=6)[2345679]|(?<=7)[012346789]|(?<=8)[0135678]|(?<=9)[12])|(?<=1)[09]((?<=0)[123469]|(?<=9)[5])|(?<=2)[012345]((?<=0)[12]|(?<=1)[0124689]|(?<=2)[0123459]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[02456])|(?<=3)[0234567]((?<=0)[12]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0234679]|(?<=5)[0134567]|(?<=6)[0]|(?<=7)[012])|(?<=4)[01234567]((?<=0)[357]|(?<=1)[134579]|(?<=2)[014568]|(?<=3)[013456789]|(?<=4)[0134567]|(?<=5)[12345678]|(?<=6)[01234569]|(?<=7)[0123])|(?<=5)[01]((?<=0)[345789]|(?<=1)[02789])|(?<=6)[0123456]((?<=0)[23]|(?<=1)[02456789]|(?<=2)[123456789]|(?<=3)[012456]|(?<=4)[01234]|(?<=5)[1567]|(?<=6)[01])|(?<=7)[0]((?<=0)[12456789])|(?<=8)[012345]((?<=0)[1]|(?<=1)[024678]|(?<=2)[012345689]|(?<=3)[012347]|(?<=4)[02345678]|(?<=5)[0134])|(?<=9)[012345678]((?<=0)[12]|(?<=1)[23457]|(?<=2)[013579]|(?<=3)[023568]|(?<=4)[02467]|(?<=5)[0145]|(?<=6)[02469]|(?<=7)[02467]|(?<=8)[0]))|(?<=9)[013456789]((?<=0)[0123456789]((?<=0)[12346789]|(?<=1)[0234578]|(?<=2)[01235679]|(?<=3)[01234568]|(?<=4)[013467]|(?<=5)[0234567]|(?<=6)[013467]|(?<=7)[02345689]|(?<=8)[123567]|(?<=9)[0456])|(?<=1)[012345]((?<=0)[2346789]|(?<=1)[12345689]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[01234])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[012679]|(?<=2)[0]|(?<=3)[035]|(?<=4)[123458]|(?<=5)[0258]|(?<=6)[23579]|(?<=7)[2345]|(?<=8)[023]|(?<=9)[0])|(?<=4)[02345679]((?<=0)[1356]|(?<=2)[2568]|(?<=3)[5678]|(?<=4)[0246]|(?<=5)[3467]|(?<=6)[02458]|(?<=7)[23457]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[1345678]|(?<=1)[01268]|(?<=2)[023569]|(?<=3)[0345689]|(?<=4)[0134579]|(?<=5)[01459]|(?<=6)[02457])|(?<=6)[01]((?<=0)[12456789]|(?<=1)[01])|(?<=7)[0123]((?<=0)[123679]|(?<=1)[01367]|(?<=2)[0]|(?<=3)[0123456])|(?<=8)[01]((?<=0)[123456789]|(?<=1)[0])|(?<=9)[0345678]((?<=0)[124]|(?<=3)[0134689]|(?<=4)[0134567]|(?<=5)[01234568]|(?<=6)[0234678]|(?<=7)[013579]|(?<=8)[0])))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[04]|(?<=3)[267]|(?<=4)[5]|(?<=5)[279]|(?<=6)[4])|(?<=1)[0123456789]((?<=0)[569]|(?<=1)[012579]|(?<=2)[0149]|(?<=3)[02567]|(?<=4)[13478]|(?<=5)[1258]|(?<=6)[4569]|(?<=7)[0156]|(?<=8)[01467]|(?<=9)[01478])|(?<=2)[023456]((?<=0)[4]|(?<=2)[0]|(?<=3)[0]|(?<=4)[05]|(?<=5)[0]|(?<=6)[0])|(?<=3)[1789]((?<=1)[79]|(?<=7)[3]|(?<=8)[8]|(?<=9)[0])|(?<=4)[0123]((?<=0)[8]|(?<=1)[58]|(?<=2)[27]|(?<=3)[1])|(?<=5)[1234569]((?<=1)[05]|(?<=2)[0]|(?<=3)[05]|(?<=4)[02]|(?<=5)[1]|(?<=6)[056]|(?<=9)[1])|(?<=6)[0123456789]((?<=0)[1236789]|(?<=1)[12356789]|(?<=2)[012345689]|(?<=3)[024679]|(?<=4)[056]|(?<=5)[036789]|(?<=6)[01247]|(?<=7)[045678]|(?<=8)[0456789]|(?<=9)[0235])|(?<=7)[0123456789]((?<=0)[15678]|(?<=1)[012456]|(?<=2)[01234]|(?<=3)[23567]|(?<=4)[02345678]|(?<=5)[14589]|(?<=6)[23459]|(?<=7)[01246789]|(?<=8)[12345]|(?<=9)[4])|(?<=8)[13456789]((?<=1)[245678]|(?<=3)[23789]|(?<=4)[12]|(?<=5)[012345]|(?<=6)[01268]|(?<=7)[1246789]|(?<=8)[0269]|(?<=9)[24569])|(?<=9)[01]((?<=0)[123456]|(?<=1)[02]))|(?<=1)[012456789]((?<=0)[0123456789]((?<=0)[159]|(?<=1)[023457]|(?<=2)[389]|(?<=3)[0124567]|(?<=4)[02345678]|(?<=5)[0123467]|(?<=6)[01]|(?<=7)[145678]|(?<=8)[2457]|(?<=9)[03])|(?<=1)[0123456]((?<=0)[2458]|(?<=1)[1347]|(?<=2)[028]|(?<=3)[01236]|(?<=4)[046]|(?<=5)[2345678]|(?<=6)[0123])|(?<=2)[0123458]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0134679]|(?<=4)[04]|(?<=5)[012]|(?<=8)[567])|(?<=4)[0]((?<=0)[12359])|(?<=5)[023456]((?<=0)[2]|(?<=2)[01349]|(?<=3)[012689]|(?<=4)[01235]|(?<=5)[057]|(?<=6)[012])|(?<=6)[01234567]((?<=0)[17]|(?<=1)[02379]|(?<=2)[023456789]|(?<=3)[1245689]|(?<=4)[01345789]|(?<=5)[012345789]|(?<=6)[0123456789]|(?<=7)[12356789])|(?<=7)[0123456789]((?<=0)[12345]|(?<=1)[013456789]|(?<=2)[237]|(?<=3)[3478]|(?<=4)[026]|(?<=5)[045678]|(?<=6)[2679]|(?<=7)[01346789]|(?<=8)[0123478]|(?<=9)[0134578])|(?<=8)[012345679]((?<=0)[14]|(?<=1)[01347]|(?<=2)[12469]|(?<=3)[0578]|(?<=4)[0129]|(?<=5)[0136]|(?<=6)[12345679]|(?<=7)[1245]|(?<=9)[0])|(?<=9)[0123]((?<=0)[1234]|(?<=1)[12345789]|(?<=2)[01]|(?<=3)[0]))|(?<=2)[0123456789]((?<=0)[0123467]((?<=0)[3]|(?<=1)[5]|(?<=2)[567]|(?<=3)[012359]|(?<=4)[12346]|(?<=6)[06]|(?<=7)[9])|(?<=1)[0235789]((?<=0)[12]|(?<=2)[45]|(?<=3)[4]|(?<=5)[0123]|(?<=7)[2]|(?<=8)[012]|(?<=9)[123])|(?<=2)[01]((?<=0)[12345679]|(?<=1)[134])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[01245])|(?<=4)[02345678]((?<=0)[15678]|(?<=2)[7]|(?<=3)[235678]|(?<=4)[38]|(?<=5)[4]|(?<=6)[09]|(?<=7)[236]|(?<=8)[0258])|(?<=5)[012345678]((?<=0)[3489]|(?<=1)[14]|(?<=2)[09]|(?<=3)[4589]|(?<=4)[268]|(?<=5)[1346]|(?<=6)[07]|(?<=7)[268]|(?<=8)[0])|(?<=6)[0123456]((?<=0)[123]|(?<=1)[01]|(?<=2)[03457]|(?<=3)[079]|(?<=4)[0123456]|(?<=5)[024567]|(?<=6)[034])|(?<=7)[01234]((?<=0)[19]|(?<=1)[12345689]|(?<=2)[023456789]|(?<=3)[012345678]|(?<=4)[0123679])|(?<=8)[012345]((?<=0)[127]|(?<=1)[0125]|(?<=2)[0147]|(?<=3)[01245]|(?<=4)[012345679]|(?<=5)[013])|(?<=9)[012345678]((?<=0)[12348]|(?<=1)[1]|(?<=2)[023]|(?<=3)[1256789]|(?<=4)[0236789]|(?<=5)[2789]|(?<=6)[034789]|(?<=7)[12346]|(?<=8)[09]))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[2459]|(?<=1)[15]|(?<=2)[123457]|(?<=3)[02589]|(?<=4)[0357]|(?<=5)[0569]|(?<=6)[01235689]|(?<=7)[012569]|(?<=8)[134569]|(?<=9)[123])|(?<=1)[0123456789]((?<=0)[23689]|(?<=1)[01234679]|(?<=2)[034689]|(?<=3)[089]|(?<=4)[016789]|(?<=5)[036]|(?<=6)[01389]|(?<=7)[3567]|(?<=8)[0158]|(?<=9)[2])|(?<=2)[123589]((?<=1)[9]|(?<=2)[0123456789]|(?<=3)[01345678]|(?<=5)[0]|(?<=8)[4]|(?<=9)[48])|(?<=3)[01234589]((?<=0)[1234678]|(?<=1)[0456]|(?<=2)[012345]|(?<=3)[67]|(?<=4)[7]|(?<=5)[046789]|(?<=8)[9]|(?<=9)[58])|(?<=4)[01234568]((?<=0)[15789]|(?<=1)[0345678]|(?<=2)[012367]|(?<=3)[02345678]|(?<=4)[012]|(?<=5)[12345679]|(?<=6)[0124]|(?<=8)[0678])|(?<=5)[0125]((?<=0)[2345789]|(?<=1)[01378]|(?<=2)[3]|(?<=5)[1])|(?<=6)[05689]((?<=0)[12345678]|(?<=5)[1]|(?<=6)[123456789]|(?<=8)[1]|(?<=9)[01236])|(?<=7)[0]((?<=0)[1234789])|(?<=8)[023456789]((?<=0)[135]|(?<=2)[14789]|(?<=3)[012346789]|(?<=4)[01234567]|(?<=5)[0167]|(?<=6)[0678]|(?<=7)[0245689]|(?<=8)[12345789]|(?<=9)[0134789])|(?<=9)[01234567]((?<=0)[19]|(?<=1)[579]|(?<=2)[012347]|(?<=3)[04678]|(?<=4)[2347]|(?<=5)[024589]|(?<=6)[0234678]|(?<=7)[046]))|(?<=4)[0123456789]((?<=0)[1256789]((?<=1)[123456789]|(?<=2)[02]|(?<=5)[34589]|(?<=6)[0145679]|(?<=7)[0236789]|(?<=8)[23456789]|(?<=9)[01235])|(?<=1)[012345678]((?<=0)[1245]|(?<=1)[2]|(?<=2)[0124789]|(?<=3)[12346789]|(?<=4)[12789]|(?<=5)[013]|(?<=6)[12578]|(?<=7)[14569]|(?<=8)[45])|(?<=2)[0123456789]((?<=0)[12]|(?<=1)[01679]|(?<=2)[014568]|(?<=3)[0679]|(?<=4)[34568]|(?<=5)[0168]|(?<=6)[03569]|(?<=7)[012379]|(?<=8)[0123]|(?<=9)[023])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[2345678]|(?<=3)[03]|(?<=4)[0378]|(?<=5)[0124]|(?<=6)[01368]|(?<=7)[04578]|(?<=8)[012])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[12356]|(?<=2)[126]|(?<=3)[0123579]|(?<=4)[01258]|(?<=5)[0789]|(?<=6)[04579]|(?<=7)[1234679]|(?<=8)[234567])|(?<=5)[0123456789]((?<=0)[1234]|(?<=1)[57]|(?<=2)[01236789]|(?<=3)[014689]|(?<=4)[019]|(?<=5)[01345678]|(?<=6)[23569]|(?<=7)[0124789]|(?<=8)[01689]|(?<=9)[02345789])|(?<=6)[012345]((?<=0)[12345679]|(?<=1)[234]|(?<=2)[02]|(?<=3)[014579]|(?<=4)[169]|(?<=5)[167])|(?<=7)[01234]((?<=0)[1]|(?<=1)[24569]|(?<=2)[469]|(?<=3)[136789]|(?<=4)[07])|(?<=8)[0123456789]((?<=0)[18]|(?<=1)[135678]|(?<=2)[23678]|(?<=3)[01469]|(?<=4)[3456789]|(?<=5)[013457]|(?<=6)[0126789]|(?<=7)[0123489]|(?<=8)[012478]|(?<=9)[2458])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[0568]|(?<=2)[0457]|(?<=3)[1458]|(?<=4)[13456]|(?<=5)[147]|(?<=6)[236]|(?<=7)[0467]|(?<=8)[13456]|(?<=9)[13]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[235789]|(?<=1)[159]|(?<=2)[12458]|(?<=3)[013569]|(?<=4)[0345789]|(?<=5)[13479]|(?<=6)[012347]|(?<=7)[0156]|(?<=8)[123568]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[236789]|(?<=1)[01234589]|(?<=2)[13456]|(?<=3)[023469]|(?<=4)[012389]|(?<=5)[2469]|(?<=6)[0124589]|(?<=7)[347]|(?<=8)[013567]|(?<=9)[3])|(?<=2)[01345678]((?<=0)[12345689]|(?<=1)[134]|(?<=3)[1459]|(?<=4)[134578]|(?<=5)[1239]|(?<=6)[01245678]|(?<=7)[0156]|(?<=8)[567])|(?<=3)[0128]((?<=0)[1234569]|(?<=1)[12345]|(?<=2)[0]|(?<=8)[7])|(?<=4)[01234]((?<=0)[1345]|(?<=1)[1349]|(?<=2)[012578]|(?<=3)[012478]|(?<=4)[2346])|(?<=5)[01234567]((?<=0)[12345678]|(?<=1)[012457]|(?<=2)[013469]|(?<=3)[0457]|(?<=4)[01457]|(?<=5)[0579]|(?<=6)[0457]|(?<=7)[013])|(?<=6)[0123456789]((?<=0)[1678]|(?<=1)[127]|(?<=2)[1458]|(?<=3)[0245789]|(?<=4)[4679]|(?<=5)[01234]|(?<=6)[1679]|(?<=7)[012468]|(?<=8)[58]|(?<=9)[0269])|(?<=7)[05]((?<=0)[12345]|(?<=5)[5])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[012378]|(?<=2)[03567]|(?<=3)[12679]|(?<=4)[01345689]|(?<=5)[13457]|(?<=6)[24568]|(?<=7)[0135689]|(?<=8)[02])|(?<=9)[012345678]((?<=0)[124789]|(?<=1)[135678]|(?<=2)[0128]|(?<=3)[268]|(?<=4)[23]|(?<=5)[18]|(?<=6)[269]|(?<=7)[126789]|(?<=8)[14569]))|(?<=6)[012345678]((?<=0)[034567]((?<=0)[3]|(?<=3)[0123456789]|(?<=4)[017]|(?<=5)[05689]|(?<=6)[02]|(?<=7)[045])|(?<=1)[0345678]((?<=0)[145]|(?<=3)[34678]|(?<=4)[1236789]|(?<=5)[01259]|(?<=6)[012479]|(?<=7)[058]|(?<=8)[0147])|(?<=2)[0123456789]((?<=0)[1235689]|(?<=1)[0578]|(?<=2)[248]|(?<=3)[04678]|(?<=4)[1]|(?<=5)[03479]|(?<=6)[01346789]|(?<=7)[013568]|(?<=8)[0235789]|(?<=9)[123468])|(?<=3)[02345678]((?<=0)[1]|(?<=2)[01357]|(?<=3)[05789]|(?<=4)[236789]|(?<=5)[14]|(?<=6)[1269]|(?<=7)[24678]|(?<=8)[456])|(?<=4)[0123456]((?<=0)[458]|(?<=1)[012569]|(?<=2)[12456]|(?<=3)[015678]|(?<=4)[03478]|(?<=5)[126]|(?<=6)[3])|(?<=5)[0123456789]((?<=0)[1568]|(?<=1)[9]|(?<=2)[0145]|(?<=3)[47]|(?<=4)[123467]|(?<=5)[49]|(?<=6)[0238]|(?<=7)[012456]|(?<=8)[125678]|(?<=9)[01])|(?<=6)[012356789]((?<=0)[1]|(?<=1)[01579]|(?<=2)[13479]|(?<=3)[168]|(?<=5)[16]|(?<=6)[027]|(?<=7)[1689]|(?<=8)[014]|(?<=9)[01])|(?<=7)[0123456]((?<=0)[457]|(?<=1)[014679]|(?<=2)[026]|(?<=3)[19]|(?<=4)[3]|(?<=5)[0357]|(?<=6)[1347])|(?<=8)[01234568]((?<=0)[12478]|(?<=1)[024578]|(?<=2)[3]|(?<=3)[368]|(?<=4)[57]|(?<=5)[125]|(?<=6)[56]|(?<=8)[46]))|(?<=7)[0123456789]((?<=0)[012345]((?<=0)[679]|(?<=1)[12346789]|(?<=2)[01234578]|(?<=3)[0]|(?<=4)[01235678]|(?<=5)[012345])|(?<=1)[012]((?<=0)[1345679]|(?<=1)[0]|(?<=2)[7])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[23457]|(?<=2)[9]|(?<=3)[1359]|(?<=4)[234789]|(?<=5)[23689]|(?<=6)[02358]|(?<=7)[8]|(?<=8)[12348]|(?<=9)[12589])|(?<=3)[01234567]((?<=0)[1256]|(?<=1)[01234567]|(?<=2)[056]|(?<=3)[02]|(?<=4)[012349]|(?<=5)[015678]|(?<=6)[0]|(?<=7)[014679])|(?<=4)[015]((?<=0)[1356789]|(?<=1)[012]|(?<=5)[5])|(?<=5)[0123456789]((?<=0)[123456789]|(?<=1)[01346789]|(?<=2)[012345679]|(?<=3)[0134679]|(?<=4)[0124569]|(?<=5)[135679]|(?<=6)[023589]|(?<=7)[0123467]|(?<=8)[123479]|(?<=9)[1234679])|(?<=6)[019]((?<=0)[13456789]|(?<=1)[0234567]|(?<=9)[57])|(?<=7)[01]((?<=0)[1345789]|(?<=1)[23])|(?<=8)[0123456789]((?<=0)[13456789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[012479]|(?<=4)[012345679]|(?<=5)[01235678]|(?<=6)[01234569]|(?<=7)[0123456789]|(?<=8)[012345689]|(?<=9)[012367])|(?<=9)[012345678]((?<=0)[9]|(?<=1)[05679]|(?<=2)[0123456789]|(?<=3)[256789]|(?<=4)[12346789]|(?<=5)[0346789]|(?<=6)[02456789]|(?<=7)[0234689]|(?<=8)[012356]))|(?<=8)[0123456789]((?<=0)[012345789]((?<=0)[1679]|(?<=1)[26789]|(?<=2)[013457]|(?<=3)[1234679]|(?<=4)[0123]|(?<=5)[246]|(?<=7)[123456789]|(?<=8)[013689]|(?<=9)[01278])|(?<=1)[01234567]((?<=0)[12345789]|(?<=1)[024579]|(?<=2)[045789]|(?<=3)[3456789]|(?<=4)[467]|(?<=5)[029]|(?<=6)[0346789]|(?<=7)[034])|(?<=2)[0124678]((?<=0)[23456789]|(?<=1)[01234567]|(?<=2)[367]|(?<=4)[4]|(?<=6)[29]|(?<=7)[03478]|(?<=8)[02])|(?<=3)[0123456789]((?<=0)[1345678]|(?<=1)[012458]|(?<=2)[035678]|(?<=3)[01234789]|(?<=4)[012345789]|(?<=5)[01256789]|(?<=6)[023456789]|(?<=7)[123456789]|(?<=8)[234567]|(?<=9)[012345689])|(?<=4)[012345678]((?<=0)[1359]|(?<=1)[12]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[12345789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0289]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[1489]|(?<=1)[01235689]|(?<=2)[013456789]|(?<=3)[0123789]|(?<=4)[023467]|(?<=5)[1234567]|(?<=6)[02]|(?<=7)[012345789]|(?<=8)[01245679]|(?<=9)[04])|(?<=6)[0123456789]((?<=0)[1245679]|(?<=1)[012356789]|(?<=2)[123456789]|(?<=3)[0145678]|(?<=4)[01234569]|(?<=5)[012345789]|(?<=6)[023456789]|(?<=7)[012356789]|(?<=8)[123459]|(?<=9)[023478])|(?<=7)[0123456789]((?<=0)[1245789]|(?<=1)[0123456789]|(?<=2)[0123569]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[123456789]|(?<=6)[12368]|(?<=7)[012345789]|(?<=8)[12356789]|(?<=9)[012])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0]((?<=0)[124569]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[1369]|(?<=1)[04568]|(?<=2)[0]|(?<=3)[01236789]|(?<=4)[0245678]|(?<=5)[12345689]|(?<=6)[123579]|(?<=7)[0234589]|(?<=8)[012])|(?<=1)[012345678]((?<=0)[124578]|(?<=1)[1234578]|(?<=2)[2356789]|(?<=3)[03578]|(?<=4)[2568]|(?<=5)[0234]|(?<=6)[01234689]|(?<=7)[02578]|(?<=8)[0])|(?<=2)[012]((?<=0)[13456789]|(?<=1)[02]|(?<=2)[359])|(?<=3)[012345678]((?<=0)[12367]|(?<=1)[6]|(?<=2)[0123459]|(?<=3)[0123458]|(?<=4)[0169]|(?<=5)[1356]|(?<=6)[04589]|(?<=7)[023456789]|(?<=8)[458])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[0248]|(?<=2)[04569]|(?<=3)[12456789]|(?<=4)[05689]|(?<=5)[0123568]|(?<=6)[14689]|(?<=7)[0124579]|(?<=8)[1235678]|(?<=9)[23])|(?<=5)[0123456789]((?<=0)[156]|(?<=1)[012689]|(?<=2)[0567]|(?<=3)[026]|(?<=4)[0134567]|(?<=5)[0456]|(?<=6)[03456789]|(?<=7)[01245679]|(?<=8)[01234589]|(?<=9)[012346])|(?<=6)[0123456789]((?<=0)[1579]|(?<=1)[13457]|(?<=2)[0145678]|(?<=3)[014589]|(?<=4)[0234569]|(?<=5)[01345789]|(?<=6)[1245679]|(?<=7)[012368]|(?<=8)[012345679]|(?<=9)[012367])|(?<=7)[01234]((?<=0)[246789]|(?<=1)[024578]|(?<=2)[046789]|(?<=3)[023]|(?<=4)[1235])|(?<=8)[01234569]((?<=0)[1359]|(?<=1)[02679]|(?<=2)[146789]|(?<=3)[124568]|(?<=4)[012345789]|(?<=5)[136]|(?<=6)[0]|(?<=9)[9])|(?<=9)[01234]((?<=0)[245679]|(?<=1)[012568]|(?<=2)[012346789]|(?<=3)[24569]|(?<=4)[01345])))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24589]|(?<=1)[12346789]|(?<=2)[12458]|(?<=3)[0234589]|(?<=4)[0134567]|(?<=5)[24568]|(?<=6)[024678]|(?<=7)[0125689]|(?<=8)[023478]|(?<=9)[023467])|(?<=1)[012345678]((?<=0)[12345678]|(?<=1)[01345678]|(?<=2)[0124567]|(?<=3)[24579]|(?<=4)[1345789]|(?<=5)[237]|(?<=6)[158]|(?<=7)[01356789]|(?<=8)[02345789])|(?<=2)[0123456789]((?<=0)[456]|(?<=1)[345678]|(?<=2)[023489]|(?<=3)[03468]|(?<=4)[018]|(?<=5)[01236789]|(?<=6)[03589]|(?<=7)[234567]|(?<=8)[145689]|(?<=9)[01234567])|(?<=3)[0123456]((?<=0)[356789]|(?<=1)[0123456789]|(?<=2)[246789]|(?<=3)[1246789]|(?<=4)[0124569]|(?<=5)[04]|(?<=6)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123457]|(?<=2)[01356789]|(?<=3)[469]|(?<=4)[125689]|(?<=5)[012345678]|(?<=6)[0147]|(?<=7)[01347])|(?<=5)[0123456789]((?<=0)[1467]|(?<=1)[01236789]|(?<=2)[01235789]|(?<=3)[013456789]|(?<=4)[012356789]|(?<=5)[2345789]|(?<=6)[02345678]|(?<=7)[123567]|(?<=8)[12]|(?<=9)[78])|(?<=6)[012345678]((?<=0)[125679]|(?<=1)[9]|(?<=2)[012345789]|(?<=3)[013459]|(?<=4)[12368]|(?<=5)[056]|(?<=6)[023456789]|(?<=7)[378]|(?<=8)[03])|(?<=7)[012345]((?<=0)[1578]|(?<=1)[01]|(?<=2)[014568]|(?<=3)[01345689]|(?<=4)[01267]|(?<=5)[0123567])|(?<=8)[0123]((?<=0)[235789]|(?<=1)[02345678]|(?<=2)[012348]|(?<=3)[03])|(?<=9)[01]((?<=0)[145679]|(?<=1)[2]))|(?<=1)[023456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[12456789]|(?<=2)[012345789]|(?<=3)[0123456789]|(?<=4)[1245679]|(?<=5)[0124578]|(?<=6)[0123456789]|(?<=7)[01256789]|(?<=8)[12345789]|(?<=9)[01234678])|(?<=2)[012]((?<=0)[1467]|(?<=1)[01367]|(?<=2)[0])|(?<=3)[0123]((?<=0)[1235789]|(?<=1)[234568]|(?<=2)[012346789]|(?<=3)[13])|(?<=4)[012]((?<=0)[1456789]|(?<=1)[0159]|(?<=2)[1])|(?<=5)[01234569]((?<=0)[13]|(?<=1)[023689]|(?<=2)[023457]|(?<=3)[23579]|(?<=4)[23456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=9)[9])|(?<=6)[023459]((?<=0)[1256]|(?<=2)[02345679]|(?<=3)[012456789]|(?<=4)[1235789]|(?<=5)[0]|(?<=9)[89])|(?<=7)[0123456789]((?<=0)[14579]|(?<=1)[12469]|(?<=2)[0127]|(?<=3)[0358]|(?<=4)[3479]|(?<=5)[0367]|(?<=6)[3458]|(?<=7)[1234589]|(?<=8)[0134789]|(?<=9)[01234568])|(?<=8)[0123]((?<=0)[1345678]|(?<=1)[012456]|(?<=2)[012345679]|(?<=3)[01236])|(?<=9)[0]((?<=0)[1345679]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[389]|(?<=1)[13]|(?<=2)[456]|(?<=3)[348]|(?<=4)[0346]|(?<=5)[234589]|(?<=6)[01234568]|(?<=7)[1239]|(?<=8)[0123467]|(?<=9)[124567])|(?<=1)[0123456789]((?<=0)[2]|(?<=1)[0234789]|(?<=2)[4789]|(?<=3)[01234679]|(?<=4)[01578]|(?<=5)[79]|(?<=6)[23489]|(?<=7)[4679]|(?<=8)[01279]|(?<=9)[0235])|(?<=2)[01234567]((?<=0)[23456789]|(?<=1)[01246789]|(?<=2)[012345678]|(?<=3)[34]|(?<=4)[46]|(?<=5)[046789]|(?<=6)[6]|(?<=7)[7])|(?<=3)[01234569]((?<=0)[13456789]|(?<=1)[01237]|(?<=2)[0123478]|(?<=3)[0123467]|(?<=4)[034678]|(?<=5)[0125689]|(?<=6)[01]|(?<=9)[9])|(?<=4)[0123456]((?<=0)[1345789]|(?<=1)[03]|(?<=2)[01345678]|(?<=3)[01235789]|(?<=4)[02345689]|(?<=5)[569]|(?<=6)[0123456])|(?<=5)[012345678]((?<=0)[123456789]|(?<=1)[124]|(?<=2)[6]|(?<=3)[0134569]|(?<=4)[12478]|(?<=5)[0]|(?<=6)[13456789]|(?<=7)[01789]|(?<=8)[03])|(?<=6)[012345689]((?<=0)[1356789]|(?<=1)[0256789]|(?<=2)[12568]|(?<=3)[149]|(?<=4)[0138]|(?<=5)[368]|(?<=6)[46789]|(?<=8)[0136]|(?<=9)[23467])|(?<=7)[0123456789]((?<=0)[123789]|(?<=1)[234]|(?<=2)[03456]|(?<=3)[02568]|(?<=4)[46]|(?<=5)[01479]|(?<=6)[345678]|(?<=7)[135689]|(?<=8)[049]|(?<=9)[268])|(?<=8)[01239]((?<=0)[13456789]|(?<=1)[01246789]|(?<=2)[012456789]|(?<=3)[01235679]|(?<=9)[9])|(?<=9)[0234567]((?<=0)[1345789]|(?<=2)[02567]|(?<=3)[1457]|(?<=4)[089]|(?<=5)[0123589]|(?<=6)[023678]|(?<=7)[06]))|(?<=3)[013456789]((?<=0)[01234567]((?<=0)[149]|(?<=1)[02345689]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[023]|(?<=5)[01456]|(?<=6)[023456789]|(?<=7)[0136])|(?<=1)[023456789]((?<=0)[19]|(?<=2)[256789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[045678]|(?<=6)[01256789]|(?<=7)[023456789]|(?<=8)[012345679]|(?<=9)[0346])|(?<=3)[012358]((?<=0)[145689]|(?<=1)[12345679]|(?<=2)[12345678]|(?<=3)[0124]|(?<=5)[1]|(?<=8)[8])|(?<=4)[0123456789]((?<=0)[13456789]|(?<=1)[01234578]|(?<=2)[68]|(?<=3)[012345678]|(?<=4)[0124569]|(?<=5)[58]|(?<=6)[012379]|(?<=7)[0123678]|(?<=8)[03467]|(?<=9)[368])|(?<=5)[0123456789]((?<=0)[3]|(?<=1)[0134]|(?<=2)[1357]|(?<=3)[048]|(?<=4)[012345789]|(?<=5)[0689]|(?<=6)[35679]|(?<=7)[0234689]|(?<=8)[45]|(?<=9)[24678])|(?<=6)[01234]((?<=0)[2345679]|(?<=1)[0123456789]|(?<=2)[014569]|(?<=3)[457]|(?<=4)[7])|(?<=7)[0145678]((?<=0)[123456789]|(?<=1)[0123456]|(?<=4)[4]|(?<=5)[569]|(?<=6)[0123457]|(?<=7)[01234678]|(?<=8)[1256])|(?<=8)[0123456789]((?<=0)[1359]|(?<=1)[01235]|(?<=2)[357]|(?<=3)[045789]|(?<=4)[0134789]|(?<=5)[0123456789]|(?<=6)[0578]|(?<=7)[023567]|(?<=8)[014]|(?<=9)[0678])|(?<=9)[0123456789]((?<=0)[1345789]|(?<=1)[234679]|(?<=2)[01248]|(?<=3)[0156]|(?<=4)[4678]|(?<=5)[0234567]|(?<=6)[0567]|(?<=7)[12346]|(?<=8)[0123]|(?<=9)[013]))|(?<=4)[124679]((?<=1)[01234]((?<=0)[1234589]|(?<=1)[0234679]|(?<=2)[0]|(?<=3)[45789]|(?<=4)[0125])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[0125679]|(?<=2)[123489]|(?<=3)[123456789]|(?<=4)[0123]|(?<=5)[01]|(?<=6)[6789]|(?<=7)[5]|(?<=8)[56789]|(?<=9)[123])|(?<=4)[23456789]((?<=2)[089]|(?<=3)[12346]|(?<=4)[25689]|(?<=5)[023]|(?<=6)[15]|(?<=7)[01234569]|(?<=8)[012478]|(?<=9)[18])|(?<=6)[01356789]((?<=0)[1246789]|(?<=1)[034]|(?<=3)[789]|(?<=5)[2345]|(?<=6)[1789]|(?<=7)[79]|(?<=8)[134589]|(?<=9)[0158])|(?<=7)[0123456789]((?<=0)[5]|(?<=1)[145]|(?<=2)[9]|(?<=3)[14679]|(?<=4)[134678]|(?<=5)[3689]|(?<=6)[0129]|(?<=7)[123]|(?<=8)[5678]|(?<=9)[7])|(?<=9)[45789]((?<=4)[5679]|(?<=5)[012367]|(?<=7)[24]|(?<=8)[123467]|(?<=9)[0467]))|(?<=5)[012456789]((?<=0)[0123456789]((?<=0)[4567]|(?<=1)[03469]|(?<=2)[023]|(?<=3)[123456]|(?<=4)[0234569]|(?<=5)[1234578]|(?<=6)[012348]|(?<=7)[01234789]|(?<=8)[023579]|(?<=9)[14678])|(?<=1)[12345678]((?<=1)[12456789]|(?<=2)[0145678]|(?<=3)[01356]|(?<=4)[36789]|(?<=5)[01]|(?<=6)[0]|(?<=7)[1235689]|(?<=8)[0134568])|(?<=2)[012345]((?<=0)[3456789]|(?<=1)[012345678]|(?<=2)[1234689]|(?<=3)[345]|(?<=4)[2349]|(?<=5)[4])|(?<=4)[0456789]((?<=0)[1456]|(?<=4)[123467]|(?<=5)[236789]|(?<=6)[0123469]|(?<=7)[034567]|(?<=8)[017]|(?<=9)[01])|(?<=5)[0456789]((?<=0)[134]|(?<=4)[012345689]|(?<=5)[023459]|(?<=6)[345]|(?<=7)[0123456789]|(?<=8)[0124567]|(?<=9)[234])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[01345689]|(?<=2)[012]|(?<=3)[0234]|(?<=4)[0356789]|(?<=5)[01234]|(?<=6)[01]|(?<=7)[012347])|(?<=7)[34567]((?<=3)[9]|(?<=4)[01456789]|(?<=5)[012456789]|(?<=6)[01345689]|(?<=7)[123456])|(?<=8)[0129]((?<=0)[123568]|(?<=1)[016]|(?<=2)[4]|(?<=9)[6])|(?<=9)[056789]((?<=0)[134567]|(?<=5)[012346789]|(?<=6)[0123678]|(?<=7)[12345689]|(?<=8)[01346789]|(?<=9)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[35689]|(?<=1)[0367]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[01236789]|(?<=5)[12347]|(?<=6)[4679]|(?<=7)[1589]|(?<=8)[012389]|(?<=9)[123])|(?<=1)[013]((?<=0)[1456789]|(?<=1)[01234567]|(?<=3)[0])|(?<=2)[05678]((?<=0)[13567]|(?<=5)[01568]|(?<=6)[023456789]|(?<=7)[12346789]|(?<=8)[0])|(?<=3)[01234567]((?<=0)[135]|(?<=1)[012346789]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[03456]|(?<=5)[0123]|(?<=6)[02]|(?<=7)[013456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0156]|(?<=3)[2569]|(?<=4)[12456]|(?<=5)[13456]|(?<=6)[07]|(?<=7)[0134567]|(?<=8)[0123])|(?<=5)[012345678]((?<=0)[23579]|(?<=1)[1238]|(?<=2)[123456789]|(?<=3)[02589]|(?<=4)[012345789]|(?<=5)[0135689]|(?<=6)[0124789]|(?<=7)[1245689]|(?<=8)[0123457])|(?<=6)[015689]((?<=0)[23456789]|(?<=1)[01235789]|(?<=5)[2]|(?<=6)[3]|(?<=8)[8]|(?<=9)[35])|(?<=7)[023456789]((?<=0)[13]|(?<=2)[023678]|(?<=3)[268]|(?<=4)[012489]|(?<=5)[01234689]|(?<=6)[13456789]|(?<=7)[356]|(?<=8)[23456]|(?<=9)[023])|(?<=8)[034567]((?<=0)[14]|(?<=3)[02]|(?<=4)[9]|(?<=5)[01234568]|(?<=6)[01235679]|(?<=7)[014579])|(?<=9)[012]((?<=0)[1478]|(?<=1)[023569]|(?<=2)[125]))|(?<=7)[012346789]((?<=0)[123456789]((?<=1)[02345689]|(?<=2)[02356789]|(?<=3)[01234567]|(?<=4)[0236789]|(?<=5)[0125789]|(?<=6)[0124679]|(?<=7)[2345689]|(?<=8)[023567]|(?<=9)[015678])|(?<=1)[0123456789]((?<=0)[1]|(?<=1)[058]|(?<=2)[2789]|(?<=3)[024578]|(?<=4)[012345689]|(?<=5)[013]|(?<=6)[0567]|(?<=7)[124589]|(?<=8)[013456789]|(?<=9)[01])|(?<=2)[0123]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[018]|(?<=3)[28])|(?<=3)[0123456789]((?<=0)[12356789]|(?<=1)[01235678]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[0123578]|(?<=5)[012345679]|(?<=6)[01235679]|(?<=7)[0345679]|(?<=8)[013578]|(?<=9)[14678])|(?<=4)[0125]((?<=0)[23456789]|(?<=1)[012569]|(?<=2)[1]|(?<=5)[0])|(?<=6)[01245689]((?<=0)[14]|(?<=1)[45678]|(?<=2)[0]|(?<=4)[01235]|(?<=5)[06789]|(?<=6)[0345]|(?<=8)[0123678]|(?<=9)[0124])|(?<=7)[01234567]((?<=0)[1589]|(?<=1)[0134569]|(?<=2)[12345679]|(?<=3)[012378]|(?<=4)[2358]|(?<=5)[234567]|(?<=6)[0234569]|(?<=7)[012479])|(?<=8)[0123456789]((?<=0)[134679]|(?<=1)[013489]|(?<=2)[015689]|(?<=3)[0]|(?<=4)[01356789]|(?<=5)[12347]|(?<=6)[0123569]|(?<=7)[012346789]|(?<=8)[0125678]|(?<=9)[012])|(?<=9)[0123]((?<=0)[29]|(?<=1)[2456789]|(?<=2)[012349]|(?<=3)[1248]))|(?<=8)[0123456789]((?<=0)[012345678]((?<=0)[124678]|(?<=1)[1256789]|(?<=2)[13489]|(?<=3)[04679]|(?<=4)[0124679]|(?<=5)[0234789]|(?<=6)[0136789]|(?<=7)[05679]|(?<=8)[0])|(?<=1)[012345]((?<=0)[3456789]|(?<=1)[123456789]|(?<=2)[025678]|(?<=3)[1234589]|(?<=4)[1]|(?<=5)[2])|(?<=2)[023456]((?<=0)[1]|(?<=2)[0124569]|(?<=3)[0123567]|(?<=4)[012]|(?<=5)[13456789]|(?<=6)[01])|(?<=3)[0123456789]((?<=0)[15]|(?<=1)[0135678]|(?<=2)[016789]|(?<=3)[0234789]|(?<=4)[01234578]|(?<=5)[1256789]|(?<=6)[12356789]|(?<=7)[0124569]|(?<=8)[012789]|(?<=9)[012])|(?<=4)[0245678]((?<=0)[1]|(?<=2)[5]|(?<=4)[9]|(?<=5)[012345679]|(?<=6)[0123489]|(?<=7)[12345678]|(?<=8)[1235678])|(?<=5)[045678]((?<=0)[13456]|(?<=4)[12345789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[012345789]|(?<=8)[01235789])|(?<=6)[012345678]((?<=0)[136]|(?<=1)[014789]|(?<=2)[01235679]|(?<=3)[123579]|(?<=4)[1234567]|(?<=5)[0124589]|(?<=6)[134568]|(?<=7)[0123467]|(?<=8)[035])|(?<=7)[02345678]((?<=0)[13]|(?<=2)[012356]|(?<=3)[0123678]|(?<=4)[04568]|(?<=5)[13469]|(?<=6)[01245789]|(?<=7)[123468]|(?<=8)[1])|(?<=8)[0234567]((?<=0)[14]|(?<=2)[146789]|(?<=3)[3489]|(?<=4)[1346789]|(?<=5)[01256789]|(?<=6)[02345689]|(?<=7)[013689])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[34567]|(?<=2)[012345789]|(?<=3)[0]|(?<=4)[01346789]|(?<=5)[012347]|(?<=6)[1234567]))|(?<=9)[012345678]((?<=0)[3456789]((?<=3)[89]|(?<=4)[0124567]|(?<=5)[146789]|(?<=6)[123679]|(?<=7)[13489]|(?<=8)[2368]|(?<=9)[024567])|(?<=1)[012456789]((?<=0)[8]|(?<=1)[01345679]|(?<=2)[0]|(?<=4)[045689]|(?<=5)[0234679]|(?<=6)[026789]|(?<=7)[0345679]|(?<=8)[039]|(?<=9)[1234])|(?<=2)[01367]((?<=0)[1234689]|(?<=1)[0123678]|(?<=3)[2]|(?<=6)[9]|(?<=7)[2])|(?<=3)[023456]((?<=0)[1579]|(?<=2)[02345678]|(?<=3)[0256789]|(?<=4)[125678]|(?<=5)[0245689]|(?<=6)[01234567])|(?<=4)[02345678]((?<=0)[126]|(?<=2)[12356789]|(?<=3)[79]|(?<=4)[03]|(?<=5)[12569]|(?<=6)[12456]|(?<=7)[0456789]|(?<=8)[0123])|(?<=5)[023456789]((?<=0)[137]|(?<=2)[059]|(?<=3)[0124]|(?<=4)[0]|(?<=5)[36]|(?<=6)[0123457]|(?<=7)[123467]|(?<=8)[1]|(?<=9)[5])|(?<=6)[023456]((?<=0)[1]|(?<=2)[9]|(?<=3)[01358]|(?<=4)[13578]|(?<=5)[23467]|(?<=6)[123456789])|(?<=7)[034567]((?<=0)[125]|(?<=3)[05679]|(?<=4)[0134567]|(?<=5)[0123569]|(?<=6)[2679]|(?<=7)[1236])|(?<=8)[123456789]((?<=1)[3579]|(?<=2)[345678]|(?<=3)[2467]|(?<=4)[01256]|(?<=5)[149]|(?<=6)[1267]|(?<=7)[07]|(?<=8)[56]|(?<=9)[7])))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[01234567]((?<=0)[346789]|(?<=1)[012349]|(?<=2)[02356]|(?<=3)[1367]|(?<=4)[015679]|(?<=5)[01256789]|(?<=6)[01235789]|(?<=7)[015678])|(?<=1)[0124567]((?<=0)[4789]|(?<=1)[015789]|(?<=2)[1]|(?<=4)[023456]|(?<=5)[0257]|(?<=6)[0125]|(?<=7)[015678])|(?<=2)[012345789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012389]|(?<=3)[1]|(?<=4)[1235]|(?<=5)[8]|(?<=7)[2]|(?<=8)[0]|(?<=9)[19])|(?<=3)[123456789]((?<=1)[01236]|(?<=2)[248]|(?<=3)[04679]|(?<=4)[2678]|(?<=5)[01356789]|(?<=6)[013]|(?<=7)[012469]|(?<=8)[0357]|(?<=9)[01])|(?<=4)[012345678]((?<=0)[2349]|(?<=1)[9]|(?<=2)[2]|(?<=3)[47]|(?<=4)[024578]|(?<=5)[6]|(?<=6)[0148]|(?<=7)[25]|(?<=8)[1469])|(?<=5)[0123]((?<=0)[2345789]|(?<=1)[0134567]|(?<=2)[6]|(?<=3)[6])|(?<=6)[0]((?<=0)[1])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[9]|(?<=3)[47]|(?<=4)[014]|(?<=5)[9]|(?<=6)[39]|(?<=7)[1])|(?<=8)[01234567]((?<=0)[13678]|(?<=1)[035689]|(?<=2)[0346789]|(?<=3)[01]|(?<=4)[034579]|(?<=5)[4568]|(?<=6)[2358]|(?<=7)[034])|(?<=9)[0123456789]((?<=0)[236]|(?<=1)[345]|(?<=2)[137]|(?<=3)[59]|(?<=4)[01369]|(?<=5)[38]|(?<=6)[245]|(?<=7)[279]|(?<=8)[1238]|(?<=9)[57]))|(?<=1)[012345678]((?<=0)[013456789]((?<=0)[12345678]|(?<=1)[0145678]|(?<=3)[013459]|(?<=4)[012345689]|(?<=5)[12569]|(?<=6)[34]|(?<=7)[13456]|(?<=8)[0356]|(?<=9)[1234578])|(?<=1)[02345678]((?<=0)[12]|(?<=2)[149]|(?<=3)[259]|(?<=4)[123469]|(?<=5)[9]|(?<=6)[4689]|(?<=7)[1459]|(?<=8)[0139])|(?<=2)[01234567]((?<=0)[134]|(?<=1)[469]|(?<=2)[246]|(?<=3)[01248]|(?<=4)[0]|(?<=5)[04567]|(?<=6)[0234578]|(?<=7)[14])|(?<=3)[01345689]((?<=0)[1]|(?<=1)[0147]|(?<=3)[29]|(?<=4)[8]|(?<=5)[12]|(?<=6)[04567]|(?<=8)[56]|(?<=9)[07])|(?<=4)[0267]((?<=0)[8]|(?<=2)[15]|(?<=6)[45]|(?<=7)[2])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[23479]|(?<=2)[24678]|(?<=3)[145789]|(?<=4)[03478]|(?<=5)[345789]|(?<=6)[0234678]|(?<=7)[12])|(?<=6)[0123456]((?<=0)[1234567]|(?<=1)[2569]|(?<=2)[12]|(?<=3)[01256]|(?<=4)[023579]|(?<=5)[01359]|(?<=6)[03679])|(?<=7)[01234567]((?<=0)[1]|(?<=1)[2349]|(?<=2)[123579]|(?<=3)[159]|(?<=4)[0569]|(?<=5)[149]|(?<=6)[02346]|(?<=7)[2345678])|(?<=8)[0123456]((?<=0)[4]|(?<=1)[02579]|(?<=2)[124568]|(?<=3)[123456789]|(?<=4)[0345789]|(?<=5)[589]|(?<=6)[12]))|(?<=2)[01234567]((?<=0)[02345678]((?<=0)[13]|(?<=2)[012345789]|(?<=3)[1256789]|(?<=4)[0145789]|(?<=5)[0134568]|(?<=6)[01469]|(?<=7)[1689]|(?<=8)[1235678])|(?<=1)[0234567]((?<=0)[134]|(?<=2)[023479]|(?<=3)[0134]|(?<=4)[01]|(?<=5)[134679]|(?<=6)[03467]|(?<=7)[01])|(?<=2)[012345678]((?<=0)[2467]|(?<=1)[01457]|(?<=2)[03]|(?<=3)[246]|(?<=4)[0]|(?<=5)[2469]|(?<=6)[1256]|(?<=7)[3456]|(?<=8)[056])|(?<=3)[0234567]((?<=0)[13]|(?<=2)[012345678]|(?<=3)[023789]|(?<=4)[345789]|(?<=5)[012456]|(?<=6)[16789]|(?<=7)[012468])|(?<=4)[0123456]((?<=0)[4689]|(?<=1)[013]|(?<=2)[0]|(?<=3)[167]|(?<=4)[01245]|(?<=5)[01235689]|(?<=6)[1234])|(?<=5)[0123456]((?<=0)[13]|(?<=1)[689]|(?<=2)[8]|(?<=3)[39]|(?<=4)[14]|(?<=5)[3]|(?<=6)[567])|(?<=6)[02345]((?<=0)[23]|(?<=2)[9]|(?<=3)[13458]|(?<=4)[279]|(?<=5)[3])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[235678]|(?<=2)[124689]|(?<=3)[23]|(?<=4)[0123689]|(?<=5)[34789]|(?<=6)[245]|(?<=7)[6]|(?<=8)[248]))|(?<=3)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[12356789]|(?<=3)[0123567]|(?<=4)[04567]|(?<=5)[0456]|(?<=6)[01245678]|(?<=7)[0124678]|(?<=8)[01245])|(?<=1)[0123456]((?<=0)[1235679]|(?<=1)[01235679]|(?<=2)[35678]|(?<=3)[05678]|(?<=4)[023456789]|(?<=5)[012345678]|(?<=6)[024])|(?<=2)[01234]((?<=0)[12345679]|(?<=1)[012345789]|(?<=2)[01234789]|(?<=3)[0125]|(?<=4)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01456789]|(?<=2)[0123456]|(?<=3)[01234678]|(?<=4)[012345678]|(?<=5)[016789]|(?<=6)[0])|(?<=4)[0123456]((?<=0)[23678]|(?<=1)[02346]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[0235679]|(?<=5)[012678]|(?<=6)[023456789])|(?<=5)[01234567]((?<=0)[12456]|(?<=1)[01256789]|(?<=2)[0123456789]|(?<=3)[01234567]|(?<=4)[01235789]|(?<=5)[1345678]|(?<=6)[05679]|(?<=7)[01])|(?<=6)[012]((?<=0)[456789]|(?<=1)[012345679]|(?<=2)[03])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[136789]|(?<=2)[01234578]|(?<=3)[012345689]|(?<=4)[06789]|(?<=5)[045689]|(?<=6)[0124678]|(?<=7)[123789]|(?<=8)[023678]|(?<=9)[13])|(?<=8)[01234]((?<=0)[245]|(?<=1)[12]|(?<=2)[124]|(?<=3)[0267]|(?<=4)[02345])|(?<=9)[012345678]((?<=0)[12356789]|(?<=1)[023457]|(?<=2)[0568]|(?<=3)[01234589]|(?<=4)[02345678]|(?<=5)[0123]|(?<=6)[123478]|(?<=7)[123467]|(?<=8)[13568]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[134]|(?<=1)[0127]|(?<=2)[123468]|(?<=3)[0259]|(?<=4)[01456789]|(?<=5)[0234567]|(?<=6)[024578]|(?<=7)[02467]|(?<=8)[01245679]|(?<=9)[023459])|(?<=1)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345679])|(?<=2)[012345678]((?<=0)[123]|(?<=1)[24567]|(?<=2)[134]|(?<=3)[0123456]|(?<=4)[013]|(?<=5)[013456]|(?<=6)[0246]|(?<=7)[0234568]|(?<=8)[015678])|(?<=3)[0123]((?<=0)[12345678]|(?<=1)[012349]|(?<=2)[015]|(?<=3)[3])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[0123578]|(?<=2)[0345789]|(?<=3)[0126789]|(?<=4)[01234569]|(?<=5)[01245]|(?<=6)[0]|(?<=7)[013]|(?<=8)[1345]|(?<=9)[013])|(?<=5)[015]((?<=0)[2345679]|(?<=1)[01245]|(?<=5)[5])|(?<=6)[0123456789]((?<=0)[16789]|(?<=1)[01234589]|(?<=2)[012456789]|(?<=3)[0234789]|(?<=4)[0134567]|(?<=5)[1234679]|(?<=6)[01235679]|(?<=7)[0125678]|(?<=8)[01235789]|(?<=9)[013579])|(?<=7)[0123]((?<=0)[23456789]|(?<=1)[048]|(?<=2)[01]|(?<=3)[0])|(?<=8)[0123456789]((?<=0)[24579]|(?<=1)[134578]|(?<=2)[0245678]|(?<=3)[036789]|(?<=4)[01234679]|(?<=5)[01345679]|(?<=6)[14567]|(?<=7)[0458]|(?<=8)[012379]|(?<=9)[0])|(?<=9)[0]((?<=0)[1234567]))|(?<=5)[012345678]((?<=0)[0134567]((?<=0)[1235]|(?<=1)[1345]|(?<=3)[023469]|(?<=4)[0124]|(?<=5)[0123456]|(?<=6)[2456789]|(?<=7)[0])|(?<=1)[01234567]((?<=0)[123567]|(?<=1)[123589]|(?<=2)[0123]|(?<=3)[01235]|(?<=4)[024678]|(?<=5)[023456789]|(?<=6)[0246789]|(?<=7)[12467])|(?<=2)[0123456]((?<=0)[23456789]|(?<=1)[123456789]|(?<=2)[0345679]|(?<=3)[01236789]|(?<=4)[0123456789]|(?<=5)[125]|(?<=6)[7])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[012456789]|(?<=5)[01234689]|(?<=6)[0123589]|(?<=7)[012378]|(?<=8)[012345789]|(?<=9)[0])|(?<=4)[0123456]((?<=0)[234569]|(?<=1)[045679]|(?<=2)[034689]|(?<=3)[0123459]|(?<=4)[09]|(?<=5)[89]|(?<=6)[9])|(?<=5)[0]((?<=0)[123456])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0123489]|(?<=3)[01468]|(?<=4)[0245678]|(?<=5)[012346789]|(?<=6)[01239]|(?<=7)[1234789]|(?<=8)[0124568]|(?<=9)[023456789])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[014569]|(?<=2)[013479]|(?<=3)[2459]|(?<=4)[0123456]|(?<=5)[0]|(?<=6)[0146789]|(?<=7)[01235689]|(?<=8)[0234689])|(?<=8)[0123456789]((?<=0)[1456789]|(?<=1)[02345679]|(?<=2)[012678]|(?<=3)[0123568]|(?<=4)[01345689]|(?<=5)[01345689]|(?<=6)[0123456789]|(?<=7)[012345679]|(?<=8)[0123456789]|(?<=9)[013456789]))|(?<=6)[0123456789]((?<=0)[0134567]((?<=0)[1]|(?<=1)[12367]|(?<=3)[0123456789]|(?<=4)[0145789]|(?<=5)[0125678]|(?<=6)[0234589]|(?<=7)[0124567])|(?<=1)[012345678]((?<=0)[234567]|(?<=1)[0123578]|(?<=2)[012345678]|(?<=3)[0135]|(?<=4)[02346789]|(?<=5)[0145678]|(?<=6)[012345678]|(?<=7)[012356]|(?<=8)[012346])|(?<=2)[0123456789]((?<=0)[1234568]|(?<=1)[46789]|(?<=2)[012456789]|(?<=3)[145679]|(?<=4)[01]|(?<=5)[0469]|(?<=6)[08]|(?<=7)[8]|(?<=8)[0]|(?<=9)[0])|(?<=3)[012456789]((?<=0)[12347]|(?<=1)[0129]|(?<=2)[012347]|(?<=4)[01256789]|(?<=5)[06]|(?<=6)[0568]|(?<=7)[1345679]|(?<=8)[1235]|(?<=9)[01234])|(?<=4)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=5)[0123456789]((?<=0)[124678]|(?<=1)[013467]|(?<=2)[468]|(?<=3)[01246789]|(?<=4)[02345]|(?<=5)[023456]|(?<=6)[12357]|(?<=7)[01234]|(?<=8)[02]|(?<=9)[05])|(?<=6)[0123]((?<=0)[1]|(?<=1)[345679]|(?<=2)[48]|(?<=3)[57])|(?<=7)[0123456789]((?<=0)[123456]|(?<=1)[014]|(?<=2)[135]|(?<=3)[012378]|(?<=4)[01235678]|(?<=5)[059]|(?<=6)[0134567]|(?<=7)[012346789]|(?<=8)[13456789]|(?<=9)[123456789])|(?<=8)[01234]((?<=0)[23456789]|(?<=1)[45689]|(?<=2)[5]|(?<=3)[5]|(?<=4)[5])|(?<=9)[0123456789]((?<=0)[12]|(?<=1)[0134579]|(?<=2)[023689]|(?<=3)[01236789]|(?<=4)[013567]|(?<=5)[0123789]|(?<=6)[012578]|(?<=7)[014589]|(?<=8)[02456789]|(?<=9)[012468]))|(?<=7)[0123456789]((?<=0)[012346]((?<=0)[136]|(?<=1)[012678]|(?<=2)[012345]|(?<=3)[012345678]|(?<=4)[0123]|(?<=6)[0])|(?<=1)[01234567]((?<=0)[2468]|(?<=1)[012456789]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[012357]|(?<=5)[0]|(?<=6)[01234567]|(?<=7)[02457])|(?<=2)[02345678]((?<=0)[13]|(?<=2)[0345679]|(?<=3)[012456]|(?<=4)[03467]|(?<=5)[0]|(?<=6)[0345]|(?<=7)[0234]|(?<=8)[0123])|(?<=3)[023456789]((?<=0)[23456]|(?<=2)[04567]|(?<=3)[01456789]|(?<=4)[0124568]|(?<=5)[123456789]|(?<=6)[0126789]|(?<=7)[0134]|(?<=8)[012345678]|(?<=9)[02346])|(?<=4)[0234567]((?<=0)[134568]|(?<=2)[01479]|(?<=3)[12345678]|(?<=4)[135689]|(?<=5)[123456789]|(?<=6)[0245789]|(?<=7)[01])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[234569]|(?<=2)[012345789]|(?<=3)[1257]|(?<=4)[126]|(?<=5)[012378]|(?<=6)[12478]|(?<=7)[3456789]|(?<=8)[014568]|(?<=9)[01678])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[0123569]|(?<=2)[0]|(?<=3)[01345789]|(?<=4)[089]|(?<=5)[4]|(?<=6)[056]|(?<=7)[0]|(?<=8)[3])|(?<=7)[012]((?<=0)[8]|(?<=1)[012345]|(?<=2)[05])|(?<=8)[0345678]((?<=0)[234579]|(?<=3)[1234678]|(?<=4)[01256789]|(?<=5)[01345789]|(?<=6)[01235689]|(?<=7)[0124569]|(?<=8)[01245])|(?<=9)[0123456789]((?<=0)[145679]|(?<=1)[678]|(?<=2)[012345689]|(?<=3)[023]|(?<=4)[01234689]|(?<=5)[01245789]|(?<=6)[03456789]|(?<=7)[014578]|(?<=8)[0123679]|(?<=9)[0123457]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123569]|(?<=1)[457]|(?<=2)[1235678]|(?<=3)[02345689]|(?<=4)[012345789]|(?<=5)[0149]|(?<=6)[02345679]|(?<=7)[01234569]|(?<=8)[01234589]|(?<=9)[12345678])|(?<=1)[0123456789]((?<=0)[134589]|(?<=1)[14678]|(?<=2)[0245678]|(?<=3)[01345789]|(?<=4)[013456]|(?<=5)[024789]|(?<=6)[012456789]|(?<=7)[0346789]|(?<=8)[023456789]|(?<=9)[0123578])|(?<=2)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[013456789]|(?<=3)[03456789]|(?<=4)[023])|(?<=3)[0123456789]((?<=0)[124679]|(?<=1)[0234567]|(?<=2)[02346789]|(?<=3)[1456]|(?<=4)[01268]|(?<=5)[03679]|(?<=6)[0237]|(?<=7)[01457]|(?<=8)[01236]|(?<=9)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[0124569]|(?<=5)[01345678]|(?<=6)[0123456789]|(?<=7)[012356])|(?<=5)[0123]((?<=0)[2345679]|(?<=1)[9]|(?<=2)[9]|(?<=3)[2])|(?<=6)[0123456]((?<=0)[123479]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[0279]|(?<=5)[0123456789]|(?<=6)[12])|(?<=7)[01234567]((?<=0)[13568]|(?<=1)[0]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0123456789]|(?<=5)[045679]|(?<=6)[01235678]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[16789]|(?<=1)[1356789]|(?<=2)[01234579]|(?<=3)[1245678]|(?<=4)[012356789]|(?<=5)[0123456789]|(?<=6)[0124567]|(?<=7)[0123456789]|(?<=8)[01345689]|(?<=9)[01234567])|(?<=9)[013]((?<=0)[6]|(?<=1)[01257]|(?<=3)[3]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1246789]|(?<=1)[0123457]|(?<=2)[1246789]|(?<=3)[01234678]|(?<=4)[0235678]|(?<=5)[01235678]|(?<=6)[01345678]|(?<=7)[012345689]|(?<=8)[02345789]|(?<=9)[0123456789])|(?<=1)[0123]((?<=0)[123467]|(?<=1)[1235679]|(?<=2)[056789]|(?<=3)[0])|(?<=2)[02345678]((?<=0)[123]|(?<=2)[014789]|(?<=3)[02345678]|(?<=4)[01256789]|(?<=5)[012345689]|(?<=6)[123456789]|(?<=7)[0124679]|(?<=8)[23456789])|(?<=3)[01234]((?<=0)[12345679]|(?<=1)[025689]|(?<=2)[012356789]|(?<=3)[012356789]|(?<=4)[0123456789])|(?<=4)[0123456]((?<=0)[12345689]|(?<=1)[0125789]|(?<=2)[0134568]|(?<=3)[014567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[014])|(?<=5)[01234]((?<=0)[3456789]|(?<=1)[29]|(?<=2)[5]|(?<=3)[4]|(?<=4)[468])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[012356789]|(?<=3)[0123456789]|(?<=4)[02345689]|(?<=5)[01345679]|(?<=6)[034578]|(?<=7)[045679]|(?<=8)[02345689]|(?<=9)[06])|(?<=7)[0123456789]((?<=0)[15679]|(?<=1)[02356789]|(?<=2)[012456789]|(?<=3)[03568]|(?<=4)[03456789]|(?<=5)[1235679]|(?<=6)[0245689]|(?<=7)[045679]|(?<=8)[012348]|(?<=9)[13569])|(?<=8)[0123456789]((?<=0)[125678]|(?<=1)[245678]|(?<=2)[0125679]|(?<=3)[13456789]|(?<=4)[01789]|(?<=5)[23458]|(?<=6)[123468]|(?<=7)[012346789]|(?<=8)[0134567]|(?<=9)[123456])|(?<=9)[01234567]((?<=0)[12358]|(?<=1)[012356789]|(?<=2)[012579]|(?<=3)[01458]|(?<=4)[25678]|(?<=5)[023589]|(?<=6)[01235789]|(?<=7)[01])))|(?<=5)[0123456789]((?<=0)[012345678]((?<=0)[01234567]((?<=0)[12356789]|(?<=1)[0234]|(?<=2)[012356789]|(?<=3)[12345689]|(?<=4)[01246789]|(?<=5)[01245678]|(?<=6)[0123456789]|(?<=7)[01234568])|(?<=1)[01234567]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0134])|(?<=2)[01234567]((?<=0)[1678]|(?<=1)[012346789]|(?<=2)[02356789]|(?<=3)[0123456789]|(?<=4)[012346789]|(?<=5)[01245678]|(?<=6)[12345689]|(?<=7)[12345678])|(?<=3)[012]((?<=0)[9]|(?<=1)[012345679]|(?<=2)[0123457])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0134678]|(?<=3)[012345689]|(?<=4)[0146789]|(?<=5)[0123456789]|(?<=6)[01456789]|(?<=7)[012356789]|(?<=8)[0234])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[01235689]|(?<=4)[01234568]|(?<=5)[1246789]|(?<=6)[012356789]|(?<=7)[013456789]|(?<=8)[123568]|(?<=9)[012345789])|(?<=6)[012345678]((?<=0)[123456789]|(?<=1)[12369]|(?<=2)[0123456789]|(?<=3)[01234568]|(?<=4)[12345789]|(?<=5)[012345789]|(?<=6)[02456789]|(?<=7)[01234567]|(?<=8)[012])|(?<=7)[0]((?<=0)[1237])|(?<=8)[03456]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[012356789]|(?<=5)[134789]|(?<=6)[01234]))|(?<=1)[0123456]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01245689]|(?<=2)[023456789]|(?<=3)[013456789]|(?<=4)[01456789]|(?<=5)[01234568]|(?<=6)[0123])|(?<=1)[01]((?<=0)[1345689]|(?<=1)[1])|(?<=2)[0345]((?<=0)[1]|(?<=3)[01245789]|(?<=4)[0123456789]|(?<=5)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1348]|(?<=4)[0123567]|(?<=5)[014578]|(?<=6)[03456])|(?<=4)[03456]((?<=0)[1]|(?<=3)[012369]|(?<=4)[0123456789]|(?<=5)[01234589]|(?<=6)[0123567])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[0]|(?<=2)[01356789]|(?<=3)[01234567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012356789])|(?<=6)[0345]((?<=0)[1]|(?<=3)[0126789]|(?<=4)[056789]|(?<=5)[012346]))|(?<=2)[012345678]((?<=0)[034567]((?<=0)[123]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[023467]|(?<=6)[045689]|(?<=7)[0123456789])|(?<=1)[034567]((?<=0)[1]|(?<=3)[23456]|(?<=4)[012467]|(?<=5)[1456789]|(?<=6)[012345689]|(?<=7)[0125])|(?<=2)[012345]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[123567]|(?<=4)[01256789]|(?<=5)[123457])|(?<=3)[0123456]((?<=0)[1256789]|(?<=1)[02345678]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[012456789]|(?<=5)[12345689]|(?<=6)[12])|(?<=4)[01]((?<=0)[12345]|(?<=1)[1])|(?<=5)[03456789]((?<=0)[1]|(?<=3)[0134567]|(?<=4)[023489]|(?<=5)[01234567]|(?<=6)[012356789]|(?<=7)[0123467]|(?<=8)[0134568]|(?<=9)[01345])|(?<=6)[0123456]((?<=0)[1]|(?<=1)[9]|(?<=2)[0134567]|(?<=3)[0125789]|(?<=4)[0145679]|(?<=5)[0123456789]|(?<=6)[0])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0126789]|(?<=3)[012789]|(?<=4)[256789]|(?<=5)[0123456789]|(?<=6)[0156789]|(?<=7)[1234678])|(?<=8)[0]((?<=0)[123467]))|(?<=3)[01245789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[0123456789]|(?<=2)[0123479]|(?<=3)[123456789]|(?<=4)[02456789]|(?<=5)[01789]|(?<=6)[13569]|(?<=7)[02345689]|(?<=8)[0135689]|(?<=9)[012345789])|(?<=1)[0123456789]((?<=0)[3458]|(?<=1)[04589]|(?<=2)[01256789]|(?<=3)[0279]|(?<=4)[0234679]|(?<=5)[0134678]|(?<=6)[78]|(?<=7)[026789]|(?<=8)[12345689]|(?<=9)[0125])|(?<=2)[01239]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[35]|(?<=9)[5])|(?<=4)[0]((?<=0)[23456])|(?<=5)[0123456789]((?<=0)[12345678]|(?<=1)[015678]|(?<=2)[012356789]|(?<=3)[01234678]|(?<=4)[01345689]|(?<=5)[013456789]|(?<=6)[0123569]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[034789])|(?<=7)[0129]((?<=0)[3456]|(?<=1)[13456789]|(?<=2)[6]|(?<=9)[2])|(?<=8)[012]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[01567])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[01369]|(?<=2)[02345689]|(?<=3)[012345679]|(?<=4)[012346789]|(?<=5)[01234569]|(?<=6)[01234589]))|(?<=4)[0123456789]((?<=0)[0128]((?<=0)[12345679]|(?<=1)[134567]|(?<=2)[012345678]|(?<=8)[2])|(?<=1)[012345678]((?<=0)[123467]|(?<=1)[0123459]|(?<=2)[013456789]|(?<=3)[056789]|(?<=4)[0139]|(?<=5)[012345679]|(?<=6)[012569]|(?<=7)[013457]|(?<=8)[0])|(?<=2)[01234]((?<=0)[1245789]|(?<=1)[01234567]|(?<=2)[0789]|(?<=3)[0245]|(?<=4)[1567])|(?<=3)[01]((?<=0)[12347]|(?<=1)[13])|(?<=4)[0123456789]((?<=0)[1356789]|(?<=1)[01234678]|(?<=2)[012345678]|(?<=3)[03567]|(?<=4)[01236789]|(?<=5)[012456789]|(?<=6)[02345679]|(?<=7)[0134569]|(?<=8)[012456789]|(?<=9)[0134589])|(?<=5)[0123456]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[0145679]|(?<=3)[0146789]|(?<=4)[0125678]|(?<=5)[02456789]|(?<=6)[01234568])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[012345689]|(?<=2)[123456789]|(?<=3)[012456789]|(?<=4)[234568]|(?<=5)[0123456789]|(?<=6)[0145679]|(?<=7)[0])|(?<=7)[0234567]((?<=0)[13]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[01256789]|(?<=5)[01456789]|(?<=6)[01236789]|(?<=7)[0123])|(?<=8)[0123456789]((?<=0)[156]|(?<=1)[023479]|(?<=2)[01246789]|(?<=3)[0256789]|(?<=4)[0123456789]|(?<=5)[03456789]|(?<=6)[124578]|(?<=7)[0123456]|(?<=8)[089]|(?<=9)[1356])|(?<=9)[012345678]((?<=0)[1249]|(?<=1)[1345]|(?<=2)[1236789]|(?<=3)[012357]|(?<=4)[0123456789]|(?<=5)[026]|(?<=6)[012345678]|(?<=7)[014789]|(?<=8)[0123456]))|(?<=5)[01346789]((?<=0)[0123456789]((?<=0)[1356789]|(?<=1)[12346789]|(?<=2)[0145679]|(?<=3)[0123678]|(?<=4)[012345679]|(?<=5)[1234567]|(?<=6)[035689]|(?<=7)[012345679]|(?<=8)[0245789]|(?<=9)[02])|(?<=1)[01235]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0]|(?<=5)[05])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[01245789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[023456789]|(?<=6)[02346789]|(?<=7)[012345689]|(?<=8)[12456789]|(?<=9)[015678])|(?<=4)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[123456789]|(?<=5)[045])|(?<=6)[01]((?<=0)[12345679]|(?<=1)[23456])|(?<=7)[0123456789]((?<=0)[23456789]|(?<=1)[01236789]|(?<=2)[0123456]|(?<=3)[1234568]|(?<=4)[124689]|(?<=5)[0123678]|(?<=6)[0345789]|(?<=7)[1259]|(?<=8)[01234567]|(?<=9)[0235678])|(?<=8)[01]((?<=0)[2345678]|(?<=1)[0124])|(?<=9)[0123456789]((?<=0)[1234569]|(?<=1)[02789]|(?<=2)[012345679]|(?<=3)[1234569]|(?<=4)[01345679]|(?<=5)[012345679]|(?<=6)[012345789]|(?<=7)[012345679]|(?<=8)[12357]|(?<=9)[012]))|(?<=6)[01234567]((?<=0)[0123456789]((?<=0)[1379]|(?<=1)[0134679]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[1234568]|(?<=5)[01245678]|(?<=6)[023589]|(?<=7)[123458]|(?<=8)[01235789]|(?<=9)[013678])|(?<=1)[012345678]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[01235789]|(?<=3)[1246789]|(?<=4)[012345679]|(?<=5)[012356789]|(?<=6)[012456789]|(?<=7)[01234568]|(?<=8)[013567])|(?<=2)[0123456789]((?<=0)[1789]|(?<=1)[01245689]|(?<=2)[0123456789]|(?<=3)[0125679]|(?<=4)[0134589]|(?<=5)[1235678]|(?<=6)[0234567]|(?<=7)[01346789]|(?<=8)[012345789]|(?<=9)[1234567])|(?<=3)[012345678]((?<=0)[134789]|(?<=1)[012345689]|(?<=2)[013456789]|(?<=3)[01245689]|(?<=4)[023579]|(?<=5)[023456789]|(?<=6)[01234789]|(?<=7)[13456789]|(?<=8)[1245679])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[5]|(?<=3)[134578]|(?<=4)[012346789]|(?<=5)[02358]|(?<=6)[1456789]|(?<=7)[0234579]|(?<=8)[124])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[134567]|(?<=4)[0123456789]|(?<=5)[0123467]|(?<=6)[02356789]|(?<=7)[012345689]|(?<=8)[013456789]|(?<=9)[0124])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[136789]|(?<=3)[034679]|(?<=4)[14679]|(?<=5)[012345789]|(?<=6)[01236789]|(?<=7)[012368]|(?<=8)[0134568])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[013456]|(?<=2)[0123456789]|(?<=3)[12345678]|(?<=4)[248]|(?<=5)[01456789]|(?<=6)[0123]))|(?<=7)[01234567]((?<=0)[01234567]((?<=0)[1234567]|(?<=1)[02345678]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[012356789]|(?<=5)[012345789]|(?<=6)[123456789]|(?<=7)[01235678])|(?<=1)[019]((?<=0)[345678]|(?<=1)[07]|(?<=9)[7])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0134567]|(?<=3)[123456789]|(?<=4)[12356789]|(?<=5)[1256789]|(?<=6)[012345689]|(?<=7)[01234689])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[1234589]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[0345689]|(?<=6)[123456789]|(?<=7)[0134569]|(?<=8)[0123456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[01246789]|(?<=3)[023456789]|(?<=4)[0125689]|(?<=5)[0124567]|(?<=6)[0156789]|(?<=7)[012345679]|(?<=8)[1])|(?<=5)[02345678]((?<=0)[1]|(?<=2)[012389]|(?<=3)[1234678]|(?<=4)[013478]|(?<=5)[12359]|(?<=6)[02346789]|(?<=7)[0124679]|(?<=8)[045])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012356]|(?<=3)[01234689]|(?<=4)[01245689]|(?<=5)[0126789]|(?<=6)[01])|(?<=7)[0123456789]((?<=0)[1236]|(?<=1)[46789]|(?<=2)[0245]|(?<=3)[02578]|(?<=4)[14578]|(?<=5)[01245689]|(?<=6)[01234679]|(?<=7)[023569]|(?<=8)[023578]|(?<=9)[012349]))|(?<=8)[012345678]((?<=0)[012345678]((?<=0)[12456789]|(?<=1)[1235678]|(?<=2)[179]|(?<=3)[0123568]|(?<=4)[012356789]|(?<=5)[12346789]|(?<=6)[012345789]|(?<=7)[12456789]|(?<=8)[1])|(?<=1)[0]((?<=0)[2345])|(?<=2)[012345678]((?<=0)[12345]|(?<=1)[024689]|(?<=2)[02345789]|(?<=3)[01356789]|(?<=4)[01349]|(?<=5)[01456789]|(?<=6)[0125679]|(?<=7)[012345678]|(?<=8)[12])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[013678]|(?<=2)[134579]|(?<=3)[012589]|(?<=4)[134568]|(?<=5)[123567]|(?<=6)[12356789]|(?<=7)[02479]|(?<=8)[012456])|(?<=4)[0123456789]((?<=0)[125]|(?<=1)[3568]|(?<=2)[012345689]|(?<=3)[013689]|(?<=4)[0123458]|(?<=5)[124568]|(?<=6)[013467]|(?<=7)[2456789]|(?<=8)[01234678]|(?<=9)[024567])|(?<=5)[02345678]((?<=0)[1345]|(?<=2)[013489]|(?<=3)[012358]|(?<=4)[012459]|(?<=5)[2489]|(?<=6)[012345689]|(?<=7)[01235679]|(?<=8)[01])|(?<=6)[02345]((?<=0)[1]|(?<=2)[0123567]|(?<=3)[0124689]|(?<=4)[012345679]|(?<=5)[0123456])|(?<=7)[0123456789]((?<=0)[13457]|(?<=1)[012368]|(?<=2)[12357]|(?<=3)[0134567]|(?<=4)[01468]|(?<=5)[0256789]|(?<=6)[0123589]|(?<=7)[01235689]|(?<=8)[12345789]|(?<=9)[02345])|(?<=8)[0345]((?<=0)[1]|(?<=3)[01358]|(?<=4)[34579]|(?<=5)[2346]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[123678]|(?<=1)[012345689]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[13467]|(?<=5)[02345789]|(?<=6)[123456789]|(?<=7)[012456789]|(?<=8)[12356789])|(?<=1)[0]((?<=0)[1256])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[12345789]|(?<=2)[12356]|(?<=3)[01]|(?<=4)[0123478]|(?<=5)[023456789]|(?<=6)[0123]|(?<=7)[03456])|(?<=3)[012345]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[23467]|(?<=3)[0236789]|(?<=4)[34579]|(?<=5)[134])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[01246789]|(?<=2)[012457]|(?<=3)[023456]|(?<=4)[01234678]|(?<=5)[0123467]|(?<=6)[0123456789]|(?<=7)[12479]|(?<=8)[02345679])|(?<=5)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[012578]|(?<=4)[024567])|(?<=6)[0234]((?<=0)[12]|(?<=2)[35]|(?<=3)[12345689]|(?<=4)[0234578])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[0134568]|(?<=2)[01245789]|(?<=3)[0123569]|(?<=4)[01356789]|(?<=5)[01245689]|(?<=6)[012])|(?<=8)[01234567]((?<=0)[12348]|(?<=1)[2]|(?<=2)[013456789]|(?<=3)[012347]|(?<=4)[012345678]|(?<=5)[1345689]|(?<=6)[0345678]|(?<=7)[012345])|(?<=9)[0123]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[02356789]|(?<=3)[01234567])))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24578]|(?<=1)[0234568]|(?<=2)[012569]|(?<=3)[01345]|(?<=4)[012345678]|(?<=5)[0136]|(?<=6)[0124789]|(?<=7)[01234567]|(?<=8)[1345789]|(?<=9)[0136789])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[0123589]|(?<=2)[03469]|(?<=3)[01345679]|(?<=4)[01234568]|(?<=5)[01234567]|(?<=6)[023459]|(?<=7)[12345678]|(?<=8)[01345789]|(?<=9)[012345])|(?<=2)[0]((?<=0)[1238])|(?<=3)[0]((?<=0)[1245])|(?<=4)[0123456789]((?<=0)[12346789]|(?<=1)[0156789]|(?<=2)[012345689]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[012356789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[01247]|(?<=9)[01])|(?<=5)[01234568]((?<=0)[123456]|(?<=1)[0123456789]|(?<=2)[013567]|(?<=3)[01246789]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[01345]|(?<=8)[56])|(?<=6)[0123456]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[012346789]|(?<=4)[012345679]|(?<=5)[12345679]|(?<=6)[01])|(?<=7)[01]((?<=0)[67]|(?<=1)[24])|(?<=8)[02]((?<=0)[345]|(?<=2)[7])|(?<=9)[01234567]((?<=0)[1]|(?<=1)[012345789]|(?<=2)[01246789]|(?<=3)[012345689]|(?<=4)[0125689]|(?<=5)[0123456789]|(?<=6)[012346789]|(?<=7)[034]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1678]|(?<=1)[012345689]|(?<=2)[014578]|(?<=3)[0126789]|(?<=4)[12346789]|(?<=5)[0123479]|(?<=6)[01234578]|(?<=7)[012345789]|(?<=8)[0145789]|(?<=9)[1])|(?<=1)[01]((?<=0)[1234789]|(?<=1)[1245])|(?<=2)[0345678]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[01246789]|(?<=6)[012345]|(?<=7)[023456789]|(?<=8)[12345])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[01245689]|(?<=5)[034689]|(?<=6)[01234789]|(?<=7)[0123456789])|(?<=4)[0123456789]((?<=0)[12]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[0123789]|(?<=5)[01234589]|(?<=6)[0256789]|(?<=7)[0123456789]|(?<=8)[02345689]|(?<=9)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[679]|(?<=2)[0345689]|(?<=3)[012345679]|(?<=4)[012345678]|(?<=5)[02349]|(?<=6)[012345789]|(?<=7)[012])|(?<=6)[012]((?<=0)[234567]|(?<=1)[01456]|(?<=2)[5])|(?<=7)[0234567]((?<=0)[145]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345789]|(?<=5)[01234569]|(?<=6)[0149]|(?<=7)[012345678])|(?<=8)[012345678]((?<=0)[12]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[012349]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[23456]|(?<=7)[012345678]|(?<=8)[0234])|(?<=9)[12345]((?<=1)[0123479]|(?<=2)[04589]|(?<=3)[0123678]|(?<=4)[012349]|(?<=5)[13567]))|(?<=2)[023456789]((?<=0)[0123456789]((?<=0)[1269]|(?<=1)[0123456789]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0456789]|(?<=5)[01234689]|(?<=6)[012379]|(?<=7)[456789]|(?<=8)[0123456789]|(?<=9)[01234578])|(?<=2)[0123456789]((?<=0)[1345678]|(?<=1)[456789]|(?<=2)[01356]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[0345678]|(?<=6)[012345689]|(?<=7)[12345789]|(?<=8)[01245689]|(?<=9)[234578])|(?<=3)[012345678]((?<=0)[15]|(?<=1)[123469]|(?<=2)[013456]|(?<=3)[04689]|(?<=4)[013456789]|(?<=5)[123456789]|(?<=6)[0123567]|(?<=7)[0345689]|(?<=8)[0])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[0134789]|(?<=2)[012345678]|(?<=3)[1234689]|(?<=4)[0123456789]|(?<=5)[012489]|(?<=6)[0123456789]|(?<=7)[13456789]|(?<=8)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[01236]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[01345678]|(?<=6)[013578]|(?<=7)[0123])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[0123578]|(?<=2)[12456789]|(?<=3)[0134589]|(?<=4)[02349]|(?<=5)[056]|(?<=6)[1345678]|(?<=7)[0123457]|(?<=8)[124589]|(?<=9)[012345])|(?<=7)[01]((?<=0)[123467]|(?<=1)[12])|(?<=8)[0123456789]((?<=0)[136789]|(?<=1)[012456789]|(?<=2)[012345789]|(?<=3)[012356789]|(?<=4)[1234689]|(?<=5)[01234689]|(?<=6)[012345789]|(?<=7)[012456789]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[1235678]|(?<=1)[02456789]|(?<=2)[01234678]|(?<=3)[01234589]|(?<=4)[01236789]|(?<=5)[012346789]|(?<=6)[012345679]|(?<=7)[0245679]|(?<=8)[234578]|(?<=9)[02456789]))|(?<=3)[013456789]((?<=0)[0123456789]((?<=0)[5]|(?<=1)[012345679]|(?<=2)[013568]|(?<=3)[01346789]|(?<=4)[012345789]|(?<=5)[012356]|(?<=6)[0189]|(?<=7)[0123479]|(?<=8)[04789]|(?<=9)[01])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[013467]|(?<=5)[5])|(?<=3)[03456789]((?<=0)[134]|(?<=3)[023469]|(?<=4)[1345789]|(?<=5)[012379]|(?<=6)[12356789]|(?<=7)[3679]|(?<=8)[0123456789]|(?<=9)[0])|(?<=4)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[0135678]|(?<=5)[012346789]|(?<=6)[012356789]|(?<=7)[1234])|(?<=5)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[1256789]|(?<=6)[013567])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[013678]|(?<=4)[058]|(?<=5)[03456]|(?<=6)[02345]|(?<=7)[0345])|(?<=7)[0345678]((?<=0)[13]|(?<=3)[025689]|(?<=4)[02345678]|(?<=5)[0158]|(?<=6)[034679]|(?<=7)[0145]|(?<=8)[0123457])|(?<=8)[02345678]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[03479]|(?<=4)[0156789]|(?<=5)[012357]|(?<=6)[0236789]|(?<=7)[0346789]|(?<=8)[02])|(?<=9)[03456]((?<=0)[1]|(?<=3)[2345679]|(?<=4)[012345]|(?<=5)[01234567]|(?<=6)[0124567]))|(?<=4)[0145678]((?<=0)[0123456789]((?<=0)[1]|(?<=1)[12456789]|(?<=2)[012489]|(?<=3)[04567]|(?<=4)[08]|(?<=5)[02345678]|(?<=6)[012345678]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[023678])|(?<=1)[0123456]((?<=0)[125689]|(?<=1)[012346789]|(?<=2)[03456789]|(?<=3)[012346789]|(?<=4)[5679]|(?<=5)[012345678]|(?<=6)[134567])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[13456789]|(?<=6)[1356789]|(?<=7)[01345679]|(?<=8)[012345679]|(?<=9)[012346789])|(?<=5)[0]((?<=0)[134567])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[023458]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[01478]|(?<=7)[0123469]|(?<=8)[123689])|(?<=7)[023456789]((?<=0)[1]|(?<=2)[0234568]|(?<=3)[034589]|(?<=4)[012345678]|(?<=5)[02569]|(?<=6)[123579]|(?<=7)[012689]|(?<=8)[01348]|(?<=9)[0])|(?<=8)[034567]((?<=0)[14]|(?<=3)[0123456]|(?<=4)[01234789]|(?<=5)[0456789]|(?<=6)[1235678]|(?<=7)[034]))|(?<=5)[012345678]((?<=0)[012345678]((?<=0)[1]|(?<=1)[0134678]|(?<=2)[03456]|(?<=3)[24579]|(?<=4)[0136789]|(?<=5)[0123489]|(?<=6)[123456789]|(?<=7)[2456789]|(?<=8)[012345])|(?<=1)[0]((?<=0)[19])|(?<=2)[01345678]((?<=0)[123]|(?<=1)[56]|(?<=3)[0123679]|(?<=4)[034678]|(?<=5)[01456789]|(?<=6)[012345]|(?<=7)[045689]|(?<=8)[01234567])|(?<=3)[023456]((?<=0)[15]|(?<=2)[012345679]|(?<=3)[023456789]|(?<=4)[045789]|(?<=5)[0145]|(?<=6)[0])|(?<=4)[0345678]((?<=0)[19]|(?<=3)[689]|(?<=4)[013469]|(?<=5)[23679]|(?<=6)[123468]|(?<=7)[039]|(?<=8)[346])|(?<=5)[023456789]((?<=0)[1]|(?<=2)[9]|(?<=3)[456]|(?<=4)[1238]|(?<=5)[025679]|(?<=6)[04567]|(?<=7)[01]|(?<=8)[0234689]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[1345689]|(?<=1)[012346789]|(?<=2)[02345679]|(?<=3)[01234578]|(?<=4)[0146789]|(?<=5)[02345678]|(?<=6)[012346789]|(?<=7)[24569]|(?<=8)[0125689]|(?<=9)[02])|(?<=7)[0123456789]((?<=0)[245678]|(?<=1)[0123457]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0124567]|(?<=5)[2345679]|(?<=6)[01246789]|(?<=7)[012345789]|(?<=8)[13456789]|(?<=9)[013])|(?<=8)[019]((?<=0)[1234679]|(?<=1)[0]|(?<=9)[7]))|(?<=6)[012456789]((?<=0)[0123456789]((?<=0)[2678]|(?<=1)[02345678]|(?<=2)[0134567]|(?<=3)[012359]|(?<=4)[0123456789]|(?<=5)[023468]|(?<=6)[012467]|(?<=7)[01235689]|(?<=8)[035678]|(?<=9)[0123457])|(?<=1)[016]((?<=0)[1234569]|(?<=1)[1258]|(?<=6)[0])|(?<=2)[0125]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013467]|(?<=5)[1])|(?<=4)[012345]((?<=0)[12346789]|(?<=1)[123456789]|(?<=2)[2345789]|(?<=3)[124689]|(?<=4)[0129]|(?<=5)[1])|(?<=5)[012345]((?<=0)[1236789]|(?<=1)[0245678]|(?<=2)[01234678]|(?<=3)[123456789]|(?<=4)[012346789]|(?<=5)[024])|(?<=6)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[12])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[0123467]|(?<=2)[045]|(?<=3)[2345689]|(?<=4)[0123689]|(?<=5)[1345678]|(?<=6)[012379]|(?<=7)[012356789]|(?<=8)[0123])|(?<=8)[034567]((?<=0)[1]|(?<=3)[034589]|(?<=4)[023569]|(?<=5)[012346789]|(?<=6)[012345689]|(?<=7)[0123])|(?<=9)[034567]((?<=0)[1]|(?<=3)[02356789]|(?<=4)[012345689]|(?<=5)[1235689]|(?<=6)[01234678]|(?<=7)[0]))|(?<=7)[0123456789]((?<=0)[01234567]((?<=0)[1234589]|(?<=1)[0236789]|(?<=2)[012345689]|(?<=3)[0156789]|(?<=4)[12579]|(?<=5)[0123456789]|(?<=6)[01235678]|(?<=7)[01234])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0124789]|(?<=2)[02347]|(?<=3)[1234578]|(?<=4)[0234679]|(?<=5)[0124569])|(?<=2)[01236]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013678]|(?<=3)[025]|(?<=6)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[0234567]|(?<=4)[01245679]|(?<=5)[1234567]|(?<=6)[0134])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0678]|(?<=2)[023578]|(?<=3)[0126789]|(?<=4)[123456789]|(?<=5)[012456789]|(?<=6)[04678]|(?<=7)[034568]|(?<=8)[0123457]|(?<=9)[012])|(?<=5)[012345678]((?<=0)[125]|(?<=1)[012345689]|(?<=2)[01234569]|(?<=3)[0]|(?<=4)[345678]|(?<=5)[0234679]|(?<=6)[01345678]|(?<=7)[02345689]|(?<=8)[134])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[12356789]|(?<=3)[1245789]|(?<=4)[023456789]|(?<=5)[01346789]|(?<=6)[0134579]|(?<=7)[12345])|(?<=7)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[123678]|(?<=6)[124])|(?<=8)[0345678]((?<=0)[1]|(?<=3)[1456789]|(?<=4)[0123469]|(?<=5)[0134579]|(?<=6)[012345789]|(?<=7)[016789]|(?<=8)[02])|(?<=9)[05]((?<=0)[1]|(?<=5)[01234]))|(?<=8)[013456789]((?<=0)[01234567]((?<=0)[1234578]|(?<=1)[0456789]|(?<=2)[023589]|(?<=3)[01346789]|(?<=4)[01245678]|(?<=5)[056789]|(?<=6)[123456789]|(?<=7)[0123])|(?<=1)[012345678]((?<=0)[245678]|(?<=1)[01234678]|(?<=2)[23478]|(?<=3)[012345678]|(?<=4)[247]|(?<=5)[247]|(?<=6)[4]|(?<=7)[8]|(?<=8)[23])|(?<=3)[012345678]((?<=0)[134579]|(?<=1)[03456789]|(?<=2)[0123456789]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[01245789]|(?<=6)[01245678]|(?<=7)[01256789]|(?<=8)[012])|(?<=4)[0123456]((?<=0)[12345679]|(?<=1)[03456789]|(?<=2)[0123489]|(?<=3)[01346789]|(?<=4)[012345678]|(?<=5)[02345678]|(?<=6)[01234567])|(?<=5)[01238]((?<=0)[2345678]|(?<=1)[02467]|(?<=2)[01234678]|(?<=3)[12]|(?<=8)[8])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[12345678]|(?<=4)[01234789]|(?<=5)[1234589]|(?<=6)[012345679])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[023456789]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[12356789]|(?<=6)[013456789]|(?<=7)[01346789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13]|(?<=1)[02345678]|(?<=2)[012345678]|(?<=3)[12345678]|(?<=4)[012345679]|(?<=5)[02345689]|(?<=6)[01234569]|(?<=7)[012345689]|(?<=8)[123])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[023456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[02456789]|(?<=6)[01467]|(?<=7)[0123456789]|(?<=8)[012]))|(?<=9)[0123]((?<=0)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[02346789]|(?<=4)[0123456])|(?<=1)[0234567]((?<=0)[1]|(?<=2)[01235789]|(?<=3)[0123458]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[12356789]|(?<=7)[01])|(?<=2)[012]((?<=0)[1]|(?<=1)[01246789]|(?<=2)[01])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1345679]|(?<=4)[0135678]|(?<=5)[012345678]|(?<=6)[01567])))|(?<=7)[0123456789]((?<=0)[01345678]((?<=0)[03456789]((?<=0)[12356]|(?<=3)[0126789]|(?<=4)[01379]|(?<=5)[0123678]|(?<=6)[2578]|(?<=7)[012569]|(?<=8)[0234567]|(?<=9)[0124])|(?<=1)[12346]((?<=1)[23456789]|(?<=2)[123456789]|(?<=3)[019]|(?<=4)[8]|(?<=6)[3])|(?<=3)[013456789]((?<=0)[1]|(?<=1)[0]|(?<=3)[9]|(?<=4)[0123456]|(?<=5)[23456789]|(?<=6)[034]|(?<=7)[23457]|(?<=8)[0]|(?<=9)[0123457])|(?<=4)[0234567]((?<=0)[123]|(?<=2)[0267]|(?<=3)[135678]|(?<=4)[123456789]|(?<=5)[012345678]|(?<=6)[0123456]|(?<=7)[1])|(?<=5)[0123456789]((?<=0)[13678]|(?<=1)[023456789]|(?<=2)[02345689]|(?<=3)[1234578]|(?<=4)[1234689]|(?<=5)[01245689]|(?<=6)[03]|(?<=7)[05678]|(?<=8)[01234569]|(?<=9)[12])|(?<=6)[0123456]((?<=0)[1579]|(?<=1)[15]|(?<=2)[9]|(?<=3)[01234789]|(?<=4)[0345678]|(?<=5)[0123456789]|(?<=6)[0123589])|(?<=7)[0123456789]((?<=0)[6]|(?<=1)[012459]|(?<=2)[123569]|(?<=3)[0234679]|(?<=4)[034789]|(?<=5)[02345679]|(?<=6)[0123479]|(?<=7)[02345678]|(?<=8)[02356789]|(?<=9)[1])|(?<=8)[0123]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[05]|(?<=3)[6]))|(?<=1)[012346789]((?<=0)[012345678]((?<=0)[12346789]|(?<=1)[689]|(?<=2)[134789]|(?<=3)[01234789]|(?<=4)[03456789]|(?<=5)[125]|(?<=6)[013456789]|(?<=7)[0123589]|(?<=8)[2])|(?<=1)[012]((?<=0)[13456789]|(?<=1)[012589]|(?<=2)[9])|(?<=2)[0123456789]((?<=0)[1239]|(?<=1)[289]|(?<=2)[0235679]|(?<=3)[0234578]|(?<=4)[12357]|(?<=5)[013469]|(?<=6)[0134689]|(?<=7)[025679]|(?<=8)[026]|(?<=9)[125])|(?<=3)[01234567]((?<=0)[123]|(?<=1)[6]|(?<=2)[0235678]|(?<=3)[013469]|(?<=4)[012356]|(?<=5)[013456789]|(?<=6)[026789]|(?<=7)[1358])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[01456789]|(?<=2)[23456789]|(?<=3)[0234589]|(?<=4)[1679]|(?<=5)[0245679]|(?<=6)[12356789]|(?<=7)[23459]|(?<=8)[0356]|(?<=9)[7])|(?<=6)[034567]((?<=0)[123]|(?<=3)[01589]|(?<=4)[023467]|(?<=5)[1234589]|(?<=6)[0123567]|(?<=7)[0145678])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0124568]|(?<=3)[0]|(?<=4)[02345789]|(?<=5)[12389]|(?<=6)[23456]|(?<=7)[02])|(?<=8)[023456]((?<=0)[1]|(?<=2)[023567]|(?<=3)[123456789]|(?<=4)[12567]|(?<=5)[12345789]|(?<=6)[012456])|(?<=9)[012345679]((?<=0)[19]|(?<=1)[3]|(?<=2)[1239]|(?<=3)[357]|(?<=4)[0123459]|(?<=5)[0236789]|(?<=6)[0124589]|(?<=7)[0123]|(?<=9)[89]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[012345679]|(?<=2)[0123456789]|(?<=3)[01245689]|(?<=4)[01245678]|(?<=5)[1235789]|(?<=6)[013456789]|(?<=7)[0234569]|(?<=8)[012345678]|(?<=9)[9])|(?<=1)[0123456789]((?<=0)[1234678]|(?<=1)[012346789]|(?<=2)[012356789]|(?<=3)[012345679]|(?<=4)[0123]|(?<=5)[02367]|(?<=6)[056789]|(?<=7)[035689]|(?<=8)[0123]|(?<=9)[9])|(?<=2)[012]((?<=0)[1245679]|(?<=1)[012]|(?<=2)[37])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[135]|(?<=2)[02456789]|(?<=3)[0123589]|(?<=4)[012678]|(?<=5)[01234589]|(?<=6)[0456789]|(?<=7)[0234679]|(?<=8)[34679]|(?<=9)[012456])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[012345679]|(?<=2)[12456789]|(?<=3)[012345678]|(?<=4)[01234579]|(?<=5)[03456789]|(?<=6)[0124679]|(?<=7)[0123689]|(?<=8)[2])|(?<=5)[012345678]((?<=0)[1]|(?<=1)[23579]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[02346]|(?<=5)[03456]|(?<=6)[012456789]|(?<=7)[1236789]|(?<=8)[13457])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[15679]|(?<=2)[34689]|(?<=3)[012345689]|(?<=4)[012458]|(?<=5)[01358]|(?<=6)[0123689]|(?<=7)[02579]|(?<=8)[023567])|(?<=7)[01234567]((?<=0)[134]|(?<=1)[2345789]|(?<=2)[1279]|(?<=3)[024689]|(?<=4)[024579]|(?<=5)[12368]|(?<=6)[012489]|(?<=7)[346])|(?<=8)[023456]((?<=0)[12]|(?<=2)[1346789]|(?<=3)[02345789]|(?<=4)[0123567]|(?<=5)[12345678]|(?<=6)[035])|(?<=9)[012345]((?<=0)[13458]|(?<=1)[6]|(?<=2)[13678]|(?<=3)[02345678]|(?<=4)[013456789]|(?<=5)[0125689]))|(?<=3)[01456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123468]|(?<=4)[012345789]|(?<=5)[0123456789]|(?<=6)[123456789]|(?<=7)[012345789]|(?<=8)[02469]|(?<=9)[02356789])|(?<=1)[01234567]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[012789]|(?<=3)[012459]|(?<=4)[1259]|(?<=5)[019]|(?<=6)[0259]|(?<=7)[039])|(?<=4)[02345689]((?<=0)[1]|(?<=2)[5]|(?<=3)[023456789]|(?<=4)[012346789]|(?<=5)[035689]|(?<=6)[013]|(?<=8)[178]|(?<=9)[1])|(?<=5)[0234567]((?<=0)[1357]|(?<=2)[0136789]|(?<=3)[0123789]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[02456789]|(?<=7)[0123])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0245678]|(?<=3)[289]|(?<=4)[124567]|(?<=5)[014589]|(?<=6)[012346789]|(?<=7)[3])|(?<=7)[01234567]((?<=0)[135]|(?<=1)[6789]|(?<=2)[0246789]|(?<=3)[013456789]|(?<=4)[1234679]|(?<=5)[03456789]|(?<=6)[0123468]|(?<=7)[0123])|(?<=8)[03456]((?<=0)[1]|(?<=3)[2458]|(?<=4)[012348]|(?<=5)[1235789]|(?<=6)[0])|(?<=9)[03456]((?<=0)[1]|(?<=3)[123789]|(?<=4)[245679]|(?<=5)[01]|(?<=6)[0]))|(?<=4)[013456789]((?<=0)[012345678]((?<=0)[12368]|(?<=1)[01245679]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[1245678]|(?<=5)[012345689]|(?<=6)[012368]|(?<=7)[012345789]|(?<=8)[012345])|(?<=1)[012347]((?<=0)[345678]|(?<=1)[0245679]|(?<=2)[06789]|(?<=3)[01234567]|(?<=4)[56]|(?<=7)[1])|(?<=3)[034567]((?<=0)[1]|(?<=3)[0123789]|(?<=4)[0234679]|(?<=5)[02489]|(?<=6)[013456789]|(?<=7)[0])|(?<=4)[0234567]((?<=0)[13]|(?<=2)[12356789]|(?<=3)[01245678]|(?<=4)[12567]|(?<=5)[012456789]|(?<=6)[0234789]|(?<=7)[0127])|(?<=5)[0234567]((?<=0)[1]|(?<=2)[12358]|(?<=3)[0134568]|(?<=4)[03679]|(?<=5)[2345678]|(?<=6)[0123579]|(?<=7)[0124678])|(?<=6)[0345]((?<=0)[14]|(?<=3)[012367]|(?<=4)[013467]|(?<=5)[0123])|(?<=7)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[01345678]|(?<=4)[013578]|(?<=5)[034569]|(?<=6)[0146])|(?<=8)[02345678]((?<=0)[14]|(?<=2)[045679]|(?<=3)[01234679]|(?<=4)[0234589]|(?<=5)[01245679]|(?<=6)[0456789]|(?<=7)[12358]|(?<=8)[0134])|(?<=9)[03456]((?<=0)[12]|(?<=3)[0125679]|(?<=4)[0123456789]|(?<=5)[1345679]|(?<=6)[023456]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[12679]|(?<=1)[039]|(?<=2)[0123458]|(?<=3)[2345689]|(?<=4)[012348]|(?<=5)[0124678]|(?<=6)[01235789]|(?<=7)[01245678]|(?<=8)[012789]|(?<=9)[02348])|(?<=1)[012345678]((?<=0)[123459]|(?<=1)[045679]|(?<=2)[4567]|(?<=3)[2457]|(?<=4)[012346789]|(?<=5)[023456789]|(?<=6)[01345679]|(?<=7)[23]|(?<=8)[0129])|(?<=2)[012345678]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[03456789]|(?<=3)[012345678]|(?<=4)[01346789]|(?<=5)[1234]|(?<=6)[1]|(?<=7)[0]|(?<=8)[7])|(?<=3)[9]((?<=9)[0])|(?<=4)[0123456789]((?<=0)[1279]|(?<=1)[012345678]|(?<=2)[01234689]|(?<=3)[123456789]|(?<=4)[0126789]|(?<=5)[01234579]|(?<=6)[0289]|(?<=7)[0123456789]|(?<=8)[0126789]|(?<=9)[01234567])|(?<=5)[0567]((?<=0)[13]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[01234])|(?<=6)[03456789]((?<=0)[12345]|(?<=3)[01389]|(?<=4)[0123457]|(?<=5)[01246789]|(?<=6)[12789]|(?<=7)[012]|(?<=8)[01234679]|(?<=9)[1234])|(?<=7)[0156789]((?<=0)[123456789]|(?<=1)[1]|(?<=5)[012456789]|(?<=6)[023456]|(?<=7)[01389]|(?<=8)[0234589]|(?<=9)[012])|(?<=8)[034568]((?<=0)[13]|(?<=3)[13589]|(?<=4)[0456789]|(?<=5)[01235689]|(?<=6)[0125]|(?<=8)[46])|(?<=9)[02345678]((?<=0)[134]|(?<=2)[5689]|(?<=3)[0123456789]|(?<=4)[1234689]|(?<=5)[1469]|(?<=6)[01245689]|(?<=7)[2345679]|(?<=8)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[125689]|(?<=1)[012345678]|(?<=2)[01238]|(?<=3)[134569]|(?<=4)[013489]|(?<=5)[01234589]|(?<=6)[0134567]|(?<=7)[01378]|(?<=8)[245678]|(?<=9)[23])|(?<=1)[012345678]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[03679]|(?<=3)[123457]|(?<=4)[08]|(?<=5)[5]|(?<=6)[4]|(?<=7)[79]|(?<=8)[02])|(?<=2)[01234567]((?<=0)[135789]|(?<=1)[0]|(?<=2)[5678]|(?<=3)[03489]|(?<=4)[0145789]|(?<=5)[0123589]|(?<=6)[12345678]|(?<=7)[0123])|(?<=3)[015678]((?<=0)[125689]|(?<=1)[01]|(?<=5)[147]|(?<=6)[034567]|(?<=7)[0123479]|(?<=8)[0489])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[4679]|(?<=3)[01235679]|(?<=4)[2345689]|(?<=5)[02345789]|(?<=6)[023469]|(?<=7)[012456]|(?<=8)[13467]|(?<=9)[01])|(?<=5)[012345679]((?<=0)[124]|(?<=1)[1389]|(?<=2)[0234578]|(?<=3)[014789]|(?<=4)[123489]|(?<=5)[04679]|(?<=6)[15679]|(?<=7)[0134789]|(?<=9)[6789])|(?<=6)[23456789]((?<=2)[12346789]|(?<=3)[0123456789]|(?<=4)[0123589]|(?<=5)[01234567]|(?<=6)[014567]|(?<=7)[013689]|(?<=8)[0125679]|(?<=9)[0123])|(?<=7)[019]((?<=0)[145678]|(?<=1)[012]|(?<=9)[8])|(?<=8)[023456789]((?<=0)[12]|(?<=2)[0134578]|(?<=3)[12467]|(?<=4)[124589]|(?<=5)[2346789]|(?<=6)[124569]|(?<=7)[01234578]|(?<=8)[024578]|(?<=9)[0])|(?<=9)[0345]((?<=0)[1234589]|(?<=3)[02345679]|(?<=4)[0135]|(?<=5)[013578]))|(?<=7)[023456789]((?<=0)[0123456789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345689])|(?<=2)[0]((?<=0)[4])|(?<=3)[0123456789]((?<=0)[12346]|(?<=1)[68]|(?<=2)[0678]|(?<=3)[145689]|(?<=4)[01256]|(?<=5)[01456789]|(?<=6)[02345789]|(?<=7)[123456789]|(?<=8)[01245689]|(?<=9)[6])|(?<=4)[0123456789]((?<=0)[167]|(?<=1)[245789]|(?<=2)[023689]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[013456789]|(?<=8)[012345689]|(?<=9)[348])|(?<=5)[0123456789]((?<=0)[234567]|(?<=1)[0145789]|(?<=2)[013]|(?<=3)[012345689]|(?<=4)[1567]|(?<=5)[0145]|(?<=6)[01234568]|(?<=7)[13578]|(?<=8)[01234567]|(?<=9)[0178])|(?<=6)[123456]((?<=1)[12345679]|(?<=2)[234579]|(?<=3)[02]|(?<=4)[02]|(?<=5)[015679]|(?<=6)[012345])|(?<=7)[01]((?<=0)[1235678]|(?<=1)[3])|(?<=8)[0345678]((?<=0)[12378]|(?<=3)[013567]|(?<=4)[035]|(?<=5)[235679]|(?<=6)[1345678]|(?<=7)[1235689]|(?<=8)[02])|(?<=9)[056789]((?<=0)[145]|(?<=5)[0147]|(?<=6)[0123489]|(?<=7)[013456789]|(?<=8)[234678]|(?<=9)[01345]))|(?<=8)[0123456789]((?<=0)[01234567]((?<=0)[123456789]|(?<=1)[012345679]|(?<=2)[123456789]|(?<=3)[9]|(?<=4)[013456]|(?<=5)[0256789]|(?<=6)[12345679]|(?<=7)[0123456])|(?<=1)[0123456]((?<=0)[124789]|(?<=1)[12346789]|(?<=2)[12345]|(?<=3)[023]|(?<=4)[012345678]|(?<=5)[012459]|(?<=6)[01234])|(?<=2)[0123456]((?<=0)[12345789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[02345789]|(?<=5)[0123456789]|(?<=6)[01346])|(?<=3)[3456789]((?<=3)[02689]|(?<=4)[0123479]|(?<=5)[1235789]|(?<=6)[012389]|(?<=7)[012345679]|(?<=8)[0234579]|(?<=9)[013])|(?<=4)[01]((?<=0)[12456789]|(?<=1)[0123456789])|(?<=5)[0123456789]((?<=0)[134]|(?<=1)[6]|(?<=2)[016]|(?<=3)[56789]|(?<=4)[01235789]|(?<=5)[02789]|(?<=6)[012345679]|(?<=7)[023456789]|(?<=8)[02345689]|(?<=9)[0123456789])|(?<=6)[012345678]((?<=0)[256789]|(?<=1)[0123456789]|(?<=2)[01234689]|(?<=3)[12345689]|(?<=4)[0123458]|(?<=5)[023456789]|(?<=6)[01234569]|(?<=7)[0124567]|(?<=8)[1])|(?<=7)[012345]((?<=0)[12345]|(?<=1)[279]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[12456789]|(?<=5)[012346789])|(?<=8)[02345678]((?<=0)[12]|(?<=2)[789]|(?<=3)[02346789]|(?<=4)[0123]|(?<=5)[012]|(?<=6)[01]|(?<=7)[012379]|(?<=8)[013456])|(?<=9)[3456]((?<=3)[123458]|(?<=4)[0123456789]|(?<=5)[0134679]|(?<=6)[23]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[012345689]|(?<=2)[124579]|(?<=3)[1234569]|(?<=4)[0123456]|(?<=5)[12346789]|(?<=6)[1234568]|(?<=7)[02389]|(?<=8)[012345678]|(?<=9)[12345678])|(?<=1)[012]((?<=0)[12346789]|(?<=1)[0189]|(?<=2)[14])|(?<=2)[023456]((?<=0)[1]|(?<=2)[035679]|(?<=3)[01345679]|(?<=4)[0134578]|(?<=5)[01256789]|(?<=6)[1])|(?<=3)[12345678]((?<=1)[12346]|(?<=2)[234569]|(?<=3)[0169]|(?<=4)[234567]|(?<=5)[01356789]|(?<=6)[034679]|(?<=7)[01236789]|(?<=8)[0123])|(?<=4)[012]((?<=0)[123467]|(?<=1)[0123456]|(?<=2)[34])|(?<=5)[0123456]((?<=0)[1234568]|(?<=1)[012789]|(?<=2)[0156789]|(?<=3)[023456789]|(?<=4)[013456789]|(?<=5)[36]|(?<=6)[0123567])|(?<=6)[09]((?<=0)[123567]|(?<=9)[9])|(?<=7)[012345678]((?<=0)[13567]|(?<=1)[3489]|(?<=2)[01]|(?<=3)[0134589]|(?<=4)[1234589]|(?<=5)[245689]|(?<=6)[1234569]|(?<=7)[02678]|(?<=8)[0123589])|(?<=8)[2345]((?<=2)[1]|(?<=3)[02456789]|(?<=4)[2356789]|(?<=5)[12345])|(?<=9)[0123]((?<=0)[12345678]|(?<=1)[12568]|(?<=2)[024578]|(?<=3)[024568])))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[01234]((?<=0)[23457]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[013]|(?<=4)[5])|(?<=1)[0123]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[0123456789]|(?<=3)[012345678])|(?<=2)[0123469]((?<=0)[2345679]|(?<=1)[01245689]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[1679]|(?<=6)[046]|(?<=9)[034])|(?<=3)[01]((?<=0)[12345]|(?<=1)[0])|(?<=4)[0123456789]((?<=0)[13]|(?<=1)[9]|(?<=2)[012345678]|(?<=3)[02345689]|(?<=4)[02346789]|(?<=5)[12345679]|(?<=6)[1356789]|(?<=7)[01345689]|(?<=8)[01237]|(?<=9)[8])|(?<=5)[012345]((?<=0)[134]|(?<=1)[0234567]|(?<=2)[014568]|(?<=3)[0245678]|(?<=4)[02345679]|(?<=5)[0])|(?<=6)[012345]((?<=0)[123]|(?<=1)[0125]|(?<=2)[01234]|(?<=3)[14]|(?<=4)[02345689]|(?<=5)[01234])|(?<=7)[02345]((?<=0)[15]|(?<=2)[01236789]|(?<=3)[1234567]|(?<=4)[012345679]|(?<=5)[0145789])|(?<=8)[012346]((?<=0)[1245789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[0123456]|(?<=4)[0]|(?<=6)[01234])|(?<=9)[01235]((?<=0)[23456789]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[089]|(?<=5)[1]))|(?<=1)[0123456]((?<=0)[0123456789]((?<=0)[1345678]|(?<=1)[9]|(?<=2)[01234579]|(?<=3)[0369]|(?<=4)[01345679]|(?<=5)[0245789]|(?<=6)[23479]|(?<=7)[1367]|(?<=8)[12479]|(?<=9)[012])|(?<=1)[02345]((?<=0)[1]|(?<=2)[012345689]|(?<=3)[0123678]|(?<=4)[01346789]|(?<=5)[1245])|(?<=2)[012345]((?<=0)[1]|(?<=1)[012]|(?<=2)[012345678]|(?<=3)[0235679]|(?<=4)[012348]|(?<=5)[123])|(?<=3)[023]((?<=0)[13]|(?<=2)[01345678]|(?<=3)[01245])|(?<=4)[0123]((?<=0)[13]|(?<=1)[0135689]|(?<=2)[23456789]|(?<=3)[012345])|(?<=5)[02]((?<=0)[134567]|(?<=2)[01234567])|(?<=6)[012345]((?<=0)[1]|(?<=1)[0125]|(?<=2)[01345]|(?<=3)[01235789]|(?<=4)[012356789]|(?<=5)[0234567]))|(?<=2)[0123456789]((?<=0)[05678]((?<=0)[1579]|(?<=5)[01234589]|(?<=6)[013]|(?<=7)[023]|(?<=8)[1234])|(?<=1)[9]((?<=9)[0])|(?<=2)[0124]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[1234579]|(?<=4)[0234])|(?<=3)[0123]((?<=0)[1]|(?<=1)[0]|(?<=2)[1234579]|(?<=3)[12456])|(?<=4)[012345]((?<=0)[1]|(?<=1)[0124]|(?<=2)[012368]|(?<=3)[012345]|(?<=4)[0123]|(?<=5)[0])|(?<=5)[012]((?<=0)[1]|(?<=1)[023456]|(?<=2)[03])|(?<=6)[0234]((?<=0)[149]|(?<=2)[0]|(?<=3)[0356789]|(?<=4)[0234689])|(?<=7)[0123]((?<=0)[1]|(?<=1)[012468]|(?<=2)[013579]|(?<=3)[012])|(?<=8)[034]((?<=0)[1]|(?<=3)[123456789]|(?<=4)[245])|(?<=9)[0234]((?<=0)[1]|(?<=2)[2359]|(?<=3)[023456789]|(?<=4)[12345]))|(?<=3)[012345678]((?<=0)[012]((?<=0)[1]|(?<=1)[1234]|(?<=2)[5])|(?<=1)[012]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[01234678])|(?<=2)[012345678]((?<=0)[12349]|(?<=1)[01234578]|(?<=2)[013678]|(?<=3)[23456789]|(?<=4)[13456]|(?<=5)[012345]|(?<=6)[123]|(?<=7)[124678]|(?<=8)[13567])|(?<=3)[012345]((?<=0)[12]|(?<=1)[123468]|(?<=2)[01234578]|(?<=3)[02345678]|(?<=4)[01246789]|(?<=5)[02345])|(?<=4)[0123456]((?<=0)[1246]|(?<=1)[4]|(?<=2)[012345789]|(?<=3)[134568]|(?<=4)[02345689]|(?<=5)[01245]|(?<=6)[023456789])|(?<=5)[02345]((?<=0)[1]|(?<=2)[023456]|(?<=3)[035679]|(?<=4)[0123456789]|(?<=5)[2345])|(?<=6)[012345678]((?<=0)[2457]|(?<=1)[0125679]|(?<=2)[2346789]|(?<=3)[12346789]|(?<=4)[12345678]|(?<=5)[014567]|(?<=6)[0169]|(?<=7)[0267]|(?<=8)[67])|(?<=7)[012]((?<=0)[234569]|(?<=1)[2346]|(?<=2)[05])|(?<=8)[01234567]((?<=0)[12345689]|(?<=1)[012345]|(?<=2)[1234567]|(?<=3)[02345679]|(?<=4)[0123456789]|(?<=5)[01245678]|(?<=6)[0146789]|(?<=7)[012346]))|(?<=4)[0134567]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[034578]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[012345679]|(?<=7)[01234568]|(?<=8)[012345678]|(?<=9)[2345678])|(?<=1)[012358]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[013489]|(?<=3)[8]|(?<=5)[0]|(?<=8)[0])|(?<=3)[01234]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[01])|(?<=4)[01]((?<=0)[13458]|(?<=1)[4])|(?<=5)[01234]((?<=0)[1]|(?<=1)[123568]|(?<=2)[01235689]|(?<=3)[012345679]|(?<=4)[02])|(?<=6)[023456]((?<=0)[1246]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[023456789]|(?<=5)[1234567]|(?<=6)[023457])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[01234567]|(?<=7)[0234569]|(?<=8)[01234]|(?<=9)[0]))|(?<=5)[01235679]((?<=0)[0123458]((?<=0)[346789]|(?<=1)[23456789]|(?<=2)[012346789]|(?<=3)[123457]|(?<=4)[0123458]|(?<=5)[0134]|(?<=8)[3567])|(?<=1)[123479]((?<=1)[89]|(?<=2)[01238]|(?<=3)[125789]|(?<=4)[012357]|(?<=7)[23]|(?<=9)[1234])|(?<=2)[012345689]((?<=0)[123456789]|(?<=1)[0235]|(?<=2)[456]|(?<=3)[346]|(?<=4)[89]|(?<=5)[013456789]|(?<=6)[023468]|(?<=8)[12346]|(?<=9)[5678])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0]|(?<=2)[012345689]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[0123457]|(?<=7)[1345789]|(?<=8)[12378]|(?<=9)[0256])|(?<=5)[0345]((?<=0)[1]|(?<=3)[01234569]|(?<=4)[0123456]|(?<=5)[01234])|(?<=6)[012345]((?<=0)[12356789]|(?<=1)[013456789]|(?<=2)[012345679]|(?<=3)[012345789]|(?<=4)[013568]|(?<=5)[0348])|(?<=7)[012345]((?<=0)[1456789]|(?<=1)[012345689]|(?<=2)[1346]|(?<=3)[045679]|(?<=4)[12356789]|(?<=5)[0567])|(?<=9)[01234]((?<=0)[12]|(?<=1)[12]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[012]))|(?<=6)[0345]((?<=0)[012345]((?<=0)[1345]|(?<=1)[15678]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[0234567]|(?<=5)[234])|(?<=3)[012345]((?<=0)[135]|(?<=1)[345]|(?<=2)[012345679]|(?<=3)[12345678]|(?<=4)[3]|(?<=5)[1])|(?<=4)[01234]((?<=0)[13469]|(?<=1)[13]|(?<=2)[69]|(?<=3)[12345678]|(?<=4)[012345])|(?<=5)[012345]((?<=0)[2345678]|(?<=1)[01245]|(?<=2)[0]|(?<=3)[58]|(?<=4)[0457]|(?<=5)[6]))|(?<=7)[01345789]((?<=0)[012345678]((?<=0)[1245678]|(?<=1)[012345678]|(?<=2)[0123456789]|(?<=3)[1245678]|(?<=4)[0123456789]|(?<=5)[12369]|(?<=6)[012348]|(?<=7)[02]|(?<=8)[3])|(?<=1)[01245]((?<=0)[12456789]|(?<=1)[0123467]|(?<=2)[01234]|(?<=4)[4]|(?<=5)[1])|(?<=3)[0124567]((?<=0)[15]|(?<=1)[01235679]|(?<=2)[01235678]|(?<=4)[7]|(?<=5)[7]|(?<=6)[45]|(?<=7)[5])|(?<=4)[012569]((?<=0)[12]|(?<=1)[02356789]|(?<=2)[01]|(?<=5)[5]|(?<=6)[1]|(?<=9)[9])|(?<=5)[012345678]((?<=0)[15678]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[0125789]|(?<=4)[034789]|(?<=5)[1234678]|(?<=6)[0245679]|(?<=7)[135789]|(?<=8)[0123])|(?<=7)[012345]((?<=0)[1]|(?<=1)[0123458]|(?<=2)[23489]|(?<=3)[0123456]|(?<=4)[0235679]|(?<=5)[023])|(?<=8)[023]((?<=0)[1]|(?<=2)[01345789]|(?<=3)[012])|(?<=9)[034]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[0123]))|(?<=8)[01234]((?<=0)[012345678]((?<=0)[12345789]|(?<=1)[12]|(?<=2)[0123456789]|(?<=3)[0489]|(?<=4)[0123456789]|(?<=5)[12356]|(?<=6)[135]|(?<=7)[2]|(?<=8)[1])|(?<=1)[0123]((?<=0)[13]|(?<=1)[2345689]|(?<=2)[01456]|(?<=3)[02456])|(?<=2)[0123456]((?<=0)[13]|(?<=1)[0]|(?<=2)[0]|(?<=3)[012]|(?<=4)[024]|(?<=5)[023456]|(?<=6)[0234578])|(?<=3)[012345]((?<=0)[1]|(?<=1)[0124678]|(?<=2)[1345]|(?<=3)[06789]|(?<=4)[0123456789]|(?<=5)[012345])|(?<=4)[0123]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[12467]|(?<=3)[014569]))|(?<=9)[0134578]((?<=0)[012345678]((?<=0)[1234578]|(?<=1)[012345789]|(?<=2)[0125679]|(?<=3)[01249]|(?<=4)[023456789]|(?<=5)[24]|(?<=6)[01]|(?<=7)[04]|(?<=8)[1456])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[035789]|(?<=2)[0123489]|(?<=3)[014589]|(?<=4)[123456789]|(?<=5)[68]|(?<=6)[169]|(?<=7)[89]|(?<=8)[3]|(?<=9)[1])|(?<=3)[01]((?<=0)[1]|(?<=1)[01456789])|(?<=4)[01234569]((?<=0)[2345689]|(?<=1)[01234589]|(?<=2)[0123456789]|(?<=3)[01346789]|(?<=4)[012456789]|(?<=5)[01]|(?<=6)[0]|(?<=9)[6])|(?<=5)[0125]((?<=0)[123689]|(?<=1)[0129]|(?<=2)[13]|(?<=5)[7])|(?<=7)[0]((?<=0)[13456])|(?<=8)[01238]((?<=0)[1]|(?<=1)[5]|(?<=2)[0123568]|(?<=3)[012345]|(?<=8)[3])))|(?<=9)[0123456789]((?<=0)[02345678]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[26789]|(?<=6)[123456789]|(?<=7)[1379]|(?<=8)[9]|(?<=9)[45])|(?<=2)[0123456789]((?<=0)[1]|(?<=1)[012]|(?<=2)[012]|(?<=3)[02]|(?<=4)[0125789]|(?<=5)[045]|(?<=6)[02356]|(?<=7)[024578]|(?<=8)[0]|(?<=9)[0123])|(?<=3)[0]((?<=0)[12345])|(?<=4)[0]((?<=0)[12345])|(?<=5)[0]((?<=0)[123456])|(?<=6)[02345678]((?<=0)[123456]|(?<=2)[013]|(?<=3)[0189]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=7)[012345]((?<=0)[1346]|(?<=1)[023567]|(?<=2)[03]|(?<=3)[12]|(?<=4)[0234567]|(?<=5)[5])|(?<=8)[01234]((?<=0)[2345678]|(?<=1)[0345]|(?<=2)[2]|(?<=3)[1]|(?<=4)[0]))|(?<=1)[0123456789]((?<=0)[01234]((?<=0)[1678]|(?<=1)[016]|(?<=2)[04]|(?<=3)[0]|(?<=4)[026])|(?<=1)[02]((?<=0)[1345678]|(?<=2)[5])|(?<=2)[01]((?<=0)[12345678]|(?<=1)[04])|(?<=3)[0123456789]((?<=0)[123467]|(?<=1)[16]|(?<=2)[01456]|(?<=3)[015]|(?<=4)[02345]|(?<=5)[012456]|(?<=6)[01247]|(?<=7)[17]|(?<=8)[147]|(?<=9)[0])|(?<=4)[0123]((?<=0)[12356]|(?<=1)[1]|(?<=2)[3]|(?<=3)[6])|(?<=5)[0]((?<=0)[12456])|(?<=6)[0]((?<=0)[1245678])|(?<=7)[0123456789]((?<=0)[12689]|(?<=1)[01]|(?<=2)[234]|(?<=3)[012379]|(?<=4)[014568]|(?<=5)[02459]|(?<=6)[12345678]|(?<=7)[0356]|(?<=8)[0469]|(?<=9)[012])|(?<=8)[0]((?<=0)[13])|(?<=9)[01345678]((?<=0)[1256]|(?<=1)[0134567]|(?<=3)[1245]|(?<=4)[1258]|(?<=5)[0]|(?<=6)[23]|(?<=7)[78]|(?<=8)[0]))|(?<=2)[012345678]((?<=0)[0123456789]((?<=0)[34789]|(?<=1)[0149]|(?<=2)[01456789]|(?<=3)[67]|(?<=4)[0]|(?<=5)[456789]|(?<=6)[0145679]|(?<=7)[0158]|(?<=8)[12346]|(?<=9)[1236])|(?<=1)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[012346789]|(?<=3)[0124569]|(?<=4)[057]|(?<=5)[45]|(?<=6)[1]|(?<=7)[39]|(?<=8)[2])|(?<=2)[012345678]((?<=0)[13]|(?<=1)[01]|(?<=2)[02357]|(?<=3)[013469]|(?<=4)[01239]|(?<=5)[012346789]|(?<=6)[024678]|(?<=7)[0345678]|(?<=8)[012345])|(?<=3)[0123456789]((?<=0)[145789]|(?<=1)[0134567]|(?<=2)[0124578]|(?<=3)[2356789]|(?<=4)[124567]|(?<=5)[024689]|(?<=6)[34589]|(?<=7)[1234678]|(?<=8)[24569]|(?<=9)[1245789])|(?<=4)[01]((?<=0)[14578]|(?<=1)[015])|(?<=5)[0123456789]((?<=0)[13456789]|(?<=1)[8]|(?<=2)[1]|(?<=3)[0269]|(?<=4)[34589]|(?<=5)[1357]|(?<=6)[1237]|(?<=7)[01]|(?<=8)[234567]|(?<=9)[01256])|(?<=6)[0123456789]((?<=0)[2346]|(?<=1)[02478]|(?<=2)[045679]|(?<=3)[07]|(?<=4)[6789]|(?<=5)[13567]|(?<=6)[0123]|(?<=7)[2356789]|(?<=8)[38]|(?<=9)[1247])|(?<=7)[08]((?<=0)[1345678]|(?<=8)[02])|(?<=8)[0234678]((?<=0)[1245678]|(?<=2)[13]|(?<=3)[1235]|(?<=4)[01345]|(?<=6)[0156789]|(?<=7)[09]|(?<=8)[012367]))|(?<=3)[012345679]((?<=0)[012346]((?<=0)[134]|(?<=1)[0235]|(?<=2)[123]|(?<=3)[0356]|(?<=4)[0123]|(?<=6)[034567])|(?<=1)[01]((?<=0)[135689]|(?<=1)[017])|(?<=2)[0123456789]((?<=0)[12345678]|(?<=1)[02589]|(?<=2)[01234567]|(?<=3)[045789]|(?<=4)[012345679]|(?<=5)[01245678]|(?<=6)[01235678]|(?<=7)[012467]|(?<=8)[03567]|(?<=9)[12])|(?<=3)[01]((?<=0)[1456789]|(?<=1)[1234])|(?<=4)[0123456]((?<=0)[125789]|(?<=1)[0]|(?<=2)[0246789]|(?<=3)[023467]|(?<=4)[0124569]|(?<=5)[0123458]|(?<=6)[0135])|(?<=5)[012345689]((?<=0)[15]|(?<=1)[02346789]|(?<=2)[2346789]|(?<=3)[012456]|(?<=4)[134569]|(?<=5)[0123458]|(?<=6)[0123]|(?<=8)[1]|(?<=9)[1])|(?<=6)[01234567]((?<=0)[12345689]|(?<=1)[01245689]|(?<=2)[012345678]|(?<=3)[01345678]|(?<=4)[01345678]|(?<=5)[0123467]|(?<=6)[02456789]|(?<=7)[035])|(?<=7)[01234]((?<=0)[123456]|(?<=1)[01]|(?<=2)[01235678]|(?<=3)[07]|(?<=4)[01])|(?<=9)[023456]((?<=0)[15678]|(?<=2)[01345678]|(?<=3)[023]|(?<=4)[034]|(?<=5)[0345]|(?<=6)[02]))|(?<=4)[013456789]((?<=0)[01234678]((?<=0)[25]|(?<=1)[04589]|(?<=2)[0124578]|(?<=3)[078]|(?<=4)[0134]|(?<=6)[012356]|(?<=7)[04]|(?<=8)[05679])|(?<=1)[012358]((?<=0)[2345789]|(?<=1)[01245678]|(?<=2)[1234789]|(?<=3)[01234]|(?<=5)[8]|(?<=8)[8])|(?<=3)[0]((?<=0)[13456])|(?<=4)[0]((?<=0)[1234])|(?<=5)[0123456789]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[013568]|(?<=3)[01345689]|(?<=4)[12456789]|(?<=5)[01235689]|(?<=6)[0123456789]|(?<=7)[123456789]|(?<=8)[02356789]|(?<=9)[01256789])|(?<=6)[012]((?<=0)[12356789]|(?<=1)[012389]|(?<=2)[1])|(?<=7)[012]((?<=0)[23456789]|(?<=1)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0234567]((?<=0)[134]|(?<=2)[0234589]|(?<=3)[013789]|(?<=4)[015679]|(?<=5)[012467]|(?<=6)[0345]|(?<=7)[0123]))|(?<=5)[0123456789]((?<=0)[01234567]((?<=0)[2345678]|(?<=1)[0234789]|(?<=2)[03]|(?<=3)[023579]|(?<=4)[1356]|(?<=5)[0134]|(?<=6)[02456]|(?<=7)[0356])|(?<=1)[1234]((?<=1)[01236789]|(?<=2)[0123456789]|(?<=3)[012345689]|(?<=4)[08])|(?<=2)[012345]((?<=0)[2345679]|(?<=1)[01259]|(?<=2)[012345678]|(?<=3)[012367]|(?<=4)[0256789]|(?<=5)[1234578])|(?<=3)[0123456789]((?<=0)[1345679]|(?<=1)[012356789]|(?<=2)[0123456789]|(?<=3)[0345678]|(?<=4)[01568]|(?<=5)[0145678]|(?<=6)[013456789]|(?<=7)[0245679]|(?<=8)[02356789]|(?<=9)[1])|(?<=4)[0123456789]((?<=0)[134579]|(?<=1)[02579]|(?<=2)[012356789]|(?<=3)[0125679]|(?<=4)[12345689]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[0126]|(?<=8)[02568]|(?<=9)[02347])|(?<=5)[0123456789]((?<=0)[13]|(?<=1)[149]|(?<=2)[145678]|(?<=3)[1678]|(?<=4)[02356789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[013]|(?<=8)[579]|(?<=9)[5])|(?<=6)[0123456789]((?<=0)[12345678]|(?<=1)[02345689]|(?<=2)[013456789]|(?<=3)[0123456789]|(?<=4)[012568]|(?<=5)[0123589]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345789])|(?<=7)[01234567]((?<=0)[139]|(?<=1)[3457]|(?<=2)[01268]|(?<=3)[56]|(?<=4)[267]|(?<=5)[78]|(?<=6)[25]|(?<=7)[6])|(?<=8)[12346]((?<=1)[1456789]|(?<=2)[0123456789]|(?<=3)[01234578]|(?<=4)[123]|(?<=6)[4])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[023456789]|(?<=2)[0235689]|(?<=3)[02456789]|(?<=4)[123456789]|(?<=5)[013456789]|(?<=6)[01235689]|(?<=7)[012345789]|(?<=8)[1234678]|(?<=9)[13]))|(?<=6)[01789]((?<=0)[0123456789]((?<=0)[1236789]|(?<=1)[01345679]|(?<=2)[012345789]|(?<=3)[12345789]|(?<=4)[014678]|(?<=5)[012456789]|(?<=6)[12345789]|(?<=7)[134568]|(?<=8)[045678]|(?<=9)[0123467])|(?<=1)[0123456]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0234567]|(?<=4)[0123568]|(?<=5)[05]|(?<=6)[1])|(?<=7)[0123456789]((?<=0)[1345678]|(?<=1)[0234679]|(?<=2)[0256789]|(?<=3)[012478]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[012345689]|(?<=7)[012346789]|(?<=8)[0123569]|(?<=9)[01235679])|(?<=8)[12456]((?<=1)[3456789]|(?<=2)[01256]|(?<=4)[8]|(?<=5)[03789]|(?<=6)[03])|(?<=9)[125]((?<=1)[03567]|(?<=2)[89]|(?<=5)[012]))|(?<=7)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[13456789]|(?<=2)[012346789]|(?<=3)[012345789]|(?<=4)[012589]|(?<=5)[01345678]|(?<=6)[0234578]|(?<=7)[018]|(?<=8)[069])|(?<=1)[01234]((?<=0)[1236789]|(?<=1)[0123456789]|(?<=2)[1234578]|(?<=3)[012345678]|(?<=4)[01456789])|(?<=2)[012356]((?<=0)[12345689]|(?<=1)[0123456789]|(?<=2)[01234579]|(?<=3)[012369]|(?<=5)[8]|(?<=6)[67])|(?<=3)[0123456789]((?<=0)[123456]|(?<=1)[07]|(?<=2)[1245679]|(?<=3)[013568]|(?<=4)[12345678]|(?<=5)[012578]|(?<=6)[012456789]|(?<=7)[01345678]|(?<=8)[01345689]|(?<=9)[01246])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[012345679]|(?<=2)[03469]|(?<=3)[012456789]|(?<=4)[12346789]|(?<=5)[0123456789]|(?<=6)[1235679]|(?<=7)[0136789]|(?<=8)[0146789]|(?<=9)[023456789])|(?<=5)[0234]((?<=0)[1234]|(?<=2)[0234567]|(?<=3)[012456789]|(?<=4)[0134])|(?<=6)[0234]((?<=0)[134]|(?<=2)[01234567]|(?<=3)[023456789]|(?<=4)[01])|(?<=7)[0123456]((?<=0)[12379]|(?<=1)[012]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[1]|(?<=5)[01234689]|(?<=6)[01])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[0234789]|(?<=2)[0345678]|(?<=3)[03456789]|(?<=4)[01234568]|(?<=5)[0679]|(?<=6)[245789]|(?<=7)[034567]|(?<=8)[023456])|(?<=9)[012]((?<=0)[123456789]|(?<=1)[013478]|(?<=2)[0]))|(?<=8)[012345689]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[01249]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[02357]|(?<=5)[012356789]|(?<=6)[58]|(?<=7)[02457]|(?<=8)[7]|(?<=9)[2])|(?<=1)[0123456789]((?<=0)[123456789]|(?<=1)[0256789]|(?<=2)[1256]|(?<=3)[346]|(?<=4)[468]|(?<=5)[458]|(?<=6)[468]|(?<=7)[478]|(?<=8)[8]|(?<=9)[589])|(?<=2)[023456789]((?<=0)[13478]|(?<=2)[01234569]|(?<=3)[02356789]|(?<=4)[01345789]|(?<=5)[01235678]|(?<=6)[0123467]|(?<=7)[0123456789]|(?<=8)[0123468]|(?<=9)[024567])|(?<=3)[0123456789]((?<=0)[345]|(?<=1)[01245]|(?<=2)[01356789]|(?<=3)[012356789]|(?<=4)[02569]|(?<=5)[013456789]|(?<=6)[012345678]|(?<=7)[01234567]|(?<=8)[0123578]|(?<=9)[01246])|(?<=4)[0123469]((?<=0)[23456789]|(?<=1)[68]|(?<=2)[124]|(?<=3)[0389]|(?<=4)[34567]|(?<=6)[567]|(?<=9)[89])|(?<=5)[0123456789]((?<=0)[12356]|(?<=1)[236]|(?<=2)[04678]|(?<=3)[012356789]|(?<=4)[124678]|(?<=5)[0256789]|(?<=6)[02345689]|(?<=7)[0125679]|(?<=8)[0123456789]|(?<=9)[0123567])|(?<=6)[012345678]((?<=0)[12345679]|(?<=1)[01234679]|(?<=2)[01345689]|(?<=3)[12589]|(?<=4)[012345789]|(?<=5)[01]|(?<=6)[012345]|(?<=7)[012345]|(?<=8)[23456])|(?<=8)[0123456]((?<=0)[12]|(?<=1)[12345679]|(?<=2)[12346789]|(?<=3)[0123467]|(?<=4)[013456789]|(?<=5)[012356789]|(?<=6)[02])|(?<=9)[02345]((?<=0)[1238]|(?<=2)[12356]|(?<=3)[023456789]|(?<=4)[01234678]|(?<=5)[0123]))|(?<=9)[0123456789]((?<=0)[01234]((?<=0)[1345689]|(?<=1)[12346789]|(?<=2)[01235679]|(?<=3)[01234679]|(?<=4)[0])|(?<=1)[012345678]((?<=0)[12359]|(?<=1)[013456789]|(?<=2)[12345689]|(?<=3)[013456789]|(?<=4)[01346789]|(?<=5)[0123456789]|(?<=6)[013679]|(?<=7)[013469]|(?<=8)[015])|(?<=2)[0125]((?<=0)[12345678]|(?<=1)[2678]|(?<=2)[34]|(?<=5)[18])|(?<=3)[0234567]((?<=0)[1]|(?<=2)[01234689]|(?<=3)[035678]|(?<=4)[13456789]|(?<=5)[0234679]|(?<=6)[0123]|(?<=7)[1])|(?<=4)[0]((?<=0)[123])|(?<=5)[013456789]((?<=0)[12345678]|(?<=1)[356789]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0123456789]|(?<=6)[13456789]|(?<=7)[123456789]|(?<=8)[01356789]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[23456789]|(?<=1)[012345]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[012345])|(?<=7)[0123456789]((?<=0)[12345679]|(?<=1)[24]|(?<=2)[012345679]|(?<=3)[02346789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012345678]|(?<=8)[012345689]|(?<=9)[01])|(?<=8)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[02356]|(?<=4)[01]|(?<=5)[0])|(?<=9)[012]((?<=0)[13]|(?<=1)[89]|(?<=2)[1235679])))))$"), + EE: new RegExp("^([798154362]((?<=7)[614503298]((?<=6)[6978014235]((?<=6)[012]((?<=0)[798536]|(?<=1)[0467123958]|(?<=2)[314206])|(?<=9)[012]((?<=0)[168923574]|(?<=1)[7826901345]|(?<=2)[14325])|(?<=7)[01]((?<=0)[476938251]|(?<=1)[351082469])|(?<=8)[0]((?<=0)[56741])|(?<=0)[012]((?<=0)[913768425]|(?<=1)[9706534821]|(?<=2)[3120])|(?<=1)[0]((?<=0)[7134256])|(?<=4)[01]((?<=0)[645327198]|(?<=1)[456310827])|(?<=2)[10]((?<=1)[8905341672]|(?<=0)[431297586])|(?<=3)[01]((?<=0)[146523978]|(?<=1)[781362045])|(?<=5)[0]((?<=0)[65]))|(?<=1)[025413]((?<=0)[0128675]((?<=0)[48735912]|(?<=1)[063254178]|(?<=2)[043]|(?<=8)[210]|(?<=6)[7658493]|(?<=7)[20134]|(?<=5)[7286543])|(?<=2)[108]((?<=1)[10]|(?<=0)[17253469]|(?<=8)[0])|(?<=5)[01]((?<=0)[67548321]|(?<=1)[1203])|(?<=4)[018]((?<=0)[913628745]|(?<=1)[120]|(?<=8)[0])|(?<=1)[2018]((?<=2)[403125]|(?<=0)[29381457]|(?<=1)[802194]|(?<=8)[30])|(?<=3)[0]((?<=0)[193826754]))|(?<=4)[801267345]((?<=8)[01]((?<=0)[65798]|(?<=1)[2106435])|(?<=0)[102]((?<=1)[1792634058]|(?<=0)[1945678]|(?<=2)[04123])|(?<=1)[12]((?<=1)[7346125]|(?<=2)[120])|(?<=2)[2130]((?<=2)[0293468157]|(?<=1)[6213074589]|(?<=3)[0]|(?<=0)[961527348])|(?<=6)[30214]((?<=3)[0268195374]|(?<=0)[47918625]|(?<=2)[3695714028]|(?<=1)[2964075318]|(?<=4)[012])|(?<=7)[012]((?<=0)[31246789]|(?<=1)[6307928145]|(?<=2)[01])|(?<=3)[01]((?<=0)[7569]|(?<=1)[5246310])|(?<=4)[01]((?<=0)[39571428]|(?<=1)[20516347])|(?<=5)[0]((?<=0)[321]))|(?<=5)[320451]((?<=3)[1023]((?<=1)[7493601852]|(?<=0)[396152748]|(?<=2)[130426975]|(?<=3)[01])|(?<=2)[012]((?<=0)[123574968]|(?<=1)[0213746895]|(?<=2)[3425016])|(?<=0)[0312]((?<=0)[376849521]|(?<=3)[014586723]|(?<=1)[7654930281]|(?<=2)[4138609527])|(?<=4)[01]((?<=0)[419287365]|(?<=1)[3761054])|(?<=5)[01]((?<=0)[13578496]|(?<=1)[2603487159])|(?<=1)[012]((?<=0)[732416859]|(?<=1)[6793284015]|(?<=2)[6301524]))|(?<=0)[164325]((?<=1)[0128]((?<=0)[916483752]|(?<=1)[065341728]|(?<=2)[2130]|(?<=8)[102])|(?<=6)[0]((?<=0)[423965781])|(?<=4)[018]((?<=0)[174396852]|(?<=1)[412350]|(?<=8)[2])|(?<=3)[01]((?<=0)[86437912]|(?<=1)[01453786])|(?<=2)[10]((?<=1)[1]|(?<=0)[12])|(?<=5)[01]((?<=0)[245913687]|(?<=1)[1]))|(?<=3)[4056312]((?<=4)[01]((?<=0)[295813764]|(?<=1)[1365024])|(?<=0)[012]((?<=0)[231475698]|(?<=1)[9782430651]|(?<=2)[57321064])|(?<=5)[10]((?<=1)[04123]|(?<=0)[24875163])|(?<=6)[10]((?<=1)[150342]|(?<=0)[136492587])|(?<=3)[01]((?<=0)[842169573]|(?<=1)[0])|(?<=1)[01]((?<=0)[451839276]|(?<=1)[201])|(?<=2)[01]((?<=0)[251374689]|(?<=1)[1302]))|(?<=2)[072583146]((?<=0)[01]((?<=0)[97615423]|(?<=1)[01])|(?<=7)[25106]((?<=2)[0]|(?<=5)[896275413]|(?<=1)[823169574]|(?<=0)[1]|(?<=6)[1230])|(?<=2)[3410]((?<=3)[41032]|(?<=4)[3421650]|(?<=1)[031245]|(?<=0)[1])|(?<=5)[01]((?<=0)[178942635]|(?<=1)[3074216])|(?<=8)[10]((?<=1)[4132]|(?<=0)[5462731])|(?<=3)[10]((?<=1)[102]|(?<=0)[264581739])|(?<=1)[0]((?<=0)[231])|(?<=4)[10]((?<=1)[012]|(?<=0)[457316289])|(?<=6)[01]((?<=0)[678251394]|(?<=1)[354012]))|(?<=9)[513048762]((?<=5)[1432]((?<=1)[841726359]|(?<=4)[02134]|(?<=3)[210]|(?<=2)[9251460387])|(?<=1)[01]((?<=0)[1]|(?<=1)[210])|(?<=3)[2031]((?<=2)[430125]|(?<=0)[312]|(?<=3)[3]|(?<=1)[342])|(?<=0)[706152]((?<=7)[1302]|(?<=0)[62415938]|(?<=6)[8573021946]|(?<=1)[9215034678]|(?<=5)[13204]|(?<=2)[3201])|(?<=4)[01]((?<=0)[83967514]|(?<=1)[23791085])|(?<=8)[05314]((?<=0)[654178]|(?<=5)[2]|(?<=3)[0167]|(?<=1)[4325108]|(?<=4)[31])|(?<=7)[041]((?<=0)[51263894]|(?<=4)[435218]|(?<=1)[0])|(?<=6)[0134265]((?<=0)[67143258]|(?<=1)[071489365]|(?<=3)[10324]|(?<=4)[12034]|(?<=2)[0123]|(?<=6)[1]|(?<=5)[4])|(?<=2)[10]((?<=1)[31627845]|(?<=0)[1]))|(?<=8)[42301]((?<=4)[102]((?<=1)[5238901647]|(?<=0)[214596378]|(?<=2)[3021])|(?<=2)[0241356]((?<=0)[5637124]|(?<=2)[6371508492]|(?<=4)[6945283170]|(?<=1)[927581634]|(?<=3)[7590148263]|(?<=5)[6809735241]|(?<=6)[1032])|(?<=3)[01]((?<=0)[2415]|(?<=1)[38572461])|(?<=0)[1203]((?<=1)[358497612]|(?<=2)[0173962854]|(?<=0)[341]|(?<=3)[34102])|(?<=1)[012]((?<=0)[123]|(?<=1)[946183752]|(?<=2)[012])))|(?<=9)[34201]((?<=3)[048365217]((?<=0)[0]((?<=0)[1])|(?<=4)[45306127]((?<=4)[1047859236]|(?<=5)[4136205]|(?<=3)[421568973]|(?<=0)[1]|(?<=6)[781524369]|(?<=1)[214735]|(?<=2)[1]|(?<=7)[01])|(?<=8)[158724639]((?<=1)[2156038497]|(?<=5)[17926385]|(?<=8)[4861253970]|(?<=7)[241635]|(?<=2)[60]|(?<=4)[8437651]|(?<=6)[10]|(?<=3)[3296157]|(?<=9)[102])|(?<=3)[13240]((?<=1)[3461729]|(?<=3)[01]|(?<=2)[8253714096]|(?<=4)[312]|(?<=0)[1])|(?<=6)[13240]((?<=1)[2645371]|(?<=3)[54231]|(?<=2)[321]|(?<=4)[53241]|(?<=0)[1])|(?<=5)[201365]((?<=2)[6847395102]|(?<=0)[1]|(?<=1)[21]|(?<=3)[0]|(?<=6)[12]|(?<=5)[1])|(?<=2)[14235076]((?<=1)[36457812]|(?<=4)[0754682391]|(?<=2)[34021]|(?<=3)[528743196]|(?<=5)[10]|(?<=0)[1]|(?<=7)[1]|(?<=6)[10])|(?<=1)[012]((?<=0)[1]|(?<=1)[31245]|(?<=2)[12])|(?<=7)[310254]((?<=3)[45123]|(?<=1)[5471236]|(?<=0)[1]|(?<=2)[53241]|(?<=5)[324156]|(?<=4)[125436]))|(?<=4)[7126354]((?<=7)[5643210]((?<=5)[9576034128]|(?<=6)[4136520]|(?<=4)[196824375]|(?<=3)[24013]|(?<=2)[4783691025]|(?<=1)[564172839]|(?<=0)[21])|(?<=1)[42501637]((?<=4)[923154678]|(?<=2)[0792463851]|(?<=5)[13405]|(?<=0)[12]|(?<=1)[347862591]|(?<=6)[12]|(?<=3)[01]|(?<=7)[1])|(?<=2)[62543017]((?<=6)[23145]|(?<=2)[35124]|(?<=5)[9347015682]|(?<=4)[4820371659]|(?<=3)[823791546]|(?<=0)[12]|(?<=1)[691532847]|(?<=7)[2431])|(?<=6)[5134620]((?<=5)[195283746]|(?<=1)[321]|(?<=3)[6873549102]|(?<=4)[201]|(?<=6)[01]|(?<=2)[95826341]|(?<=0)[1])|(?<=3)[04231]((?<=0)[12]|(?<=4)[357264801]|(?<=2)[3102]|(?<=3)[783645291]|(?<=1)[258671394])|(?<=5)[324501]((?<=3)[719352648]|(?<=2)[2310]|(?<=4)[205431]|(?<=5)[321]|(?<=0)[1]|(?<=1)[3589271])|(?<=4)[01324]((?<=0)[1]|(?<=1)[984637512]|(?<=3)[43215]|(?<=2)[231504]|(?<=4)[32]))|(?<=2)[32140]((?<=3)[61240357]((?<=6)[931476582]|(?<=1)[319478526]|(?<=2)[2301]|(?<=4)[1639840572]|(?<=0)[21]|(?<=3)[47562318]|(?<=5)[01]|(?<=7)[0])|(?<=2)[06324157]((?<=0)[12]|(?<=6)[534701698]|(?<=3)[043526187]|(?<=2)[8954603271]|(?<=4)[961473258]|(?<=1)[728536914]|(?<=5)[9872403156]|(?<=7)[0])|(?<=1)[6270314]((?<=6)[314256]|(?<=2)[712496358]|(?<=7)[2148379]|(?<=0)[21]|(?<=3)[820365147]|(?<=1)[1684253]|(?<=4)[1])|(?<=4)[12]((?<=1)[1423]|(?<=2)[1204])|(?<=0)[2054136]((?<=2)[8164329750]|(?<=0)[321]|(?<=5)[8916472035]|(?<=4)[781652493]|(?<=1)[251743986]|(?<=3)[0]|(?<=6)[0]))|(?<=0)[547362189]((?<=5)[01]((?<=0)[35248679]|(?<=1)[0])|(?<=4)[03452168]((?<=0)[931752486]|(?<=3)[3980256714]|(?<=4)[46083125]|(?<=5)[3246185907]|(?<=2)[230175846]|(?<=1)[2049361578]|(?<=6)[013]|(?<=8)[10])|(?<=7)[210]((?<=2)[0]|(?<=1)[9541068372]|(?<=0)[1342])|(?<=3)[0]((?<=0)[3254])|(?<=6)[023145]((?<=0)[1526]|(?<=2)[5794062318]|(?<=3)[120564]|(?<=1)[246753]|(?<=4)[45106327]|(?<=5)[1])|(?<=2)[21304]((?<=2)[271864035]|(?<=1)[154923]|(?<=3)[1782430956]|(?<=0)[165278]|(?<=4)[160532847])|(?<=1)[0213]((?<=0)[372518496]|(?<=2)[357601248]|(?<=1)[836154207]|(?<=3)[102])|(?<=8)[102]((?<=1)[438627519]|(?<=0)[5142786]|(?<=2)[0])|(?<=9)[01]((?<=0)[1234]|(?<=1)[1]))|(?<=1)[0231]((?<=0)[102]((?<=1)[74213658]|(?<=0)[84156372]|(?<=2)[01])|(?<=2)[1302]((?<=1)[285319476]|(?<=3)[1320]|(?<=0)[14263875]|(?<=2)[01])|(?<=3)[01]((?<=0)[158629743]|(?<=1)[04213])|(?<=1)[01]((?<=0)[436251]|(?<=1)[425])))|(?<=8)[80756]((?<=8)[23014]((?<=2)[13024]((?<=1)[0259637481]|(?<=3)[7286945130]|(?<=0)[968412375]|(?<=2)[8314709562]|(?<=4)[0])|(?<=3)[102]((?<=1)[1357890462]|(?<=0)[518396274]|(?<=2)[2413605])|(?<=0)[0]((?<=0)[5432])|(?<=1)[012]((?<=0)[629135874]|(?<=1)[9021837465]|(?<=2)[0])|(?<=4)[13204]((?<=1)[6532471980]|(?<=3)[1805729463]|(?<=2)[1260735849]|(?<=0)[712943586]|(?<=4)[021]))|(?<=0)[0]((?<=0)[41239]((?<=4)[7521304]|(?<=1)[3258176490]|(?<=2)[0258349761]|(?<=3)[8463590712]|(?<=9)[98]))|(?<=7)[63724510]((?<=6)[0231]((?<=0)[589134276]|(?<=2)[7245309186]|(?<=3)[6302145]|(?<=1)[9170845362])|(?<=3)[10]((?<=1)[210]|(?<=0)[982531467])|(?<=7)[0]((?<=0)[1])|(?<=2)[23014]((?<=2)[4956301728]|(?<=3)[3062814957]|(?<=0)[372816954]|(?<=1)[3982016745]|(?<=4)[3120])|(?<=4)[0]((?<=0)[6321475])|(?<=5)[0]((?<=0)[1])|(?<=1)[0]((?<=0)[1])|(?<=0)[0]((?<=0)[1]))|(?<=5)[0]((?<=0)[01]((?<=0)[837291564]|(?<=1)[01]))|(?<=6)[873064251]((?<=8)[102]((?<=1)[6935087214]|(?<=0)[712953684]|(?<=2)[10])|(?<=7)[0]((?<=0)[534])|(?<=3)[0]((?<=0)[34561])|(?<=0)[012]((?<=0)[168493725]|(?<=1)[9084672351]|(?<=2)[10])|(?<=6)[0]((?<=0)[124635])|(?<=4)[01]((?<=0)[893152476]|(?<=1)[01])|(?<=2)[10]((?<=1)[10543267]|(?<=0)[921876534])|(?<=5)[0]((?<=0)[639581274])|(?<=1)[0]((?<=0)[239478156])))|(?<=1)[031259]((?<=0)[149630]((?<=1)[12345]((?<=1)[231984756]|(?<=2)[5391076428]|(?<=3)[3745208691]|(?<=4)[2514673908]|(?<=5)[210534968])|(?<=4)[1]((?<=1)[125436])|(?<=9)[12]((?<=1)[926387451]|(?<=2)[120])|(?<=6)[12]((?<=1)[612853794]|(?<=2)[10])|(?<=3)[12]((?<=1)[893147526]|(?<=2)[013])|(?<=0)[0]((?<=0)[1]))|(?<=3)[85964]((?<=8)[1]((?<=1)[6712])|(?<=5)[12]((?<=1)[693215874]|(?<=2)[014523])|(?<=9)[1]((?<=1)[497213568])|(?<=6)[21]((?<=2)[7461382095]|(?<=1)[913285764])|(?<=4)[21]((?<=2)[6510423]|(?<=1)[859641237]))|(?<=1)[7692341]((?<=7)[1]((?<=1)[231])|(?<=6)[12]((?<=1)[583942176]|(?<=2)[153420])|(?<=9)[1]((?<=1)[4321])|(?<=2)[1]((?<=1)[38724516])|(?<=3)[1]((?<=1)[13762458])|(?<=4)[1]((?<=1)[1245637])|(?<=1)[0]((?<=0)[1]))|(?<=2)[0169]((?<=0)[1]((?<=1)[54132])|(?<=1)[1]((?<=1)[123])|(?<=6)[21]((?<=2)[0]|(?<=1)[867341952])|(?<=9)[1]((?<=1)[631452789]))|(?<=5)[01]((?<=0)[450931267]((?<=4)[7981]|(?<=5)[095]|(?<=0)[79]|(?<=9)[8594]|(?<=3)[0]|(?<=1)[5]|(?<=2)[6]|(?<=6)[5]|(?<=7)[1])|(?<=1)[7968]((?<=7)[02]|(?<=9)[903]|(?<=6)[15]|(?<=8)[58]))|(?<=9)[0]((?<=0)[8]((?<=8)[6])))|(?<=5)[01]((?<=0)[4136705]((?<=4)[10]((?<=1)[20163457]|(?<=0)[6497538])|(?<=1)[10]((?<=1)[130452]|(?<=0)[5673984])|(?<=3)[0]((?<=0)[43])|(?<=6)[0]((?<=0)[365471])|(?<=7)[0]((?<=0)[587463])|(?<=0)[95]((?<=9)[0613]|(?<=5)[0])|(?<=5)[0]((?<=0)[1]))|(?<=1)[0]((?<=0)[10]((?<=1)[170]|(?<=0)[76395481])))|(?<=4)[513649028]((?<=5)[2143056]((?<=2)[02134]((?<=0)[425961378]|(?<=2)[5271640983]|(?<=1)[0756324819]|(?<=3)[9740182356]|(?<=4)[314])|(?<=1)[0]((?<=0)[68971])|(?<=4)[143052]((?<=1)[0712368945]|(?<=4)[5681329407]|(?<=3)[5328690471]|(?<=0)[163852479]|(?<=5)[01]|(?<=2)[6528149730])|(?<=3)[021]((?<=0)[316279485]|(?<=2)[01]|(?<=1)[6802475139])|(?<=0)[10]((?<=1)[10]|(?<=0)[653279148])|(?<=5)[0]((?<=0)[1])|(?<=6)[0]((?<=0)[1]))|(?<=1)[517203]((?<=5)[35469]((?<=3)[68235714]|(?<=5)[120376458]|(?<=4)[261354789]|(?<=6)[8]|(?<=9)[789513])|(?<=1)[01]((?<=0)[21634579]|(?<=1)[524031])|(?<=7)[102]((?<=1)[5438627]|(?<=0)[21]|(?<=2)[6])|(?<=2)[01]((?<=0)[631749258]|(?<=1)[145302])|(?<=0)[01]((?<=0)[397546812]|(?<=1)[2031])|(?<=3)[021]((?<=0)[932815467]|(?<=2)[03214]|(?<=1)[97254810]))|(?<=3)[40123]((?<=4)[0]((?<=0)[12438657])|(?<=0)[03]((?<=0)[41356]|(?<=3)[7])|(?<=1)[32]((?<=3)[13548762]|(?<=2)[5421])|(?<=2)[29]((?<=2)[125]|(?<=9)[9])|(?<=3)[0123]((?<=0)[345819672]|(?<=1)[10]|(?<=2)[1]|(?<=3)[1]))|(?<=6)[26035714]((?<=2)[01234]((?<=0)[741298653]|(?<=1)[6349271085]|(?<=2)[9827054316]|(?<=3)[014523]|(?<=4)[1])|(?<=6)[31204]((?<=3)[5802176943]|(?<=1)[5732801964]|(?<=2)[0842713956]|(?<=0)[472613985]|(?<=4)[210])|(?<=0)[2013]((?<=2)[8146097253]|(?<=0)[216349758]|(?<=1)[8615420973]|(?<=3)[0])|(?<=3)[2013]((?<=2)[591486032]|(?<=0)[125967348]|(?<=1)[9875320641]|(?<=3)[012])|(?<=5)[01]((?<=0)[546327198]|(?<=1)[4861539072])|(?<=7)[10]((?<=1)[103452]|(?<=0)[618729453])|(?<=1)[0]((?<=0)[56781])|(?<=4)[0]((?<=0)[1]))|(?<=4)[04312]((?<=0)[3201]((?<=3)[3715402]|(?<=2)[5864902137]|(?<=0)[314857629]|(?<=1)[5937408612])|(?<=4)[210]((?<=2)[0]|(?<=1)[4758029613]|(?<=0)[258634197])|(?<=3)[102]((?<=1)[27603154]|(?<=0)[87695]|(?<=2)[0])|(?<=1)[0]((?<=0)[69758])|(?<=2)[0123]((?<=0)[318249756]|(?<=1)[9201475836]|(?<=2)[7846301295]|(?<=3)[0]))|(?<=9)[2405136]((?<=2)[120]((?<=1)[37126089]|(?<=2)[308146572]|(?<=0)[56479318])|(?<=4)[012]((?<=0)[7648935]|(?<=1)[6573124809]|(?<=2)[351260])|(?<=0)[01]((?<=0)[38724695]|(?<=1)[20413])|(?<=5)[0]((?<=0)[93672854])|(?<=1)[102]((?<=1)[5793084162]|(?<=0)[6859743]|(?<=2)[07426135])|(?<=3)[102]((?<=1)[5162879043]|(?<=0)[6489753]|(?<=2)[31024])|(?<=6)[0]((?<=0)[43]))|(?<=0)[12]((?<=1)[021]((?<=0)[451963728]|(?<=2)[01]|(?<=1)[4275861093])|(?<=2)[34]((?<=3)[231]|(?<=4)[1]))|(?<=2)[1230]((?<=1)[1023]((?<=1)[5638290174]|(?<=0)[21438796]|(?<=2)[120]|(?<=3)[0])|(?<=2)[01]((?<=0)[86947532]|(?<=1)[31])|(?<=3)[012]((?<=0)[423519687]|(?<=1)[7934268150]|(?<=2)[13204])|(?<=0)[0]((?<=0)[1573642]))|(?<=8)[052431]((?<=0)[0213]((?<=0)[1658347]|(?<=2)[9614823057]|(?<=1)[8743569102]|(?<=3)[021])|(?<=5)[201]((?<=2)[0243561]|(?<=0)[37215698]|(?<=1)[0942536178])|(?<=2)[120]((?<=1)[6297048153]|(?<=2)[20341]|(?<=0)[57863429])|(?<=4)[10234]((?<=1)[3506487192]|(?<=0)[9675]|(?<=2)[8651370429]|(?<=3)[6834015792]|(?<=4)[635410])|(?<=3)[0]((?<=0)[3954678])|(?<=1)[0]((?<=0)[5634])))|(?<=3)[10]((?<=1)[02]((?<=0)[2]((?<=2)[6715243])|(?<=2)[2]((?<=2)[1]))|(?<=0)[376251]((?<=3)[239]((?<=2)[45316782]|(?<=3)[312]|(?<=9)[5])|(?<=7)[2]((?<=2)[12])|(?<=6)[20]((?<=2)[16345]|(?<=0)[1])|(?<=2)[2]((?<=2)[12])|(?<=5)[0]((?<=0)[76345])|(?<=1)[09]((?<=0)[3]|(?<=9)[87])))|(?<=6)[1032489756]((?<=1)[60127534]((?<=6)[102]((?<=1)[6479053281]|(?<=0)[123847596]|(?<=2)[102])|(?<=0)[01]((?<=0)[578324916]|(?<=1)[45173206])|(?<=1)[021]((?<=0)[29345678]|(?<=2)[0]|(?<=1)[8049253761])|(?<=2)[10]((?<=1)[71054632]|(?<=0)[52789436])|(?<=7)[01]((?<=0)[39827465]|(?<=1)[543102])|(?<=5)[0]((?<=0)[78634591])|(?<=3)[10]((?<=1)[539682714]|(?<=0)[175839426])|(?<=4)[10]((?<=1)[021]|(?<=0)[349826715]))|(?<=0)[145326]((?<=1)[0]((?<=0)[43])|(?<=4)[2013]((?<=2)[8674231059]|(?<=0)[5978346]|(?<=1)[4128397605]|(?<=3)[21])|(?<=5)[42031]((?<=4)[376891025]|(?<=2)[4123980765]|(?<=0)[58349276]|(?<=3)[9024578163]|(?<=1)[1896204753])|(?<=3)[0]((?<=0)[42653])|(?<=2)[1203]((?<=1)[1247580639]|(?<=2)[2865430917]|(?<=0)[851234679]|(?<=3)[120])|(?<=6)[0]((?<=0)[384625]))|(?<=3)[03425761]((?<=0)[10]((?<=1)[021]|(?<=0)[89726543])|(?<=3)[0]((?<=0)[3576489])|(?<=4)[01]((?<=0)[468975]|(?<=1)[4706839152])|(?<=2)[2013]((?<=2)[3940175862]|(?<=0)[37294685]|(?<=1)[1846705932]|(?<=3)[0])|(?<=5)[10]((?<=1)[40213]|(?<=0)[38725649])|(?<=7)[01]((?<=0)[63759428]|(?<=1)[0])|(?<=6)[01]((?<=0)[432581796]|(?<=1)[01])|(?<=1)[102]((?<=1)[5206398471]|(?<=0)[17839625]|(?<=2)[3102]))|(?<=2)[2354106]((?<=2)[021]((?<=0)[27639584]|(?<=2)[201]|(?<=1)[2376045891])|(?<=3)[10]((?<=1)[487163025]|(?<=0)[8943576])|(?<=5)[01]((?<=0)[37586942]|(?<=1)[102])|(?<=4)[10]((?<=1)[34210]|(?<=0)[71982654])|(?<=1)[012]((?<=0)[7589436]|(?<=1)[0319256748]|(?<=2)[120])|(?<=0)[1320]((?<=1)[0729861453]|(?<=3)[41032]|(?<=2)[2390175486]|(?<=0)[487569])|(?<=6)[0]((?<=0)[123]))|(?<=4)[4205361]((?<=4)[102]((?<=1)[6872914035]|(?<=0)[73156298]|(?<=2)[472380165])|(?<=2)[3201]((?<=3)[213]|(?<=2)[2573804961]|(?<=0)[7364985]|(?<=1)[4178390265])|(?<=0)[0123]((?<=0)[1574986]|(?<=1)[0576842193]|(?<=2)[1745263098]|(?<=3)[64073521])|(?<=5)[0]((?<=0)[3465])|(?<=3)[012]((?<=0)[198745326]|(?<=1)[874321965]|(?<=2)[0])|(?<=6)[10]((?<=1)[842763015]|(?<=0)[456978])|(?<=1)[0123]((?<=0)[372541698]|(?<=1)[5830417926]|(?<=2)[196327584]|(?<=3)[10]))|(?<=8)[35176204]((?<=3)[10]((?<=1)[3651240]|(?<=0)[457896])|(?<=5)[01]((?<=0)[872546]|(?<=1)[31])|(?<=1)[01]((?<=0)[5689473]|(?<=1)[5142630])|(?<=7)[01]((?<=0)[5947836]|(?<=1)[3562401])|(?<=6)[10]((?<=1)[715364892]|(?<=0)[645871])|(?<=2)[021]((?<=0)[54867931]|(?<=2)[92341]|(?<=1)[987])|(?<=0)[10]((?<=1)[1046532]|(?<=0)[764598])|(?<=4)[01]((?<=0)[5473829]|(?<=1)[10]))|(?<=9)[37150642]((?<=3)[01]((?<=0)[239576481]|(?<=1)[0])|(?<=7)[0123]((?<=0)[345196728]|(?<=1)[4530629178]|(?<=2)[6529014837]|(?<=3)[12073564])|(?<=1)[01]((?<=0)[74932586]|(?<=1)[103452])|(?<=5)[120]((?<=1)[0651279483]|(?<=2)[021]|(?<=0)[638257914])|(?<=0)[0]((?<=0)[2431])|(?<=6)[0128]((?<=0)[234718965]|(?<=1)[81972043]|(?<=2)[0]|(?<=8)[0213])|(?<=4)[10]((?<=1)[10]|(?<=0)[234957681])|(?<=2)[0]((?<=0)[21]))|(?<=7)[324501]((?<=3)[01]((?<=0)[273549186]|(?<=1)[10])|(?<=2)[10]((?<=1)[42567103]|(?<=0)[7836945])|(?<=4)[01]((?<=0)[354897]|(?<=1)[58167420])|(?<=5)[10]((?<=1)[2615430]|(?<=0)[6354987])|(?<=0)[01]((?<=0)[736549]|(?<=1)[2013])|(?<=1)[10]((?<=1)[1]|(?<=0)[54872936]))|(?<=5)[0653142]((?<=0)[10342]((?<=1)[534807269]|(?<=0)[671854293]|(?<=3)[3517984602]|(?<=4)[214503]|(?<=2)[4923708651])|(?<=6)[01]((?<=0)[6745389]|(?<=1)[0])|(?<=5)[2610354]((?<=2)[052146973]|(?<=6)[65]|(?<=1)[8249105376]|(?<=0)[362897541]|(?<=3)[264380571]|(?<=5)[032541]|(?<=4)[3674582910])|(?<=3)[6382704195]((?<=6)[8714235096]|(?<=3)[5714368029]|(?<=8)[9852134670]|(?<=2)[8074196253]|(?<=7)[8329410576]|(?<=0)[143296785]|(?<=4)[0236894175]|(?<=1)[0539127468]|(?<=9)[01]|(?<=5)[487592063])|(?<=1)[9576241038]((?<=9)[6145293780]|(?<=5)[2401685739]|(?<=7)[1928465730]|(?<=6)[5879413620]|(?<=2)[548216903]|(?<=4)[7213096485]|(?<=1)[806743159]|(?<=0)[712965834]|(?<=3)[6072138549]|(?<=8)[2049873615])|(?<=4)[01]((?<=0)[836215479]|(?<=1)[304512])|(?<=2)[0146253]((?<=0)[61738459]|(?<=1)[826904735]|(?<=4)[6795034182]|(?<=6)[0]|(?<=2)[3791642850]|(?<=5)[6382490175]|(?<=3)[597021436]))|(?<=6)[61453072]((?<=6)[12034]((?<=1)[7843659]|(?<=2)[0892514736]|(?<=0)[234]|(?<=3)[857126439]|(?<=4)[120])|(?<=1)[102]((?<=1)[058273146]|(?<=0)[386142795]|(?<=2)[0])|(?<=4)[102]((?<=1)[460981257]|(?<=0)[7493851]|(?<=2)[052413])|(?<=5)[01]((?<=0)[475698]|(?<=1)[7935826014])|(?<=3)[0]((?<=0)[321785964])|(?<=0)[01]((?<=0)[43295768]|(?<=1)[825413706])|(?<=7)[01]((?<=0)[261947583]|(?<=1)[210])|(?<=2)[6790815342]((?<=6)[0412386957]|(?<=7)[5409237816]|(?<=9)[8912453607]|(?<=0)[167589]|(?<=8)[2910748653]|(?<=1)[197308654]|(?<=5)[5872613490]|(?<=3)[9542183607]|(?<=4)[4907386512]|(?<=2)[6478025193])))|(?<=2)[109]((?<=1)[0]((?<=0)[4602573]((?<=4)[7945283106]|(?<=6)[428307691]|(?<=0)[743568]|(?<=2)[09678]|(?<=5)[1748350926]|(?<=7)[1025346]|(?<=3)[0164259873]))|(?<=0)[6123]((?<=6)[0]((?<=0)[9458376])|(?<=1)[0]((?<=0)[345])|(?<=2)[0]((?<=0)[65437])|(?<=3)[0]((?<=0)[4587396]))|(?<=9)[0]((?<=0)[2]((?<=2)[431256])))))$"), + ES: new RegExp("^([201345]((?<=2)[6247153890]((?<=6)[01235]((?<=0)[078]((?<=0)[123456789]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[01]|(?<=2)[01234567]|(?<=3)[012345]|(?<=4)[012345678]|(?<=5)[01]|(?<=6)[0]|(?<=9)[01])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[012346]|(?<=3)[0]|(?<=4)[01]|(?<=5)[06789]|(?<=6)[01]|(?<=7)[0]|(?<=8)[089]|(?<=9)[120])|(?<=3)[01234567]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456789]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0123456])|(?<=5)[012345678]((?<=0)[09]|(?<=1)[0123]|(?<=2)[056789]|(?<=3)[0123]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0456789]))|(?<=2)[012345678]((?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0123456]|(?<=3)[012345]|(?<=4)[0123456789]|(?<=5)[0]|(?<=6)[012]|(?<=9)[01234567])|(?<=2)[012345678]((?<=0)[0]|(?<=1)[023456]|(?<=2)[0123]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[012345]|(?<=6)[089]|(?<=7)[0]|(?<=8)[0123])|(?<=3)[012345679]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[06789]|(?<=4)[0789]|(?<=5)[01]|(?<=6)[01234567]|(?<=7)[012345678]|(?<=9)[012345])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[01234]|(?<=3)[056789]|(?<=4)[09]|(?<=5)[012]|(?<=6)[0123456789]|(?<=7)[01234]|(?<=8)[01234567])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[089]|(?<=3)[0123456]|(?<=4)[09]|(?<=5)[089]|(?<=6)[09]|(?<=7)[012]|(?<=8)[03456789]|(?<=9)[012])|(?<=6)[0123456]((?<=0)[09]|(?<=1)[0123]|(?<=2)[012345]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0123456])|(?<=7)[012345679]((?<=0)[0]|(?<=1)[012345]|(?<=2)[089]|(?<=3)[012]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[01]|(?<=7)[0123]|(?<=9)[012])|(?<=8)[0123678]((?<=0)[07968]|(?<=1)[01]|(?<=2)[012]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]))|(?<=4)[0123456789]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[02]|(?<=7)[01]|(?<=8)[0])|(?<=1)[012345679]((?<=0)[0]|(?<=1)[01234]|(?<=2)[01234567]|(?<=3)[0123456789]|(?<=4)[012345689]|(?<=5)[0123456]|(?<=6)[0123456]|(?<=7)[01245]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[056789]|(?<=1)[0789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[089]|(?<=5)[01237]|(?<=6)[80]|(?<=7)[01234567]|(?<=8)[012345678]|(?<=9)[01234])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[03456789]|(?<=3)[09]|(?<=4)[01234567]|(?<=5)[06789]|(?<=6)[0789]|(?<=7)[0456789]|(?<=8)[0456789]|(?<=9)[012345678])|(?<=4)[0123456789]((?<=0)[01234]|(?<=1)[0123456]|(?<=2)[089]|(?<=3)[03456789]|(?<=4)[012345678]|(?<=5)[0789]|(?<=6)[09]|(?<=7)[089]|(?<=8)[089]|(?<=9)[012345678])|(?<=5)[0123456]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0123456]|(?<=3)[0]|(?<=4)[0456789]|(?<=5)[0]|(?<=6)[056789])|(?<=6)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[09])|(?<=7)[01234569]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234]|(?<=3)[01234568]|(?<=4)[0123456]|(?<=5)[0]|(?<=6)[0123456789]|(?<=9)[01234567])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[06789]|(?<=4)[03456789]|(?<=5)[023456789]|(?<=6)[09]|(?<=7)[0789]|(?<=8)[023456789]|(?<=9)[0123])|(?<=9)[0123456789]((?<=0)[0]|(?<=1)[12345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[01456]))|(?<=7)[012345678]((?<=0)[078]((?<=0)[01234]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[023456789]|(?<=3)[01234569]|(?<=4)[0123456]|(?<=5)[01234567]|(?<=6)[012345689]|(?<=7)[0789]|(?<=8)[012345678]|(?<=9)[012])|(?<=2)[0123456789]((?<=0)[03456789]|(?<=1)[01234567]|(?<=2)[06789]|(?<=3)[012345]|(?<=4)[01345678]|(?<=5)[06789]|(?<=6)[06789]|(?<=7)[0123456789]|(?<=8)[02345679]|(?<=9)[0123456789])|(?<=3)[0123456789]((?<=0)[056789]|(?<=1)[078]|(?<=2)[04589]|(?<=3)[013456892]|(?<=4)[0123456789]|(?<=5)[09]|(?<=6)[02346789]|(?<=7)[0123456789]|(?<=8)[089]|(?<=9)[012])|(?<=4)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[012345]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0689]|(?<=7)[0])|(?<=5)[012345679]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0789]|(?<=3)[0123]|(?<=4)[03456789]|(?<=5)[0456789]|(?<=6)[089]|(?<=7)[06789]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0345678]|(?<=3)[0123456789]|(?<=4)[06789]|(?<=5)[0123456798]|(?<=6)[012345678]|(?<=7)[0123456789]|(?<=8)[056789]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456789]|(?<=3)[0789]|(?<=4)[02345789]|(?<=5)[012]|(?<=6)[05678]|(?<=7)[03456789]|(?<=8)[056789]|(?<=9)[012345678])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0123456]|(?<=3)[012345679]|(?<=4)[0123459]|(?<=5)[0]|(?<=6)[013456789]|(?<=7)[06789]|(?<=8)[089]|(?<=9)[0123]))|(?<=1)[501234678]((?<=5)[4012356789]((?<=4)[50]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012345])|(?<=0)[078]((?<=0)[1234567]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123]((?<=0)[0]|(?<=1)[0]|(?<=2)[02]|(?<=3)[0])|(?<=2)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=3)[012345689]((?<=0)[09]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[02]|(?<=5)[09]|(?<=6)[0]|(?<=8)[0678]|(?<=9)[0])|(?<=4)[012345]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[01]|(?<=4)[09]|(?<=5)[09])|(?<=6)[01234567]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[079]|(?<=5)[0]|(?<=6)[089]|(?<=7)[0])|(?<=7)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01]))|(?<=5)[01234567]((?<=0)[078]((?<=0)[12345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[09]|(?<=1)[01234]|(?<=2)[0123456]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[012345]|(?<=6)[012345]|(?<=7)[0123456789]|(?<=8)[01234567]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[0]|(?<=4)[012345]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[01]|(?<=8)[0123456798]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[05678]|(?<=2)[0]|(?<=3)[01234567]|(?<=4)[0134]|(?<=5)[012345]|(?<=6)[0])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[07]|(?<=6)[0]|(?<=7)[1]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[06789]|(?<=3)[0789]|(?<=4)[089]|(?<=5)[0123456]|(?<=6)[06789]|(?<=7)[01234567]|(?<=8)[0346789]|(?<=9)[0123456789])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[012345678]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=7)[01234589]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[056789]|(?<=4)[06789]|(?<=5)[0123]|(?<=8)[8]|(?<=9)[0123456789]))|(?<=3)[01234567]((?<=0)[078]((?<=0)[123456789]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012346])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0456789]|(?<=7)[0]|(?<=8)[09]|(?<=9)[012345678])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[09]|(?<=8)[09]|(?<=9)[0123])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[089]|(?<=7)[06789]|(?<=8)[056789]|(?<=9)[09])|(?<=5)[01234569]((?<=0)[09]|(?<=1)[09]|(?<=2)[0689]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[089]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[08]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0789]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0456789]|(?<=9)[0123])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0]))|(?<=8)[0123456789]((?<=0)[01234578]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345]|(?<=7)[01]|(?<=8)[023567])|(?<=1)[0134567892]((?<=0)[089]|(?<=1)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[0123456]|(?<=2)[0])|(?<=2)[0123456789]((?<=0)[09]|(?<=1)[012349]|(?<=2)[012349]|(?<=3)[012]|(?<=4)[083]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0234567])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01])|(?<=4)[0123456798]((?<=0)[0]|(?<=1)[01239]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[09]|(?<=9)[012]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012453]|(?<=2)[12349]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[045678])|(?<=6)[0123456789]((?<=0)[079]|(?<=1)[05]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[089]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123456])|(?<=7)[012345679]((?<=0)[01236789]|(?<=1)[0]|(?<=2)[01239]|(?<=3)[079]|(?<=4)[02391]|(?<=5)[0123456]|(?<=6)[0]|(?<=7)[0]|(?<=9)[1234])|(?<=8)[0123456897]((?<=0)[012345678]|(?<=1)[012345678]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01]|(?<=6)[01234]|(?<=8)[0]|(?<=9)[01]|(?<=7)[0])|(?<=9)[012345789]((?<=0)[123456790]|(?<=1)[0123456789]|(?<=2)[123450]|(?<=3)[1234567890]|(?<=4)[01234567]|(?<=5)[0]|(?<=7)[016789]|(?<=8)[01234]|(?<=9)[01]))|(?<=9)[01234567]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0134567])|(?<=2)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0789]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[12345])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[012]|(?<=6)[012]|(?<=7)[01]|(?<=8)[0]|(?<=9)[01234])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0123]|(?<=4)[0]|(?<=5)[012]|(?<=6)[0679]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=6)[0123456789]((?<=0)[01234]|(?<=1)[012]|(?<=2)[0]|(?<=3)[019]|(?<=4)[09]|(?<=5)[01]|(?<=6)[0]|(?<=7)[089]|(?<=8)[089]|(?<=9)[0123])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[08]|(?<=4)[09]|(?<=5)[012345]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[0123]))|(?<=0)[012345678]((?<=0)[0178]((?<=0)[123456789]|(?<=1)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[012345678]((?<=0)[0]|(?<=1)[05]|(?<=2)[08]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=2)[012345678]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[09]|(?<=6)[0789]|(?<=7)[01]|(?<=8)[0])|(?<=3)[0]((?<=0)[012345])|(?<=4)[09]((?<=0)[0]|(?<=9)[0123456])|(?<=5)[03456789]((?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0789]|(?<=7)[0789]|(?<=8)[0]|(?<=9)[0])|(?<=6)[09]((?<=0)[0]|(?<=9)[0])|(?<=7)[012345]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[09])|(?<=8)[0123567]((?<=0)[089]|(?<=1)[0]|(?<=2)[09]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])))|(?<=0)[213469587]((?<=2)[0123456]((?<=0)[0478]((?<=0)[12345678]|(?<=4)[9]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[045789]|(?<=3)[0679]|(?<=4)[012]|(?<=5)[0134562]|(?<=6)[012])|(?<=2)[01234567]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0123]|(?<=6)[0]|(?<=7)[0])|(?<=3)[012456]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[06789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[012345689]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[045679]|(?<=4)[089]|(?<=5)[09]|(?<=6)[012]|(?<=8)[045679]|(?<=9)[09])|(?<=5)[0123]((?<=0)[0]|(?<=1)[0123]|(?<=2)[09]|(?<=3)[046])|(?<=6)[01234569]((?<=0)[0]|(?<=1)[0124]|(?<=2)[0]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[0]|(?<=9)[0123456]))|(?<=1)[124035]((?<=1)[1023679]((?<=1)[807]|(?<=0)[0]|(?<=2)[089]|(?<=3)[089]|(?<=6)[059]|(?<=7)[0]|(?<=9)[123456])|(?<=2)[1023456]((?<=1)[1236]|(?<=0)[0678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[2034576]((?<=2)[70368]|(?<=0)[089]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=7)[046789]|(?<=6)[8])|(?<=0)[0178]((?<=0)[123456789]|(?<=1)[0235]|(?<=7)[1]|(?<=8)[0])|(?<=3)[0234]((?<=0)[06789]|(?<=2)[012]|(?<=3)[0]|(?<=4)[0])|(?<=5)[12]((?<=1)[0]|(?<=2)[0]))|(?<=3)[012345678]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[013456789]((?<=0)[089]|(?<=1)[012345]|(?<=3)[089]|(?<=4)[09]|(?<=5)[089]|(?<=6)[09]|(?<=7)[06789]|(?<=8)[0123456789]|(?<=9)[01345])|(?<=2)[09]((?<=0)[123456780]|(?<=9)[0123456])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0125]|(?<=3)[09]|(?<=4)[089]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=4)[0123456]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09])|(?<=5)[0123456789]((?<=0)[012398]|(?<=1)[06789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[089]|(?<=8)[019]|(?<=9)[09])|(?<=6)[013456789]((?<=0)[0]|(?<=1)[0]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0897]|(?<=6)[089]|(?<=7)[09]|(?<=8)[089]|(?<=9)[089])|(?<=7)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[03456789]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[09]|(?<=6)[09]|(?<=7)[089]|(?<=8)[06789]|(?<=9)[012345])|(?<=8)[01234567]((?<=0)[01234]|(?<=1)[012345689]|(?<=2)[0789]|(?<=3)[0789]|(?<=4)[01]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]))|(?<=4)[01245678]((?<=0)[087]((?<=0)[123456789]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456]((?<=0)[0]|(?<=1)[03456789]|(?<=2)[0]|(?<=3)[01]|(?<=4)[09]|(?<=5)[01]|(?<=6)[0])|(?<=2)[01345678]((?<=0)[0]|(?<=1)[0123]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[01456789]|(?<=8)[089])|(?<=4)[012345678]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[01]|(?<=4)[0]|(?<=5)[089]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0])|(?<=5)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0123]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0789])|(?<=6)[01234569]((?<=0)[0]|(?<=1)[06789]|(?<=2)[0189]|(?<=3)[089]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[012]|(?<=9)[01234])|(?<=7)[01234567]((?<=0)[0]|(?<=1)[0123567]|(?<=2)[01789]|(?<=3)[89]|(?<=4)[01356]|(?<=5)[0]|(?<=6)[089]|(?<=7)[089])|(?<=8)[012356789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[056789]|(?<=3)[089]|(?<=5)[0789]|(?<=6)[0789]|(?<=7)[0789]|(?<=8)[0789]|(?<=9)[0789]))|(?<=6)[6012345789]((?<=6)[9012345678]((?<=9)[102]|(?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[056789]|(?<=6)[0]|(?<=7)[089]|(?<=8)[09])|(?<=0)[01587]((?<=0)[123456789]|(?<=1)[012]|(?<=5)[0]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456789]((?<=0)[056789]|(?<=1)[0]|(?<=2)[09]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[012345678]|(?<=8)[01234567]|(?<=9)[01234567])|(?<=2)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[056789]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[08]|(?<=8)[09]|(?<=9)[01234])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[01235]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0123456]|(?<=5)[089]|(?<=6)[089]|(?<=7)[03456789]|(?<=8)[06789]|(?<=9)[089])|(?<=5)[01]((?<=0)[0]|(?<=1)[089])|(?<=7)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[01]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234])|(?<=9)[012345678]((?<=0)[06789]|(?<=1)[09]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]))|(?<=9)[2013456]((?<=2)[1023456789]((?<=1)[8012345679]|(?<=0)[0]|(?<=2)[01678]|(?<=3)[039]|(?<=4)[0456789]|(?<=5)[0123789]|(?<=6)[0789]|(?<=7)[012]|(?<=8)[05]|(?<=9)[0234])|(?<=0)[078]((?<=0)[1234567]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123459]((?<=0)[0789]|(?<=1)[089]|(?<=2)[013456789]|(?<=3)[013569]|(?<=4)[0123456]|(?<=5)[09]|(?<=9)[123456789])|(?<=3)[012345796]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[89]|(?<=4)[0123567894]|(?<=5)[01234]|(?<=7)[0]|(?<=9)[01]|(?<=6)[0])|(?<=4)[01345679]((?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[0134]|(?<=6)[0123]|(?<=7)[1]|(?<=9)[013])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0123456789]|(?<=6)[06789]|(?<=7)[012345]|(?<=8)[056789]|(?<=9)[1234])|(?<=6)[012456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=4)[0125679]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123]))|(?<=5)[2401356]((?<=2)[3012456789]((?<=3)[90]|(?<=0)[0]|(?<=1)[01234567]|(?<=2)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[078]|(?<=7)[089]|(?<=8)[09]|(?<=9)[0124689])|(?<=4)[2013456789]((?<=2)[9078]|(?<=0)[0]|(?<=1)[02345678]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[01]|(?<=7)[0]|(?<=8)[09]|(?<=9)[012])|(?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0234]|(?<=3)[01234]|(?<=4)[01356789]|(?<=5)[01234]|(?<=6)[023456]|(?<=9)[012345678])|(?<=3)[0125678]((?<=0)[019]|(?<=1)[01]|(?<=2)[0]|(?<=5)[078]|(?<=6)[9]|(?<=7)[06]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[02456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[1]|(?<=8)[0]|(?<=9)[0123])|(?<=6)[01239]((?<=0)[0]|(?<=1)[09]|(?<=2)[01]|(?<=3)[01345]|(?<=9)[01234567]))|(?<=8)[0123456789]((?<=0)[0123478]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012]|(?<=7)[501]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[04567]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[068]|(?<=5)[0]|(?<=6)[0]|(?<=7)[023481]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[012345678]|(?<=1)[01234]|(?<=2)[123456780]|(?<=3)[0123]|(?<=4)[01238]|(?<=5)[0134569]|(?<=6)[01239]|(?<=7)[01234589]|(?<=8)[01239]|(?<=9)[0123456789])|(?<=3)[0123456789]((?<=0)[01234]|(?<=1)[0789]|(?<=2)[089]|(?<=3)[089]|(?<=4)[089]|(?<=5)[089]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[012345678])|(?<=4)[0123456789]((?<=0)[01234]|(?<=1)[056]|(?<=2)[0]|(?<=3)[0]|(?<=4)[05]|(?<=5)[05689]|(?<=6)[019]|(?<=7)[012469]|(?<=8)[0]|(?<=9)[05])|(?<=5)[0123456789]((?<=0)[03456789]|(?<=1)[0123456789]|(?<=2)[0129]|(?<=3)[0]|(?<=4)[0]|(?<=5)[012349]|(?<=6)[09]|(?<=7)[0123]|(?<=8)[0456789]|(?<=9)[0123])|(?<=6)[0123456789]((?<=0)[04567]|(?<=1)[01234789]|(?<=2)[09]|(?<=3)[05]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01239]|(?<=8)[0]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[03]|(?<=1)[012789]|(?<=2)[09]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[03456789]|(?<=6)[09]|(?<=7)[035679]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=8)[012345678]((?<=0)[05]|(?<=1)[0128]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[09]|(?<=6)[0]|(?<=7)[012]|(?<=8)[0])|(?<=9)[012345678]((?<=0)[123456780]|(?<=1)[123456780]|(?<=2)[12340]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]))|(?<=7)[801234567]((?<=8)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[012])|(?<=0)[0178]((?<=0)[1234567890]|(?<=1)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[012456789]((?<=0)[0189]|(?<=1)[0]|(?<=2)[012]|(?<=4)[01234]|(?<=5)[097]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0341]|(?<=9)[012345689])|(?<=2)[0123456]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[09])|(?<=4)[0234567]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[089]|(?<=6)[09]|(?<=7)[0])|(?<=5)[0123456789]((?<=0)[09]|(?<=1)[0189]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09]|(?<=9)[0])|(?<=6)[0123456789]((?<=0)[098]|(?<=1)[01]|(?<=2)[09]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[01])|(?<=7)[0123456]((?<=0)[0123]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[09])))|(?<=1)[0456397218]((?<=0)[0123456789]((?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[069]|(?<=3)[01234567]|(?<=4)[0]|(?<=5)[0]|(?<=6)[01234]|(?<=7)[0]|(?<=8)[0123456789]|(?<=9)[01234589])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[012]|(?<=6)[01239]|(?<=7)[012]|(?<=8)[0]|(?<=9)[012])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0789]|(?<=2)[089]|(?<=3)[012345]|(?<=4)[01]|(?<=5)[09]|(?<=6)[0]|(?<=7)[01234]|(?<=8)[0]|(?<=9)[012346])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[01234569]|(?<=2)[0189]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[03456789]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0]|(?<=6)[01234567]|(?<=7)[012]|(?<=8)[0]|(?<=9)[01234567])|(?<=7)[012345]((?<=0)[0]|(?<=1)[012]|(?<=2)[089]|(?<=3)[09]|(?<=4)[089]|(?<=5)[09])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[089]|(?<=3)[09]|(?<=4)[089]|(?<=5)[0789]|(?<=6)[0456789]|(?<=7)[09]|(?<=8)[0123]|(?<=9)[0123456])|(?<=9)[013456789]((?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01]))|(?<=4)[0123456789]((?<=0)[01278]((?<=0)[0123456789]|(?<=1)[01234567]|(?<=2)[9]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123459]((?<=0)[0]|(?<=1)[01253]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0123])|(?<=2)[0123456789]((?<=0)[06789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0789])|(?<=3)[01235]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[023]|(?<=2)[0]|(?<=3)[09]|(?<=4)[056789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01])|(?<=5)[012345]((?<=0)[0]|(?<=1)[012]|(?<=2)[0]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0])|(?<=6)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0])|(?<=7)[01234]((?<=0)[09]|(?<=1)[019]|(?<=2)[09]|(?<=3)[09]|(?<=4)[09])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0789]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=9)[01234567]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[089]))|(?<=5)[0123456789]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[01]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0256789]|(?<=1)[0123456789]|(?<=2)[124567893]|(?<=3)[0789]|(?<=4)[0123456789]|(?<=5)[012345]|(?<=6)[056789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[01289])|(?<=2)[012345789]((?<=0)[0]|(?<=1)[01234568]|(?<=2)[089]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[6890]|(?<=7)[0]|(?<=8)[01256789]|(?<=9)[012356789])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[03456789]|(?<=2)[0456789]|(?<=3)[02789]|(?<=4)[079]|(?<=5)[0789]|(?<=6)[056789]|(?<=7)[9]|(?<=8)[06789]|(?<=9)[01])|(?<=4)[02789]((?<=0)[01234567]|(?<=2)[1]|(?<=7)[01]|(?<=8)[0]|(?<=9)[0])|(?<=5)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[08]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[012345]|(?<=6)[0123456789]|(?<=7)[0267893]|(?<=8)[02]|(?<=9)[012345678])|(?<=6)[0123456789]((?<=0)[0789]|(?<=1)[123456789]|(?<=2)[01234567]|(?<=3)[05789]|(?<=4)[0]|(?<=5)[069]|(?<=6)[089]|(?<=7)[09]|(?<=8)[03456789]|(?<=9)[0])|(?<=7)[078]((?<=0)[01234567]|(?<=7)[01]|(?<=8)[012])|(?<=8)[0123456789]((?<=0)[056789]|(?<=1)[03456789]|(?<=2)[01234568]|(?<=3)[0789]|(?<=4)[015678]|(?<=5)[0156789]|(?<=6)[0123456]|(?<=7)[01234]|(?<=8)[012345678]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[08]|(?<=3)[01789]|(?<=4)[089]|(?<=5)[09]|(?<=6)[0156789]|(?<=7)[089]|(?<=8)[012345]|(?<=9)[012345689]))|(?<=6)[102345678]((?<=1)[4012569]((?<=4)[901234567]|(?<=0)[0]|(?<=1)[13482]|(?<=2)[023]|(?<=5)[02]|(?<=6)[012]|(?<=9)[0123456])|(?<=0)[078]((?<=0)[1234]|(?<=7)[01]|(?<=8)[0])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012456]|(?<=2)[0]|(?<=3)[0456798]|(?<=4)[0]|(?<=5)[01]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=3)[012345679]((?<=0)[0]|(?<=1)[1235678]|(?<=2)[01]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0123]|(?<=9)[03])|(?<=4)[01234567]((?<=0)[0]|(?<=1)[0123457]|(?<=2)[0123]|(?<=3)[012345]|(?<=4)[0124]|(?<=5)[2]|(?<=6)[01345]|(?<=7)[0])|(?<=5)[012345]((?<=0)[0]|(?<=1)[02]|(?<=2)[012]|(?<=3)[1257]|(?<=4)[012]|(?<=5)[05])|(?<=6)[01234567]((?<=0)[0]|(?<=1)[012]|(?<=2)[0123]|(?<=3)[089]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=7)[01234678]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=6)[0]|(?<=7)[019]|(?<=8)[01])|(?<=8)[01345679]((?<=0)[0]|(?<=1)[23]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[01234567]|(?<=6)[0]|(?<=7)[089]|(?<=9)[0123]))|(?<=3)[01234567]((?<=0)[078]((?<=0)[12345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0789]|(?<=1)[0345678]|(?<=2)[089]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09]|(?<=9)[01234567])|(?<=2)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[06789]|(?<=3)[0123]|(?<=4)[012345]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[01])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0789]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[03]|(?<=8)[0]|(?<=9)[0])|(?<=5)[089]((?<=0)[0]|(?<=8)[0]|(?<=9)[012345678])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0])|(?<=7)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[08]|(?<=7)[09]))|(?<=9)[01234]((?<=0)[087]((?<=0)[012345]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[056789]|(?<=3)[0123459]|(?<=4)[012345]|(?<=5)[0123]|(?<=6)[0123]|(?<=7)[014]|(?<=8)[0245678]|(?<=9)[023678])|(?<=2)[0123456789]((?<=0)[089]|(?<=1)[09]|(?<=2)[02345679]|(?<=3)[0789]|(?<=4)[02345678]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[045678]|(?<=8)[013567]|(?<=9)[0245])|(?<=3)[01234569]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0345678]|(?<=3)[2346789]|(?<=4)[0123456]|(?<=5)[01234567]|(?<=6)[0123]|(?<=9)[012])|(?<=4)[01234569]((?<=0)[0]|(?<=1)[123]|(?<=2)[09]|(?<=3)[12]|(?<=4)[12345]|(?<=5)[089]|(?<=6)[0123]|(?<=9)[01235]))|(?<=7)[012345678]((?<=0)[078]((?<=0)[1234567]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[01345678]|(?<=2)[0134]|(?<=3)[0123467]|(?<=4)[01234]|(?<=5)[01234]|(?<=6)[012456]|(?<=7)[0123456789]|(?<=8)[012345]|(?<=9)[09])|(?<=2)[012345]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[012345689]|(?<=5)[01235678])|(?<=3)[012]((?<=0)[0]|(?<=1)[0]|(?<=2)[0])|(?<=4)[0123456789]((?<=0)[0123456]|(?<=1)[012]|(?<=2)[01]|(?<=3)[0]|(?<=4)[12345]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[023456]|(?<=8)[0123456789]|(?<=9)[01234567])|(?<=5)[0123]((?<=0)[0]|(?<=1)[02345]|(?<=2)[0789]|(?<=3)[0123456789])|(?<=6)[0]((?<=0)[0])|(?<=7)[012345678]((?<=0)[06789]|(?<=1)[0]|(?<=2)[0123]|(?<=3)[01234]|(?<=4)[01234567]|(?<=5)[012345]|(?<=6)[0123]|(?<=7)[0123]|(?<=8)[01])|(?<=8)[0123456]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[01234]|(?<=4)[03456]|(?<=5)[012345678]|(?<=6)[012346789]))|(?<=2)[0123456]((?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[089]|(?<=2)[01234567]|(?<=3)[012345]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0123456]|(?<=7)[09]|(?<=8)[0123456]|(?<=9)[01234])|(?<=2)[0123]((?<=0)[0]|(?<=1)[0]|(?<=2)[012345]|(?<=3)[012])|(?<=3)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[02345]|(?<=2)[089]|(?<=3)[01]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[09]|(?<=9)[09])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123]|(?<=2)[06789]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[089]|(?<=8)[09]|(?<=9)[0123456789])|(?<=6)[0]((?<=0)[09]))|(?<=1)[0123456]((?<=0)[01378]((?<=0)[0123456789]|(?<=1)[012]|(?<=3)[5]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0345678912]((?<=0)[0]|(?<=3)[089]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0]|(?<=7)[089]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=2)[0])|(?<=2)[078]((?<=0)[01234567]|(?<=7)[01]|(?<=8)[0])|(?<=3)[0123456798]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[09]|(?<=4)[09]|(?<=5)[01]|(?<=6)[089]|(?<=7)[09]|(?<=9)[0123]|(?<=8)[0])|(?<=4)[078]((?<=0)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=5)[0123456879]((?<=0)[0]|(?<=1)[089]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[049]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[012]|(?<=2)[0]|(?<=3)[089]|(?<=4)[089]|(?<=5)[09]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0789]|(?<=9)[0123]))|(?<=8)[012345678]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[012]|(?<=1)[0]|(?<=2)[056789]|(?<=3)[012]|(?<=4)[0]|(?<=5)[012]|(?<=6)[0]|(?<=7)[09]|(?<=8)[01234]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0135])|(?<=3)[012345678]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[01])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[089]|(?<=4)[089]|(?<=5)[012]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0124])|(?<=5)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[0])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[06789]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0789])|(?<=7)[01234567]((?<=0)[08]|(?<=1)[013]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[089]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01])))|(?<=3)[6823914705]((?<=6)[0123456789]((?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[12345690]((?<=1)[06789]|(?<=2)[01]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[012345678]|(?<=6)[01234]|(?<=9)[01234]|(?<=0)[0])|(?<=2)[0178]((?<=0)[912345678]|(?<=1)[6012345]|(?<=7)[01]|(?<=8)[012])|(?<=3)[0124567893]((?<=0)[0789]|(?<=1)[03682457]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0389]|(?<=8)[089]|(?<=9)[1302]|(?<=3)[019])|(?<=4)[012345679]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[05678]|(?<=4)[06789]|(?<=5)[056789]|(?<=6)[0]|(?<=7)[012345]|(?<=9)[01234])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012456789]|(?<=2)[0456789]|(?<=3)[0789]|(?<=4)[023456789]|(?<=5)[056789]|(?<=6)[0789]|(?<=7)[09]|(?<=8)[0123456789]|(?<=9)[06789])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[06789]|(?<=3)[03456789]|(?<=4)[056789]|(?<=5)[023456789]|(?<=6)[0789]|(?<=7)[056789]|(?<=8)[0123456789]|(?<=9)[0123])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[019]|(?<=3)[09]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[089]|(?<=9)[0124])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[06789]|(?<=3)[056789]|(?<=4)[0123456789]|(?<=5)[123456789]|(?<=6)[0123456789]|(?<=7)[023456789]|(?<=8)[03456789]|(?<=9)[01235])|(?<=9)[0134567892]((?<=0)[0]|(?<=1)[012345]|(?<=3)[0789]|(?<=4)[067895]|(?<=5)[045789]|(?<=6)[06789]|(?<=7)[09]|(?<=8)[089]|(?<=9)[012345]|(?<=2)[0]))|(?<=8)[7098123456]((?<=7)[012345678]((?<=0)[0]|(?<=1)[012345]|(?<=2)[06789]|(?<=3)[089]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0789]|(?<=7)[09]|(?<=8)[0789])|(?<=0)[40178]((?<=4)[8]|(?<=0)[123456789]|(?<=1)[01]|(?<=7)[01]|(?<=8)[0])|(?<=9)[01]((?<=0)[0]|(?<=1)[01234567])|(?<=8)[012345679]((?<=0)[01]|(?<=1)[0123]|(?<=2)[09]|(?<=3)[0]|(?<=4)[09]|(?<=5)[02]|(?<=6)[90]|(?<=7)[09]|(?<=9)[012])|(?<=1)[0123456789]((?<=0)[789]|(?<=1)[01]|(?<=2)[09]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=2)[0456789]((?<=0)[012345678]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234567])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[056789]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09]|(?<=9)[089])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[0456789]|(?<=4)[019]|(?<=5)[089]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09])|(?<=5)[0123456789]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[089]|(?<=9)[012345])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[06789]|(?<=3)[0129]|(?<=4)[09]|(?<=5)[02]|(?<=6)[0]|(?<=7)[0789]|(?<=8)[03456789]|(?<=9)[0]))|(?<=2)[0123456789]((?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234567]((?<=0)[0123]|(?<=1)[012]|(?<=2)[0]|(?<=3)[0456789]|(?<=4)[01]|(?<=5)[0123]|(?<=6)[01234]|(?<=7)[012])|(?<=2)[0123]((?<=0)[0]|(?<=1)[123]|(?<=2)[6789]|(?<=3)[01256])|(?<=3)[01234567]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[09]|(?<=3)[0456789]|(?<=4)[089]|(?<=5)[0678]|(?<=6)[056789]|(?<=7)[012345])|(?<=4)[0123459]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[056789]|(?<=3)[01234567]|(?<=4)[089]|(?<=5)[02345679]|(?<=9)[9])|(?<=5)[012345679]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0123456]|(?<=3)[0456789]|(?<=4)[056789]|(?<=5)[012456789]|(?<=6)[0123]|(?<=7)[023456789]|(?<=9)[13])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[012345678]|(?<=4)[01234568]|(?<=5)[012345]|(?<=6)[0456789]|(?<=7)[089]|(?<=8)[089]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[012345678]|(?<=1)[01]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[01]|(?<=6)[0456789]|(?<=7)[0489]|(?<=8)[0123456789]|(?<=9)[01234])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0123456789]|(?<=3)[089]|(?<=4)[056789]|(?<=5)[0789]|(?<=6)[089]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[01]|(?<=1)[015]|(?<=2)[0]|(?<=3)[0]|(?<=4)[01]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01]|(?<=8)[01]|(?<=9)[0]))|(?<=3)[0123456789]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[012456789]|(?<=2)[056789]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0456789]|(?<=6)[0123]|(?<=7)[01234]|(?<=8)[06789]|(?<=9)[01234569])|(?<=2)[019]((?<=0)[1234567890]|(?<=1)[0123]|(?<=9)[09])|(?<=3)[0123459]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0456789]|(?<=3)[0]|(?<=4)[01234567]|(?<=5)[0]|(?<=9)[01234])|(?<=4)[0123456789]((?<=0)[012345]|(?<=1)[0124678]|(?<=2)[023456789]|(?<=3)[089]|(?<=4)[089]|(?<=5)[06789]|(?<=6)[089]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=5)[0123456789]((?<=0)[0789]|(?<=1)[089]|(?<=2)[0789]|(?<=3)[0456789]|(?<=4)[06789]|(?<=5)[0456789]|(?<=6)[06789]|(?<=7)[06789]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0789]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0356789]|(?<=8)[012345678]|(?<=9)[01234567])|(?<=7)[0123456789]((?<=0)[078]|(?<=1)[06789]|(?<=2)[01456789]|(?<=3)[0123456789]|(?<=4)[06789]|(?<=5)[06789]|(?<=6)[089]|(?<=7)[0456789]|(?<=8)[023456789]|(?<=9)[012345689])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[056789]|(?<=3)[06789]|(?<=4)[01234567]|(?<=5)[0789]|(?<=6)[056789]|(?<=7)[03456789]|(?<=8)[056789]|(?<=9)[012])|(?<=9)[0123456789]((?<=0)[09]|(?<=1)[029]|(?<=2)[09]|(?<=3)[0456789]|(?<=4)[056789]|(?<=5)[0789]|(?<=6)[09]|(?<=7)[09]|(?<=8)[06789]|(?<=9)[01234567]))|(?<=9)[012345678]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[012]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234567])|(?<=2)[012359]((?<=0)[0]|(?<=1)[023]|(?<=2)[0]|(?<=3)[023]|(?<=5)[0]|(?<=9)[01234])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[0123456789]((?<=0)[0789]|(?<=1)[06789]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[01]|(?<=6)[0]|(?<=7)[0789]|(?<=8)[0]|(?<=9)[01])|(?<=5)[0123456789]((?<=0)[06789]|(?<=1)[0135678]|(?<=2)[056789]|(?<=3)[089]|(?<=4)[0789]|(?<=5)[013456789]|(?<=6)[09]|(?<=7)[012345789]|(?<=8)[02346789]|(?<=9)[012345])|(?<=6)[0123456789]((?<=0)[089]|(?<=1)[012389]|(?<=2)[06789]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[012356789]|(?<=9)[012346789])|(?<=7)[0123456789]((?<=0)[06789]|(?<=1)[056789]|(?<=2)[02345678]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[0]|(?<=6)[01234569]|(?<=7)[0678]|(?<=8)[06789]|(?<=9)[01234578])|(?<=8)[0124568]((?<=0)[056789]|(?<=1)[01235]|(?<=2)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[09]|(?<=8)[0]))|(?<=1)[501234678]((?<=5)[1023456789]((?<=1)[501234]|(?<=0)[0]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0789]|(?<=9)[0123])|(?<=0)[0178]((?<=0)[123456789]|(?<=1)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[013456789]((?<=0)[09]|(?<=1)[09]|(?<=3)[0123]|(?<=4)[0]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[0123456789]|(?<=8)[0]|(?<=9)[012345])|(?<=2)[0123456789]((?<=0)[08]|(?<=1)[09]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[01234]|(?<=6)[01234]|(?<=7)[012]|(?<=8)[01234]|(?<=9)[0123])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[023]|(?<=9)[012345678])|(?<=4)[0123456789]((?<=0)[09]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[089]|(?<=4)[089]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[0123]|(?<=8)[01234567]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[01]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01]|(?<=8)[09]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0456789]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[0123456789])|(?<=8)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[09]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[06789]|(?<=7)[06789]|(?<=8)[0]|(?<=9)[012]))|(?<=4)[240138]((?<=2)[4601235]((?<=4)[80679]|(?<=6)[01]|(?<=0)[089]|(?<=1)[089]|(?<=2)[0]|(?<=3)[09]|(?<=5)[079])|(?<=4)[8012345679]((?<=8)[90345678]|(?<=0)[056789]|(?<=1)[019]|(?<=2)[09]|(?<=3)[09]|(?<=4)[079]|(?<=5)[0]|(?<=6)[056789]|(?<=7)[035789]|(?<=9)[012])|(?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01235679]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[06789]|(?<=3)[1230]|(?<=5)[9]|(?<=6)[0]|(?<=7)[0]|(?<=9)[012])|(?<=3)[012345]((?<=0)[045679]|(?<=1)[0]|(?<=2)[0]|(?<=3)[78]|(?<=4)[0789]|(?<=5)[0])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[01345]|(?<=2)[089]|(?<=3)[09]|(?<=4)[023456789]|(?<=5)[089]|(?<=6)[9]|(?<=7)[089]|(?<=8)[026789]))|(?<=7)[0123456789]((?<=0)[078]((?<=0)[123456789]|(?<=7)[1]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[01456]|(?<=2)[09]|(?<=3)[09]|(?<=4)[0789]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0123456]|(?<=8)[0123456789]|(?<=9)[0123487])|(?<=2)[0123456789]((?<=0)[0789]|(?<=1)[03456789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0678]|(?<=5)[013456789]|(?<=6)[079]|(?<=7)[01]|(?<=8)[1]|(?<=9)[012])|(?<=3)[012345]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[09]|(?<=3)[06789]|(?<=4)[09]|(?<=5)[0])|(?<=4)[0123456789]((?<=0)[05689]|(?<=1)[089]|(?<=2)[06789]|(?<=3)[09]|(?<=4)[06789]|(?<=5)[01234568]|(?<=6)[056897]|(?<=7)[089]|(?<=8)[018]|(?<=9)[01345726])|(?<=5)[01234589]((?<=0)[0]|(?<=1)[056]|(?<=2)[01234]|(?<=3)[012]|(?<=4)[012]|(?<=5)[0123456]|(?<=8)[9]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[06789]|(?<=1)[0789]|(?<=2)[014]|(?<=3)[089]|(?<=4)[0]|(?<=5)[06789]|(?<=6)[0]|(?<=7)[01]|(?<=8)[0234]|(?<=9)[0])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012346785]|(?<=2)[047]|(?<=3)[0]|(?<=4)[089]|(?<=5)[01234569]|(?<=6)[02345678]|(?<=7)[03456789]|(?<=8)[0156789]|(?<=9)[0123456789])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[012345]|(?<=7)[0134]|(?<=8)[012]|(?<=9)[01234])|(?<=9)[0]((?<=0)[0]))|(?<=0)[013456782]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[012]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[089]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[06789]|(?<=8)[09]|(?<=9)[0123456])|(?<=3)[235680179]((?<=2)[09]|(?<=3)[1234580]|(?<=5)[103]|(?<=6)[0479568]|(?<=8)[0134592]|(?<=0)[0]|(?<=1)[09]|(?<=7)[0]|(?<=9)[0123456789])|(?<=4)[01234]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[089]|(?<=4)[012])|(?<=5)[0123456789]((?<=0)[06789]|(?<=1)[0]|(?<=2)[089]|(?<=3)[05]|(?<=4)[0]|(?<=5)[089]|(?<=6)[0123456]|(?<=7)[09]|(?<=8)[089]|(?<=9)[01234])|(?<=6)[0124]((?<=0)[09]|(?<=1)[0123]|(?<=2)[06789]|(?<=4)[089])|(?<=7)[01234]((?<=0)[089]|(?<=1)[0]|(?<=2)[09]|(?<=3)[09]|(?<=4)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[01234567]|(?<=4)[089]|(?<=5)[089]|(?<=6)[08]|(?<=7)[056789]|(?<=8)[09]|(?<=9)[0123])|(?<=2)[0]((?<=0)[012345]))|(?<=5)[6012345]((?<=6)[0123456]((?<=0)[0]|(?<=1)[0123]|(?<=2)[056789]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0])|(?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234]((?<=0)[06789]|(?<=1)[089]|(?<=2)[089]|(?<=3)[089]|(?<=4)[09])|(?<=2)[0124567893]((?<=0)[02]|(?<=1)[0123456789]|(?<=2)[09]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[09]|(?<=3)[0])|(?<=3)[0123456]((?<=0)[0789]|(?<=1)[09]|(?<=2)[089]|(?<=3)[0389]|(?<=4)[09]|(?<=5)[0]|(?<=6)[089])|(?<=4)[01235678]((?<=0)[0]|(?<=1)[1234568]|(?<=2)[0123]|(?<=3)[012]|(?<=5)[0789]|(?<=6)[0123456789]|(?<=7)[089]|(?<=8)[089])|(?<=5)[012345678]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[01234]|(?<=5)[089]|(?<=6)[01]|(?<=7)[012]|(?<=8)[0])))|(?<=4)[6420795381]((?<=6)[0123456789]((?<=0)[012378]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456]|(?<=3)[5]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123467895]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[07]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=6)[023456789]|(?<=7)[0123456789]|(?<=8)[0123457]|(?<=9)[0123456789]|(?<=5)[0])|(?<=2)[012345679]((?<=0)[0]|(?<=1)[0]|(?<=2)[059]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[06789]|(?<=7)[0]|(?<=9)[012345])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0123457]|(?<=2)[01]|(?<=3)[09]|(?<=4)[0]|(?<=5)[01234567]|(?<=6)[0789]|(?<=7)[0]|(?<=8)[089]|(?<=9)[01234])|(?<=4)[01234567]((?<=0)[089]|(?<=1)[0789]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0])|(?<=5)[01234569]((?<=0)[01]|(?<=1)[012345]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[012345])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[012345]|(?<=3)[05]|(?<=4)[0]|(?<=5)[09]|(?<=6)[06789]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[012])|(?<=7)[0123456789]((?<=0)[0123]|(?<=1)[01234567]|(?<=2)[0123456789]|(?<=3)[0]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[012345]|(?<=3)[0789]|(?<=4)[01234]|(?<=5)[0]|(?<=6)[089]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234])|(?<=9)[012345678]((?<=0)[019]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]))|(?<=4)[01234567]((?<=0)[078]((?<=0)[123]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456]|(?<=3)[01234]|(?<=4)[01234567]|(?<=5)[056789]|(?<=6)[0123456789]|(?<=9)[012345])|(?<=2)[0123]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0123]|(?<=3)[0123])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[01345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0789]|(?<=6)[06789]|(?<=7)[0]|(?<=8)[012]|(?<=9)[01234567])|(?<=4)[0123456789]((?<=0)[09]|(?<=1)[012345]|(?<=2)[01234]|(?<=3)[0123]|(?<=4)[01]|(?<=5)[09]|(?<=6)[0]|(?<=7)[7890]|(?<=8)[0]|(?<=9)[01234567])|(?<=5)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[056789]|(?<=6)[0123456]|(?<=7)[09]|(?<=8)[06789]|(?<=9)[01234567])|(?<=6)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[01234]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[0123]|(?<=6)[01])|(?<=7)[0123456789]((?<=0)[06789]|(?<=1)[012]|(?<=2)[01]|(?<=3)[0]|(?<=4)[012]|(?<=5)[0]|(?<=6)[09]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123]))|(?<=2)[2013]((?<=2)[60123459]((?<=6)[90]|(?<=0)[0]|(?<=1)[012345678]|(?<=2)[0235]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0789]|(?<=9)[0123456])|(?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[078]|(?<=1)[01234]|(?<=2)[056789]|(?<=3)[0124578]|(?<=4)[012356897]|(?<=5)[02367894]|(?<=6)[01245679]|(?<=7)[23456]|(?<=8)[0129]|(?<=9)[01235])|(?<=3)[01234569]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[089]|(?<=3)[09]|(?<=4)[01245]|(?<=5)[0123]|(?<=6)[056789]|(?<=9)[012]))|(?<=0)[012345]((?<=0)[078]((?<=0)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[023456789]((?<=0)[09]|(?<=2)[0123]|(?<=3)[03456]|(?<=4)[012456]|(?<=5)[01234]|(?<=6)[012345]|(?<=7)[0123456]|(?<=8)[012345]|(?<=9)[01234567])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[012]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456789])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[01234578]|(?<=2)[0]|(?<=3)[012]|(?<=4)[0]|(?<=5)[0123456789]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[01234567])|(?<=4)[0123456789]((?<=0)[068]|(?<=1)[09]|(?<=2)[01234]|(?<=3)[0]|(?<=4)[012345679]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456])|(?<=5)[01234569]((?<=0)[0]|(?<=1)[02345678]|(?<=2)[09]|(?<=3)[0123]|(?<=4)[012]|(?<=5)[0123456]|(?<=6)[0789]|(?<=9)[01234]))|(?<=7)[01234568]((?<=0)[0178]((?<=0)[123456789]|(?<=1)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[09]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[01235]|(?<=6)[0124569]|(?<=7)[01234567]|(?<=8)[0123456]|(?<=9)[01234567])|(?<=2)[0123456789]((?<=0)[09]|(?<=1)[09]|(?<=2)[0]|(?<=3)[012789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[01]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[089]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01234]|(?<=6)[012345]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234])|(?<=5)[0123]((?<=0)[09]|(?<=1)[0123]|(?<=2)[09]|(?<=3)[0])|(?<=6)[0123456789]((?<=0)[06789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[01]|(?<=5)[0]|(?<=6)[4]|(?<=7)[0123456]|(?<=8)[06789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[012]|(?<=4)[0]|(?<=5)[01]|(?<=6)[02]|(?<=7)[0]|(?<=8)[0123]))|(?<=9)[012345678]((?<=0)[012378]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0123456789]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[012345678]|(?<=7)[01234678]|(?<=8)[0123]|(?<=9)[012])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[012]|(?<=4)[0]|(?<=5)[012345]|(?<=6)[0]|(?<=7)[012]|(?<=8)[01]|(?<=9)[0])|(?<=3)[01234569]((?<=0)[0]|(?<=1)[0789]|(?<=2)[012345679]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[02789]|(?<=6)[012]|(?<=9)[0123456])|(?<=4)[012345]((?<=0)[0]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[012345]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[09]|(?<=6)[0123]|(?<=7)[01234]|(?<=8)[023]|(?<=9)[01234])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[089]|(?<=2)[0123456789]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456789])|(?<=7)[012345678]((?<=0)[06789]|(?<=1)[0456789]|(?<=2)[012]|(?<=3)[01]|(?<=4)[0123]|(?<=5)[01]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0123456]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01]|(?<=8)[021]))|(?<=5)[0123456789]((?<=0)[087]((?<=0)[012345678]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456789]((?<=0)[09]|(?<=1)[012349]|(?<=2)[012345678]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[012345]|(?<=7)[09]|(?<=8)[0123]|(?<=9)[01])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[01234]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=3)[014567]((?<=0)[0]|(?<=1)[01234]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234569]|(?<=3)[01234]|(?<=4)[12340]|(?<=5)[0345]|(?<=6)[0789]|(?<=7)[012345678]|(?<=8)[089]|(?<=9)[01234])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[012]|(?<=3)[012345678]|(?<=4)[0123456]|(?<=5)[01234]|(?<=6)[01234]|(?<=7)[012345678]|(?<=8)[01234567]|(?<=9)[012345])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=9)[0123456]((?<=0)[089]|(?<=1)[0789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]))|(?<=3)[01234578]((?<=0)[078]((?<=0)[12345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123457]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[01234]|(?<=5)[012345]|(?<=7)[8])|(?<=2)[04]((?<=0)[0123456]|(?<=4)[1])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012]|(?<=2)[01]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[012345]|(?<=7)[01234569]|(?<=8)[012]|(?<=9)[0123])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456789]|(?<=3)[09]|(?<=4)[089]|(?<=5)[09]|(?<=6)[01]|(?<=7)[09]|(?<=8)[01]|(?<=9)[01])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0789]|(?<=3)[0]|(?<=4)[098]|(?<=5)[089]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234567])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[09]|(?<=3)[06789]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[012345]|(?<=7)[01234567]|(?<=8)[01234567]|(?<=9)[012])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0789]|(?<=8)[01234567]|(?<=9)[01234567]))|(?<=8)[3427015689]((?<=3)[5012346789]((?<=5)[0]|(?<=0)[09]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123]|(?<=9)[012345])|(?<=4)[69158]((?<=6)[0]|(?<=9)[809]|(?<=1)[09]|(?<=5)[0]|(?<=8)[0])|(?<=2)[7012345689]((?<=7)[7068]|(?<=0)[0]|(?<=1)[01235]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[09]|(?<=8)[0789]|(?<=9)[1])|(?<=7)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[0178]((?<=0)[123456789]|(?<=1)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[012345]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012456])|(?<=5)[01235]((?<=0)[08]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0])|(?<=6)[012345]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[09]|(?<=8)[0]|(?<=9)[015])|(?<=9)[0123456789]((?<=0)[0123]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01238]))|(?<=1)[0123456789]((?<=0)[012897]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0]|(?<=8)[90]|(?<=9)[2]|(?<=7)[01])|(?<=1)[012345]((?<=0)[0]|(?<=1)[01]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[012345]((?<=0)[09]|(?<=1)[089]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=3)[0123456789]((?<=0)[09]|(?<=1)[089]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]|(?<=9)[0])|(?<=4)[01234567]((?<=0)[09]|(?<=1)[0]|(?<=2)[09]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[03456789]|(?<=7)[0]|(?<=8)[0]|(?<=9)[09])|(?<=6)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0789]|(?<=6)[01]|(?<=7)[0])|(?<=7)[012345678]((?<=0)[01234]|(?<=1)[09]|(?<=2)[078]|(?<=3)[01]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=8)[0123456789]((?<=0)[0456789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]|(?<=9)[0789])|(?<=9)[012345678]((?<=0)[0789]|(?<=1)[0]|(?<=2)[078]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09])))|(?<=5)[102]((?<=1)[0]((?<=0)[078]((?<=0)[12345]|(?<=7)[01]|(?<=8)[0]))|(?<=0)[012345678]((?<=0)[1250789]((?<=1)[6901234578]|(?<=2)[201]|(?<=5)[9]|(?<=0)[123456789]|(?<=7)[01]|(?<=8)[0]|(?<=9)[0])|(?<=1)[0345678912]((?<=0)[089]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[0123456]|(?<=6)[01234]|(?<=7)[012345786]|(?<=8)[0]|(?<=9)[056123478]|(?<=1)[0]|(?<=2)[0])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012345679]|(?<=2)[0789]|(?<=3)[06789]|(?<=4)[06789]|(?<=5)[0789]|(?<=6)[06789]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456789])|(?<=3)[01234679]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[023456]|(?<=3)[0123456]|(?<=4)[012345678]|(?<=6)[06789]|(?<=7)[0123456]|(?<=9)[01])|(?<=4)[0123456789]((?<=0)[089]|(?<=1)[01]|(?<=2)[0]|(?<=3)[0]|(?<=4)[01]|(?<=5)[0]|(?<=6)[01]|(?<=7)[0]|(?<=8)[012]|(?<=9)[01])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[09]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[012]|(?<=7)[0]|(?<=8)[01234]|(?<=9)[0126])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01245679]|(?<=2)[90]|(?<=3)[0789]|(?<=4)[01]|(?<=5)[0]|(?<=6)[089]|(?<=7)[089]|(?<=8)[023456789]|(?<=9)[0123456])|(?<=7)[0134567892]((?<=0)[09]|(?<=1)[0]|(?<=3)[0]|(?<=4)[01]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123456]|(?<=9)[02345]|(?<=2)[0])|(?<=8)[01234]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]))|(?<=2)[0]((?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])))))$"), + FR: new RegExp("^([5623401789]((?<=5)[0123456789]((?<=0)[356284170]((?<=3)[9420617358]((?<=9)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0])|(?<=5)[8742310659]((?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0])|(?<=6)[073684219]((?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0])|(?<=2)[562140973]((?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0])|(?<=8)[71059864]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=4)[0])|(?<=4)[1982546037]((?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0])|(?<=1)[1478956230]((?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0])|(?<=7)[07526413]((?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[127643580]((?<=1)[275634190]((?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0])|(?<=2)[596374210]((?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[98207365]((?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=3)[3092418675]((?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0])|(?<=5)[3012]((?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=2)[213476058]((?<=2)[310497625]((?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=1)[312549670]((?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=3)[0371246]((?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0])|(?<=4)[01]((?<=0)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=3)[2163459870]((?<=2)[139405672]((?<=1)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0])|(?<=1)[70264195]((?<=7)[0]|(?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0])|(?<=6)[04]((?<=0)[0]|(?<=4)[0])|(?<=3)[48605927]((?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=4)[148072]((?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0])|(?<=5)[04]((?<=0)[0]|(?<=4)[0])|(?<=9)[4756]((?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=4)[8173542690]((?<=8)[0973468125]((?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=1)[1529746380]((?<=1)[502364198]|(?<=5)[0]|(?<=2)[02913]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[4560]|(?<=8)[0]|(?<=0)[0])|(?<=7)[4180762395]((?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0])|(?<=3)[7608312459]((?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[50]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0])|(?<=5)[8725643109]((?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0])|(?<=4)[7519382460]((?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[50]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=2)[3069418725]((?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[3612054897]((?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=7)[0])|(?<=9)[239458761]((?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[143627085]((?<=1)[306259147]((?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[03]((?<=0)[0]|(?<=3)[0])|(?<=3)[021]((?<=0)[0]|(?<=2)[0]|(?<=1)[0])|(?<=6)[0]((?<=0)[0])|(?<=2)[675104293]((?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[04]((?<=0)[0]|(?<=4)[0])|(?<=5)[0]((?<=0)[0]))|(?<=6)[6321457980]((?<=6)[4920318675]((?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0])|(?<=3)[5982641037]((?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0])|(?<=2)[40625397]((?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0])|(?<=1)[432671950]((?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=0)[0])|(?<=4)[0326875941]((?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0])|(?<=5)[6058143927]((?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=7)[0687354]((?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0])|(?<=9)[2135]((?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[9850764]((?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[4731508269]((?<=4)[4851620379]((?<=4)[05]|(?<=8)[0]|(?<=5)[05]|(?<=1)[025]|(?<=6)[0]|(?<=2)[0]|(?<=0)[05]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[32401978]((?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0])|(?<=3)[6042837519]((?<=6)[05]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[05]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0])|(?<=1)[375460892]((?<=3)[0]|(?<=7)[05]|(?<=5)[50]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[05]|(?<=9)[0]|(?<=2)[0])|(?<=5)[9358617420]((?<=9)[0]|(?<=3)[05]|(?<=5)[0]|(?<=8)[0]|(?<=6)[50]|(?<=1)[05]|(?<=7)[0]|(?<=4)[0]|(?<=2)[05]|(?<=0)[0])|(?<=0)[570]((?<=5)[0]|(?<=7)[0]|(?<=0)[0])|(?<=8)[3018726549]((?<=3)[0]|(?<=0)[0]|(?<=1)[50]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[50]|(?<=5)[05]|(?<=4)[0]|(?<=9)[0])|(?<=2)[204698375]((?<=2)[0]|(?<=0)[0]|(?<=4)[50]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[05])|(?<=6)[306924758]((?<=3)[05]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[50]|(?<=7)[0]|(?<=5)[50]|(?<=8)[05])|(?<=9)[8732641905]((?<=8)[0]|(?<=7)[0]|(?<=3)[05]|(?<=2)[05]|(?<=6)[0]|(?<=4)[0]|(?<=1)[05]|(?<=9)[0]|(?<=0)[5]|(?<=5)[0]))|(?<=8)[713548260]((?<=7)[0]((?<=0)[0])|(?<=1)[791425836]((?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[0524183796]((?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0])|(?<=5)[03]((?<=0)[0]|(?<=3)[0])|(?<=4)[620174935]((?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=2)[210539746]((?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0])|(?<=6)[604]((?<=6)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[2467135980]((?<=2)[6842175390]((?<=6)[8691025374]|(?<=8)[085267431]|(?<=4)[475093216]|(?<=2)[503917264]|(?<=1)[6483709152]|(?<=7)[80973421]|(?<=5)[92183045]|(?<=3)[4091256738]|(?<=9)[36025794]|(?<=0)[0])|(?<=4)[1490738625]((?<=1)[0]|(?<=4)[0]|(?<=9)[0431562]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[0867932541]((?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0])|(?<=7)[1483579206]((?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[07]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0])|(?<=1)[3719254680]((?<=3)[4309816257]|(?<=7)[3806172594]|(?<=1)[2016495837]|(?<=9)[10985342]|(?<=2)[8273401965]|(?<=5)[7398145260]|(?<=4)[3149875602]|(?<=6)[4139725608]|(?<=8)[197248605]|(?<=0)[0])|(?<=3)[321769850]((?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0])|(?<=5)[7451360829]((?<=7)[0]|(?<=4)[0]|(?<=5)[20341]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=2)[0]|(?<=9)[0])|(?<=9)[894526731]((?<=8)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0])|(?<=8)[2473158690]((?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])))|(?<=6)[0123456789]((?<=0)[4631985270]((?<=4)[80923461]((?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0])|(?<=6)[08954621]((?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0])|(?<=3)[0958136427]((?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=1)[9243715680]((?<=9)[0]|(?<=2)[039687]|(?<=4)[109]|(?<=3)[048]|(?<=7)[035]|(?<=1)[09273]|(?<=5)[0753]|(?<=6)[20]|(?<=8)[0]|(?<=0)[0])|(?<=9)[3465]((?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0])|(?<=8)[270854619]((?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0])|(?<=5)[4108937256]((?<=4)[0]|(?<=1)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0])|(?<=2)[4291356870]((?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=0)[0])|(?<=7)[903514]((?<=9)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[521476038]((?<=5)[7065]((?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0])|(?<=2)[743205916]((?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0])|(?<=1)[210356794]((?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[71042359]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0])|(?<=7)[09]((?<=0)[0]|(?<=9)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=3)[2693851074]((?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0])|(?<=8)[0]((?<=0)[0]))|(?<=2)[3168254790]((?<=3)[2916438750]((?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0])|(?<=1)[4265783190]((?<=4)[40579321]|(?<=2)[071489362]|(?<=6)[4120]|(?<=5)[086523791]|(?<=7)[056932]|(?<=8)[0752]|(?<=3)[4061827]|(?<=1)[813906742]|(?<=9)[096]|(?<=0)[0])|(?<=6)[5197203486]((?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[5916743082]((?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=2)[0])|(?<=2)[1764253890]((?<=1)[08795]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[3041]|(?<=5)[0]|(?<=3)[210]|(?<=8)[0]|(?<=9)[0]|(?<=0)[0])|(?<=5)[6375908412]((?<=6)[0]|(?<=3)[0]|(?<=7)[05]|(?<=5)[0]|(?<=9)[0]|(?<=0)[0]|(?<=8)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0])|(?<=4)[5786019432]((?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0])|(?<=7)[8467209315]((?<=8)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=9)[659217384]((?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[4213657890]((?<=4)[2694581370]((?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0])|(?<=2)[136572094]((?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0])|(?<=1)[156492703]((?<=1)[4906215873]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[02]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[9152387460]((?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=6)[0817329645]((?<=0)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0])|(?<=5)[7089643215]((?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=7)[6025398147]((?<=6)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=8)[845230917]((?<=8)[0]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=7)[0])|(?<=9)[832571946]((?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0]))|(?<=4)[3245168790]((?<=3)[650739214]((?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0])|(?<=2)[253674910]((?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0])|(?<=4)[2056917483]((?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0])|(?<=5)[173206]((?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0])|(?<=1)[273149560]((?<=2)[012]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=0)[0])|(?<=6)[6480]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0])|(?<=8)[07]((?<=0)[0]|(?<=7)[0])|(?<=7)[80]((?<=8)[0]|(?<=0)[0])|(?<=9)[9]((?<=9)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[234165780]((?<=2)[40532769]((?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0])|(?<=3)[698507231]((?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0])|(?<=4)[4026193]((?<=4)[0]|(?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0])|(?<=1)[04375291]((?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0])|(?<=6)[6790]((?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0])|(?<=5)[9061]((?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0])|(?<=7)[10]((?<=1)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=6)[213657480]((?<=2)[1265830947]((?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=7)[0])|(?<=1)[1572893640]((?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0])|(?<=3)[0246975318]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[0])|(?<=6)[06952781]((?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0]|(?<=8)[0]|(?<=1)[0])|(?<=5)[0361574]((?<=0)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0])|(?<=7)[264035]((?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0])|(?<=4)[0851296374]((?<=0)[0]|(?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0])|(?<=8)[20]((?<=2)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[1638254790]((?<=1)[247319560]((?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[80473526]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=0)[0])|(?<=6)[0548693721]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0])|(?<=3)[2716489350]((?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0])|(?<=8)[01867524]((?<=0)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0])|(?<=2)[6792143508]((?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[01672453]|(?<=8)[0])|(?<=5)[7031526894]((?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[7380294516]((?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0])|(?<=7)[02579316]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=9)[398726]((?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[2853471960]((?<=2)[1234905687]((?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0])|(?<=8)[7052943]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=5)[6835017942]((?<=6)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0]|(?<=2)[0])|(?<=3)[2538906147]((?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[84297061]((?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0])|(?<=7)[283049765]((?<=2)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0])|(?<=1)[9413802756]((?<=9)[0]|(?<=4)[0]|(?<=1)[680]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=2)[7584016]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0])|(?<=9)[9761528]((?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=8)[0])|(?<=6)[163042985]((?<=1)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0])|(?<=0)[04]((?<=0)[0]|(?<=4)[0]))|(?<=9)[4265837190]((?<=4)[8790642315]((?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=2)[1269853407]((?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0])|(?<=6)[1294860537]((?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0])|(?<=5)[0513687924]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0])|(?<=8)[47562093]((?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0])|(?<=3)[8964312057]((?<=8)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=7)[09487326]((?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0])|(?<=1)[720546139]((?<=7)[0]|(?<=2)[0564]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[50]|(?<=3)[0]|(?<=9)[0])|(?<=9)[7316]((?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[892145637])))|(?<=2)[5678901234]((?<=5)[2137406859]((?<=2)[715429630]((?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0])|(?<=1)[15749623]((?<=1)[0315]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0])|(?<=3)[2186390745]((?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0])|(?<=7)[27905]((?<=2)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0])|(?<=4)[3214967085]((?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=6)[452869013]((?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=3)[0])|(?<=8)[7042]((?<=7)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0])|(?<=5)[65832017]((?<=6)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0])|(?<=9)[623]((?<=6)[0]|(?<=2)[0]|(?<=3)[0]))|(?<=6)[134265780]((?<=1)[546192730]((?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=0)[0])|(?<=3)[04153982]((?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0])|(?<=4)[072156]((?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0])|(?<=2)[034672159]((?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0])|(?<=6)[02]((?<=0)[0]|(?<=2)[0])|(?<=5)[136704]((?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0])|(?<=7)[48973650]((?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[4537621980]((?<=4)[0324765981]((?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0])|(?<=5)[0236741589]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=9)[0])|(?<=3)[8370259416]((?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0])|(?<=7)[0264395187]((?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=7)[0])|(?<=6)[0674389251]((?<=0)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0])|(?<=2)[267159340]((?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0])|(?<=1)[7689235401]((?<=7)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0])|(?<=9)[45312]((?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0])|(?<=8)[02395617]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[523176480]((?<=5)[0]((?<=0)[0])|(?<=2)[629714053]((?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0])|(?<=3)[36042185]((?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=5)[0])|(?<=1)[263974510]((?<=2)[0]|(?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=6)[30]((?<=3)[0]|(?<=0)[0])|(?<=4)[018]((?<=0)[0]|(?<=1)[0]|(?<=8)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[6148529730]((?<=6)[5921307468]((?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0])|(?<=1)[60892547]((?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[6041597238]((?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0])|(?<=8)[6140728395]((?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=8)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[961530724]((?<=9)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0])|(?<=2)[698475031]((?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=4)[162]|(?<=7)[0]|(?<=5)[0239]|(?<=0)[0]|(?<=3)[3]|(?<=1)[7])|(?<=9)[425970183]((?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0])|(?<=7)[1587936402]((?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0]|(?<=2)[0])|(?<=3)[05148697]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=0)[0126]((?<=0)[09]((?<=0)[0]|(?<=9)[0])|(?<=1)[261459307]((?<=2)[851734962]|(?<=6)[67093485]|(?<=1)[2178306495]|(?<=4)[078526413]|(?<=5)[13027]|(?<=9)[0]|(?<=3)[8145972603]|(?<=0)[0]|(?<=7)[0123])|(?<=2)[7102345968]((?<=7)[06295]|(?<=1)[2384579]|(?<=0)[0]|(?<=2)[695410287]|(?<=3)[7043589261]|(?<=4)[50264837]|(?<=5)[291036]|(?<=9)[0]|(?<=6)[0]|(?<=8)[7])|(?<=6)[20]((?<=2)[0]|(?<=0)[0]))|(?<=1)[1524367089]((?<=1)[21754396]((?<=2)[10]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=6)[0])|(?<=5)[1087432695]((?<=1)[0]|(?<=0)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=5)[0])|(?<=2)[309276154]((?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0])|(?<=4)[210954376]((?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=6)[0])|(?<=3)[1562397840]((?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=0)[0])|(?<=6)[94103]((?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0])|(?<=7)[06]((?<=0)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[025]((?<=0)[0]|(?<=2)[0]|(?<=5)[0])|(?<=9)[1]((?<=1)[0]))|(?<=2)[4182359760]((?<=4)[0358142976]((?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0])|(?<=1)[364017529]((?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0])|(?<=8)[710236]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0])|(?<=2)[519074263]((?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0]|(?<=3)[0])|(?<=3)[5321908467]((?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0]|(?<=8)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0])|(?<=5)[5741869320]((?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0])|(?<=9)[874536]((?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0])|(?<=7)[02378145]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=7)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0])|(?<=6)[192360458]((?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[327150468]((?<=3)[824065]((?<=8)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0])|(?<=2)[024165973]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0])|(?<=7)[0]((?<=0)[0])|(?<=1)[705931426]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[603852]((?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=2)[0])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=4)[321456870]((?<=3)[0321684795]((?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=7)[0]|(?<=9)[0]|(?<=5)[0])|(?<=2)[162543970]((?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0])|(?<=1)[547610932]((?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0])|(?<=4)[4017528369]((?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0])|(?<=5)[4562180973]((?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0])|(?<=6)[54201386]((?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[05]((?<=0)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])))|(?<=3)[0123456789]((?<=0)[7123546980]((?<=7)[0746532]((?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0])|(?<=1)[349125670]((?<=3)[3210]|(?<=4)[0]|(?<=9)[0]|(?<=1)[041]|(?<=2)[065427918]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=2)[165492037]((?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0])|(?<=3)[056293481]((?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0])|(?<=5)[80731462]((?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0])|(?<=4)[8519430762]((?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0])|(?<=6)[31502467]((?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0])|(?<=9)[60482]((?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0])|(?<=8)[4207]((?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[241537860]((?<=2)[8923160475]((?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0])|(?<=4)[6254937810]((?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=8)[0]|(?<=1)[0]|(?<=0)[0])|(?<=1)[6192358470]((?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0]|(?<=7)[0]|(?<=0)[0])|(?<=5)[1985476320]((?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0])|(?<=3)[8456137920]((?<=8)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0])|(?<=7)[70895]((?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0])|(?<=8)[705234168]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0])|(?<=6)[52067]((?<=5)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=2)[271364580]((?<=2)[74356920]((?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0])|(?<=7)[203]((?<=2)[0]|(?<=0)[0]|(?<=3)[0])|(?<=1)[173490562]((?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0])|(?<=3)[0875932146]((?<=0)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[801269354]((?<=8)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0])|(?<=5)[05]((?<=0)[0]|(?<=5)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[3178469052]((?<=3)[7564982031]((?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=1)[2983107654]((?<=2)[4653017]|(?<=9)[0]|(?<=8)[50]|(?<=3)[803]|(?<=1)[34205]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[10])|(?<=7)[3265914780]((?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0])|(?<=8)[8324961057]((?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=4)[3921647850]((?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0])|(?<=6)[492107568]((?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0])|(?<=9)[1258937]((?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=5)[5490786132]((?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=2)[341592076]((?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]))|(?<=4)[3462719508]((?<=3)[6328150974]((?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0])|(?<=4)[8603941275]((?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=6)[051863792]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0])|(?<=2)[2619378045]((?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0])|(?<=7)[012396574]((?<=0)[0]|(?<=1)[0]|(?<=2)[50]|(?<=3)[0]|(?<=9)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0])|(?<=1)[67913245]((?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0])|(?<=9)[8297]((?<=8)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0])|(?<=5)[674301952]((?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0])|(?<=0)[8907]((?<=8)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0])|(?<=8)[503128]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=8)[0]))|(?<=5)[2134586709]((?<=2)[569327401]((?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[05]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0])|(?<=1)[35124967]((?<=3)[70345216]|(?<=5)[0]|(?<=1)[314]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0])|(?<=3)[4372689051]((?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0])|(?<=4)[1657342908]((?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=0)[0]|(?<=8)[0])|(?<=5)[089524631]((?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0])|(?<=8)[95073]((?<=9)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0])|(?<=6)[853610429]((?<=8)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0])|(?<=7)[27564830]((?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=9)[6]((?<=6)[0]))|(?<=6)[123486750]((?<=1)[2650317489]((?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0])|(?<=2)[173042569]((?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0])|(?<=3)[35701426]((?<=3)[0]|(?<=5)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=4)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[152364870]((?<=1)[612453970]((?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0])|(?<=5)[021345]((?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[614237509]((?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0])|(?<=3)[4137986520]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[620]((?<=6)[0]|(?<=2)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[1253679480]((?<=1)[5496012387]((?<=5)[0]|(?<=4)[024]|(?<=9)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[209483]|(?<=2)[120]|(?<=3)[480]|(?<=8)[0]|(?<=7)[0])|(?<=2)[7698103254]((?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0])|(?<=5)[2914735086]((?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0])|(?<=3)[025983674]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0])|(?<=6)[9743568210]((?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0])|(?<=7)[431960785]((?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=6)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0])|(?<=9)[8736524]((?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0])|(?<=4)[7264983510]((?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0])|(?<=8)[79064583]((?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0])|(?<=0)[8097]((?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]))|(?<=9)[632185740]((?<=6)[0]((?<=0)[0])|(?<=3)[20516873]((?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0])|(?<=2)[471536920]((?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0])|(?<=1)[253140679]((?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0])|(?<=8)[0]((?<=0)[0])|(?<=5)[720]((?<=7)[0]|(?<=2)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[016]((?<=0)[0]|(?<=1)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0])))|(?<=4)[0123456789]((?<=0)[3910562874]((?<=3)[382095167]((?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0])|(?<=9)[9]((?<=9)[0])|(?<=1)[1270985463]((?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=5)[01563]((?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0])|(?<=6)[036]((?<=0)[0]|(?<=3)[0]|(?<=6)[0])|(?<=2)[1478569302]((?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=0)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[0163284]((?<=0)[0]|(?<=1)[0]|(?<=6)[50]|(?<=3)[0]|(?<=2)[0]|(?<=8)[0]|(?<=4)[0]))|(?<=1)[231865470]((?<=2)[459721036]((?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[3601752]((?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0])|(?<=1)[721596340]((?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=4)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=2)[5164293780]((?<=5)[5697821043]((?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=3)[0])|(?<=1)[342510796]((?<=3)[01]|(?<=4)[0]|(?<=2)[032]|(?<=5)[0352]|(?<=1)[041]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0])|(?<=6)[026417835]((?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0])|(?<=4)[6137049258]((?<=6)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0])|(?<=2)[4621937]((?<=4)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0])|(?<=9)[492]((?<=4)[0]|(?<=9)[0]|(?<=2)[0])|(?<=3)[0687312495]((?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=5)[0])|(?<=7)[52048]((?<=5)[0]|(?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=8)[0])|(?<=8)[403291]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[374215806]((?<=3)[083476529]((?<=0)[0]|(?<=8)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0])|(?<=7)[057]((?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=4)[1354902]((?<=1)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=2)[0])|(?<=2)[639021754]((?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[267054931]((?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0])|(?<=5)[0918325]((?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0])|(?<=6)[20]((?<=2)[0]|(?<=0)[0]))|(?<=4)[1645832709]((?<=1)[461972530]((?<=4)[0]|(?<=6)[0]|(?<=1)[095876]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=6)[8714390256]((?<=8)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[1647258309]((?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0])|(?<=5)[8239540617]((?<=8)[0]|(?<=2)[012]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=7)[0])|(?<=8)[3506841]((?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=1)[0])|(?<=3)[5127493608]((?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0])|(?<=2)[705629314]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0])|(?<=7)[815347260]((?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=9)[8]((?<=8)[0]))|(?<=5)[321546708]((?<=3)[091476823]((?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=8)[0]|(?<=2)[0]|(?<=3)[0])|(?<=2)[216907354]((?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[713590624]((?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=4)[0])|(?<=5)[70523619]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0])|(?<=4)[508912367]((?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0])|(?<=6)[204538]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0])|(?<=7)[0624357]((?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=6)[183742065]((?<=1)[204635197]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0])|(?<=8)[0]((?<=0)[0])|(?<=3)[3251460]((?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[0]((?<=0)[0])|(?<=2)[15637204]((?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0]))|(?<=7)[721453680]((?<=7)[0]((?<=0)[0])|(?<=2)[256917034]((?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0])|(?<=1)[247536819]((?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=9)[0])|(?<=4)[17203584]((?<=1)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0])|(?<=5)[0125]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=3)[6301527489]((?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[215367048]((?<=2)[03145627]((?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0])|(?<=1)[946025173]((?<=9)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0])|(?<=5)[0]((?<=0)[0])|(?<=3)[103427]((?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=9)[605123478]((?<=6)[5134267089]((?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0])|(?<=0)[078]((?<=0)[0]|(?<=7)[0]|(?<=8)[0])|(?<=5)[41362097]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0])|(?<=1)[576429130]((?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[03254]|(?<=9)[0]|(?<=1)[02]|(?<=3)[0]|(?<=0)[0])|(?<=2)[56728934]((?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0])|(?<=3)[2631580794]((?<=2)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[403925618]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0])|(?<=7)[073541]((?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])))|(?<=0)[123456789]((?<=1)[6351248079]((?<=6)[40386]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=3)[3048612579]((?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0])|(?<=5)[01567984]((?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=8)[0]|(?<=4)[0])|(?<=1)[195230674]((?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0])|(?<=2)[0653918427]((?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=1)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=4)[735216804]((?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=4)[0])|(?<=8)[05]((?<=0)[0]|(?<=5)[1])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=7)[051]((?<=0)[0]|(?<=5)[0]|(?<=1)[0])|(?<=9)[69]((?<=6)[0]|(?<=9)[0]))|(?<=2)[385421067]((?<=3)[0641538729]((?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=9)[0])|(?<=8)[061825743]((?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0])|(?<=5)[09824715]((?<=0)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0])|(?<=4)[8924015673]((?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0])|(?<=2)[972140563]((?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0])|(?<=1)[923016475]((?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=6)[807351429]((?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0])|(?<=7)[2069]((?<=2)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]))|(?<=3)[213074568]((?<=2)[051249763]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0])|(?<=1)[495327160]((?<=4)[0]|(?<=9)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0])|(?<=3)[0718364925]((?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[71523640]((?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0])|(?<=5)[01]((?<=0)[0]|(?<=1)[0])|(?<=6)[03]((?<=0)[0]|(?<=3)[0])|(?<=8)[0]((?<=0)[0]))|(?<=4)[524137086]((?<=5)[031]((?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[6785034192]((?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0])|(?<=4)[201]((?<=2)[0]|(?<=0)[0]|(?<=1)[0])|(?<=1)[5267149803]((?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[372408615]((?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[5670]((?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=6)[06]((?<=0)[0]|(?<=6)[0]))|(?<=5)[162735408]((?<=1)[194075362]((?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=6)[0]((?<=0)[0])|(?<=2)[6309254]((?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0])|(?<=7)[0]((?<=0)[0])|(?<=3)[5041382]((?<=5)[0]|(?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[0])|(?<=5)[06]((?<=0)[0]|(?<=6)[0])|(?<=4)[0867]((?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=6)[1463827950]((?<=1)[6340519]((?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0])|(?<=4)[207645381]((?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=1)[0])|(?<=6)[27604591]((?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0])|(?<=3)[194832670]((?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=8)[0531]((?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[16270543]((?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0])|(?<=7)[105943]((?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=9)[15]((?<=1)[0]|(?<=5)[0])|(?<=5)[6108345972]((?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=8)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[136250748]((?<=1)[904516237]((?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=7)[0])|(?<=3)[412078365]((?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[01936]((?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0])|(?<=2)[930764215]((?<=9)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=5)[87319206]((?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[09]((?<=0)[0]|(?<=9)[0])|(?<=4)[7106453]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0])|(?<=8)[0]((?<=0)[0]))|(?<=8)[432165087]((?<=4)[503641]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0])|(?<=3)[180957623]((?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0])|(?<=2)[149256703]((?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0])|(?<=1)[92165347]((?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0]))|(?<=9)[632841507]((?<=6)[0]((?<=0)[0])|(?<=3)[1205493]((?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0])|(?<=2)[45302971]((?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[026]((?<=0)[0]|(?<=2)[0]|(?<=6)[0])|(?<=1)[0623419]((?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])))|(?<=1)[0123456789]((?<=0)[231648570]((?<=2)[0249167835]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0])|(?<=3)[4382715960]((?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=0)[0])|(?<=1)[3791052468]((?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[012435]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=5)[01]((?<=0)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[351270486]((?<=3)[6490375182]((?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0])|(?<=5)[8160497]((?<=8)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0])|(?<=1)[724906153]((?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=2)[073425916]((?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[3012984]((?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=8)[0]|(?<=4)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[012]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]))|(?<=2)[521340786]((?<=5)[2546081]((?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=1)[0])|(?<=2)[230694157]((?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0])|(?<=1)[164325709]((?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=0)[0]|(?<=9)[0])|(?<=3)[5209638147]((?<=5)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[8062574319]((?<=8)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0482]((?<=0)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0])|(?<=8)[50]((?<=5)[0]|(?<=0)[0])|(?<=6)[4203]((?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]))|(?<=3)[1375248609]((?<=1)[9268103547]((?<=9)[0]|(?<=2)[10796243]|(?<=6)[0]|(?<=8)[0]|(?<=1)[7596430812]|(?<=0)[35904]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0])|(?<=3)[9236105784]((?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0])|(?<=7)[2498107563]((?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0])|(?<=5)[1803927645]((?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[7586321490]((?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0])|(?<=4)[2183607459]((?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0])|(?<=8)[5942317806]((?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=2)[10]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0]|(?<=6)[0])|(?<=6)[4203198567]((?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[0189]((?<=0)[689124537]|(?<=1)[3615024]|(?<=8)[0]|(?<=9)[0])|(?<=9)[54891326]((?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]))|(?<=4)[1526493780]((?<=1)[916304752]((?<=9)[0]|(?<=1)[230741]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[130])|(?<=5)[43970152]((?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0])|(?<=2)[4569217380]((?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0])|(?<=6)[120758943]((?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=4)[3980471625]((?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=9)[537924618]((?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0])|(?<=3)[534718296]((?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0])|(?<=7)[107549368]((?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0])|(?<=8)[4860513]((?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[702831456]((?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=2)[537246901]((?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])|(?<=3)[082154]((?<=0)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[941235076]((?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0])|(?<=4)[03]((?<=0)[0]|(?<=3)[0])|(?<=5)[90]((?<=9)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0]))|(?<=6)[154327608]((?<=1)[432157906]((?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0])|(?<=5)[06197]((?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0])|(?<=4)[6129703845]((?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=4)[0]|(?<=5)[0])|(?<=3)[0258349671]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0])|(?<=2)[154670239]((?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0])|(?<=7)[0123]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0])|(?<=6)[20]((?<=2)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=7)[5784231609]((?<=5)[2057914683]((?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=3)[0])|(?<=7)[703854]((?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0])|(?<=8)[017894]((?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[4387901625]((?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=2)[971346025]((?<=9)[0]|(?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0])|(?<=3)[3824651790]((?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0])|(?<=1)[5603741928]((?<=5)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[07892]|(?<=7)[0]|(?<=4)[0]|(?<=1)[310]|(?<=9)[0]|(?<=2)[30]|(?<=8)[0])|(?<=6)[10275934]((?<=1)[0]|(?<=0)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0])|(?<=9)[24]((?<=2)[0]|(?<=4)[0]))|(?<=8)[231546780]((?<=2)[261497503]((?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[4582097613]((?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0])|(?<=1)[435672109]((?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0])|(?<=5)[2701]((?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0])|(?<=4)[10]((?<=1)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[321546870]((?<=3)[8152436907]((?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0])|(?<=2)[529017364]((?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0])|(?<=1)[921045673]((?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0])|(?<=5)[02516]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0])|(?<=4)[3107965]((?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])))|(?<=7)[0123456789]((?<=0)[321045678]((?<=3)[0612]((?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0])|(?<=2)[807134592]((?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0])|(?<=1)[1049268735]((?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[04]((?<=0)[0]|(?<=4)[0])|(?<=5)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=1)[3451269708]((?<=3)[7321409658]((?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0]|(?<=5)[0]|(?<=8)[0])|(?<=4)[6843720915]((?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0])|(?<=5)[483721950]((?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=0)[0])|(?<=1)[237619045]((?<=2)[0]|(?<=3)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[08]|(?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[256794130]((?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=0)[0])|(?<=6)[27840]((?<=2)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=0)[0])|(?<=9)[69]((?<=6)[0]|(?<=9)[0])|(?<=7)[6104]((?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0758]((?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0]))|(?<=2)[684531270]((?<=6)[015]((?<=0)[0]|(?<=1)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[035467]((?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0])|(?<=5)[054163]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0])|(?<=3)[2049518367]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0])|(?<=1)[167354209]((?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0])|(?<=2)[142736905]((?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[623450187]((?<=6)[1306472]((?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0])|(?<=2)[610452739]((?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0])|(?<=3)[407915362]((?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=4)[176480295]((?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[0429357]((?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=1)[970136542]((?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0])|(?<=8)[07]((?<=0)[0]|(?<=7)[0])|(?<=7)[20931]((?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]))|(?<=4)[5231849670]((?<=5)[4062758]((?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0])|(?<=2)[901567342]((?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0])|(?<=3)[5068127394]((?<=5)[0]|(?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0])|(?<=1)[063451297]((?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0])|(?<=8)[09]((?<=0)[0]|(?<=9)[0])|(?<=4)[302741956]((?<=3)[0]|(?<=0)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0])|(?<=9)[1763542]((?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0])|(?<=6)[506]((?<=5)[0]|(?<=0)[0]|(?<=6)[0])|(?<=7)[04]((?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[012]((?<=0)[325814679]|(?<=1)[2516470389]|(?<=2)[0])|(?<=1)[1]((?<=1)[6]))|(?<=6)[5781462390]((?<=5)[6937514208]((?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=8)[0])|(?<=7)[6425389107]((?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0])|(?<=8)[95146807]((?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0])|(?<=1)[169734520]((?<=1)[067913]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[30]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=0)[0])|(?<=4)[9465083127]((?<=9)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0])|(?<=6)[893460125]((?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=2)[8372691405]((?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0])|(?<=3)[2934687501]((?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=1)[0])|(?<=9)[75431628]((?<=7)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=8)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[1793458260]((?<=1)[2765834910]((?<=2)[047236]|(?<=7)[1306847]|(?<=6)[0365974]|(?<=5)[4701]|(?<=8)[34561]|(?<=3)[9801354]|(?<=4)[40851]|(?<=9)[0]|(?<=1)[5841]|(?<=0)[0])|(?<=7)[6523018]((?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=8)[0])|(?<=9)[1427359]((?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0])|(?<=3)[9287534160]((?<=9)[0]|(?<=2)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0])|(?<=4)[786314052]((?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0])|(?<=5)[956214870]((?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[05]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=0)[0])|(?<=8)[392654817]((?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0])|(?<=2)[2398610745]((?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0])|(?<=6)[5183094267]((?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[09]((?<=0)[0]|(?<=9)[0]))|(?<=8)[6592871430]((?<=6)[6590432718]((?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0])|(?<=5)[8257319460]((?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=9)[138957426]((?<=1)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[05]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=2)[7053264891]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0])|(?<=8)[349271650]((?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0])|(?<=7)[2931764508]((?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[01]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0])|(?<=1)[5321760894]((?<=5)[0]|(?<=3)[0]|(?<=2)[50614]|(?<=1)[073421]|(?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[6947512803]((?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[1269853704]((?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[612843507]((?<=6)[0]((?<=0)[0])|(?<=1)[3579610248]((?<=3)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=8)[0])|(?<=2)[912053746]((?<=9)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[2015436]((?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[0654827931]((?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0])|(?<=5)[10]((?<=1)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])))|(?<=8)[0123456789]((?<=0)[1320758649]((?<=1)[013576924]((?<=0)[0]|(?<=1)[058]|(?<=3)[204651]|(?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[02]|(?<=4)[0])|(?<=3)[071462935]((?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0])|(?<=2)[706954132]((?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=0)[098]((?<=0)[0]|(?<=9)[0]|(?<=8)[0])|(?<=7)[054871]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=1)[0])|(?<=5)[60784215]((?<=6)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=8)[05627398]((?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0])|(?<=6)[024879153]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=4)[8705192346]((?<=8)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0])|(?<=9)[7618]((?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0]))|(?<=1)[1354269870]((?<=1)[473529106]((?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=6)[0])|(?<=3)[6430175829]((?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=2)[0]|(?<=9)[0])|(?<=5)[08743]((?<=0)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0])|(?<=4)[304795]((?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=9)[0]|(?<=5)[0])|(?<=2)[601254937]((?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0])|(?<=6)[0436]((?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0])|(?<=9)[9]((?<=9)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0]))|(?<=2)[218453760]((?<=2)[91430527]((?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0])|(?<=1)[297603541]((?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[041]((?<=0)[0]|(?<=4)[0]|(?<=1)[0])|(?<=5)[0]((?<=0)[0])|(?<=3)[7409365]((?<=7)[0]|(?<=4)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=7)[01]((?<=0)[0]|(?<=1)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[6813459270]((?<=6)[01743689]((?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0])|(?<=8)[439267]((?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0])|(?<=1)[732105946]((?<=7)[0]|(?<=3)[610]|(?<=2)[0]|(?<=1)[190]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[039]|(?<=6)[0])|(?<=3)[423915087]((?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=7)[0])|(?<=4)[40732689]((?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0])|(?<=5)[763109582]((?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=8)[0]|(?<=2)[0])|(?<=9)[8219]((?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0])|(?<=2)[03521674]((?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0])|(?<=7)[04982]((?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0])|(?<=0)[0]((?<=0)[0]))|(?<=4)[432168570]((?<=4)[0187463529]((?<=0)[0]|(?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0])|(?<=3)[4928630175]((?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0])|(?<=2)[429105367]((?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0])|(?<=1)[196270534]((?<=1)[0]|(?<=9)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0])|(?<=6)[06]((?<=0)[0]|(?<=6)[0])|(?<=8)[40517362]((?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=5)[8716305]((?<=8)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=5)[0])|(?<=7)[5460]((?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[416532780]((?<=4)[3815024769]((?<=3)[0]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0])|(?<=1)[7456913082]((?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=2)[0])|(?<=6)[027849163]((?<=0)[0]|(?<=2)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0])|(?<=5)[1972304568]((?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0])|(?<=3)[215749063]((?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[2485610379]((?<=2)[0]|(?<=4)[0]|(?<=8)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[07145]((?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=6)[431265780]((?<=4)[3957201648]((?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0])|(?<=3)[1308524976]((?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0])|(?<=1)[0926873145]((?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[0531296478]((?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[350814]((?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[1234986750]((?<=1)[675243910]((?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0])|(?<=2)[2173850964]((?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0])|(?<=3)[624380175]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0])|(?<=4)[60418273]((?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0])|(?<=9)[2]((?<=2)[0])|(?<=8)[09]((?<=0)[0]|(?<=9)[0])|(?<=6)[024]((?<=0)[0]|(?<=2)[0]|(?<=4)[0])|(?<=7)[02]((?<=0)[0]|(?<=2)[0])|(?<=5)[10927]((?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[763218450]((?<=7)[0]((?<=0)[0])|(?<=6)[5304]((?<=5)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0])|(?<=3)[0132954867]((?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0])|(?<=2)[674301259]((?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0])|(?<=1)[371245096]((?<=3)[0]|(?<=7)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[3659412708]((?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0])|(?<=5)[02156384]((?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[871426035]((?<=8)[0]((?<=0)[0])|(?<=7)[1704]((?<=1)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0])|(?<=1)[612934057]((?<=6)[0]|(?<=1)[360]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[40]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=4)[840253167]((?<=8)[0]|(?<=4)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0])|(?<=2)[075964123]((?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0])|(?<=6)[6039]((?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0])|(?<=0)[0]((?<=0)[0])|(?<=3)[620194358]((?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0])|(?<=5)[68270513]((?<=6)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0])))|(?<=9)[01234578]((?<=0)[401263857]((?<=4)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=1)[01537642]((?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0])|(?<=2)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=3)[4603587]((?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=7)[0])|(?<=8)[05]((?<=0)[0]|(?<=5)[0])|(?<=5)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0]))|(?<=1)[4568172039]((?<=4)[1943672508]((?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0])|(?<=5)[874532196]((?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=6)[0])|(?<=6)[3459270861]((?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0])|(?<=8)[0815726943]((?<=0)[0]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=1)[596803247]((?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0])|(?<=7)[2578039641]((?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0])|(?<=2)[1870639524]((?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0])|(?<=0)[8970]((?<=8)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0])|(?<=3)[1923807654]((?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0])|(?<=9)[413]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]))|(?<=2)[213475086]((?<=2)[792406513]((?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0])|(?<=1)[041927635]((?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0])|(?<=3)[5762148039]((?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0])|(?<=4)[2031]((?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0]))|(?<=3)[631452708]((?<=6)[0]((?<=0)[0])|(?<=3)[9763854012]((?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0])|(?<=1)[240697351]((?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0])|(?<=4)[52637401]((?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0])|(?<=5)[0]((?<=0)[0])|(?<=2)[345601279]((?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=4)[527148360]((?<=5)[0215]((?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=2)[651324079]((?<=6)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[0]((?<=0)[0])|(?<=1)[356720941]((?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0])|(?<=4)[4389167502]((?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=2)[0])|(?<=8)[08]((?<=0)[0]|(?<=8)[0])|(?<=3)[064712985]((?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[584276031]((?<=5)[1807629453]((?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0])|(?<=8)[18734052]((?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0])|(?<=4)[3275061489]((?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0])|(?<=2)[5471830296]((?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0])|(?<=7)[14725086]((?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0])|(?<=6)[4197862530]((?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=3)[7521493086]((?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0])|(?<=1)[6357904281]((?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[0]|(?<=1)[0]))|(?<=7)[123456]((?<=1)[4321968075]((?<=4)[201]|(?<=3)[0473916]|(?<=2)[891250736]|(?<=1)[6492108735]|(?<=9)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0])|(?<=2)[1209354786]((?<=1)[73528641]|(?<=2)[4258317960]|(?<=0)[0]|(?<=9)[0]|(?<=3)[10342]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0])|(?<=3)[9150627483]((?<=9)[0]|(?<=1)[8342760195]|(?<=5)[2310546]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0])|(?<=4)[2140836795]((?<=2)[503697412]|(?<=1)[910873426]|(?<=4)[021]|(?<=0)[0]|(?<=8)[0]|(?<=3)[6245870931]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[0]((?<=0)[0])|(?<=6)[572136084]((?<=5)[0]|(?<=7)[0]|(?<=2)[05]|(?<=1)[5]|(?<=3)[0]|(?<=6)[0]|(?<=0)[05]|(?<=8)[0]|(?<=4)[0]))|(?<=8)[7860]((?<=7)[8063945127]((?<=8)[6142578093]|(?<=0)[14973568]|(?<=6)[1209567348]|(?<=3)[012345]|(?<=9)[0236945]|(?<=4)[0135649278]|(?<=5)[502341]|(?<=1)[0294681]|(?<=2)[8904153627]|(?<=7)[3512964708])|(?<=8)[3521704869]((?<=3)[0346217958]|(?<=5)[90]|(?<=2)[0382945617]|(?<=1)[9372501648]|(?<=7)[468057]|(?<=0)[09]|(?<=4)[0]|(?<=8)[9105234]|(?<=6)[0]|(?<=9)[0])|(?<=6)[021]((?<=0)[0]|(?<=2)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0])))))$"), + IS: new RegExp("^([123456789]((?<=1)[0123679]((?<=0)[12345789]|(?<=1)[01236]|(?<=2)[1345789]|(?<=3)[02]|(?<=6)[12]|(?<=7)[02]|(?<=9)[01])|(?<=2)[01234567]((?<=0)[01236]|(?<=1)[02]|(?<=2)[0125]|(?<=3)[0235]|(?<=4)[0156]|(?<=5)[01]|(?<=6)[02]|(?<=7)[016])|(?<=3)[01245678]((?<=0)[012]|(?<=1)[01]|(?<=2)[0]|(?<=4)[0125]|(?<=5)[0156]|(?<=6)[0]|(?<=7)[01]|(?<=8)[01])|(?<=4)[0123567]((?<=0)[01]|(?<=1)[056]|(?<=2)[0156]|(?<=3)[01]|(?<=5)[01]|(?<=6)[0156]|(?<=7)[01])|(?<=5)[012345678]((?<=0)[0]|(?<=1)[012]|(?<=2)[04]|(?<=3)[01]|(?<=4)[0156]|(?<=5)[01]|(?<=6)[0156]|(?<=7)[0]|(?<=8)[01])|(?<=6)[0123456789]((?<=0)[01234567]|(?<=1)[016]|(?<=2)[0156]|(?<=3)[0]|(?<=4)[015]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0156]|(?<=8)[0156]|(?<=9)[01])|(?<=7)[01234568]((?<=0)[01]|(?<=1)[015]|(?<=2)[01]|(?<=3)[0156]|(?<=4)[01]|(?<=5)[0156]|(?<=6)[0156]|(?<=8)[015])|(?<=8)[01245678]((?<=0)[0123456]|(?<=1)[056]|(?<=2)[05]|(?<=4)[056]|(?<=5)[01]|(?<=6)[01]|(?<=7)[01]|(?<=8)[01])|(?<=9)[0]((?<=0)[02])))$"), + LU: new RegExp("^([978643521]((?<=9)[7856193042]((?<=7)[56481307]((?<=5)[579324186]|(?<=6)[4389527610]|(?<=4)[528709643]|(?<=8)[0]|(?<=1)[103452]|(?<=3)[78]|(?<=0)[9876]|(?<=7)[59321406])|(?<=8)[3401]((?<=3)[710839546]|(?<=4)[10]|(?<=0)[79586]|(?<=1)[0])|(?<=5)[5471362]((?<=5)[4805926137]|(?<=4)[132504]|(?<=7)[7341286905]|(?<=1)[2689014753]|(?<=3)[7801596342]|(?<=6)[05]|(?<=2)[1320])|(?<=6)[4793865]((?<=4)[7381504]|(?<=7)[6482301]|(?<=9)[60]|(?<=3)[39187256]|(?<=8)[79241]|(?<=6)[0523896]|(?<=5)[41365079])|(?<=1)[825493761]((?<=8)[986504312]|(?<=2)[7524893601]|(?<=5)[41087356]|(?<=4)[02657849]|(?<=9)[10]|(?<=3)[70254136]|(?<=7)[926075318]|(?<=6)[107439586]|(?<=1)[76859])|(?<=9)[18549706]((?<=1)[0123]|(?<=8)[02]|(?<=5)[4620]|(?<=4)[840326]|(?<=9)[301294]|(?<=7)[0246]|(?<=0)[9758623]|(?<=6)[48026])|(?<=3)[579684]((?<=5)[931502746]|(?<=7)[3186570294]|(?<=9)[0125]|(?<=6)[6058419]|(?<=8)[120]|(?<=4)[0])|(?<=0)[821493576]((?<=8)[8904312576]|(?<=2)[3560472198]|(?<=1)[9871320645]|(?<=4)[570483612]|(?<=9)[90241]|(?<=3)[3102]|(?<=5)[34201756]|(?<=7)[1902]|(?<=6)[540689231])|(?<=4)[150624]((?<=1)[562749108]|(?<=5)[261473589]|(?<=0)[58967]|(?<=6)[543612]|(?<=2)[2054316]|(?<=4)[0])|(?<=2)[0931427568]((?<=0)[59867]|(?<=9)[41230]|(?<=3)[3714260985]|(?<=1)[671382054]|(?<=4)[405321]|(?<=2)[7049165]|(?<=7)[738956]|(?<=5)[1703524968]|(?<=6)[143270568]|(?<=8)[563894270]))|(?<=7)[246357]((?<=2)[43521670]((?<=4)[6015479382]|(?<=3)[1283074596]|(?<=5)[0798563412]|(?<=2)[7032461598]|(?<=1)[7306891425]|(?<=6)[805613429]|(?<=7)[04]|(?<=0)[9])|(?<=4)[817642350]((?<=8)[012]|(?<=1)[768905124]|(?<=7)[3501]|(?<=6)[23054]|(?<=4)[1865370942]|(?<=2)[30514]|(?<=3)[32015]|(?<=5)[250178346]|(?<=0)[9])|(?<=6)[47568213]((?<=4)[019]|(?<=7)[03]|(?<=5)[3102]|(?<=6)[20314]|(?<=8)[01]|(?<=2)[51624037]|(?<=1)[539082]|(?<=3)[46593])|(?<=3)[2934786510]((?<=2)[9057423186]|(?<=9)[751206]|(?<=3)[3405769821]|(?<=4)[7608913452]|(?<=7)[0529374186]|(?<=8)[34012]|(?<=6)[31402]|(?<=5)[3086195427]|(?<=1)[3819562740]|(?<=0)[47539286])|(?<=5)[92541673]((?<=9)[3674058219]|(?<=2)[60751243]|(?<=5)[8456937]|(?<=4)[06375124]|(?<=1)[791683542]|(?<=6)[5027986341]|(?<=7)[0213]|(?<=3)[971235486])|(?<=7)[498763152]((?<=4)[01]|(?<=9)[6531402]|(?<=8)[4806529317]|(?<=7)[34827190]|(?<=6)[8940617523]|(?<=3)[802319574]|(?<=1)[362154]|(?<=5)[98]|(?<=2)[3740612]))|(?<=8)[723845610]((?<=7)[012]((?<=0)[7685]|(?<=1)[501]|(?<=2)[0])|(?<=2)[8729136540]((?<=8)[7693521408]|(?<=7)[98407123]|(?<=2)[0528791463]|(?<=9)[768513402]|(?<=1)[0132869457]|(?<=3)[7265019348]|(?<=6)[4563180972]|(?<=5)[82905431]|(?<=4)[1926054783]|(?<=0)[9])|(?<=3)[9487561320]((?<=9)[015396248]|(?<=4)[086241375]|(?<=8)[786914530]|(?<=7)[362941508]|(?<=5)[0523468179]|(?<=6)[9852106743]|(?<=1)[1704596238]|(?<=3)[0389214675]|(?<=2)[3817205964]|(?<=0)[89])|(?<=8)[3021]((?<=3)[835421]|(?<=0)[9586]|(?<=2)[6104532]|(?<=1)[49163872])|(?<=4)[67314285]((?<=6)[5193672048]|(?<=7)[9267403851]|(?<=3)[7695]|(?<=1)[0635412]|(?<=4)[053178294]|(?<=2)[540132]|(?<=8)[0]|(?<=5)[0321])|(?<=5)[6534012]((?<=6)[102]|(?<=5)[27180]|(?<=3)[017389]|(?<=4)[0346251]|(?<=0)[8679]|(?<=1)[021]|(?<=2)[87623159])|(?<=6)[012]((?<=0)[69]|(?<=1)[143520]|(?<=2)[0])|(?<=1)[59381264]((?<=5)[801364792]|(?<=9)[9018]|(?<=3)[249531780]|(?<=8)[6192573804]|(?<=1)[98701256]|(?<=2)[381745096]|(?<=6)[51067]|(?<=4)[02913675])|(?<=0)[6832741059]((?<=6)[274693185]|(?<=8)[4125097638]|(?<=3)[0851394627]|(?<=2)[0718635249]|(?<=7)[472196085]|(?<=4)[9310248765]|(?<=1)[9180435726]|(?<=0)[89]|(?<=5)[5324869170]|(?<=9)[3780291456]))|(?<=6)[126897435]((?<=1)[718349526]((?<=7)[051]|(?<=1)[643781259]|(?<=8)[1032576498]|(?<=3)[6980743125]|(?<=4)[2581360794]|(?<=9)[7605]|(?<=5)[50]|(?<=2)[9250143]|(?<=6)[5621039])|(?<=2)[45231]((?<=4)[0635]|(?<=5)[1052]|(?<=2)[5]|(?<=3)[08195]|(?<=1)[410325])|(?<=6)[736281954]((?<=7)[9314528067]|(?<=3)[570346128]|(?<=6)[016953]|(?<=2)[41320]|(?<=8)[8945106327]|(?<=1)[1682793450]|(?<=9)[02153]|(?<=5)[105]|(?<=4)[56789])|(?<=8)[536478]((?<=5)[0812]|(?<=3)[1097243568]|(?<=6)[89]|(?<=4)[120]|(?<=7)[01]|(?<=8)[0])|(?<=9)[912368754]((?<=9)[6187052]|(?<=1)[234609715]|(?<=2)[35162]|(?<=3)[310495]|(?<=6)[2091]|(?<=8)[87210695]|(?<=7)[0673592814]|(?<=5)[6051]|(?<=4)[420156378])|(?<=7)[139652748]((?<=1)[276389415]|(?<=3)[3046152987]|(?<=9)[2136405]|(?<=6)[023541]|(?<=5)[2367098154]|(?<=2)[054236]|(?<=7)[7613824059]|(?<=4)[134205]|(?<=8)[2160435])|(?<=4)[4519683720]((?<=4)[879651023]|(?<=5)[214053]|(?<=1)[1240893657]|(?<=9)[027395614]|(?<=6)[9860413725]|(?<=8)[12548306]|(?<=3)[1248709635]|(?<=7)[0576189423]|(?<=2)[012]|(?<=0)[9])|(?<=3)[165748]((?<=1)[1235640]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0])|(?<=5)[67598]((?<=6)[20]|(?<=7)[2019]|(?<=5)[10257839]|(?<=9)[0]|(?<=8)[2103567]))|(?<=4)[0659132487]((?<=0)[27583146]((?<=2)[6321759408]|(?<=7)[4120]|(?<=5)[103459278]|(?<=8)[81624503]|(?<=3)[1578230694]|(?<=1)[3109625874]|(?<=4)[0132796854]|(?<=6)[5128390746])|(?<=6)[8247605319]((?<=8)[2835479106]|(?<=2)[5041873926]|(?<=4)[0159826473]|(?<=7)[701968]|(?<=6)[5926034817]|(?<=0)[624917853]|(?<=5)[7843106]|(?<=3)[4297036581]|(?<=1)[0213]|(?<=9)[46781320])|(?<=5)[7013256489]((?<=7)[751340986]|(?<=0)[837659]|(?<=1)[9043856217]|(?<=3)[8132074596]|(?<=2)[2385016497]|(?<=5)[0629183547]|(?<=6)[256903741]|(?<=4)[0376859241]|(?<=8)[0132]|(?<=9)[9105487632])|(?<=9)[7968415302]((?<=7)[0234576198]|(?<=9)[4876950231]|(?<=6)[8743652019]|(?<=8)[17502698]|(?<=4)[5260731948]|(?<=1)[6431078925]|(?<=5)[0518793426]|(?<=3)[9502763148]|(?<=0)[57896]|(?<=2)[4351906827])|(?<=1)[237416508]((?<=2)[065123]|(?<=3)[8290731654]|(?<=7)[7312048569]|(?<=4)[90132]|(?<=1)[683205149]|(?<=6)[947586]|(?<=5)[1025643]|(?<=0)[75381692]|(?<=8)[0])|(?<=3)[0286534179]((?<=0)[356492871]|(?<=2)[605321748]|(?<=8)[201435]|(?<=6)[2184309765]|(?<=5)[153024]|(?<=3)[03645271]|(?<=4)[7083514692]|(?<=1)[0896547]|(?<=7)[04153]|(?<=9)[801236457])|(?<=2)[102865743]((?<=1)[160374]|(?<=0)[865471923]|(?<=2)[210]|(?<=8)[01923]|(?<=6)[17504368]|(?<=5)[5462013]|(?<=7)[18690752]|(?<=4)[5304867921]|(?<=3)[6405183792])|(?<=4)[4852697013]((?<=4)[6314907258]|(?<=8)[0187453269]|(?<=5)[67109324]|(?<=2)[8765903412]|(?<=6)[7916504382]|(?<=9)[1049238]|(?<=7)[65790814]|(?<=0)[76859]|(?<=1)[108573692]|(?<=3)[9872530416])|(?<=8)[340128795]((?<=3)[91238407]|(?<=4)[534782690]|(?<=0)[9872546]|(?<=1)[05328194]|(?<=2)[9064532]|(?<=8)[3285769104]|(?<=7)[4367918025]|(?<=9)[201345]|(?<=5)[30])|(?<=7)[8497513206]((?<=8)[4052631]|(?<=4)[134205]|(?<=9)[8576]|(?<=7)[2374061895]|(?<=5)[1078942635]|(?<=1)[9012374856]|(?<=3)[6495210837]|(?<=2)[021]|(?<=0)[9827]|(?<=6)[2031]))|(?<=3)[65483927]((?<=6)[57314628]((?<=5)[321064758]|(?<=7)[0132694857]|(?<=3)[785610]|(?<=1)[621547]|(?<=4)[04132]|(?<=6)[0]|(?<=2)[210]|(?<=8)[012])|(?<=5)[0645127983]((?<=0)[549832167]|(?<=6)[7362498051]|(?<=4)[0836492715]|(?<=5)[02345]|(?<=1)[75643012]|(?<=2)[06542913]|(?<=7)[4251036]|(?<=9)[061582347]|(?<=8)[32489]|(?<=3)[1290])|(?<=4)[4892135670]((?<=4)[2436970815]|(?<=8)[1975820436]|(?<=9)[0231]|(?<=2)[3542709816]|(?<=1)[5261048793]|(?<=3)[203965417]|(?<=5)[43021]|(?<=6)[8051672943]|(?<=7)[2031465]|(?<=0)[9])|(?<=8)[693548217]((?<=6)[01342]|(?<=9)[98567]|(?<=3)[9064237581]|(?<=5)[7658140392]|(?<=4)[14302]|(?<=8)[320145]|(?<=2)[5034261]|(?<=1)[3067421985]|(?<=7)[4081293567])|(?<=3)[819432576]((?<=8)[50243916]|(?<=1)[4563178]|(?<=9)[318764520]|(?<=4)[0718569]|(?<=3)[3624570]|(?<=2)[9204173685]|(?<=5)[257401386]|(?<=7)[845723601]|(?<=6)[2094681735])|(?<=9)[3148620]((?<=3)[2698134057]|(?<=1)[0863912574]|(?<=4)[31054]|(?<=8)[05]|(?<=6)[01]|(?<=2)[201567948]|(?<=0)[9])|(?<=2)[2573481960]((?<=2)[5102439]|(?<=5)[1480792365]|(?<=7)[4309215678]|(?<=3)[3108257964]|(?<=4)[91023]|(?<=8)[405726381]|(?<=1)[0815346972]|(?<=9)[0]|(?<=6)[095617]|(?<=0)[9])|(?<=7)[218763945]((?<=2)[7541089623]|(?<=1)[4138250796]|(?<=8)[74601892]|(?<=7)[5410362]|(?<=6)[24137865]|(?<=3)[7096154832]|(?<=9)[0]|(?<=4)[23014]|(?<=5)[315042]))|(?<=5)[46378952]((?<=4)[0143625897]((?<=0)[2518734]|(?<=1)[6083291457]|(?<=4)[41502736]|(?<=3)[5342019]|(?<=6)[506]|(?<=2)[962741503]|(?<=5)[10]|(?<=8)[5021983]|(?<=9)[95]|(?<=7)[10])|(?<=6)[89571324]((?<=8)[20147653]|(?<=9)[803125]|(?<=5)[1329704586]|(?<=7)[015]|(?<=1)[9738215406]|(?<=3)[8749163502]|(?<=2)[70689]|(?<=4)[0])|(?<=3)[76135248]((?<=7)[416705328]|(?<=6)[5462780931]|(?<=1)[36420587]|(?<=3)[540231976]|(?<=5)[31529]|(?<=2)[80624]|(?<=4)[120]|(?<=8)[01])|(?<=7)[4317625]((?<=4)[10]|(?<=3)[0]|(?<=1)[706149823]|(?<=7)[5062134]|(?<=6)[201]|(?<=2)[2031]|(?<=5)[2630145])|(?<=8)[9231740685]((?<=9)[895210346]|(?<=2)[340965128]|(?<=3)[2387069145]|(?<=1)[1746092385]|(?<=7)[51234086]|(?<=4)[362104]|(?<=0)[89]|(?<=6)[4579280361]|(?<=8)[7906485]|(?<=5)[3490526])|(?<=9)[7564]((?<=7)[125387640]|(?<=5)[0645972318]|(?<=6)[92034]|(?<=4)[023])|(?<=5)[7542316]((?<=7)[27461503]|(?<=5)[3214058796]|(?<=4)[9804]|(?<=2)[1302]|(?<=3)[3106824795]|(?<=1)[738195462]|(?<=6)[01])|(?<=2)[8351492]((?<=8)[0]|(?<=3)[369801472]|(?<=5)[2561403]|(?<=1)[479638125]|(?<=4)[1034]|(?<=9)[109]|(?<=2)[012]))|(?<=2)[5124637]((?<=5)[625143]((?<=6)[016475382]|(?<=2)[0174938256]|(?<=5)[9247015638]|(?<=1)[3812476590]|(?<=4)[2305468179]|(?<=3)[517963084])|(?<=1)[45126738]((?<=4)[932561804]|(?<=5)[5632498170]|(?<=1)[894372615]|(?<=2)[574192038]|(?<=6)[7824630591]|(?<=7)[0425967813]|(?<=3)[593427180]|(?<=8)[1204])|(?<=2)[231746]((?<=2)[1206785394]|(?<=3)[3102]|(?<=1)[521430]|(?<=7)[0231]|(?<=4)[1203]|(?<=6)[28935671])|(?<=4)[314520]((?<=3)[142053]|(?<=1)[031627498]|(?<=4)[6309814527]|(?<=5)[3120]|(?<=2)[238956704]|(?<=0)[9])|(?<=6)[23016758]((?<=2)[5843610927]|(?<=3)[32046715]|(?<=0)[79]|(?<=1)[294061375]|(?<=6)[21347856]|(?<=7)[4021]|(?<=5)[21]|(?<=8)[01])|(?<=3)[352104876]((?<=3)[6897135402]|(?<=5)[7619850234]|(?<=2)[3802476]|(?<=1)[13796024]|(?<=0)[98]|(?<=4)[2309468157]|(?<=8)[01]|(?<=7)[0]|(?<=6)[10])|(?<=7)[12364]((?<=1)[123965874]|(?<=2)[8163759024]|(?<=3)[723918406]|(?<=6)[1324]|(?<=4)[10]))|(?<=1)[835624179]((?<=8)[817653294]((?<=8)[021]|(?<=1)[21387546]|(?<=7)[0123]|(?<=6)[372540618]|(?<=5)[5873216409]|(?<=3)[713469258]|(?<=2)[102]|(?<=9)[9867]|(?<=4)[5021])|(?<=3)[23456170]((?<=2)[1329860754]|(?<=3)[167482053]|(?<=4)[4732598601]|(?<=5)[4986530127]|(?<=6)[625318497]|(?<=1)[8639714205]|(?<=7)[015342]|(?<=0)[9])|(?<=5)[314250]((?<=3)[425103679]|(?<=1)[013852479]|(?<=4)[3705214698]|(?<=2)[8960175234]|(?<=5)[02]|(?<=0)[89])|(?<=6)[1352764]((?<=1)[76508139]|(?<=3)[5862470193]|(?<=5)[520134]|(?<=2)[2647518390]|(?<=7)[0]|(?<=6)[01]|(?<=4)[6478025913])|(?<=2)[124738065]((?<=1)[5872063914]|(?<=2)[1057369428]|(?<=4)[4250861379]|(?<=7)[0258964371]|(?<=3)[9823157064]|(?<=8)[1032]|(?<=0)[98]|(?<=6)[2073581469]|(?<=5)[0165984732])|(?<=4)[2765194830]((?<=2)[083964751]|(?<=7)[7614302589]|(?<=6)[1280749635]|(?<=5)[7013582649]|(?<=1)[182536749]|(?<=9)[09]|(?<=4)[859]|(?<=8)[02143]|(?<=3)[03421]|(?<=0)[9])|(?<=1)[432516]((?<=4)[5126378409]|(?<=3)[8319467025]|(?<=2)[9148760235]|(?<=5)[2019]|(?<=1)[582763491]|(?<=6)[10])|(?<=7)[304152]((?<=3)[6407285931]|(?<=0)[9]|(?<=4)[7091425863]|(?<=1)[931804267]|(?<=5)[04231]|(?<=2)[657841309])|(?<=9)[24135]((?<=2)[234567890]|(?<=4)[017895463]|(?<=1)[5802719436]|(?<=3)[842790153]|(?<=5)[503142]))))$") }; switch (sanitizedCountyInput) { case "AT": @@ -51,6 +56,16 @@ function valZip(zipCode, countryCode) { return reg["US"].test(sanitizedZipCode); case "IT": return reg["IT"].test(sanitizedZipCode); + case "EE": + return reg["EE"].test(sanitizedZipCode); + case "FR": + return reg["FR"].test(sanitizedZipCode); + case "IS": + return reg["IS"].test(sanitizedZipCode); + case "ES": + return reg["ES"].test(sanitizedZipCode); + case "LU": + return reg["LU"].test(sanitizedZipCode); default: console.error("Sorry :( \nCurrently there is no support for the country you want: " + sanitizeCountyInput.toString()); } diff --git a/dist/val-zip.js b/dist/val-zip.js index 0389284..06aad71 100644 --- a/dist/val-zip.js +++ b/dist/val-zip.js @@ -26,7 +26,12 @@ function valZip(zipCode, countryCode) { FI: new RegExp("^([7890156342]((?<=7)[9042785136]((?<=9)[712659834]((?<=7)[0]((?<=0)[014])|(?<=1)[9504863]((?<=9)[0]|(?<=5)[0]|(?<=0)[104]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[653]((?<=6)[5]|(?<=5)[5]|(?<=3)[0])|(?<=6)[620938]((?<=6)[0]|(?<=2)[0]|(?<=0)[104]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0])|(?<=5)[2]((?<=2)[0])|(?<=9)[41]((?<=4)[0]|(?<=1)[0])|(?<=8)[3916825]((?<=3)[0]|(?<=9)[5]|(?<=1)[0]|(?<=6)[0]|(?<=8)[5]|(?<=2)[0]|(?<=5)[0])|(?<=3)[53]((?<=5)[0]|(?<=3)[0])|(?<=4)[81]((?<=8)[04]|(?<=1)[0]))|(?<=0)[1584962370]((?<=1)[051]((?<=0)[1054]|(?<=5)[014]|(?<=1)[1054])|(?<=5)[0]((?<=0)[014])|(?<=8)[7024]((?<=7)[01]|(?<=0)[0154]|(?<=2)[1054]|(?<=4)[04])|(?<=4)[026]((?<=0)[10]|(?<=2)[1054]|(?<=6)[104])|(?<=9)[140]((?<=1)[014]|(?<=4)[0]|(?<=0)[01])|(?<=6)[20]((?<=2)[1054]|(?<=0)[014])|(?<=2)[81064]((?<=8)[04]|(?<=1)[104]|(?<=0)[014]|(?<=6)[0]|(?<=4)[0])|(?<=3)[04]((?<=0)[104]|(?<=4)[04])|(?<=7)[80]((?<=8)[1054]|(?<=0)[1054])|(?<=0)[0124938]((?<=0)[6]|(?<=1)[0]|(?<=2)[9]|(?<=4)[9]|(?<=9)[0]|(?<=3)[2]|(?<=8)[6]))|(?<=4)[263751498]((?<=2)[50473]((?<=5)[0]|(?<=0)[04]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0])|(?<=6)[73184]((?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[0]|(?<=4)[0])|(?<=3)[08649]((?<=0)[104]|(?<=8)[0]|(?<=6)[0]|(?<=4)[05]|(?<=9)[0])|(?<=7)[0427]((?<=0)[1054]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=5)[49152]((?<=4)[0]|(?<=9)[05]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0])|(?<=1)[2306745]((?<=2)[0154]|(?<=3)[054]|(?<=0)[1054]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0])|(?<=4)[729]((?<=7)[0]|(?<=2)[0]|(?<=9)[0])|(?<=9)[84]((?<=8)[0]|(?<=4)[0])|(?<=8)[4]((?<=4)[0]))|(?<=2)[325491687]((?<=3)[165830]((?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[04])|(?<=2)[21]((?<=2)[0]|(?<=1)[10])|(?<=5)[5317]((?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0])|(?<=4)[903]((?<=9)[0]|(?<=0)[014]|(?<=3)[0])|(?<=9)[538]((?<=5)[0]|(?<=3)[0]|(?<=8)[0])|(?<=1)[40]((?<=4)[0]|(?<=0)[104])|(?<=6)[03]((?<=0)[104]|(?<=3)[0])|(?<=8)[14]((?<=1)[0]|(?<=4)[0])|(?<=7)[41]((?<=4)[0]|(?<=1)[0]))|(?<=7)[453169278]((?<=4)[863]((?<=8)[0]|(?<=6)[0]|(?<=3)[04])|(?<=5)[872]((?<=8)[0]|(?<=7)[0]|(?<=2)[0])|(?<=3)[8253]((?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[421]((?<=4)[0]|(?<=2)[0]|(?<=1)[0])|(?<=6)[309]((?<=3)[0]|(?<=0)[014]|(?<=9)[0])|(?<=9)[631]((?<=6)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[42]((?<=4)[0]|(?<=2)[0])|(?<=7)[07]((?<=0)[04]|(?<=7)[0])|(?<=8)[0]((?<=0)[0]))|(?<=8)[24398576]((?<=2)[105]((?<=1)[04]|(?<=0)[1054]|(?<=5)[04])|(?<=4)[08]((?<=0)[0]|(?<=8)[0])|(?<=3)[01]((?<=0)[074]|(?<=1)[0])|(?<=9)[0]((?<=0)[0])|(?<=8)[587]((?<=5)[0]|(?<=8)[0]|(?<=7)[0])|(?<=5)[0]((?<=0)[0])|(?<=7)[1]((?<=1)[0])|(?<=6)[1]((?<=1)[0]))|(?<=5)[59786]((?<=5)[03]((?<=0)[1054]|(?<=3)[1054])|(?<=9)[9473]((?<=9)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0])|(?<=7)[91704]((?<=9)[0]|(?<=1)[0]|(?<=7)[0]|(?<=0)[104]|(?<=4)[0])|(?<=8)[94]((?<=9)[0]|(?<=4)[0])|(?<=6)[85]((?<=8)[0]|(?<=5)[0]))|(?<=1)[4738261590]((?<=4)[6987]((?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=7)[04])|(?<=7)[624753]((?<=6)[0]|(?<=2)[0]|(?<=4)[50]|(?<=7)[5]|(?<=5)[04]|(?<=3)[0])|(?<=3)[3186]((?<=3)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[094275]((?<=0)[0154]|(?<=9)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=2)[06481]((?<=0)[104]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0])|(?<=6)[8517496]((?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0])|(?<=1)[7536]((?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[04])|(?<=5)[72]((?<=7)[0]|(?<=2)[0])|(?<=9)[2651]((?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[6]))|(?<=3)[382716594]((?<=3)[50612]((?<=5)[0]|(?<=0)[104]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0])|(?<=8)[531]((?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[503]((?<=5)[0]|(?<=0)[014]|(?<=3)[0])|(?<=7)[731]((?<=7)[0]|(?<=3)[0]|(?<=1)[0])|(?<=1)[0213]((?<=0)[1054]|(?<=2)[0]|(?<=1)[0]|(?<=3)[4])|(?<=6)[0472]((?<=0)[104]|(?<=4)[05]|(?<=7)[0]|(?<=2)[0])|(?<=5)[0]((?<=0)[014])|(?<=9)[097]((?<=0)[104]|(?<=9)[0]|(?<=7)[0])|(?<=4)[176]((?<=1)[0]|(?<=7)[0]|(?<=6)[04]))|(?<=6)[197682]((?<=1)[0352]((?<=0)[1054]|(?<=3)[0]|(?<=5)[04]|(?<=2)[0])|(?<=9)[4]((?<=4)[0])|(?<=7)[8]((?<=8)[0])|(?<=6)[2]((?<=2)[0])|(?<=8)[5]((?<=5)[04])|(?<=2)[8]((?<=8)[0])))|(?<=8)[6039251874]((?<=6)[259674813]((?<=2)[4132]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=5)[531]((?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=9)[80]((?<=8)[0]|(?<=0)[0])|(?<=6)[8095]((?<=8)[0]|(?<=0)[104]|(?<=9)[0]|(?<=5)[0])|(?<=7)[91]((?<=9)[0]|(?<=1)[04])|(?<=4)[87604]((?<=8)[0]|(?<=7)[0]|(?<=6)[0]|(?<=0)[104]|(?<=4)[0])|(?<=8)[5107]((?<=5)[0]|(?<=1)[0]|(?<=0)[104]|(?<=7)[0])|(?<=1)[1706]((?<=1)[0]|(?<=7)[0]|(?<=0)[104]|(?<=6)[0])|(?<=3)[605]((?<=6)[0]|(?<=0)[104]|(?<=5)[0]))|(?<=0)[178324590]((?<=1)[306471]((?<=3)[0]|(?<=0)[1054]|(?<=6)[1054]|(?<=4)[1054]|(?<=7)[05]|(?<=1)[04])|(?<=7)[7918]((?<=7)[04]|(?<=9)[01]|(?<=1)[04]|(?<=8)[0])|(?<=8)[5]((?<=5)[0])|(?<=3)[3]((?<=3)[04])|(?<=2)[30216]((?<=3)[04]|(?<=0)[0]|(?<=2)[054]|(?<=1)[0]|(?<=6)[04])|(?<=4)[0]((?<=0)[1054])|(?<=5)[1]((?<=1)[01])|(?<=9)[1]((?<=1)[0])|(?<=0)[2]((?<=2)[0]))|(?<=3)[94738516]((?<=9)[406158]((?<=4)[0]|(?<=0)[014]|(?<=6)[0]|(?<=1)[50]|(?<=5)[0]|(?<=8)[5])|(?<=4)[53860]((?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0])|(?<=7)[50826]((?<=5)[0]|(?<=0)[014]|(?<=8)[0]|(?<=2)[0]|(?<=6)[0])|(?<=3)[324]((?<=3)[0]|(?<=2)[0]|(?<=4)[0])|(?<=8)[738425]((?<=7)[0]|(?<=3)[05]|(?<=8)[0]|(?<=4)[0]|(?<=2)[5]|(?<=5)[5])|(?<=5)[50]((?<=5)[0]|(?<=0)[1504])|(?<=1)[36504]((?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[10]|(?<=4)[0])|(?<=6)[63]((?<=6)[0]|(?<=3)[0]))|(?<=9)[156287439]((?<=1)[14]((?<=1)[0]|(?<=4)[0])|(?<=5)[46]((?<=4)[0]|(?<=6)[0])|(?<=6)[084176]((?<=0)[1054]|(?<=8)[0]|(?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0])|(?<=2)[10]((?<=1)[0]|(?<=0)[014])|(?<=8)[043]((?<=0)[0]|(?<=4)[0]|(?<=3)[0])|(?<=7)[64837]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0])|(?<=4)[403]((?<=4)[0]|(?<=0)[104]|(?<=3)[0])|(?<=3)[32]((?<=3)[0]|(?<=2)[0])|(?<=9)[2]((?<=2)[0]))|(?<=2)[258693147]((?<=2)[2091]((?<=2)[0]|(?<=0)[014]|(?<=9)[0]|(?<=1)[0])|(?<=5)[0891]((?<=0)[104]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0])|(?<=8)[46183725]((?<=4)[0]|(?<=6)[5]|(?<=1)[5]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[07586]((?<=0)[104]|(?<=7)[50]|(?<=5)[5]|(?<=8)[5]|(?<=6)[0])|(?<=9)[0681]((?<=0)[014]|(?<=6)[07]|(?<=8)[0]|(?<=1)[5])|(?<=3)[0865391]((?<=0)[01]|(?<=8)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[5]|(?<=9)[5]|(?<=1)[0])|(?<=1)[268174]((?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0])|(?<=4)[639]((?<=6)[0]|(?<=3)[0]|(?<=9)[0])|(?<=7)[63157]((?<=6)[0]|(?<=3)[04]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]))|(?<=5)[152864937]((?<=1)[504826]((?<=5)[0]|(?<=0)[0154]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[4086]((?<=4)[0]|(?<=0)[0154]|(?<=8)[0]|(?<=6)[0])|(?<=2)[301]((?<=3)[0]|(?<=0)[014]|(?<=1)[0])|(?<=8)[024]((?<=0)[014]|(?<=2)[0]|(?<=4)[0])|(?<=6)[6243]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0])|(?<=4)[3751]((?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0])|(?<=9)[4308]((?<=4)[0]|(?<=3)[0]|(?<=0)[04]|(?<=8)[0])|(?<=3)[421]((?<=4)[0]|(?<=2)[0]|(?<=1)[0])|(?<=7)[31]((?<=3)[0]|(?<=1)[0]))|(?<=1)[243695817]((?<=2)[93076281]((?<=9)[05]|(?<=3)[05]|(?<=0)[104]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=8)[104]|(?<=1)[0])|(?<=4)[53627]((?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0])|(?<=3)[93265]((?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[65]((?<=6)[0]|(?<=5)[0])|(?<=9)[75]((?<=7)[0]|(?<=5)[0])|(?<=5)[769]((?<=7)[0]|(?<=6)[0]|(?<=9)[0])|(?<=8)[6125]((?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=1)[026]((?<=0)[014]|(?<=2)[0]|(?<=6)[0])|(?<=7)[025]((?<=0)[1054]|(?<=2)[0]|(?<=5)[0]))|(?<=8)[6293874150]((?<=6)[409217]((?<=4)[0]|(?<=0)[104]|(?<=9)[0]|(?<=2)[0]|(?<=1)[04]|(?<=7)[0])|(?<=2)[07]((?<=0)[01]|(?<=7)[04])|(?<=9)[403]((?<=4)[0]|(?<=0)[0154]|(?<=3)[0])|(?<=3)[81540]((?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[04])|(?<=8)[2]((?<=2)[0])|(?<=7)[436]((?<=4)[0]|(?<=3)[0]|(?<=6)[0])|(?<=4)[49706]((?<=4)[0]|(?<=9)[0]|(?<=7)[04]|(?<=0)[10]|(?<=6)[0])|(?<=1)[2]((?<=2)[0])|(?<=5)[3]((?<=3)[0])|(?<=0)[8]((?<=8)[6]))|(?<=7)[1492857360]((?<=1)[05]((?<=0)[0154]|(?<=5)[0])|(?<=4)[0]((?<=0)[014])|(?<=9)[15370]((?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0])|(?<=2)[05]((?<=0)[04]|(?<=5)[04])|(?<=8)[530]((?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=5)[0]((?<=0)[04])|(?<=7)[08]((?<=0)[054]|(?<=8)[8])|(?<=3)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[1])|(?<=0)[7]((?<=7)[0]))|(?<=4)[618574]((?<=6)[5]((?<=5)[0])|(?<=1)[0]((?<=0)[0154])|(?<=8)[8]((?<=8)[0])|(?<=5)[4]((?<=4)[0])|(?<=7)[7]((?<=7)[0])|(?<=4)[6]((?<=6)[0])))|(?<=9)[7915284063]((?<=7)[386792514]((?<=3)[9724318]((?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[50]|(?<=1)[0]|(?<=8)[0])|(?<=8)[4189275]((?<=4)[0]|(?<=1)[05]|(?<=8)[0]|(?<=9)[50]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=6)[581349627]((?<=5)[05]|(?<=8)[05]|(?<=1)[50]|(?<=3)[05]|(?<=4)[5]|(?<=9)[0]|(?<=6)[5]|(?<=2)[50]|(?<=7)[50])|(?<=7)[06281]((?<=0)[014]|(?<=6)[50]|(?<=2)[0]|(?<=8)[50]|(?<=1)[5])|(?<=9)[0572648]((?<=0)[014]|(?<=5)[0]|(?<=7)[0]|(?<=2)[05]|(?<=6)[507]|(?<=4)[0]|(?<=8)[0])|(?<=2)[24895]((?<=2)[04]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[382194]((?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0])|(?<=1)[14763]((?<=1)[0]|(?<=4)[504]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0])|(?<=4)[732]((?<=7)[0]|(?<=3)[0]|(?<=2)[0]))|(?<=9)[468921357]((?<=4)[592017463]((?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[01]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0])|(?<=6)[79542061]((?<=7)[0]|(?<=9)[50]|(?<=5)[50]|(?<=4)[05]|(?<=2)[0]|(?<=0)[104]|(?<=6)[50]|(?<=1)[0])|(?<=8)[0673]((?<=0)[014]|(?<=6)[0]|(?<=7)[104]|(?<=3)[104])|(?<=9)[9473185]((?<=9)[094]|(?<=4)[04]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[10]|(?<=5)[04])|(?<=2)[395487]((?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0])|(?<=1)[9703486251]((?<=9)[05]|(?<=7)[0]|(?<=0)[014]|(?<=3)[0514]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0])|(?<=3)[140326]((?<=1)[0]|(?<=4)[0]|(?<=0)[104]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[624513]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[50]|(?<=1)[0]|(?<=3)[0])|(?<=7)[267514]((?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]))|(?<=1)[7216953480]((?<=7)[592018463]((?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[014]|(?<=1)[0]|(?<=8)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[1064]((?<=1)[0]|(?<=0)[04]|(?<=6)[0]|(?<=4)[0])|(?<=1)[0154]((?<=0)[014]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0])|(?<=6)[047326]((?<=0)[104]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0])|(?<=9)[50381]((?<=5)[0]|(?<=0)[104]|(?<=3)[0]|(?<=8)[0]|(?<=1)[054])|(?<=5)[106]((?<=1)[0]|(?<=0)[1054]|(?<=6)[0])|(?<=3)[10]((?<=1)[0]|(?<=0)[04])|(?<=4)[31]((?<=3)[0]|(?<=1)[04])|(?<=8)[0]((?<=0)[04])|(?<=0)[0]((?<=0)[6]))|(?<=5)[468391527]((?<=4)[130924765]((?<=1)[0]|(?<=3)[0]|(?<=0)[10754]|(?<=9)[0]|(?<=2)[1054]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[4621753098]((?<=4)[05]|(?<=6)[0]|(?<=2)[0]|(?<=1)[50]|(?<=7)[50]|(?<=5)[5]|(?<=3)[50]|(?<=0)[104]|(?<=9)[0]|(?<=8)[0])|(?<=8)[40635]((?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0])|(?<=3)[01573642]((?<=0)[04]|(?<=1)[50]|(?<=5)[05]|(?<=7)[05]|(?<=3)[0]|(?<=6)[5]|(?<=4)[0]|(?<=2)[5])|(?<=9)[20439785]((?<=2)[0]|(?<=0)[014]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[04]|(?<=8)[0]|(?<=5)[0])|(?<=1)[6310]((?<=6)[04]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0])|(?<=5)[932640]((?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0])|(?<=2)[3150276]((?<=3)[0]|(?<=1)[0]|(?<=5)[5]|(?<=0)[014]|(?<=2)[50]|(?<=7)[0]|(?<=6)[0])|(?<=7)[51790682]((?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[014]|(?<=6)[0]|(?<=8)[0]|(?<=2)[0]))|(?<=2)[162854397]((?<=1)[8403625]((?<=8)[0]|(?<=4)[04]|(?<=0)[1054]|(?<=3)[04]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[15420]((?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0])|(?<=2)[63241]((?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0])|(?<=8)[13]((?<=1)[0]|(?<=3)[0])|(?<=5)[302]((?<=3)[0]|(?<=0)[01]|(?<=2)[0])|(?<=4)[50473]((?<=5)[0]|(?<=0)[104]|(?<=4)[0]|(?<=7)[0]|(?<=3)[04])|(?<=3)[325]((?<=3)[0]|(?<=2)[0]|(?<=5)[0])|(?<=9)[132]((?<=1)[0]|(?<=3)[04]|(?<=2)[0])|(?<=7)[0]((?<=0)[04]))|(?<=8)[819354762]((?<=8)[521403]((?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=3)[0])|(?<=1)[02]((?<=0)[104]|(?<=2)[0])|(?<=9)[62508739]((?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[1054]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[5])|(?<=3)[651]((?<=6)[0]|(?<=5)[0]|(?<=1)[0])|(?<=5)[7163085]((?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[04]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0])|(?<=4)[4250]((?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[0])|(?<=7)[986271]((?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[04])|(?<=6)[0632]((?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[0])|(?<=2)[3]((?<=3)[0]))|(?<=4)[986471352]((?<=9)[0]((?<=0)[0])|(?<=8)[03]((?<=0)[0]|(?<=3)[04])|(?<=6)[0]((?<=0)[054])|(?<=4)[0536]((?<=0)[01]|(?<=5)[05]|(?<=3)[0]|(?<=6)[0])|(?<=7)[20]((?<=2)[0]|(?<=0)[04])|(?<=1)[0]((?<=0)[1054])|(?<=3)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=2)[0]((?<=0)[0]))|(?<=0)[845216930]((?<=8)[4365201]((?<=4)[04]|(?<=3)[1054]|(?<=6)[0]|(?<=5)[0]|(?<=2)[04]|(?<=0)[054]|(?<=1)[0])|(?<=4)[07456821]((?<=0)[0154]|(?<=7)[0]|(?<=4)[014]|(?<=5)[1054]|(?<=6)[104]|(?<=8)[0]|(?<=2)[054]|(?<=1)[054])|(?<=5)[6027453819]((?<=6)[0]|(?<=0)[1054]|(?<=2)[054]|(?<=7)[1054]|(?<=4)[054]|(?<=5)[054]|(?<=3)[04]|(?<=8)[04]|(?<=1)[04]|(?<=9)[04])|(?<=2)[4253]((?<=4)[054]|(?<=2)[0]|(?<=5)[04]|(?<=3)[054])|(?<=1)[40523]((?<=4)[04]|(?<=0)[1054]|(?<=5)[054]|(?<=2)[04]|(?<=3)[054])|(?<=6)[503267]((?<=5)[014]|(?<=0)[014]|(?<=3)[054]|(?<=2)[054]|(?<=6)[0]|(?<=7)[04])|(?<=9)[104]((?<=1)[0]|(?<=0)[104]|(?<=4)[04])|(?<=3)[1]((?<=1)[01])|(?<=0)[1204538]((?<=1)[54]|(?<=2)[9]|(?<=0)[6]|(?<=4)[9]|(?<=5)[0]|(?<=3)[2]|(?<=8)[6]))|(?<=6)[4397125680]((?<=4)[406]((?<=4)[04]|(?<=0)[04]|(?<=6)[04])|(?<=3)[02]((?<=0)[104]|(?<=2)[054])|(?<=9)[1063]((?<=1)[04]|(?<=0)[054]|(?<=6)[01]|(?<=3)[0])|(?<=7)[0]((?<=0)[0])|(?<=1)[09]((?<=0)[1054]|(?<=9)[0])|(?<=2)[0]((?<=0)[0154])|(?<=5)[0]((?<=0)[014])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[8]((?<=8)[6]))|(?<=3)[154263789]((?<=1)[978604]((?<=9)[05]|(?<=7)[0]|(?<=8)[70]|(?<=6)[0]|(?<=0)[014]|(?<=4)[04])|(?<=5)[94]((?<=9)[0]|(?<=4)[0])|(?<=4)[4027]((?<=4)[0]|(?<=0)[01]|(?<=2)[0]|(?<=7)[0])|(?<=2)[582794]((?<=5)[0]|(?<=8)[0]|(?<=2)[05]|(?<=7)[70]|(?<=9)[0]|(?<=4)[0])|(?<=6)[0]((?<=0)[1054])|(?<=3)[95]((?<=9)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[03]((?<=0)[0]|(?<=3)[04])|(?<=9)[0]((?<=0)[0])))|(?<=0)[0273845169]((?<=0)[9356078124]((?<=9)[0247158369]((?<=0)[05]|(?<=2)[0154]|(?<=4)[0154]|(?<=7)[1054]|(?<=1)[05]|(?<=5)[05]|(?<=8)[1054]|(?<=3)[1504]|(?<=6)[054]|(?<=9)[054])|(?<=3)[3529701648]((?<=3)[104]|(?<=5)[0154]|(?<=2)[014]|(?<=9)[0154]|(?<=7)[104]|(?<=0)[0154]|(?<=1)[04]|(?<=6)[0]|(?<=4)[10]|(?<=8)[1054])|(?<=5)[1207836549]((?<=1)[1054]|(?<=2)[1054]|(?<=0)[014]|(?<=7)[04]|(?<=8)[104]|(?<=3)[1054]|(?<=6)[0154]|(?<=5)[104]|(?<=4)[04]|(?<=9)[04])|(?<=6)[5731286094]((?<=5)[04]|(?<=7)[015]|(?<=3)[054]|(?<=1)[04]|(?<=2)[105]|(?<=8)[04]|(?<=6)[1054]|(?<=0)[105]|(?<=9)[04]|(?<=4)[1054])|(?<=0)[2839154067]((?<=2)[2635094187]|(?<=8)[190874652]|(?<=3)[316098472]|(?<=9)[8095716]|(?<=1)[825741693]|(?<=5)[3021487956]|(?<=4)[180359627]|(?<=0)[362]|(?<=6)[501362487]|(?<=7)[5967014])|(?<=7)[6728103459]((?<=6)[0154]|(?<=7)[1054]|(?<=2)[0154]|(?<=8)[105]|(?<=1)[1054]|(?<=0)[1054]|(?<=3)[04]|(?<=4)[104]|(?<=5)[104]|(?<=9)[0154])|(?<=8)[0618247359]((?<=0)[04]|(?<=6)[10]|(?<=1)[0154]|(?<=8)[04]|(?<=2)[054]|(?<=4)[054]|(?<=7)[04]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0])|(?<=1)[094378562]((?<=0)[214057]|(?<=9)[10]|(?<=4)[104]|(?<=3)[0154]|(?<=7)[014]|(?<=8)[01574]|(?<=5)[1054]|(?<=6)[104]|(?<=2)[1054])|(?<=2)[1648039572]((?<=1)[0154]|(?<=6)[04]|(?<=4)[1054]|(?<=8)[014]|(?<=0)[104]|(?<=3)[01254]|(?<=9)[0]|(?<=5)[1054]|(?<=7)[104]|(?<=2)[0514])|(?<=4)[12430]((?<=1)[014]|(?<=2)[1054]|(?<=4)[104]|(?<=3)[104]|(?<=0)[0154]))|(?<=2)[7130524698]((?<=7)[670183524]((?<=6)[0154]|(?<=7)[1054]|(?<=0)[0154]|(?<=1)[105]|(?<=8)[104]|(?<=3)[04]|(?<=5)[054]|(?<=2)[05]|(?<=4)[04])|(?<=1)[435207861]((?<=4)[0]|(?<=3)[0154]|(?<=5)[1054]|(?<=2)[04]|(?<=0)[1054]|(?<=7)[0154]|(?<=8)[04]|(?<=6)[04]|(?<=1)[0])|(?<=3)[2864039]((?<=2)[0154]|(?<=8)[0]|(?<=6)[1054]|(?<=4)[04]|(?<=0)[04]|(?<=3)[054]|(?<=9)[04])|(?<=0)[1276403]((?<=1)[04]|(?<=2)[02]|(?<=7)[0]|(?<=6)[6]|(?<=4)[4]|(?<=0)[8]|(?<=3)[3])|(?<=5)[5148927]((?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[04]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=2)[841706395]((?<=8)[054]|(?<=4)[014]|(?<=1)[1054]|(?<=7)[0154]|(?<=0)[0174]|(?<=6)[04]|(?<=3)[1054]|(?<=9)[0]|(?<=5)[04])|(?<=4)[3270694185]((?<=3)[1054]|(?<=2)[01]|(?<=7)[01]|(?<=0)[1054]|(?<=6)[04]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[04]|(?<=5)[04])|(?<=6)[62015387]((?<=6)[0154]|(?<=2)[104]|(?<=0)[0154]|(?<=1)[0154]|(?<=5)[04]|(?<=3)[1054]|(?<=8)[04]|(?<=7)[7])|(?<=9)[2748]((?<=2)[1054]|(?<=7)[0]|(?<=4)[1054]|(?<=8)[0])|(?<=8)[2186]((?<=2)[0]|(?<=1)[0]|(?<=8)[054]|(?<=6)[0]))|(?<=7)[592617384]((?<=5)[9615083]((?<=9)[0]|(?<=6)[054]|(?<=1)[0]|(?<=5)[0]|(?<=0)[04]|(?<=8)[0]|(?<=3)[0])|(?<=9)[1485370296]((?<=1)[0]|(?<=4)[05]|(?<=8)[0]|(?<=5)[5]|(?<=3)[0]|(?<=7)[0]|(?<=0)[1054]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0])|(?<=2)[382]((?<=3)[01]|(?<=8)[0]|(?<=2)[0])|(?<=6)[809]((?<=8)[0]|(?<=0)[10]|(?<=9)[0])|(?<=1)[95371]((?<=9)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[104]|(?<=1)[04])|(?<=7)[50428]((?<=5)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[0])|(?<=3)[726915]((?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0])|(?<=8)[137902584]((?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[04]|(?<=2)[0]|(?<=5)[0]|(?<=8)[04]|(?<=4)[0])|(?<=4)[15]((?<=1)[0]|(?<=5)[0]))|(?<=3)[2738164]((?<=2)[25]((?<=2)[0]|(?<=5)[04])|(?<=7)[91]((?<=9)[0]|(?<=1)[0])|(?<=3)[02]((?<=0)[04]|(?<=2)[0])|(?<=8)[751]((?<=7)[0]|(?<=5)[04]|(?<=1)[0])|(?<=1)[05]((?<=0)[0154]|(?<=5)[0])|(?<=6)[20]((?<=2)[0]|(?<=0)[0154])|(?<=4)[03]((?<=0)[054]|(?<=3)[0]))|(?<=8)[54713286]((?<=5)[0]((?<=0)[104])|(?<=4)[85]((?<=8)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[10])|(?<=1)[50]((?<=5)[104]|(?<=0)[0154])|(?<=3)[56]((?<=5)[04]|(?<=6)[0])|(?<=2)[0]((?<=0)[1054])|(?<=8)[0]((?<=0)[0])|(?<=6)[8]((?<=8)[0]))|(?<=4)[362174598]((?<=3)[8072569341]((?<=8)[0]|(?<=0)[1054]|(?<=7)[0]|(?<=2)[105]|(?<=5)[0]|(?<=6)[04]|(?<=9)[0]|(?<=3)[04]|(?<=4)[04]|(?<=1)[0])|(?<=6)[08632]((?<=0)[1054]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[04])|(?<=2)[645203]((?<=6)[014]|(?<=4)[0]|(?<=5)[104]|(?<=2)[04]|(?<=0)[1054]|(?<=3)[04])|(?<=1)[375]((?<=3)[104]|(?<=7)[0]|(?<=5)[0])|(?<=7)[74]((?<=7)[0]|(?<=4)[0])|(?<=4)[8420361]((?<=8)[0]|(?<=4)[04]|(?<=2)[04]|(?<=0)[0154]|(?<=3)[1054]|(?<=6)[0]|(?<=1)[054])|(?<=5)[30]((?<=3)[0]|(?<=0)[104])|(?<=9)[24]((?<=2)[0]|(?<=4)[0])|(?<=8)[42]((?<=4)[0]|(?<=2)[0]))|(?<=5)[84521976]((?<=8)[03582641]((?<=0)[0154]|(?<=3)[104]|(?<=5)[0]|(?<=8)[0]|(?<=2)[04]|(?<=6)[0]|(?<=4)[04]|(?<=1)[04])|(?<=4)[067534]((?<=0)[1054]|(?<=6)[054]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0])|(?<=5)[1]((?<=1)[0])|(?<=2)[50]((?<=5)[0]|(?<=0)[1054])|(?<=1)[0]((?<=0)[0])|(?<=9)[50]((?<=5)[0]|(?<=0)[104])|(?<=7)[2]((?<=2)[0])|(?<=6)[2]((?<=2)[0]))|(?<=1)[3567814290]((?<=3)[0795684]((?<=0)[0514]|(?<=7)[041]|(?<=9)[104]|(?<=5)[104]|(?<=6)[1054]|(?<=8)[0]|(?<=4)[04])|(?<=5)[312]((?<=3)[0412]|(?<=1)[0154]|(?<=2)[0541])|(?<=6)[8632507419]((?<=8)[04]|(?<=6)[1054]|(?<=3)[051]|(?<=2)[0154]|(?<=5)[014]|(?<=0)[1054]|(?<=7)[104]|(?<=4)[104]|(?<=1)[1504]|(?<=9)[041])|(?<=7)[21537046]((?<=2)[104]|(?<=1)[014]|(?<=5)[0]|(?<=3)[104]|(?<=7)[0]|(?<=0)[0541]|(?<=4)[104]|(?<=6)[01])|(?<=8)[130624]((?<=1)[0]|(?<=3)[0]|(?<=0)[1054]|(?<=6)[0]|(?<=2)[0]|(?<=4)[04])|(?<=1)[8529]((?<=8)[0]|(?<=5)[1054]|(?<=2)[0]|(?<=9)[0])|(?<=4)[25908]((?<=2)[05]|(?<=5)[1054]|(?<=9)[054]|(?<=0)[1054]|(?<=8)[014])|(?<=2)[6083]((?<=6)[10]|(?<=0)[1054]|(?<=8)[041]|(?<=3)[04])|(?<=9)[04]((?<=0)[0154]|(?<=4)[0])|(?<=0)[05432]((?<=0)[96]|(?<=5)[531]|(?<=4)[4]|(?<=3)[0]|(?<=2)[2]))|(?<=6)[15498276]((?<=1)[05]((?<=0)[10584]|(?<=5)[104])|(?<=5)[30]((?<=3)[0]|(?<=0)[0])|(?<=4)[05]((?<=0)[0154]|(?<=5)[04])|(?<=9)[5]((?<=5)[0])|(?<=8)[385]((?<=3)[0]|(?<=8)[0]|(?<=5)[0])|(?<=2)[0]((?<=0)[0])|(?<=7)[5]((?<=5)[0])|(?<=6)[5]((?<=5)[0]))|(?<=9)[8154629]((?<=8)[1]((?<=1)[0])|(?<=1)[2]((?<=2)[04])|(?<=5)[2]((?<=2)[0])|(?<=4)[3]((?<=3)[04])|(?<=6)[3]((?<=3)[0])|(?<=2)[2]((?<=2)[04])|(?<=9)[3]((?<=3)[0])))|(?<=1)[3459162708]((?<=3)[7231984560]((?<=7)[20]((?<=2)[0154]|(?<=0)[014])|(?<=2)[15207]((?<=1)[0154]|(?<=5)[0]|(?<=2)[0]|(?<=0)[104]|(?<=7)[0])|(?<=3)[30]((?<=3)[0]|(?<=0)[04])|(?<=1)[013]((?<=0)[1054]|(?<=1)[01]|(?<=3)[0154])|(?<=9)[0]((?<=0)[0])|(?<=8)[08]((?<=0)[0]|(?<=8)[0])|(?<=4)[3]((?<=3)[0])|(?<=5)[03]((?<=0)[1504]|(?<=3)[0])|(?<=6)[0]((?<=0)[04])|(?<=0)[3]((?<=3)[5]))|(?<=4)[629845713]((?<=6)[1982]((?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0])|(?<=2)[04]((?<=0)[0154]|(?<=4)[0])|(?<=9)[863]((?<=8)[0]|(?<=6)[0]|(?<=3)[0])|(?<=8)[7142]((?<=7)[0]|(?<=1)[04]|(?<=4)[0]|(?<=2)[0])|(?<=4)[53]((?<=5)[0]|(?<=3)[0])|(?<=5)[03]((?<=0)[04]|(?<=3)[0])|(?<=7)[70]((?<=7)[0]|(?<=0)[04])|(?<=1)[4]((?<=4)[0])|(?<=3)[0]((?<=0)[04]))|(?<=5)[1589723640]((?<=1)[417056]((?<=4)[1054]|(?<=1)[1054]|(?<=7)[05]|(?<=0)[014]|(?<=5)[104]|(?<=6)[054])|(?<=5)[065284]((?<=0)[0154]|(?<=6)[1054]|(?<=5)[0154]|(?<=2)[0]|(?<=8)[0]|(?<=4)[04])|(?<=8)[764103852]((?<=7)[1054]|(?<=6)[04]|(?<=4)[0]|(?<=1)[054]|(?<=0)[10]|(?<=3)[05]|(?<=8)[04]|(?<=5)[0]|(?<=2)[0])|(?<=9)[580]((?<=5)[04]|(?<=8)[0]|(?<=0)[10])|(?<=7)[0]((?<=0)[1054])|(?<=2)[40173]((?<=4)[0154]|(?<=0)[074]|(?<=1)[054]|(?<=7)[0]|(?<=3)[0])|(?<=3)[204]((?<=2)[0]|(?<=0)[04]|(?<=4)[0])|(?<=6)[18]((?<=1)[0]|(?<=8)[05])|(?<=4)[6]((?<=6)[0])|(?<=0)[8]((?<=8)[6]))|(?<=9)[671492358]((?<=6)[507132]((?<=5)[014]|(?<=0)[01]|(?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=7)[0374]((?<=0)[014]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0])|(?<=1)[612]((?<=6)[0]|(?<=1)[04]|(?<=2)[0])|(?<=4)[832716]((?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[04]|(?<=6)[0])|(?<=9)[215]((?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=2)[5316]((?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=3)[217]((?<=2)[0]|(?<=1)[0]|(?<=7)[0])|(?<=5)[41]((?<=4)[0]|(?<=1)[0])|(?<=8)[5]((?<=5)[0]))|(?<=1)[1397]((?<=1)[1032]((?<=1)[14]|(?<=0)[0154]|(?<=3)[054]|(?<=2)[054])|(?<=3)[1]((?<=1)[01])|(?<=9)[1]((?<=1)[0])|(?<=7)[1]((?<=1)[054]))|(?<=6)[279356418]((?<=2)[70683]((?<=7)[0]|(?<=0)[104]|(?<=6)[0]|(?<=8)[0]|(?<=3)[0])|(?<=7)[931]((?<=9)[0]|(?<=3)[0]|(?<=1)[04])|(?<=9)[607]((?<=6)[0]|(?<=0)[0154]|(?<=7)[0])|(?<=3)[051932]((?<=0)[1054]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0])|(?<=5)[410]((?<=4)[0]|(?<=1)[0]|(?<=0)[0])|(?<=6)[7031]((?<=7)[0]|(?<=0)[104]|(?<=3)[0]|(?<=1)[0])|(?<=4)[5]((?<=5)[0])|(?<=1)[06]((?<=0)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[104]))|(?<=2)[672413958]((?<=6)[043]((?<=0)[04]|(?<=4)[0]|(?<=3)[0])|(?<=7)[50]((?<=5)[0]|(?<=0)[014])|(?<=2)[41]((?<=4)[04]|(?<=1)[0])|(?<=4)[50]((?<=5)[0]|(?<=0)[104])|(?<=1)[307]((?<=3)[0]|(?<=0)[104]|(?<=7)[0])|(?<=3)[851]((?<=8)[0]|(?<=5)[0]|(?<=1)[04])|(?<=9)[25]((?<=2)[0]|(?<=5)[0])|(?<=5)[42]((?<=4)[04]|(?<=2)[04])|(?<=8)[2]((?<=2)[0]))|(?<=7)[453817926]((?<=4)[47351]((?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0])|(?<=5)[103]((?<=1)[0]|(?<=0)[014]|(?<=3)[0])|(?<=3)[2]((?<=2)[0])|(?<=8)[0754]((?<=0)[104]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[2513]((?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[04])|(?<=7)[418]((?<=4)[0]|(?<=1)[0]|(?<=8)[0])|(?<=9)[753]((?<=7)[0]|(?<=5)[0]|(?<=3)[0])|(?<=2)[402]((?<=4)[0]|(?<=0)[1054]|(?<=2)[0])|(?<=6)[13]((?<=1)[0]|(?<=3)[0]))|(?<=0)[426937158]((?<=4)[71428]((?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[104]|(?<=8)[0])|(?<=2)[3175]((?<=3)[0]|(?<=1)[104]|(?<=7)[0]|(?<=5)[0])|(?<=6)[0482561]((?<=0)[1054]|(?<=4)[014]|(?<=8)[0]|(?<=2)[0]|(?<=5)[04]|(?<=6)[0]|(?<=1)[1])|(?<=9)[064]((?<=0)[1054]|(?<=6)[04]|(?<=4)[0])|(?<=3)[523806]((?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[1054]|(?<=6)[04])|(?<=7)[1]((?<=1)[0])|(?<=1)[426]((?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[27]((?<=2)[04]|(?<=7)[0])|(?<=8)[2]((?<=2)[0]))|(?<=8)[1263]((?<=1)[3025]((?<=3)[0]|(?<=0)[1054]|(?<=2)[0]|(?<=5)[04])|(?<=2)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=3)[0]((?<=0)[04])))|(?<=5)[0562391874]((?<=0)[361975280]((?<=3)[50]((?<=5)[0]|(?<=0)[0])|(?<=6)[07]((?<=0)[04]|(?<=7)[04])|(?<=1)[05739628]((?<=0)[1054]|(?<=5)[0]|(?<=7)[04]|(?<=3)[04]|(?<=9)[054]|(?<=6)[0]|(?<=2)[04]|(?<=8)[0])|(?<=9)[7]((?<=7)[04])|(?<=7)[70]((?<=7)[0]|(?<=0)[0])|(?<=5)[20]((?<=2)[0]|(?<=0)[04])|(?<=2)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[4]((?<=4)[9]))|(?<=5)[79513846]((?<=7)[0]((?<=0)[0])|(?<=9)[1]((?<=1)[0])|(?<=5)[1]((?<=1)[0])|(?<=1)[02]((?<=0)[1054]|(?<=2)[1054])|(?<=3)[320]((?<=3)[0]|(?<=2)[0]|(?<=0)[04])|(?<=8)[0]((?<=0)[104])|(?<=4)[20]((?<=2)[04]|(?<=0)[0])|(?<=6)[1]((?<=1)[05]))|(?<=6)[86431572]((?<=8)[0]((?<=0)[014])|(?<=6)[41]((?<=4)[0]|(?<=1)[0])|(?<=4)[14]((?<=1)[0]|(?<=4)[0])|(?<=3)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[402]((?<=4)[0]|(?<=0)[104]|(?<=2)[0])|(?<=5)[15]((?<=1)[0]|(?<=5)[0])|(?<=7)[31]((?<=3)[0]|(?<=1)[0])|(?<=2)[1]((?<=1)[0]))|(?<=2)[9357186240]((?<=9)[8276]((?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0])|(?<=3)[62043]((?<=6)[0]|(?<=2)[0]|(?<=0)[014]|(?<=4)[0]|(?<=3)[0])|(?<=5)[512]((?<=5)[10]|(?<=1)[0]|(?<=2)[0])|(?<=7)[206438]((?<=2)[0]|(?<=0)[015]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0])|(?<=1)[501]((?<=5)[0]|(?<=0)[04]|(?<=1)[0])|(?<=8)[539]((?<=5)[0]|(?<=3)[0]|(?<=9)[0])|(?<=6)[21]((?<=2)[0]|(?<=1)[0])|(?<=2)[073]((?<=0)[104]|(?<=7)[0]|(?<=3)[0])|(?<=4)[2]((?<=2)[0])|(?<=0)[2]((?<=2)[0]))|(?<=3)[918542630]((?<=9)[052]((?<=0)[04]|(?<=5)[04]|(?<=2)[0])|(?<=1)[03]((?<=0)[0145]|(?<=3)[0])|(?<=8)[315]((?<=3)[0]|(?<=1)[04]|(?<=5)[1054])|(?<=5)[05]((?<=0)[1054]|(?<=5)[04])|(?<=4)[02]((?<=0)[0]|(?<=2)[0])|(?<=2)[0]((?<=0)[054])|(?<=6)[50]((?<=5)[0]|(?<=0)[054])|(?<=3)[0]((?<=0)[1054])|(?<=0)[08]((?<=0)[6]|(?<=8)[6]))|(?<=9)[57482361]((?<=5)[213]((?<=2)[0]|(?<=1)[10]|(?<=3)[0])|(?<=7)[321]((?<=3)[0]|(?<=2)[0]|(?<=1)[0])|(?<=4)[1]((?<=1)[0])|(?<=8)[201]((?<=2)[0]|(?<=0)[0]|(?<=1)[0])|(?<=2)[1]((?<=1)[0])|(?<=3)[21]((?<=2)[0]|(?<=1)[0])|(?<=6)[1]((?<=1)[0])|(?<=1)[03]((?<=0)[10]|(?<=3)[0]))|(?<=1)[849637251]((?<=8)[821659]((?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0])|(?<=4)[64235]((?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0])|(?<=9)[8043]((?<=8)[0]|(?<=0)[1054]|(?<=4)[0]|(?<=3)[0])|(?<=6)[702]((?<=7)[0]|(?<=0)[01]|(?<=2)[0])|(?<=3)[41836]((?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[5]|(?<=6)[0])|(?<=7)[6482]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0])|(?<=2)[076]((?<=0)[1054]|(?<=7)[0]|(?<=6)[0])|(?<=5)[42]((?<=4)[0]|(?<=2)[0])|(?<=1)[3]((?<=3)[0]))|(?<=8)[324817596]((?<=3)[06592]((?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0])|(?<=2)[062]((?<=0)[10]|(?<=6)[0]|(?<=2)[0])|(?<=4)[2135]((?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[475386]((?<=4)[0]|(?<=7)[50]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=7)[072]((?<=0)[01]|(?<=7)[0]|(?<=2)[0])|(?<=5)[50287]((?<=5)[0]|(?<=0)[014]|(?<=2)[0]|(?<=8)[0]|(?<=7)[0])|(?<=9)[1402]((?<=1)[0]|(?<=4)[0]|(?<=0)[104]|(?<=2)[0])|(?<=6)[15982]((?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]))|(?<=7)[75216380]((?<=7)[1]((?<=1)[04])|(?<=5)[1]((?<=1)[04])|(?<=2)[1302]((?<=1)[054]|(?<=3)[0]|(?<=0)[104]|(?<=2)[0])|(?<=1)[7302]((?<=7)[04]|(?<=3)[04]|(?<=0)[1054]|(?<=2)[0])|(?<=6)[0]((?<=0)[0])|(?<=3)[1]((?<=1)[0])|(?<=8)[1]((?<=1)[0])|(?<=0)[9]((?<=9)[0]))|(?<=4)[19487523]((?<=1)[2019]((?<=2)[0]|(?<=0)[0154]|(?<=1)[0]|(?<=9)[0])|(?<=9)[542631]((?<=5)[0]|(?<=4)[0]|(?<=2)[04]|(?<=6)[0]|(?<=3)[0]|(?<=1)[5])|(?<=4)[3961]((?<=3)[0]|(?<=9)[0]|(?<=6)[0]|(?<=1)[0])|(?<=8)[502]((?<=5)[0]|(?<=0)[014]|(?<=2)[0])|(?<=7)[1275]((?<=1)[04]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=5)[519038]((?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[1054]|(?<=3)[0]|(?<=8)[0])|(?<=2)[3756]((?<=3)[05]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0])|(?<=3)[3190]((?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0])))|(?<=6)[4382016579]((?<=4)[276495318]((?<=2)[6304251]((?<=6)[04]|(?<=3)[0]|(?<=0)[104]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0])|(?<=7)[04762]((?<=0)[105]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0])|(?<=6)[1]((?<=1)[0])|(?<=4)[49685]((?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=8)[0]|(?<=5)[0])|(?<=9)[03]((?<=0)[01]|(?<=3)[0])|(?<=5)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=3)[7025]((?<=7)[0]|(?<=0)[04]|(?<=2)[0]|(?<=5)[0])|(?<=1)[04]((?<=0)[014]|(?<=4)[0])|(?<=8)[32541]((?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]))|(?<=3)[914583762]((?<=9)[2150]((?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0])|(?<=1)[06352]((?<=0)[104]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0])|(?<=4)[5031]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=5)[1403]((?<=1)[0]|(?<=4)[0]|(?<=0)[10]|(?<=3)[0])|(?<=8)[9830]((?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[04])|(?<=3)[4063527]((?<=4)[0]|(?<=0)[1054]|(?<=6)[0]|(?<=3)[0]|(?<=5)[50]|(?<=2)[0]|(?<=7)[0])|(?<=7)[087]((?<=0)[1054]|(?<=8)[0]|(?<=7)[0])|(?<=6)[60481]((?<=6)[0]|(?<=0)[04]|(?<=4)[0]|(?<=8)[0]|(?<=1)[04])|(?<=2)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0]))|(?<=8)[936582471]((?<=9)[27431]((?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[04])|(?<=3)[87092]((?<=8)[0]|(?<=7)[04]|(?<=0)[04]|(?<=9)[0]|(?<=2)[0])|(?<=6)[06392]((?<=0)[1054]|(?<=6)[04]|(?<=3)[0]|(?<=9)[0]|(?<=2)[04])|(?<=5)[507386]((?<=5)[504]|(?<=0)[104]|(?<=7)[04]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[703214]((?<=7)[04]|(?<=0)[0]|(?<=3)[0]|(?<=2)[04]|(?<=1)[0]|(?<=4)[0])|(?<=2)[2134]((?<=2)[0]|(?<=1)[0]|(?<=3)[04]|(?<=4)[0])|(?<=4)[1]((?<=1)[04])|(?<=7)[50]((?<=5)[0]|(?<=0)[04])|(?<=1)[05]((?<=0)[04]|(?<=5)[0]))|(?<=2)[723968514]((?<=7)[254163]((?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[4980362]((?<=4)[0]|(?<=9)[50]|(?<=8)[0]|(?<=0)[1054]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=3)[1704985]((?<=1)[0]|(?<=7)[504]|(?<=0)[104]|(?<=4)[0]|(?<=9)[5]|(?<=8)[0]|(?<=5)[0])|(?<=9)[50429]((?<=5)[0]|(?<=0)[104]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0])|(?<=6)[024136]((?<=0)[014]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[04])|(?<=8)[7401368]((?<=7)[0]|(?<=4)[0]|(?<=0)[04]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0])|(?<=5)[41702]((?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=0)[10]|(?<=2)[0])|(?<=1)[7365908]((?<=7)[50]|(?<=3)[0]|(?<=6)[05]|(?<=5)[0]|(?<=9)[0]|(?<=0)[1054]|(?<=8)[5])|(?<=4)[32714]((?<=3)[50]|(?<=2)[014]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]))|(?<=0)[254718306]((?<=2)[802]((?<=8)[0]|(?<=0)[04]|(?<=2)[04])|(?<=5)[516]((?<=5)[04]|(?<=1)[1054]|(?<=6)[0])|(?<=4)[52]((?<=5)[0]|(?<=2)[0])|(?<=7)[62]((?<=6)[0]|(?<=2)[0])|(?<=1)[1502]((?<=1)[01]|(?<=5)[074]|(?<=0)[1054]|(?<=2)[054])|(?<=8)[0]((?<=0)[104])|(?<=3)[2]((?<=2)[054])|(?<=0)[06]((?<=0)[6]|(?<=6)[01])|(?<=6)[4]((?<=4)[0]))|(?<=1)[194723658]((?<=1)[80275164]((?<=8)[0]|(?<=0)[04]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0])|(?<=9)[581462]((?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0])|(?<=4)[1740365]((?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[104]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=7)[2613]((?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0])|(?<=2)[578392]((?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0])|(?<=3)[85304176]((?<=8)[0]|(?<=5)[0]|(?<=3)[04]|(?<=0)[1054]|(?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0])|(?<=6)[30584]((?<=3)[0]|(?<=0)[0154]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0])|(?<=5)[5062]((?<=5)[0]|(?<=0)[104]|(?<=6)[0]|(?<=2)[0])|(?<=8)[6402851]((?<=6)[0]|(?<=4)[0]|(?<=0)[1054]|(?<=2)[0]|(?<=8)[0]|(?<=5)[0]|(?<=1)[0]))|(?<=6)[479821635]((?<=4)[7042653]((?<=7)[0]|(?<=0)[0154]|(?<=4)[104]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0])|(?<=7)[13]((?<=1)[0]|(?<=3)[0])|(?<=9)[503871]((?<=5)[0]|(?<=0)[014]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=1)[0])|(?<=8)[201435]((?<=2)[0]|(?<=0)[014]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[04])|(?<=2)[836092471]((?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[104]|(?<=9)[50]|(?<=2)[0]|(?<=4)[0]|(?<=7)[04]|(?<=1)[0])|(?<=1)[406]((?<=4)[104]|(?<=0)[04]|(?<=6)[0])|(?<=6)[0468]((?<=0)[04]|(?<=4)[04]|(?<=6)[0]|(?<=8)[0])|(?<=3)[2574063]((?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[104]|(?<=6)[0]|(?<=3)[0])|(?<=5)[361095842]((?<=3)[104]|(?<=6)[0]|(?<=1)[04]|(?<=0)[014]|(?<=9)[0]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]))|(?<=5)[1426937580]((?<=1)[703]((?<=7)[0]|(?<=0)[1054]|(?<=3)[01])|(?<=4)[17568]((?<=1)[04]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0])|(?<=2)[308]((?<=3)[104]|(?<=0)[104]|(?<=8)[054])|(?<=6)[135]((?<=1)[014]|(?<=3)[0]|(?<=5)[0])|(?<=9)[327]((?<=3)[0]|(?<=2)[0]|(?<=7)[0])|(?<=3)[07258]((?<=0)[1054]|(?<=7)[045]|(?<=2)[04]|(?<=5)[04]|(?<=8)[04])|(?<=7)[316]((?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=5)[2]((?<=2)[0])|(?<=8)[07]((?<=0)[0]|(?<=7)[0])|(?<=0)[8]((?<=8)[6]))|(?<=7)[197342865]((?<=1)[0]((?<=0)[1054])|(?<=9)[0]((?<=0)[04])|(?<=7)[0]((?<=0)[1054])|(?<=3)[0]((?<=0)[04])|(?<=4)[10]((?<=1)[0]|(?<=0)[04])|(?<=2)[0]((?<=0)[04])|(?<=8)[0]((?<=0)[05])|(?<=6)[0]((?<=0)[504])|(?<=5)[0]((?<=0)[0]))|(?<=9)[65384917]((?<=6)[06]((?<=0)[1054]|(?<=6)[0])|(?<=5)[517]((?<=5)[0]|(?<=1)[0]|(?<=7)[0])|(?<=3)[1043]((?<=1)[0]|(?<=0)[104]|(?<=4)[0]|(?<=3)[0])|(?<=8)[532]((?<=5)[0]|(?<=3)[0]|(?<=2)[0])|(?<=4)[1542]((?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0])|(?<=9)[58271]((?<=5)[014]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0])|(?<=1)[075]((?<=0)[104]|(?<=7)[0]|(?<=5)[04])|(?<=7)[053]((?<=0)[104]|(?<=5)[0]|(?<=3)[0])))|(?<=3)[2590614837]((?<=2)[571824963]((?<=5)[602]((?<=6)[0]|(?<=0)[04]|(?<=2)[0])|(?<=7)[704631]((?<=7)[0]|(?<=0)[1054]|(?<=4)[01]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0])|(?<=1)[40]((?<=4)[0]|(?<=0)[0])|(?<=8)[3061]((?<=3)[0]|(?<=0)[1054]|(?<=6)[0]|(?<=1)[0])|(?<=2)[850761]((?<=8)[0]|(?<=5)[0]|(?<=0)[1054]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0])|(?<=4)[4531]((?<=4)[014]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=9)[21]((?<=2)[0]|(?<=1)[0])|(?<=6)[12]((?<=1)[0]|(?<=2)[0])|(?<=3)[0]((?<=0)[0]))|(?<=5)[732568491]((?<=7)[504]((?<=5)[0]|(?<=0)[014]|(?<=4)[0])|(?<=3)[02]((?<=0)[1054]|(?<=2)[0])|(?<=2)[6247]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0])|(?<=5)[20435]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0])|(?<=6)[031]((?<=0)[104]|(?<=3)[0]|(?<=1)[0])|(?<=8)[02]((?<=0)[1054]|(?<=2)[0])|(?<=4)[082]((?<=0)[04]|(?<=8)[0]|(?<=2)[0])|(?<=9)[9]((?<=9)[0])|(?<=1)[0]((?<=0)[0]))|(?<=9)[591476238]((?<=5)[0938]((?<=0)[1054]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0])|(?<=9)[639284]((?<=6)[50]|(?<=3)[04]|(?<=9)[0]|(?<=2)[0]|(?<=8)[0]|(?<=4)[0])|(?<=1)[08153796]((?<=0)[014]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[5]|(?<=6)[04])|(?<=4)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=7)[0875]((?<=0)[1054]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0])|(?<=6)[216]((?<=2)[0]|(?<=1)[0]|(?<=6)[0])|(?<=2)[903]((?<=9)[0]|(?<=0)[04]|(?<=3)[0])|(?<=3)[6481]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0])|(?<=8)[821]((?<=8)[0]|(?<=2)[04]|(?<=1)[0]))|(?<=0)[413]((?<=4)[2]((?<=2)[014])|(?<=1)[0]((?<=0)[017854])|(?<=3)[0]((?<=0)[04]))|(?<=6)[452896173]((?<=4)[325]((?<=3)[0]|(?<=2)[0]|(?<=5)[0])|(?<=5)[72]((?<=7)[0]|(?<=2)[0])|(?<=2)[80472]((?<=8)[04]|(?<=0)[1054]|(?<=4)[04]|(?<=7)[0]|(?<=2)[054])|(?<=8)[184]((?<=1)[0]|(?<=8)[0]|(?<=4)[0])|(?<=9)[13]((?<=1)[04]|(?<=3)[0])|(?<=6)[064]((?<=0)[104]|(?<=6)[0]|(?<=4)[0])|(?<=1)[120]((?<=1)[04]|(?<=2)[0]|(?<=0)[0])|(?<=7)[62]((?<=6)[0]|(?<=2)[0])|(?<=3)[4]((?<=4)[0]))|(?<=1)[3647815290]((?<=3)[854710]((?<=8)[04]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=0)[04])|(?<=6)[420153]((?<=4)[104]|(?<=2)[0]|(?<=0)[014]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=4)[650719]((?<=6)[0]|(?<=5)[0]|(?<=0)[1054]|(?<=7)[0]|(?<=1)[0]|(?<=9)[0])|(?<=7)[20536]((?<=2)[0]|(?<=0)[04]|(?<=5)[0]|(?<=3)[0]|(?<=6)[104])|(?<=8)[6153]((?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[74613]((?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0])|(?<=5)[032]((?<=0)[104]|(?<=3)[0]|(?<=2)[0])|(?<=2)[53]((?<=5)[0]|(?<=3)[0])|(?<=9)[57036]((?<=5)[0]|(?<=7)[0]|(?<=0)[10]|(?<=3)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[6]))|(?<=4)[564839127]((?<=5)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=6)[40]((?<=4)[0]|(?<=0)[014])|(?<=4)[5132]((?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=8)[70]((?<=7)[04]|(?<=0)[0154])|(?<=3)[032]((?<=0)[014]|(?<=3)[0]|(?<=2)[0])|(?<=9)[53817]((?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0])|(?<=1)[14853]((?<=1)[01]|(?<=4)[0]|(?<=8)[0]|(?<=5)[04]|(?<=3)[0])|(?<=2)[476]((?<=4)[04]|(?<=7)[0]|(?<=6)[04])|(?<=7)[3174]((?<=3)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]))|(?<=8)[732416985]((?<=7)[2605741]((?<=2)[0]|(?<=6)[0]|(?<=0)[1054]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[04])|(?<=3)[670]((?<=6)[0]|(?<=7)[0]|(?<=0)[04])|(?<=2)[082715]((?<=0)[1054]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[10]|(?<=5)[0])|(?<=4)[9276]((?<=9)[0]|(?<=2)[04]|(?<=7)[0]|(?<=6)[04])|(?<=1)[3240]((?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[04])|(?<=6)[0857]((?<=0)[014]|(?<=8)[0]|(?<=5)[0]|(?<=7)[0])|(?<=9)[1752]((?<=1)[0]|(?<=7)[0]|(?<=5)[014]|(?<=2)[0])|(?<=8)[064]((?<=0)[04]|(?<=6)[0]|(?<=4)[01])|(?<=5)[1]((?<=1)[0]))|(?<=3)[2473589016]((?<=2)[531074]((?<=5)[104]|(?<=3)[104]|(?<=1)[0154]|(?<=0)[104]|(?<=7)[1054]|(?<=4)[0])|(?<=4)[7138205]((?<=7)[0154]|(?<=1)[014]|(?<=3)[0]|(?<=8)[054]|(?<=2)[0]|(?<=0)[1054]|(?<=5)[0])|(?<=7)[1302]((?<=1)[1054]|(?<=3)[014]|(?<=0)[10]|(?<=2)[1054])|(?<=3)[30814]((?<=3)[01]|(?<=0)[054]|(?<=8)[0]|(?<=1)[1054]|(?<=4)[104])|(?<=5)[328406]((?<=3)[104]|(?<=2)[01]|(?<=8)[01574]|(?<=4)[1054]|(?<=0)[104]|(?<=6)[104])|(?<=8)[408257]((?<=4)[014]|(?<=0)[1054]|(?<=8)[104]|(?<=2)[1054]|(?<=5)[014]|(?<=7)[054])|(?<=9)[68502]((?<=6)[0154]|(?<=8)[0]|(?<=5)[054]|(?<=0)[1054]|(?<=2)[0])|(?<=0)[0138]((?<=0)[6]|(?<=1)[43]|(?<=3)[2]|(?<=8)[6])|(?<=1)[80]((?<=8)[04]|(?<=0)[105874])|(?<=6)[18]((?<=1)[04]|(?<=8)[04]))|(?<=7)[483715692]((?<=4)[72]((?<=7)[04]|(?<=2)[0])|(?<=8)[0635]((?<=0)[0154]|(?<=6)[0]|(?<=3)[054]|(?<=5)[0])|(?<=3)[7581]((?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0])|(?<=7)[4270]((?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0])|(?<=1)[208453]((?<=2)[0154]|(?<=0)[0514]|(?<=8)[0]|(?<=4)[04]|(?<=5)[05]|(?<=3)[05])|(?<=5)[63507]((?<=6)[05]|(?<=3)[0]|(?<=5)[104]|(?<=0)[1054]|(?<=7)[054])|(?<=6)[30]((?<=3)[04]|(?<=0)[1054])|(?<=9)[610]((?<=6)[0]|(?<=1)[051]|(?<=0)[0])|(?<=2)[041]((?<=0)[0]|(?<=4)[10]|(?<=1)[0])))|(?<=4)[3804512679]((?<=3)[516492378]((?<=5)[2604]((?<=2)[0]|(?<=6)[0]|(?<=0)[104]|(?<=4)[0])|(?<=1)[037]((?<=0)[0154]|(?<=3)[0]|(?<=7)[0])|(?<=6)[164]((?<=1)[0]|(?<=6)[0]|(?<=4)[0])|(?<=4)[93824]((?<=9)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=4)[0])|(?<=9)[604]((?<=6)[0]|(?<=0)[014]|(?<=4)[0])|(?<=2)[2574]((?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0])|(?<=3)[409]((?<=4)[0]|(?<=0)[0]|(?<=9)[0])|(?<=7)[20]((?<=2)[0]|(?<=0)[104])|(?<=8)[40]((?<=4)[0]|(?<=0)[0]))|(?<=8)[73614289]((?<=7)[17520]((?<=1)[0]|(?<=7)[01]|(?<=5)[0]|(?<=2)[0]|(?<=0)[04])|(?<=3)[150]((?<=1)[04]|(?<=5)[04]|(?<=0)[0])|(?<=6)[0]((?<=0)[1054])|(?<=1)[03]((?<=0)[0154]|(?<=3)[0])|(?<=4)[01]((?<=0)[1054]|(?<=1)[0])|(?<=2)[1230]((?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=9)[103]((?<=1)[04]|(?<=0)[0]|(?<=3)[0]))|(?<=0)[4593268710]((?<=4)[02]((?<=0)[0]|(?<=2)[0])|(?<=5)[023]((?<=0)[054]|(?<=2)[1054]|(?<=3)[104])|(?<=9)[305]((?<=3)[04]|(?<=0)[05]|(?<=5)[0154])|(?<=3)[425]((?<=4)[1054]|(?<=2)[0154]|(?<=5)[10])|(?<=2)[705]((?<=7)[0154]|(?<=0)[041]|(?<=5)[04])|(?<=6)[63042]((?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[04]|(?<=2)[0])|(?<=8)[02]((?<=0)[1054]|(?<=2)[0])|(?<=7)[204]((?<=2)[0]|(?<=0)[1054]|(?<=4)[04])|(?<=1)[0]((?<=0)[1054])|(?<=0)[0145]((?<=0)[6]|(?<=1)[41]|(?<=4)[9]|(?<=5)[6]))|(?<=4)[129473568]((?<=1)[750269]((?<=7)[0]|(?<=5)[0]|(?<=0)[0154]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0])|(?<=2)[05826]((?<=0)[104]|(?<=5)[04]|(?<=8)[04]|(?<=2)[0]|(?<=6)[0])|(?<=9)[7152]((?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0])|(?<=4)[06428]((?<=0)[10]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[0])|(?<=7)[94736]((?<=9)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[50372]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0])|(?<=5)[0398]((?<=0)[1054]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0])|(?<=6)[38714]((?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0])|(?<=8)[086]((?<=0)[104]|(?<=8)[04]|(?<=6)[0]))|(?<=5)[93127468]((?<=9)[14]((?<=1)[104]|(?<=4)[0])|(?<=3)[367]((?<=3)[0]|(?<=6)[05]|(?<=7)[104])|(?<=1)[30652]((?<=3)[05]|(?<=0)[1054]|(?<=6)[054]|(?<=5)[04]|(?<=2)[0])|(?<=2)[0]((?<=0)[014])|(?<=7)[0542]((?<=0)[1054]|(?<=5)[0]|(?<=4)[04]|(?<=2)[054])|(?<=4)[16]((?<=1)[01]|(?<=6)[0])|(?<=6)[1]((?<=1)[0154])|(?<=8)[1]((?<=1)[0]))|(?<=1)[9283547610]((?<=9)[072483]((?<=0)[014]|(?<=7)[0]|(?<=2)[50]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0])|(?<=2)[3176924]((?<=3)[104]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0])|(?<=8)[604872]((?<=6)[0]|(?<=0)[104]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0])|(?<=3)[25913746]((?<=2)[5]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[104]|(?<=7)[0]|(?<=4)[104]|(?<=6)[0])|(?<=5)[4036258]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[014]|(?<=5)[0]|(?<=8)[0])|(?<=4)[19504]((?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=0)[104]|(?<=4)[0])|(?<=7)[5317]((?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0])|(?<=6)[36]((?<=3)[0]|(?<=6)[104])|(?<=1)[2684]((?<=2)[0]|(?<=6)[014]|(?<=8)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[6]))|(?<=2)[647189352]((?<=6)[06]((?<=0)[014]|(?<=6)[0])|(?<=4)[4]((?<=4)[0])|(?<=7)[20]((?<=2)[01]|(?<=0)[0154])|(?<=1)[40]((?<=4)[0]|(?<=0)[1504])|(?<=8)[524730]((?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=0)[0])|(?<=9)[13]((?<=1)[0]|(?<=3)[0])|(?<=3)[03]((?<=0)[014]|(?<=3)[0])|(?<=5)[62]((?<=6)[0]|(?<=2)[0])|(?<=2)[2]((?<=2)[04]))|(?<=6)[9815472]((?<=9)[05136]((?<=0)[014]|(?<=5)[0]|(?<=1)[04]|(?<=3)[0]|(?<=6)[0])|(?<=8)[106]((?<=1)[0]|(?<=0)[1054]|(?<=6)[0])|(?<=1)[41]((?<=4)[04]|(?<=1)[0])|(?<=5)[73]((?<=7)[0]|(?<=3)[0])|(?<=4)[530]((?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=7)[531]((?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[3]((?<=3)[0]))|(?<=7)[476283519]((?<=4)[94065]((?<=9)[0]|(?<=4)[0]|(?<=0)[0154]|(?<=6)[0]|(?<=5)[0])|(?<=7)[61]((?<=6)[0]|(?<=1)[04])|(?<=6)[15]((?<=1)[0]|(?<=5)[0])|(?<=2)[60]((?<=6)[0]|(?<=0)[015])|(?<=8)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=3)[51]((?<=5)[0]|(?<=1)[0])|(?<=5)[42]((?<=4)[0]|(?<=2)[0])|(?<=1)[51]((?<=5)[0]|(?<=1)[0])|(?<=9)[01]((?<=0)[0]|(?<=1)[0]))|(?<=9)[49872653]((?<=4)[061982]((?<=0)[1054]|(?<=6)[01]|(?<=1)[104]|(?<=9)[0]|(?<=8)[0]|(?<=2)[04])|(?<=9)[0368]((?<=0)[014]|(?<=3)[04]|(?<=6)[0]|(?<=8)[0])|(?<=8)[46]((?<=4)[0]|(?<=6)[0])|(?<=7)[7306258]((?<=7)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0])|(?<=2)[402971]((?<=4)[0]|(?<=0)[0]|(?<=2)[04]|(?<=9)[0]|(?<=7)[05]|(?<=1)[0])|(?<=6)[3164]((?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0])|(?<=5)[4172]((?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=2)[0])|(?<=3)[04]((?<=0)[0]|(?<=4)[0])))|(?<=2)[1675940238]((?<=1)[6927148350]((?<=6)[68201753]((?<=6)[01]|(?<=8)[0]|(?<=2)[04]|(?<=0)[0154]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0])|(?<=9)[30]((?<=3)[0]|(?<=0)[10])|(?<=2)[3751906824]((?<=3)[04]|(?<=7)[0]|(?<=5)[0154]|(?<=1)[04]|(?<=9)[10]|(?<=0)[0154]|(?<=6)[0]|(?<=8)[054]|(?<=2)[0]|(?<=4)[04])|(?<=7)[274615]((?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0])|(?<=1)[064913582]((?<=0)[1054]|(?<=6)[0]|(?<=4)[04]|(?<=9)[5]|(?<=1)[04]|(?<=3)[0]|(?<=5)[0]|(?<=8)[04]|(?<=2)[0])|(?<=4)[952831]((?<=9)[04]|(?<=5)[0]|(?<=2)[01542]|(?<=8)[0]|(?<=3)[0]|(?<=1)[04])|(?<=8)[9278604]((?<=9)[0]|(?<=2)[0]|(?<=7)[014]|(?<=8)[0]|(?<=6)[0]|(?<=0)[10]|(?<=4)[0])|(?<=3)[4836517]((?<=4)[0]|(?<=8)[104]|(?<=3)[05]|(?<=6)[0]|(?<=5)[04]|(?<=1)[0]|(?<=7)[0])|(?<=5)[427093615]((?<=4)[0]|(?<=2)[0]|(?<=7)[01]|(?<=0)[014]|(?<=9)[0]|(?<=3)[1054]|(?<=6)[0]|(?<=1)[0]|(?<=5)[5])|(?<=0)[08]((?<=0)[6]|(?<=8)[6]))|(?<=6)[91826754]((?<=9)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=1)[0]((?<=0)[0154])|(?<=8)[24]((?<=2)[0]|(?<=4)[05])|(?<=2)[0]((?<=0)[04])|(?<=6)[6]((?<=6)[104])|(?<=7)[42]((?<=4)[0]|(?<=2)[0])|(?<=5)[16]((?<=1)[0]|(?<=6)[0])|(?<=4)[1]((?<=1)[0]))|(?<=7)[415278369]((?<=4)[5032]((?<=5)[0]|(?<=0)[104]|(?<=3)[04]|(?<=2)[0])|(?<=1)[301657]((?<=3)[0]|(?<=0)[014]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0])|(?<=5)[10]((?<=1)[0154]|(?<=0)[104])|(?<=2)[6352]((?<=6)[0]|(?<=3)[014]|(?<=5)[0]|(?<=2)[0])|(?<=7)[5413]((?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0])|(?<=8)[0264]((?<=0)[104]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0])|(?<=3)[241]((?<=2)[04]|(?<=4)[0]|(?<=1)[0])|(?<=6)[0547]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0])|(?<=9)[21]((?<=2)[0]|(?<=1)[0]))|(?<=5)[536192847]((?<=5)[604257]((?<=6)[0]|(?<=0)[104]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0])|(?<=3)[7392684]((?<=7)[0]|(?<=3)[04]|(?<=9)[04]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0])|(?<=6)[63514]((?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=1)[196387]((?<=1)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0])|(?<=9)[514306]((?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0])|(?<=2)[63514]((?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=8)[372641]((?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0])|(?<=4)[26713]((?<=2)[0]|(?<=6)[04]|(?<=7)[0]|(?<=1)[04]|(?<=3)[0])|(?<=7)[6031]((?<=6)[0]|(?<=0)[104]|(?<=3)[0]|(?<=1)[0]))|(?<=9)[38267195]((?<=3)[2514]((?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=8)[6183]((?<=6)[0]|(?<=1)[104]|(?<=8)[0]|(?<=3)[0])|(?<=2)[7058]((?<=7)[0]|(?<=0)[1054]|(?<=5)[104]|(?<=8)[0])|(?<=6)[0348]((?<=0)[104]|(?<=3)[10]|(?<=4)[0]|(?<=8)[0])|(?<=7)[265049]((?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0])|(?<=1)[80]((?<=8)[0]|(?<=0)[015])|(?<=9)[04]((?<=0)[104]|(?<=4)[0])|(?<=5)[7]((?<=7)[0]))|(?<=4)[2189]((?<=2)[846]((?<=8)[05]|(?<=4)[05]|(?<=6)[04])|(?<=1)[30]((?<=3)[0]|(?<=0)[1054])|(?<=8)[0]((?<=0)[1054])|(?<=9)[1]((?<=1)[0]))|(?<=0)[1257380694]((?<=1)[0]((?<=0)[0514])|(?<=2)[1504]((?<=1)[054]|(?<=5)[0154]|(?<=0)[104]|(?<=4)[104])|(?<=5)[204]((?<=2)[0154]|(?<=0)[015]|(?<=4)[0154])|(?<=7)[8540623]((?<=8)[0154]|(?<=5)[104]|(?<=4)[0154]|(?<=0)[1054]|(?<=6)[1054]|(?<=2)[04]|(?<=3)[054])|(?<=3)[8620]((?<=8)[104]|(?<=6)[0154]|(?<=2)[1054]|(?<=0)[054])|(?<=8)[810]((?<=8)[04]|(?<=1)[1054]|(?<=0)[01])|(?<=0)[0213]((?<=0)[6]|(?<=2)[5]|(?<=1)[4]|(?<=3)[2])|(?<=6)[61]((?<=6)[04]|(?<=1)[1054])|(?<=9)[06]((?<=0)[054]|(?<=6)[0])|(?<=4)[60]((?<=6)[04]|(?<=0)[04]))|(?<=2)[914827356]((?<=9)[35241]((?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0])|(?<=1)[5043621]((?<=5)[015]|(?<=0)[015]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[015])|(?<=4)[13]((?<=1)[105]|(?<=3)[0])|(?<=8)[1432]((?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0])|(?<=2)[247]((?<=2)[0]|(?<=4)[0]|(?<=7)[0])|(?<=7)[132]((?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=3)[3214]((?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0])|(?<=5)[253]((?<=2)[0]|(?<=5)[0]|(?<=3)[0])|(?<=6)[31]((?<=3)[0]|(?<=1)[0]))|(?<=3)[18632594]((?<=1)[402]((?<=4)[04]|(?<=0)[104]|(?<=2)[0])|(?<=8)[804]((?<=8)[0]|(?<=0)[0154]|(?<=4)[0])|(?<=6)[06]((?<=0)[01]|(?<=6)[0])|(?<=3)[196]((?<=1)[014]|(?<=9)[0]|(?<=6)[0])|(?<=2)[061]((?<=0)[10]|(?<=6)[04]|(?<=1)[0])|(?<=5)[0]((?<=0)[1054])|(?<=9)[365]((?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=4)[5]((?<=5)[0]))|(?<=8)[382754169]((?<=3)[6730]((?<=6)[0154]|(?<=7)[04]|(?<=3)[0]|(?<=0)[04])|(?<=8)[480]((?<=4)[04]|(?<=8)[0]|(?<=0)[04])|(?<=2)[6240]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[04])|(?<=7)[6]((?<=6)[0])|(?<=5)[4806]((?<=4)[0]|(?<=8)[0]|(?<=0)[04]|(?<=6)[0])|(?<=4)[053]((?<=0)[10574]|(?<=5)[04]|(?<=3)[04])|(?<=1)[0923]((?<=0)[0154]|(?<=9)[0]|(?<=2)[04]|(?<=3)[1054])|(?<=6)[016]((?<=0)[014]|(?<=1)[054]|(?<=6)[0])|(?<=9)[0]((?<=0)[04])))))$"), IT: new RegExp("^([6784230195]((?<=6)[67540321]((?<=6)[01]((?<=0)[41352]((?<=4)[04123567]|(?<=1)[012456789]|(?<=3)[01234687]|(?<=5)[0124]|(?<=2)[12360])|(?<=1)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[243516]((?<=2)[0123456789]|(?<=4)[134056789]|(?<=3)[0123456789]|(?<=5)[1203456789]|(?<=1)[0234579]|(?<=6)[012346789])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[21]((?<=2)[023467589]|(?<=1)[01234579])|(?<=1)[2]((?<=2)[123456789]))|(?<=4)[01]((?<=0)[1324]((?<=1)[10234568]|(?<=3)[120345679]|(?<=2)[01345678]|(?<=4)[120345679])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[2134]((?<=2)[0124567]|(?<=1)[1035892]|(?<=3)[013457689]|(?<=4)[34018])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[1]))|(?<=3)[0189]((?<=0)[9786]((?<=9)[564231]|(?<=7)[529763148]|(?<=8)[32174658]|(?<=6)[374618925])|(?<=1)[0]((?<=0)[0])|(?<=8)[25314]((?<=2)[48356721]|(?<=5)[72583146]|(?<=3)[872456319]|(?<=1)[653214]|(?<=4)[42671385])|(?<=9)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[213]((?<=2)[102456789]|(?<=1)[01245789]|(?<=3)[5296481])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[4231]((?<=4)[1203495678]|(?<=2)[613405892]|(?<=3)[06234798]|(?<=1)[1230])|(?<=1)[2]((?<=2)[12])))|(?<=7)[5062134]((?<=5)[01]((?<=0)[12]((?<=1)[1023456789]|(?<=2)[1234056789])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[21354]((?<=2)[1203456789]|(?<=1)[013456789]|(?<=3)[2378]|(?<=5)[46]|(?<=4)[234])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12]))|(?<=6)[10]((?<=1)[2]((?<=2)[315])|(?<=0)[1]((?<=1)[1263745]))|(?<=2)[10]((?<=1)[0]((?<=0)[0])|(?<=0)[12]((?<=1)[2345789]|(?<=2)[0123456789]))|(?<=1)[01]((?<=0)[23145]((?<=2)[1023456789]|(?<=3)[1203456789]|(?<=1)[1023456789]|(?<=4)[1230578]|(?<=5)[1])|(?<=1)[2]((?<=2)[12]))|(?<=3)[01]((?<=0)[31425]((?<=3)[1203456789]|(?<=1)[1023456789]|(?<=4)[0123456789]|(?<=2)[0123456789]|(?<=5)[1234506789])|(?<=1)[0]((?<=0)[0]))|(?<=4)[01]((?<=0)[21]((?<=2)[01234678]|(?<=1)[1234567890])|(?<=1)[2]((?<=2)[123])))|(?<=8)[5879321046]((?<=5)[01]((?<=0)[12534]((?<=1)[012345678]|(?<=2)[0123456789]|(?<=5)[0123456789]|(?<=3)[0123456789]|(?<=4)[02346789])|(?<=1)[0]((?<=0)[0]))|(?<=8)[0189]((?<=0)[54627]((?<=5)[50146]|(?<=4)[01256479]|(?<=6)[0274589]|(?<=2)[10245]|(?<=7)[01])|(?<=1)[0]((?<=0)[0])|(?<=8)[2314]((?<=2)[42153]|(?<=3)[34687512]|(?<=1)[73124869]|(?<=4)[21])|(?<=9)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[1243756]((?<=1)[0123456789]|(?<=2)[012346789]|(?<=4)[102345678]|(?<=3)[123045678]|(?<=7)[0123456]|(?<=5)[109345678]|(?<=6)[012469])|(?<=1)[0]((?<=0)[0]))|(?<=9)[0189]((?<=0)[342615]((?<=3)[012354689]|(?<=4)[0123456789]|(?<=2)[0123456789]|(?<=6)[03459]|(?<=1)[123045678]|(?<=5)[024678])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12345])|(?<=8)[312645]((?<=3)[2314]|(?<=1)[78645923]|(?<=2)[2341]|(?<=6)[2316478]|(?<=4)[1342]|(?<=5)[123])|(?<=9)[0]((?<=0)[0]))|(?<=3)[01]((?<=0)[21435]((?<=2)[012345789]|(?<=1)[102345678]|(?<=4)[0123456789]|(?<=3)[124056789]|(?<=5)[1023456789])|(?<=1)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[132]((?<=1)[103845679]|(?<=3)[10723468]|(?<=2)[1072435689])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[12345]((?<=1)[0123467]|(?<=2)[10234578]|(?<=3)[1023546789]|(?<=4)[12304679]|(?<=5)[9012345678])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[12574368]((?<=1)[123467890]|(?<=2)[1234506789]|(?<=5)[103645789]|(?<=7)[1023457689]|(?<=4)[120456789]|(?<=3)[102345689]|(?<=6)[123579]|(?<=8)[1])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[1234567]))|(?<=4)[01]((?<=0)[412389567]((?<=4)[234056798]|(?<=1)[1203456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=8)[120345678]|(?<=9)[1205689]|(?<=5)[91230567]|(?<=6)[01256897]|(?<=7)[03456789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12345]))|(?<=6)[01]((?<=0)[3124897]((?<=3)[0145236789]|(?<=1)[1023456789]|(?<=2)[1023456789]|(?<=4)[1023456879]|(?<=8)[0123456789]|(?<=9)[12307456]|(?<=7)[123045789])|(?<=1)[07]((?<=0)[0]|(?<=7)[0])))|(?<=4)[047138265]((?<=0)[01]((?<=0)[415236]((?<=4)[61238]|(?<=1)[1023456789]|(?<=5)[02457193]|(?<=2)[10234567]|(?<=3)[23405678]|(?<=6)[012345689])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[1]))|(?<=4)[01]((?<=0)[1423]((?<=1)[1259]|(?<=4)[279]|(?<=2)[1270368]|(?<=3)[4739])|(?<=1)[2]((?<=2)[1234]))|(?<=7)[05189]((?<=0)[2314]((?<=2)[10578]|(?<=3)[20459]|(?<=1)[1230456789]|(?<=4)[23])|(?<=5)[2]((?<=2)[12])|(?<=1)[2]((?<=2)[12])|(?<=8)[164532]((?<=1)[4]|(?<=6)[128345697]|(?<=4)[132]|(?<=5)[354]|(?<=3)[6473852]|(?<=2)[426])|(?<=9)[2]((?<=2)[1234]))|(?<=1)[01]((?<=0)[31524]((?<=3)[012346789]|(?<=1)[123456789]|(?<=5)[123456789]|(?<=2)[123567089]|(?<=4)[23456089])|(?<=1)[2]((?<=2)[123456]))|(?<=3)[01]((?<=0)[53412]((?<=5)[1238960]|(?<=3)[2056789]|(?<=4)[123457609]|(?<=1)[1203456789]|(?<=2)[124589])|(?<=1)[2]((?<=2)[123456]))|(?<=8)[01]((?<=0)[132]((?<=1)[1234578]|(?<=3)[1234]|(?<=2)[245607])|(?<=1)[2]((?<=2)[12345]))|(?<=2)[01]((?<=0)[2134]((?<=2)[012364578]|(?<=1)[1234567089]|(?<=3)[134520]|(?<=4)[1023456789])|(?<=1)[2]((?<=2)[1234]))|(?<=6)[01]((?<=0)[14325]((?<=1)[12340789]|(?<=4)[1023456789]|(?<=3)[164320579]|(?<=2)[130456789]|(?<=5)[1])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[132]((?<=1)[12057849]|(?<=3)[1230456789]|(?<=2)[12034567])|(?<=1)[0]((?<=0)[0])))|(?<=2)[9452630718]((?<=9)[01]((?<=0)[132]((?<=1)[0123546789]|(?<=3)[1]|(?<=2)[1203456789])|(?<=1)[2]((?<=2)[12]))|(?<=4)[01]((?<=0)[621354]((?<=6)[0139245678]|(?<=2)[1206345789]|(?<=1)[0173456289]|(?<=3)[0173456892]|(?<=5)[1203458679]|(?<=4)[0123456789])|(?<=1)[2]((?<=2)[123456789]))|(?<=5)[01]((?<=0)[13724865]((?<=1)[0123456789]|(?<=3)[0123456789]|(?<=7)[1023456879]|(?<=2)[0123456789]|(?<=4)[023456789]|(?<=8)[1203456789]|(?<=6)[10234589]|(?<=5)[1034256789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[123456]))|(?<=2)[01]((?<=0)[374216]((?<=3)[1230456789]|(?<=7)[0123456789]|(?<=4)[0145623]|(?<=2)[410835679]|(?<=1)[023451786]|(?<=6)[01369])|(?<=1)[0]((?<=0)[0]))|(?<=6)[0189]((?<=0)[2143]((?<=2)[0123456789]|(?<=1)[0142375689]|(?<=4)[0124536789]|(?<=3)[0123456789])|(?<=1)[0]((?<=0)[0])|(?<=8)[321546]((?<=3)[412356789]|(?<=2)[12345678]|(?<=1)[12345678]|(?<=5)[123457689]|(?<=4)[124356789]|(?<=6)[6123457])|(?<=9)[0]((?<=0)[0]))|(?<=3)[8901]((?<=8)[2841903765]((?<=2)[123457689]|(?<=8)[135046879]|(?<=4)[125386794]|(?<=1)[16734589]|(?<=9)[0123485967]|(?<=0)[125748]|(?<=3)[1237456]|(?<=7)[01346579]|(?<=6)[124578]|(?<=5)[12457])|(?<=9)[0]((?<=0)[0])|(?<=0)[10324]((?<=1)[0126345789]|(?<=0)[9]|(?<=3)[102345678]|(?<=2)[102345679]|(?<=4)[1])|(?<=1)[0]((?<=0)[0]))|(?<=0)[0189]((?<=0)[8240567193]((?<=8)[1023845679]|(?<=2)[0123456789]|(?<=4)[4106758293]|(?<=0)[483712569]|(?<=5)[7916034258]|(?<=6)[0123456789]|(?<=7)[9405673281]|(?<=1)[0123456789]|(?<=9)[1023456789]|(?<=3)[8912674035])|(?<=1)[23456]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[12])|(?<=8)[68425137]((?<=6)[4217635]|(?<=8)[621354]|(?<=4)[7216543]|(?<=2)[543162]|(?<=5)[3765142]|(?<=1)[361524]|(?<=3)[62354817]|(?<=7)[5432671])|(?<=9)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[241536]((?<=2)[0123456789]|(?<=4)[0123457689]|(?<=1)[0123456789]|(?<=5)[0162345789]|(?<=3)[102456789]|(?<=6)[1])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[142536]((?<=1)[0123456789]|(?<=4)[1023456789]|(?<=2)[1203456789]|(?<=5)[1023456789]|(?<=3)[0912345678]|(?<=6)[21])|(?<=1)[0]((?<=0)[0]))|(?<=8)[0189]((?<=0)[146725]((?<=1)[012345679]|(?<=4)[130567]|(?<=6)[12405689]|(?<=7)[1230456789]|(?<=2)[148]|(?<=5)[30])|(?<=1)[0]((?<=0)[0])|(?<=8)[4719635280]((?<=4)[126534]|(?<=7)[713569]|(?<=1)[123456789]|(?<=9)[91345867]|(?<=6)[1523468]|(?<=3)[12368]|(?<=5)[123456789]|(?<=2)[1238467]|(?<=8)[173456]|(?<=0)[12345])|(?<=9)[2]((?<=2)[12345])))|(?<=3)[4398251076]((?<=4)[01]((?<=0)[71]((?<=7)[0123647859]|(?<=1)[16580])|(?<=1)[72345]((?<=7)[0]|(?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[1]))|(?<=3)[01]((?<=0)[897425136]((?<=8)[01234567]|(?<=9)[0245879]|(?<=7)[02546789]|(?<=4)[1028345679]|(?<=2)[0123495678]|(?<=5)[1029345678]|(?<=1)[1035627849]|(?<=3)[1203456789]|(?<=6)[1])|(?<=1)[70]((?<=7)[0]|(?<=0)[0]))|(?<=9)[01]((?<=0)[41532]((?<=4)[0123456789]|(?<=1)[0123457896]|(?<=5)[712305648]|(?<=3)[6012345789]|(?<=2)[0712345689])|(?<=1)[0]((?<=0)[0]))|(?<=8)[01]((?<=0)[649157823]((?<=6)[1023475968]|(?<=4)[192350678]|(?<=9)[234875169]|(?<=1)[103567829]|(?<=5)[012935674]|(?<=7)[193745680]|(?<=8)[03265789]|(?<=2)[023758649]|(?<=3)[120345768])|(?<=1)[2]((?<=2)[123]))|(?<=2)[01]((?<=0)[2314]((?<=2)[126037]|(?<=3)[102348567]|(?<=1)[60342]|(?<=4)[1023465])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[3241]((?<=3)[12045678]|(?<=2)[1023456789]|(?<=4)[016234578]|(?<=1)[0123456789])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123]))|(?<=1)[01]((?<=0)[31452]((?<=3)[0123456789]|(?<=1)[120345687]|(?<=4)[013456789]|(?<=5)[1203456789]|(?<=2)[1420356789])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[213]((?<=2)[0123546789]|(?<=1)[03456]|(?<=3)[1204536789])|(?<=1)[234567]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[123456789]|(?<=7)[123456]))|(?<=7)[01]((?<=0)[145326]((?<=1)[0123467895]|(?<=4)[102345679]|(?<=5)[0123456789]|(?<=3)[0125689]|(?<=2)[10234689]|(?<=6)[0346789])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[12]))|(?<=6)[01]((?<=0)[2475163]((?<=2)[0234567891]|(?<=4)[58203674]|(?<=7)[70123568]|(?<=5)[70123456]|(?<=1)[1203456]|(?<=6)[143506]|(?<=3)[0123456])|(?<=1)[0]((?<=0)[0])))|(?<=0)[3420198765]((?<=3)[01]((?<=0)[4123]((?<=4)[0123456789]|(?<=1)[012346789]|(?<=2)[1023456789]|(?<=3)[1230456789])|(?<=1)[0]((?<=0)[0]))|(?<=4)[01]((?<=0)[123]((?<=1)[1024567389]|(?<=2)[012345679]|(?<=3)[1])|(?<=1)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[1243]((?<=1)[123045689]|(?<=2)[0123456]|(?<=4)[0123456789]|(?<=3)[012345789])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[2456731]((?<=2)[1023456789]|(?<=4)[1203456789]|(?<=5)[1234589]|(?<=6)[123056789]|(?<=7)[235678419]|(?<=3)[1023456789]|(?<=1)[0325789])|(?<=1)[123456789]((?<=1)[89]|(?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[123456789]|(?<=7)[123456789]|(?<=8)[123456789]|(?<=9)[123456789]))|(?<=1)[01]((?<=0)[213]((?<=2)[12304578]|(?<=1)[012456789]|(?<=3)[023456789])|(?<=1)[0]((?<=0)[0]))|(?<=9)[01]((?<=0)[316452798]((?<=3)[2315607894]|(?<=1)[2801345679]|(?<=6)[7908123456]|(?<=4)[254780139]|(?<=5)[0123456789]|(?<=2)[8102346579]|(?<=7)[1023458679]|(?<=9)[0123457689]|(?<=8)[019238564])|(?<=1)[237]((?<=2)[123456789]|(?<=3)[1234]|(?<=7)[0]))|(?<=8)[01]((?<=0)[3412]((?<=3)[102689]|(?<=4)[02456789]|(?<=1)[0162578]|(?<=2)[1230456789])|(?<=1)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[24135]((?<=2)[0123456789]|(?<=4)[103456789]|(?<=1)[0123456789]|(?<=3)[0123456789]|(?<=5)[12])|(?<=1)[0]((?<=0)[0]))|(?<=6)[01]((?<=0)[83461572]((?<=8)[1349]|(?<=3)[13405689]|(?<=4)[234156079]|(?<=6)[12034569]|(?<=1)[02469]|(?<=5)[0345679]|(?<=7)[3]|(?<=2)[123456789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12345]))|(?<=5)[01]((?<=0)[213]((?<=2)[102345689]|(?<=1)[123456078]|(?<=3)[124059])|(?<=1)[0]((?<=0)[0])))|(?<=1)[6897254301]((?<=6)[01]((?<=0)[1324]((?<=1)[1234560789]|(?<=3)[612034589]|(?<=2)[1203456789]|(?<=4)[1234056789])|(?<=1)[23456]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[1234567]))|(?<=8)[01]((?<=0)[321]((?<=3)[0513427689]|(?<=2)[061273584]|(?<=1)[0217345689])|(?<=1)[0]((?<=0)[0]))|(?<=9)[01]((?<=0)[321]((?<=3)[132478]|(?<=2)[1058]|(?<=1)[123450678])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[1234567]))|(?<=7)[01]((?<=0)[23145]((?<=2)[108234756]|(?<=3)[123045789]|(?<=1)[12457039]|(?<=4)[153027648]|(?<=5)[17426835])|(?<=1)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[72153468]((?<=7)[1042356789]|(?<=2)[1023456789]|(?<=1)[0123456789]|(?<=5)[10345628]|(?<=3)[1203456789]|(?<=4)[0123456789]|(?<=6)[012345689]|(?<=8)[10234789])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[1624537]((?<=1)[102356789]|(?<=6)[0123456789]|(?<=2)[1206345789]|(?<=4)[7120345689]|(?<=5)[0123649578]|(?<=3)[1203456789]|(?<=7)[0123456789])|(?<=1)[2]((?<=2)[12]))|(?<=4)[01]((?<=0)[42135]((?<=4)[1062435789]|(?<=2)[2015364]|(?<=1)[0143285679]|(?<=3)[012345679]|(?<=5)[123045789])|(?<=1)[0]((?<=0)[0]))|(?<=3)[8901]((?<=8)[617429583]((?<=6)[12463578]|(?<=1)[1264578]|(?<=7)[12843567]|(?<=4)[134578]|(?<=2)[134]|(?<=9)[13456789]|(?<=5)[13456]|(?<=8)[12783456]|(?<=3)[6135])|(?<=9)[0]((?<=0)[0])|(?<=0)[23416]((?<=2)[1902364578]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=1)[210789]|(?<=6)[0])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[167489253]((?<=1)[1023456789]|(?<=6)[0123456789]|(?<=7)[0123495678]|(?<=4)[01623458]|(?<=8)[0123456978]|(?<=9)[12034589]|(?<=2)[02345689]|(?<=5)[1203459678]|(?<=3)[124056798])|(?<=1)[2345]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456]))|(?<=1)[01]((?<=0)[12]((?<=1)[012345678]|(?<=2)[023456789])|(?<=1)[0]((?<=0)[0])))|(?<=9)[235480761]((?<=2)[10]((?<=1)[0]((?<=0)[0])|(?<=0)[123]((?<=1)[0123456789]|(?<=2)[1023456789]|(?<=3)[1]))|(?<=3)[01]((?<=0)[1]((?<=1)[0123456789])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[2314]((?<=2)[01254789]|(?<=3)[1234056789]|(?<=1)[1234560789]|(?<=4)[1023456789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[1]))|(?<=4)[01]((?<=0)[1]((?<=1)[1023456789])|(?<=1)[0]((?<=0)[0]))|(?<=8)[01]((?<=0)[723564]((?<=7)[0123456789]|(?<=2)[012356789]|(?<=3)[0123456789]|(?<=5)[130456789]|(?<=6)[0123456789]|(?<=4)[0123456789])|(?<=1)[23456]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[12345678]))|(?<=0)[01]((?<=0)[21345]((?<=2)[1023456789]|(?<=1)[0123456789]|(?<=3)[0123456789]|(?<=4)[1230456789]|(?<=5)[1])|(?<=1)[2345]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[1]))|(?<=7)[01]((?<=0)[1]((?<=1)[1230456789])|(?<=1)[0]((?<=0)[0]))|(?<=6)[01]((?<=0)[1]((?<=1)[1203456789])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[123]((?<=1)[1234567809]|(?<=2)[1234567809]|(?<=3)[1])|(?<=1)[0]((?<=0)[0])))|(?<=5)[2087546193]((?<=2)[01]((?<=0)[3124]((?<=3)[1235678]|(?<=1)[1068945]|(?<=2)[16924578]|(?<=4)[3145678])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[132456]((?<=1)[23489]|(?<=3)[12345869]|(?<=2)[82356]|(?<=4)[1]|(?<=5)[012345689]|(?<=6)[2305678])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[12345]))|(?<=8)[01]((?<=0)[34125]((?<=3)[134678]|(?<=4)[2345]|(?<=1)[1249570]|(?<=2)[234560]|(?<=5)[1345])|(?<=1)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[231]((?<=2)[0123578]|(?<=3)[41203678]|(?<=1)[46])|(?<=1)[2]((?<=2)[12345678]))|(?<=5)[01]((?<=0)[125436]((?<=1)[12569]|(?<=2)[235107]|(?<=5)[14]|(?<=4)[125709]|(?<=3)[102345689]|(?<=6)[4])|(?<=1)[0]((?<=0)[0]))|(?<=4)[01]((?<=0)[123]((?<=1)[1453602]|(?<=2)[136789]|(?<=3)[358])|(?<=1)[0]((?<=0)[0]))|(?<=6)[01]((?<=0)[3142]((?<=3)[123540678]|(?<=1)[12790]|(?<=4)[0123568]|(?<=2)[120589])|(?<=1)[2]((?<=2)[12345678]))|(?<=1)[01]((?<=0)[231]((?<=2)[408]|(?<=3)[156794]|(?<=1)[13056789])|(?<=1)[0]((?<=0)[0]))|(?<=9)[01]((?<=0)[21]((?<=2)[514]|(?<=1)[536])|(?<=1)[0]((?<=0)[0]))|(?<=3)[01]((?<=0)[2431]((?<=2)[12345670]|(?<=4)[10235789]|(?<=3)[145607]|(?<=1)[192345678])|(?<=1)[0]((?<=0)[0])))))$"), NO: new RegExp("^([0123456789]((?<=0)[0123456789]((?<=0)[01234568]((?<=0)[1]|(?<=1)[058]|(?<=2)[1468]|(?<=3)[012347]|(?<=4)[05678]|(?<=5)[05]|(?<=6)[0]|(?<=8)[1])|(?<=1)[0123456789]((?<=0)[12345679]|(?<=1)[0123456789]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[0]|(?<=5)[012345789]|(?<=6)[012456789]|(?<=7)[0123456789]|(?<=8)[012345678]|(?<=9)[01234568])|(?<=2)[01345678]((?<=0)[123478]|(?<=1)[12345678]|(?<=3)[0]|(?<=4)[047]|(?<=5)[0123456789]|(?<=6)[02345678]|(?<=7)[0123456789]|(?<=8)[0123467])|(?<=3)[012345678]((?<=0)[123456789]|(?<=1)[13456789]|(?<=2)[3]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123])|(?<=4)[012456789]((?<=0)[1234569]|(?<=1)[01235]|(?<=2)[1234]|(?<=4)[0125]|(?<=5)[012456789]|(?<=6)[012345789]|(?<=7)[023456789]|(?<=8)[0123456789]|(?<=9)[0123456])|(?<=5)[012456789]((?<=0)[123456789]|(?<=1)[01235678]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345678])|(?<=6)[01256789]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[012346]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[01234])|(?<=7)[0156789]((?<=0)[125]|(?<=1)[02]|(?<=5)[012345678]|(?<=6)[0345678]|(?<=7)[0123456789]|(?<=8)[123456789]|(?<=9)[01])|(?<=8)[0456789]((?<=0)[1567]|(?<=4)[0]|(?<=5)[012345678]|(?<=6)[01234]|(?<=7)[01234567]|(?<=8)[01234]|(?<=9)[01])|(?<=9)[015678]((?<=0)[1234578]|(?<=1)[345]|(?<=5)[0123456789]|(?<=6)[023489]|(?<=7)[012356789]|(?<=8)[012345678]))|(?<=1)[0123456789]((?<=0)[015678]((?<=0)[1356789]|(?<=1)[1]|(?<=5)[123456]|(?<=6)[12345789]|(?<=7)[1]|(?<=8)[1346789])|(?<=1)[015678]((?<=0)[1289]|(?<=1)[2]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[026789]|(?<=8)[1245789])|(?<=2)[0156789]((?<=0)[13457]|(?<=1)[45]|(?<=5)[0123456789]|(?<=6)[236]|(?<=7)[01234589]|(?<=8)[13456]|(?<=9)[0145])|(?<=3)[0123456789]((?<=0)[0123456789]|(?<=1)[12346789]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[0124689]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[12356789]|(?<=8)[013456789]|(?<=9)[012345679])|(?<=4)[012345678]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0123459]|(?<=3)[012345]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[123456789]|(?<=7)[0123456789]|(?<=8)[012345678])|(?<=5)[0123456789]((?<=0)[1234689]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345]|(?<=5)[056]|(?<=6)[01]|(?<=7)[0]|(?<=8)[01]|(?<=9)[012346789])|(?<=6)[0123456789]((?<=0)[12456789]|(?<=1)[023456789]|(?<=2)[012345689]|(?<=3)[02346789]|(?<=4)[0123]|(?<=5)[01345789]|(?<=6)[1234567]|(?<=7)[01235689]|(?<=8)[0234]|(?<=9)[02])|(?<=7)[0123456789]((?<=0)[123456789]|(?<=1)[01234589]|(?<=2)[01234567]|(?<=3)[034589]|(?<=4)[023567]|(?<=5)[123479]|(?<=6)[0123456789]|(?<=7)[126789]|(?<=8)[123456789]|(?<=9)[01234689])|(?<=8)[012356789]((?<=0)[123456789]|(?<=1)[123456]|(?<=2)[013578]|(?<=3)[0123]|(?<=5)[0129]|(?<=6)[0167]|(?<=7)[0158]|(?<=8)[0]|(?<=9)[01234])|(?<=9)[01234567]((?<=0)[013]|(?<=1)[012467]|(?<=2)[013456789]|(?<=3)[01]|(?<=4)[01]|(?<=5)[014]|(?<=6)[013]|(?<=7)[01]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[013456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456]|(?<=4)[01]|(?<=5)[012345678]|(?<=6)[01236789]|(?<=7)[012346]|(?<=8)[01]|(?<=9)[01234])|(?<=1)[0123567]((?<=0)[01]|(?<=1)[046]|(?<=2)[013]|(?<=3)[0234]|(?<=5)[01]|(?<=6)[01234567]|(?<=7)[0])|(?<=2)[012345678]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[034567]|(?<=3)[01235]|(?<=4)[01]|(?<=5)[16]|(?<=6)[01456]|(?<=7)[01]|(?<=8)[03])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[01456]|(?<=5)[0135]|(?<=6)[0145]|(?<=7)[23]|(?<=8)[0123456789]|(?<=9)[01])|(?<=4)[012345678]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0245678]|(?<=4)[01234678]|(?<=5)[01]|(?<=6)[01]|(?<=7)[678]|(?<=8)[0145678])|(?<=5)[014568]((?<=0)[01]|(?<=1)[023]|(?<=4)[0124]|(?<=5)[0125]|(?<=6)[01]|(?<=8)[0124])|(?<=6)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[12346789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[012345678]|(?<=9)[0345])|(?<=7)[1234567]((?<=1)[12345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[023]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[01257]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[013478]|(?<=6)[0123467]|(?<=7)[09]|(?<=8)[012]|(?<=9)[03])|(?<=9)[012345678]((?<=0)[0179]|(?<=1)[078]|(?<=2)[039]|(?<=3)[03679]|(?<=4)[03]|(?<=5)[02349]|(?<=6)[0567]|(?<=7)[23457]|(?<=8)[5]))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[012345678]|(?<=5)[01345678]|(?<=6)[013456]|(?<=7)[01234567]|(?<=8)[0123456789]|(?<=9)[0125])|(?<=1)[0123456789]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[12345789]|(?<=4)[0123458]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[12345679])|(?<=2)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[123456789]|(?<=6)[012345789]|(?<=7)[014567]|(?<=8)[01245]|(?<=9)[0124567])|(?<=3)[0234567]((?<=0)[0123]|(?<=2)[012]|(?<=3)[01]|(?<=4)[012]|(?<=5)[015789]|(?<=6)[01]|(?<=7)[01])|(?<=4)[01234789]((?<=0)[123456789]|(?<=1)[01234]|(?<=2)[015678]|(?<=3)[01]|(?<=4)[012]|(?<=7)[012456789]|(?<=8)[012345]|(?<=9)[0])|(?<=5)[0123456789]((?<=0)[12347]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456]|(?<=5)[01]|(?<=6)[01]|(?<=7)[015679]|(?<=8)[018]|(?<=9)[35])|(?<=6)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0124]|(?<=4)[678]|(?<=5)[0268]|(?<=6)[0156]|(?<=7)[123456789]|(?<=8)[0134]|(?<=9)[0127])|(?<=7)[0123456789]((?<=0)[123457]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012346789]|(?<=5)[03]|(?<=6)[06]|(?<=7)[02]|(?<=8)[0135789]|(?<=9)[012345689])|(?<=8)[0123456789]((?<=0)[012345]|(?<=1)[012]|(?<=2)[05]|(?<=3)[0123456]|(?<=4)[01489]|(?<=5)[02345]|(?<=6)[4]|(?<=7)[0]|(?<=8)[02345678]|(?<=9)[0135])|(?<=9)[012345679]((?<=0)[123456]|(?<=1)[0123456789]|(?<=2)[0124589]|(?<=3)[013679]|(?<=4)[012346789]|(?<=5)[0]|(?<=6)[012567]|(?<=7)[0]|(?<=9)[13456789]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[123456]|(?<=4)[123456789]|(?<=5)[0123456789]|(?<=6)[38]|(?<=7)[01236789]|(?<=8)[123456789]|(?<=9)[0123456789])|(?<=1)[0123456789]((?<=0)[02345]|(?<=1)[09]|(?<=2)[01346789]|(?<=3)[0479]|(?<=4)[68]|(?<=5)[0234689]|(?<=6)[0134789]|(?<=7)[034]|(?<=8)[0127]|(?<=9)[8])|(?<=2)[03456789]((?<=0)[0189]|(?<=3)[034579]|(?<=4)[04]|(?<=5)[0]|(?<=6)[0245]|(?<=7)[02456]|(?<=8)[0]|(?<=9)[1456789])|(?<=3)[0123456789]((?<=0)[126789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345678]|(?<=6)[012345789]|(?<=7)[012345689]|(?<=8)[014579]|(?<=9)[0123456789])|(?<=4)[02346789]((?<=0)[01234567]|(?<=2)[0]|(?<=3)[24689]|(?<=4)[013]|(?<=6)[0235]|(?<=7)[3]|(?<=8)[0456]|(?<=9)[012])|(?<=5)[0123456789]((?<=0)[1234789]|(?<=1)[345679]|(?<=2)[012345689]|(?<=3)[2456]|(?<=4)[014]|(?<=5)[0123478]|(?<=6)[03]|(?<=7)[5679]|(?<=8)[068]|(?<=9)[0567])|(?<=6)[0123456789]((?<=0)[45689]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[678]|(?<=6)[123456]|(?<=7)[0123456789]|(?<=8)[123456789]|(?<=9)[13456789])|(?<=7)[0123456789]((?<=0)[01235678]|(?<=1)[5]|(?<=2)[0145]|(?<=3)[03457]|(?<=4)[12456789]|(?<=5)[456]|(?<=6)[068]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012345])|(?<=8)[0123456789]((?<=0)[123489]|(?<=1)[025678]|(?<=2)[01234578]|(?<=3)[024689]|(?<=4)[12346789]|(?<=5)[123456789]|(?<=6)[234589]|(?<=7)[06789]|(?<=8)[456789]|(?<=9)[123468])|(?<=9)[01235789]((?<=0)[0123459]|(?<=1)[0256]|(?<=2)[01]|(?<=3)[4]|(?<=5)[0123567]|(?<=7)[1234]|(?<=8)[05]|(?<=9)[034]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[3456789]|(?<=1)[0123456789]|(?<=2)[012]|(?<=3)[123456789]|(?<=4)[1235]|(?<=5)[23456789]|(?<=6)[378]|(?<=7)[235]|(?<=8)[129]|(?<=9)[346789])|(?<=1)[012345678]((?<=0)[1456789]|(?<=1)[13456789]|(?<=2)[124]|(?<=3)[0124567]|(?<=4)[12345678]|(?<=5)[12345]|(?<=6)[012345]|(?<=7)[012346789]|(?<=8)[34])|(?<=2)[012345689]((?<=0)[01236789]|(?<=1)[012345678]|(?<=2)[123456789]|(?<=3)[01256789]|(?<=4)[34]|(?<=5)[1234789]|(?<=6)[01234578]|(?<=8)[123456]|(?<=9)[139])|(?<=3)[0123456789]((?<=0)[0123456789]|(?<=1)[014589]|(?<=2)[1235679]|(?<=3)[134567]|(?<=4)[123567]|(?<=5)[034578]|(?<=6)[0356]|(?<=7)[1489]|(?<=8)[0124578]|(?<=9)[2346789])|(?<=4)[0123456789]((?<=0)[12346789]|(?<=1)[0123456789]|(?<=2)[0378]|(?<=3)[07]|(?<=4)[034579]|(?<=5)[012345789]|(?<=6)[02345]|(?<=7)[023456]|(?<=8)[046]|(?<=9)[89])|(?<=5)[0123456789]((?<=0)[123456789]|(?<=1)[12456789]|(?<=2)[1235789]|(?<=3)[12345678]|(?<=4)[12456789]|(?<=5)[014569]|(?<=6)[012356789]|(?<=7)[04568]|(?<=8)[02345689]|(?<=9)[0134568])|(?<=6)[01234589]((?<=0)[01245]|(?<=1)[024]|(?<=2)[06789]|(?<=3)[0123567]|(?<=4)[0123456789]|(?<=5)[0123]|(?<=8)[0357]|(?<=9)[03456])|(?<=7)[012345678]((?<=0)[0123456789]|(?<=1)[01234589]|(?<=2)[0123456789]|(?<=3)[012346]|(?<=4)[1235679]|(?<=5)[012]|(?<=6)[03]|(?<=7)[0356789]|(?<=8)[012345678])|(?<=8)[0123456789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012345679]|(?<=3)[012345678]|(?<=4)[1345789]|(?<=5)[12345789]|(?<=6)[123456789]|(?<=7)[236789]|(?<=8)[146789]|(?<=9)[23569])|(?<=9)[013456789]((?<=0)[234678]|(?<=1)[123456789]|(?<=3)[156789]|(?<=4)[1378]|(?<=5)[1234567]|(?<=6)[01234567]|(?<=7)[0789]|(?<=8)[1234567]|(?<=9)[134]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[01234568]|(?<=3)[045679]|(?<=4)[045678]|(?<=5)[0245789]|(?<=6)[02345789]|(?<=7)[05689]|(?<=8)[023456789]|(?<=9)[01245689])|(?<=1)[0123456789]((?<=0)[0123456]|(?<=1)[0]|(?<=2)[01]|(?<=3)[3489]|(?<=4)[01234679]|(?<=5)[0123456]|(?<=6)[0156]|(?<=7)[014]|(?<=8)[34]|(?<=9)[06])|(?<=2)[0123456789]((?<=0)[01]|(?<=1)[0123456789]|(?<=2)[0234]|(?<=3)[089]|(?<=4)[09]|(?<=5)[059]|(?<=6)[0345]|(?<=7)[02]|(?<=8)[0123567]|(?<=9)[012345678])|(?<=3)[01235689]((?<=0)[01]|(?<=1)[05]|(?<=2)[0]|(?<=3)[019]|(?<=5)[0]|(?<=6)[01345]|(?<=8)[56789]|(?<=9)[0123456789])|(?<=4)[0123456789]((?<=0)[12345789]|(?<=1)[012345689]|(?<=2)[012359]|(?<=3)[013456]|(?<=4)[034567]|(?<=5)[02345678]|(?<=6)[012]|(?<=7)[01256]|(?<=8)[01]|(?<=9)[0349])|(?<=5)[0123479]((?<=0)[12346789]|(?<=1)[01245678]|(?<=2)[012345789]|(?<=3)[012389]|(?<=4)[6789]|(?<=7)[01]|(?<=9)[01])|(?<=6)[012345789]((?<=0)[01]|(?<=1)[01234]|(?<=2)[023789]|(?<=3)[01236789]|(?<=4)[012345]|(?<=5)[02356789]|(?<=7)[0145]|(?<=8)[036789]|(?<=9)[034789])|(?<=7)[0123456789]((?<=0)[0123478]|(?<=1)[013456789]|(?<=2)[136789]|(?<=3)[047]|(?<=4)[01]|(?<=5)[01]|(?<=6)[13]|(?<=7)[012346789]|(?<=8)[123489]|(?<=9)[0123456789])|(?<=8)[0123456789]((?<=0)[0123456789]|(?<=1)[012345789]|(?<=2)[01236789]|(?<=3)[01]|(?<=4)[1345789]|(?<=5)[123456789]|(?<=6)[136789]|(?<=7)[0123456789]|(?<=8)[1245678]|(?<=9)[1345689])|(?<=9)[012456789]((?<=0)[012356789]|(?<=1)[023456789]|(?<=2)[146789]|(?<=4)[012467]|(?<=5)[13789]|(?<=6)[1346789]|(?<=7)[135678]|(?<=8)[02345678]|(?<=9)[134567]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[3456]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[6789]|(?<=7)[0124589]|(?<=8)[012389]|(?<=9)[123789])|(?<=1)[0123456789]((?<=0)[015]|(?<=1)[01234569]|(?<=2)[015679]|(?<=3)[0]|(?<=4)[02]|(?<=5)[012369]|(?<=6)[0456789]|(?<=7)[045678]|(?<=8)[01]|(?<=9)[04])|(?<=2)[0123456789]((?<=0)[01367]|(?<=1)[123]|(?<=2)[13478]|(?<=3)[1245689]|(?<=4)[01234567]|(?<=5)[025679]|(?<=6)[0134678]|(?<=7)[034]|(?<=8)[02456789]|(?<=9)[0158])|(?<=3)[0123456789]((?<=0)[0123]|(?<=1)[05689]|(?<=2)[0179]|(?<=3)[1234568]|(?<=4)[01235]|(?<=5)[01345678]|(?<=6)[1]|(?<=7)[0245]|(?<=8)[034678]|(?<=9)[123789])|(?<=4)[0123456789]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[23456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345678])|(?<=5)[0123456789]((?<=0)[0123456789]|(?<=1)[0123479]|(?<=2)[059]|(?<=3)[013]|(?<=4)[019]|(?<=5)[01]|(?<=6)[0236]|(?<=7)[0]|(?<=8)[0134]|(?<=9)[016])|(?<=6)[01235679]((?<=0)[0123456789]|(?<=1)[09]|(?<=2)[02349]|(?<=3)[01234]|(?<=5)[012345678]|(?<=6)[01]|(?<=7)[012]|(?<=9)[01])|(?<=7)[012345679]((?<=0)[12345789]|(?<=1)[012345678]|(?<=2)[4569]|(?<=3)[023456789]|(?<=4)[0124568]|(?<=5)[01]|(?<=6)[01]|(?<=7)[017]|(?<=9)[01567])|(?<=8)[01256789]((?<=0)[0123458]|(?<=1)[0789]|(?<=2)[0123]|(?<=5)[6]|(?<=6)[0349]|(?<=7)[0134678]|(?<=8)[1245]|(?<=9)[0123678])|(?<=9)[02456789]((?<=0)[012]|(?<=2)[4]|(?<=4)[014]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0139]|(?<=8)[012356]|(?<=9)[0345]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[01234569]|(?<=2)[012356789]|(?<=3)[0178]|(?<=4)[1789]|(?<=5)[0678]|(?<=6)[2345]|(?<=7)[01234569]|(?<=8)[456789]|(?<=9)[123456789])|(?<=1)[0123456789]((?<=0)[0238]|(?<=1)[048]|(?<=2)[08]|(?<=3)[04568]|(?<=4)[0569]|(?<=5)[01789]|(?<=6)[018]|(?<=7)[089]|(?<=8)[123456789]|(?<=9)[0235678])|(?<=2)[012356789]((?<=0)[012356789]|(?<=1)[014589]|(?<=2)[06]|(?<=3)[0123]|(?<=5)[012356]|(?<=6)[0146]|(?<=7)[0134568]|(?<=8)[1356789]|(?<=9)[0478])|(?<=3)[012456789]((?<=0)[0159]|(?<=1)[01234567]|(?<=2)[0234568]|(?<=4)[0]|(?<=5)[27]|(?<=6)[01]|(?<=7)[0234678]|(?<=8)[024578]|(?<=9)[0238])|(?<=4)[0123456789]((?<=0)[0123456789]|(?<=1)[01234569]|(?<=2)[68]|(?<=3)[0289]|(?<=4)[57]|(?<=5)[059]|(?<=6)[59]|(?<=7)[05]|(?<=8)[0134589]|(?<=9)[3])|(?<=5)[012349]((?<=0)[123456789]|(?<=1)[023456789]|(?<=2)[0123]|(?<=3)[0134569]|(?<=4)[036]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[1234789]|(?<=1)[013456789]|(?<=2)[246]|(?<=3)[08]|(?<=4)[01234678]|(?<=5)[12456789]|(?<=6)[013456]|(?<=7)[2]|(?<=8)[12345]|(?<=9)[123456])|(?<=7)[0234567]((?<=0)[01]|(?<=2)[0345]|(?<=3)[0235]|(?<=4)[023]|(?<=5)[0234]|(?<=6)[246]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[0123459]|(?<=1)[3]|(?<=2)[07]|(?<=3)[0]|(?<=4)[24]|(?<=5)[0124]|(?<=6)[015]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0127])|(?<=9)[012678]((?<=0)[012456789]|(?<=1)[0]|(?<=2)[012]|(?<=6)[01]|(?<=7)[67]|(?<=8)[123456]))|(?<=9)[0123456789]((?<=0)[0123456]((?<=0)[6789]|(?<=1)[0123456789]|(?<=2)[0123479]|(?<=3)[0478]|(?<=4)[023569]|(?<=5)[05679]|(?<=6)[02489])|(?<=1)[0123456789]((?<=0)[0123456789]|(?<=1)[089]|(?<=2)[08]|(?<=3)[01245678]|(?<=4)[0123456789]|(?<=5)[123456789]|(?<=6)[1239]|(?<=7)[0134568]|(?<=8)[01245679]|(?<=9)[023457])|(?<=2)[456789]((?<=4)[0]|(?<=5)[123456789]|(?<=6)[012356789]|(?<=7)[0123456789]|(?<=8)[012345678]|(?<=9)[01234689])|(?<=3)[012356789]((?<=0)[023456789]|(?<=1)[0156]|(?<=2)[12569]|(?<=3)[456]|(?<=5)[0578]|(?<=6)[05]|(?<=7)[02369]|(?<=8)[012456789]|(?<=9)[1235])|(?<=4)[012345789]((?<=0)[23456789]|(?<=1)[14569]|(?<=2)[034567]|(?<=3)[069]|(?<=4)[012345678]|(?<=5)[013456]|(?<=7)[01569]|(?<=8)[0123456789]|(?<=9)[678])|(?<=5)[01234589]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[123678]|(?<=4)[015]|(?<=5)[02]|(?<=8)[0234567]|(?<=9)[0135])|(?<=6)[0125679]((?<=0)[01239]|(?<=1)[01256]|(?<=2)[014]|(?<=5)[017]|(?<=6)[4]|(?<=7)[02]|(?<=9)[012])|(?<=7)[0123456789]((?<=0)[09]|(?<=1)[01234567]|(?<=2)[2]|(?<=3)[01234567]|(?<=4)[02]|(?<=5)[01]|(?<=6)[0234568]|(?<=7)[01235]|(?<=8)[2]|(?<=9)[0])|(?<=8)[0124]((?<=0)[01234]|(?<=1)[015]|(?<=2)[06]|(?<=4)[0123456])|(?<=9)[01235689]((?<=0)[01]|(?<=1)[0124567]|(?<=2)[56]|(?<=3)[05]|(?<=5)[01]|(?<=6)[0]|(?<=8)[012]|(?<=9)[01]))))$"), - US: new RegExp("^([0123456789]((?<=0)[012345678]((?<=0)[6789]((?<=6)[0123456789]((?<=0)[1236]|(?<=1)[01267]|(?<=2)[2347]|(?<=3)[1678]|(?<=4)[167]|(?<=5)[02369]|(?<=6)[02479]|(?<=7)[04678]|(?<=8)[023578]|(?<=9)[02348])|(?<=7)[0123456789]((?<=0)[3457]|(?<=1)[456789]|(?<=2)[035789]|(?<=3)[015689]|(?<=4)[015]|(?<=5)[147]|(?<=6)[5679]|(?<=7)[123578]|(?<=8)[02346]|(?<=9)[145])|(?<=8)[02345]((?<=0)[2]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01])|(?<=9)[012345678]((?<=0)[1679]|(?<=1)[123578]|(?<=2)[0134567]|(?<=3)[4]|(?<=4)[9]|(?<=5)[0123679]|(?<=6)[0125689]|(?<=7)[169]|(?<=8)[2357]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[0123]|(?<=2)[026789]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[03467]|(?<=6)[023689]|(?<=7)[01234579]|(?<=8)[01234589]|(?<=9)[2345678])|(?<=1)[01245]((?<=0)[3456789]|(?<=1)[89]|(?<=2)[89]|(?<=4)[4]|(?<=5)[1])|(?<=2)[0234567]((?<=0)[1]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[023457]|(?<=5)[3456789]|(?<=6)[02467]|(?<=7)[0])|(?<=3)[0345678]((?<=0)[1]|(?<=3)[01789]|(?<=4)[01234679]|(?<=5)[0145]|(?<=6)[04678]|(?<=7)[035689]|(?<=8)[0])|(?<=4)[234567]((?<=2)[0]|(?<=3)[012468]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[023489]|(?<=7)[345])|(?<=5)[0123456789]((?<=0)[134567]|(?<=1)[05689]|(?<=2)[01234579]|(?<=3)[124567]|(?<=4)[01235]|(?<=5)[0]|(?<=6)[0124689]|(?<=7)[01]|(?<=8)[1358]|(?<=9)[0])|(?<=6)[01]((?<=0)[23456789]|(?<=1)[012])|(?<=7)[01234567]((?<=0)[12]|(?<=1)[89]|(?<=2)[01]|(?<=3)[01]|(?<=4)[01256789]|(?<=5)[2467]|(?<=6)[0]|(?<=7)[023568])|(?<=8)[0123456789]((?<=0)[13]|(?<=1)[0]|(?<=2)[1467]|(?<=3)[02345]|(?<=4)[01345]|(?<=5)[0124]|(?<=6)[02347]|(?<=7)[69]|(?<=8)[067]|(?<=9)[0])|(?<=9)[012345678]((?<=0)[1245678]|(?<=1)[35]|(?<=2)[1239]|(?<=3)[078]|(?<=4)[0459]|(?<=5)[012]|(?<=6)[0569]|(?<=7)[0]|(?<=8)[2345]))|(?<=2)[0123456789]((?<=0)[123456789]((?<=1)[9]|(?<=2)[156]|(?<=3)[0258]|(?<=4)[3578]|(?<=5)[02346]|(?<=6)[1267]|(?<=7)[12]|(?<=8)[1]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[89]|(?<=1)[01345689]|(?<=2)[012456789]|(?<=3)[012345689]|(?<=4)[01234589]|(?<=5)[0125]|(?<=6)[39]|(?<=7)[016]|(?<=8)[04689]|(?<=9)[019])|(?<=2)[01]((?<=0)[35]|(?<=1)[05])|(?<=3)[02345678]((?<=0)[12]|(?<=2)[245]|(?<=3)[02389]|(?<=4)[1367]|(?<=5)[01679]|(?<=6)[04678]|(?<=7)[059]|(?<=8)[2])|(?<=4)[2456789]((?<=2)[01]|(?<=4)[56]|(?<=5)[123789]|(?<=6)[01245678]|(?<=7)[2468]|(?<=8)[12]|(?<=9)[234])|(?<=5)[345678]((?<=3)[2456789]|(?<=4)[023]|(?<=5)[346789]|(?<=6)[12348]|(?<=7)[156]|(?<=8)[4])|(?<=6)[034567]((?<=0)[1]|(?<=3)[01235789]|(?<=4)[123456789]|(?<=5)[023579]|(?<=6)[034678]|(?<=7)[01235])|(?<=7)[012346789]((?<=0)[23]|(?<=1)[35789]|(?<=2)[013456]|(?<=3)[89]|(?<=4)[0345678]|(?<=6)[0234679]|(?<=7)[0179]|(?<=8)[0]|(?<=9)[01])|(?<=8)[0123456789]((?<=0)[246789]|(?<=1)[2345678]|(?<=2)[23456789]|(?<=3)[012356789]|(?<=4)[012]|(?<=5)[2789]|(?<=6)[01345]|(?<=7)[12345689]|(?<=8)[125689]|(?<=9)[1234568])|(?<=9)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[01]))|(?<=3)[0123456789]((?<=0)[345678]((?<=3)[1234678]|(?<=4)[23456789]|(?<=5)[123457]|(?<=6)[0234]|(?<=7)[01679]|(?<=8)[2467])|(?<=1)[01]((?<=0)[123469]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[5678]|(?<=2)[012345679]|(?<=3)[0134578]|(?<=4)[01234569]|(?<=5)[13456789]|(?<=6)[01234689]|(?<=7)[35689]|(?<=8)[012457]|(?<=9)[013])|(?<=3)[0]((?<=0)[1347])|(?<=4)[34567]((?<=3)[1]|(?<=4)[0123456789]|(?<=5)[0125678]|(?<=6)[124567]|(?<=7)[0])|(?<=5)[6789]((?<=6)[1]|(?<=7)[04569]|(?<=8)[01234568]|(?<=9)[023578])|(?<=6)[0]((?<=0)[12345789])|(?<=7)[45678]((?<=4)[01358]|(?<=5)[01235]|(?<=6)[568]|(?<=7)[013479]|(?<=8)[01245])|(?<=8)[0123456789]((?<=0)[19]|(?<=1)[012346789]|(?<=2)[034567]|(?<=3)[02356789]|(?<=4)[012456789]|(?<=5)[012345678]|(?<=6)[01245789]|(?<=7)[0123458]|(?<=8)[234567]|(?<=9)[047])|(?<=9)[01]((?<=0)[123456789]|(?<=1)[01]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[1235689]|(?<=1)[01579]|(?<=2)[012479]|(?<=3)[02789]|(?<=4)[01236789]|(?<=5)[01567]|(?<=6)[1234689]|(?<=7)[123469]|(?<=8)[345678]|(?<=9)[0123567])|(?<=1)[01]((?<=0)[12356789]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[0679]|(?<=2)[012467]|(?<=3)[146789]|(?<=4)[0]|(?<=5)[023456789]|(?<=6)[013578]|(?<=7)[01456]|(?<=8)[01245679]|(?<=9)[024])|(?<=3)[3456]((?<=3)[0]|(?<=4)[12456789]|(?<=5)[012345789]|(?<=6)[034])|(?<=4)[0123456789]((?<=0)[168]|(?<=1)[0123456789]|(?<=2)[1246789]|(?<=3)[01458]|(?<=4)[123489]|(?<=5)[01345679]|(?<=6)[0123489]|(?<=7)[12345689]|(?<=8)[15789]|(?<=9)[0123567])|(?<=5)[34567]((?<=3)[05789]|(?<=4)[13478]|(?<=5)[134568]|(?<=6)[2348]|(?<=7)[012345689])|(?<=6)[0123456789]((?<=0)[5679]|(?<=1)[1234679]|(?<=2)[2345678]|(?<=3)[0145]|(?<=4)[0235689]|(?<=5)[0234578]|(?<=6)[0246789]|(?<=7)[1345679]|(?<=8)[013456]|(?<=9)[134])|(?<=7)[345678]((?<=3)[02345679]|(?<=4)[023567]|(?<=5)[0678]|(?<=6)[012345689]|(?<=7)[234679]|(?<=8)[013567])|(?<=8)[456]((?<=4)[13789]|(?<=5)[12345689]|(?<=6)[01234])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[012578]|(?<=2)[0123456789]|(?<=3)[026789]|(?<=4)[01234579]|(?<=5)[01235678]|(?<=6)[1345679]|(?<=7)[01345689]|(?<=8)[123456789]|(?<=9)[2]))|(?<=5)[012346789]((?<=0)[03456789]((?<=0)[19]|(?<=3)[0123456789]|(?<=4)[0123568]|(?<=5)[01235689]|(?<=6)[0125789]|(?<=7)[01235679]|(?<=8)[134689]|(?<=9)[1])|(?<=1)[0456]((?<=0)[1]|(?<=4)[123689]|(?<=5)[01234568]|(?<=6)[1])|(?<=2)[056]((?<=0)[1]|(?<=5)[0123457]|(?<=6)[012])|(?<=3)[0456]((?<=0)[1]|(?<=4)[0123456]|(?<=5)[012345689]|(?<=6)[0123])|(?<=4)[03456789]((?<=0)[13458]|(?<=3)[9]|(?<=4)[012345678]|(?<=5)[02456789]|(?<=6)[123458]|(?<=7)[1234678]|(?<=8)[12356789]|(?<=9)[1245])|(?<=6)[045678]((?<=0)[2]|(?<=4)[01789]|(?<=5)[01234568]|(?<=6)[0134679]|(?<=7)[023456789]|(?<=8)[012])|(?<=7)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[234678]|(?<=5)[13789]|(?<=6)[0123456789]|(?<=7)[02345678])|(?<=8)[1234567]((?<=1)[9]|(?<=2)[012456789]|(?<=3)[023679]|(?<=4)[0123567]|(?<=5)[0135789]|(?<=6)[02678]|(?<=7)[12345])|(?<=9)[0]((?<=0)[1234567]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[12]|(?<=1)[03689]|(?<=2)[01234679]|(?<=3)[123579]|(?<=4)[023]|(?<=5)[123789]|(?<=6)[012356789]|(?<=7)[01234689]|(?<=8)[0124589]|(?<=9)[0123568])|(?<=1)[012]((?<=0)[356789]|(?<=1)[0124789]|(?<=2)[0])|(?<=2)[2345678]((?<=2)[6]|(?<=3)[1245789]|(?<=4)[123789]|(?<=5)[045689]|(?<=6)[0234689]|(?<=7)[789]|(?<=8)[012])|(?<=3)[23456789]((?<=2)[0]|(?<=3)[012345689]|(?<=4)[0]|(?<=5)[0134579]|(?<=6)[05]|(?<=7)[013456789]|(?<=8)[024579]|(?<=9)[0])|(?<=4)[0123456789]((?<=0)[1359]|(?<=1)[023456789]|(?<=2)[02346]|(?<=3)[789]|(?<=4)[12347]|(?<=5)[015679]|(?<=6)[01789]|(?<=7)[01235789]|(?<=8)[0123489]|(?<=9)[28])|(?<=5)[12]((?<=1)[0123456789]|(?<=2)[45])|(?<=6)[01]((?<=0)[45678]|(?<=1)[01245])|(?<=7)[0156789]((?<=0)[24568]|(?<=1)[026]|(?<=5)[0123456789]|(?<=6)[23]|(?<=7)[06789]|(?<=8)[234567]|(?<=9)[0134568])|(?<=8)[012345789]((?<=0)[147]|(?<=1)[012]|(?<=2)[045]|(?<=3)[01]|(?<=4)[0]|(?<=5)[01345]|(?<=7)[078]|(?<=8)[03]|(?<=9)[067])|(?<=9)[0]((?<=0)[123567]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[12345689]|(?<=1)[01234678]|(?<=2)[012346789]|(?<=3)[01234569]|(?<=4)[01234567]|(?<=5)[0245789]|(?<=6)[023456789]|(?<=7)[0123456789]|(?<=8)[0123678]|(?<=9)[02345])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0124])|(?<=2)[0]((?<=0)[1234568])|(?<=3)[01]((?<=0)[24567]|(?<=1)[01])|(?<=4)[012345678]((?<=0)[1357]|(?<=1)[06789]|(?<=2)[01234]|(?<=3)[025689]|(?<=4)[0246]|(?<=5)[02678]|(?<=6)[01235]|(?<=7)[0]|(?<=8)[01])|(?<=5)[012]((?<=0)[1234568]|(?<=1)[234]|(?<=2)[24])|(?<=6)[0234567]((?<=0)[1345678]|(?<=2)[014678]|(?<=3)[012]|(?<=4)[0123456789]|(?<=5)[0267]|(?<=6)[01236]|(?<=7)[0567])|(?<=7)[0123456]((?<=0)[1234]|(?<=1)[126789]|(?<=2)[01234678]|(?<=3)[012345789]|(?<=4)[0678]|(?<=5)[0135678]|(?<=6)[024])|(?<=8)[02345678]((?<=0)[13]|(?<=2)[01235678]|(?<=3)[0123468]|(?<=4)[02346789]|(?<=5)[012367]|(?<=6)[03569]|(?<=7)[01468]|(?<=8)[0125])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[0124678]|(?<=3)[01234569]|(?<=4)[056]|(?<=5)[0]|(?<=6)[01]|(?<=7)[04679]|(?<=8)[01]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0124569]|(?<=2)[01236789]|(?<=3)[0123456789]|(?<=4)[1235689]|(?<=5)[012345679]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[013456789]|(?<=9)[012345678])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=2)[01234567]((?<=0)[12345]|(?<=1)[0257]|(?<=2)[13456]|(?<=3)[024]|(?<=4)[012345678]|(?<=5)[1]|(?<=6)[0]|(?<=7)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01246789]|(?<=2)[012346789]|(?<=3)[02]|(?<=4)[01345689]|(?<=5)[023]|(?<=6)[01])|(?<=4)[0]((?<=0)[1236])|(?<=5)[0123456]((?<=0)[125]|(?<=1)[012458]|(?<=2)[0578]|(?<=3)[03456]|(?<=4)[024]|(?<=5)[0134589]|(?<=6)[012])|(?<=6)[012349]((?<=0)[89]|(?<=1)[0189]|(?<=2)[089]|(?<=3)[8]|(?<=4)[018]|(?<=9)[01])|(?<=7)[02345]((?<=0)[1]|(?<=2)[01234]|(?<=3)[01234568]|(?<=4)[012]|(?<=5)[01235789])|(?<=8)[0123456789]((?<=0)[124579]|(?<=1)[0267]|(?<=2)[0123456789]|(?<=3)[0123567]|(?<=4)[0468]|(?<=5)[0234789]|(?<=6)[13579]|(?<=7)[2369]|(?<=8)[024679]|(?<=9)[0])|(?<=9)[0]((?<=0)[124])))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[0123467]((?<=0)[12345679]|(?<=1)[012346789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[04]|(?<=6)[59]|(?<=7)[5])|(?<=1)[0125679]((?<=0)[3]|(?<=1)[01259]|(?<=2)[8]|(?<=5)[234]|(?<=6)[25789]|(?<=7)[012347]|(?<=9)[9])|(?<=2)[78]((?<=7)[189]|(?<=8)[02])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[0124])|(?<=4)[567]((?<=5)[123456789]|(?<=6)[0123456789]|(?<=7)[012345])|(?<=5)[0123456789]((?<=0)[12345679]|(?<=1)[01246789]|(?<=2)[0234678]|(?<=3)[0235678]|(?<=4)[012356789]|(?<=5)[023]|(?<=6)[0267]|(?<=7)[036789]|(?<=8)[0389]|(?<=9)[0145678])|(?<=6)[0]((?<=0)[134567])|(?<=7)[01]((?<=0)[13456789]|(?<=1)[0])|(?<=8)[0]((?<=0)[1345])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[012345678]|(?<=3)[0123]|(?<=4)[01]|(?<=5)[023468]|(?<=6)[0234589]|(?<=7)[0345679]|(?<=8)[03456789]|(?<=9)[023468]))|(?<=1)[0123456789]((?<=0)[0123459]((?<=0)[1345]|(?<=1)[0]|(?<=2)[0134]|(?<=3)[0]|(?<=4)[02]|(?<=5)[0]|(?<=9)[6])|(?<=1)[0]((?<=0)[1234569])|(?<=2)[01234]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[9])|(?<=3)[5678]((?<=5)[456789]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[5])|(?<=4)[1235]((?<=1)[123456789]|(?<=2)[012346789]|(?<=3)[0234569]|(?<=5)[1])|(?<=5)[0123456789]((?<=0)[179]|(?<=1)[0468]|(?<=2)[0]|(?<=3)[0]|(?<=4)[25789]|(?<=5)[02346789]|(?<=6)[0135689]|(?<=7)[025679]|(?<=8)[01]|(?<=9)[068])|(?<=6)[9]((?<=9)[12347])|(?<=7)[0123456789]((?<=0)[1234569]|(?<=1)[03456789]|(?<=2)[01245679]|(?<=3)[0123589]|(?<=4)[0123679]|(?<=5)[12345678]|(?<=6)[23456789]|(?<=7)[0126789]|(?<=8)[02346789]|(?<=9)[012345678])|(?<=8)[0]((?<=0)[134])|(?<=9)[0345678]((?<=0)[1]|(?<=3)[01234579]|(?<=4)[01246789]|(?<=5)[0123456789]|(?<=6)[01234578]|(?<=7)[01235678]|(?<=8)[0]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[789]|(?<=1)[05789]|(?<=2)[02345789]|(?<=3)[123567]|(?<=4)[0123567]|(?<=5)[12346789]|(?<=6)[0123456789]|(?<=7)[01245678]|(?<=8)[234567]|(?<=9)[02345])|(?<=1)[0123456789]((?<=0)[68]|(?<=1)[05678]|(?<=2)[012345]|(?<=3)[01246789]|(?<=4)[034789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[0234567]|(?<=8)[023456789]|(?<=9)[02345678])|(?<=2)[012]((?<=0)[23456789]|(?<=1)[01]|(?<=2)[26])|(?<=3)[0]((?<=0)[23456789])|(?<=4)[0123456789]((?<=0)[145679]|(?<=1)[012346789]|(?<=2)[01234789]|(?<=3)[012345689]|(?<=4)[01234689]|(?<=5)[0123456789]|(?<=6)[01345689]|(?<=7)[0123457]|(?<=8)[012345679]|(?<=9)[01234568])|(?<=5)[0123456789]((?<=0)[123478]|(?<=1)[2345678]|(?<=2)[0123456789]|(?<=3)[01348]|(?<=4)[023456789]|(?<=5)[03]|(?<=6)[1345679]|(?<=7)[0124578]|(?<=8)[0123569]|(?<=9)[024])|(?<=6)[0]((?<=0)[134])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[9]|(?<=2)[01234569]|(?<=3)[234678]|(?<=4)[012356789]|(?<=5)[012489]|(?<=6)[023456789]|(?<=7)[0156789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13489]|(?<=1)[01245679]|(?<=2)[0123478]|(?<=3)[123456789]|(?<=4)[12345679]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012348]|(?<=8)[34567])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[0123456789]|(?<=2)[012346789]|(?<=3)[02345679]|(?<=4)[123456]|(?<=5)[02356789]|(?<=6)[01245679]|(?<=7)[023456789]|(?<=8)[0135679]|(?<=9)[23678]))|(?<=3)[0123456789]((?<=0)[23456789]((?<=2)[0146789]|(?<=3)[012345679]|(?<=4)[01245]|(?<=5)[12347]|(?<=6)[01235689]|(?<=7)[1234678]|(?<=8)[0123478]|(?<=9)[02])|(?<=1)[0123456]((?<=0)[12348]|(?<=1)[0123456789]|(?<=2)[012346]|(?<=3)[124568]|(?<=4)[012345678]|(?<=5)[23456789]|(?<=6)[0234567])|(?<=2)[01249]((?<=0)[23456789]|(?<=1)[012459]|(?<=2)[4]|(?<=4)[4]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[1234589]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[12345789]|(?<=4)[023568]|(?<=5)[023457]|(?<=6)[0134578])|(?<=4)[0123456789]((?<=0)[2346789]|(?<=1)[0135678]|(?<=2)[01458]|(?<=3)[1356789]|(?<=4)[01]|(?<=5)[0245679]|(?<=6)[01489]|(?<=7)[01235678]|(?<=8)[02345689]|(?<=9)[012345])|(?<=5)[0]((?<=0)[12])|(?<=6)[0123456789]((?<=0)[1235678]|(?<=1)[123456789]|(?<=2)[01234568]|(?<=3)[023456789]|(?<=4)[012356789]|(?<=5)[01245689]|(?<=6)[012456789]|(?<=7)[02345689]|(?<=8)[0123457]|(?<=9)[012345679])|(?<=7)[3456789]((?<=3)[01234689]|(?<=4)[034678]|(?<=5)[01234567]|(?<=6)[0]|(?<=7)[45678]|(?<=8)[0234678]|(?<=9)[0567])|(?<=8)[0123456]((?<=0)[12346789]|(?<=1)[012345]|(?<=2)[0567]|(?<=3)[0234589]|(?<=4)[1234679]|(?<=5)[069]|(?<=6)[012345])|(?<=9)[0]((?<=0)[12345]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[145689]|(?<=1)[123]|(?<=2)[0456789]|(?<=3)[012345679]|(?<=4)[012378]|(?<=5)[12456789]|(?<=6)[012356789]|(?<=7)[025]|(?<=8)[012356]|(?<=9)[1248])|(?<=1)[01234567]((?<=0)[123589]|(?<=1)[123]|(?<=2)[05679]|(?<=3)[01245689]|(?<=4)[135]|(?<=5)[0]|(?<=6)[6789]|(?<=7)[01234])|(?<=2)[0126]((?<=0)[12346789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=6)[01])|(?<=3)[0]((?<=0)[12345])|(?<=4)[12345678]((?<=1)[134568]|(?<=2)[0234578]|(?<=3)[2357]|(?<=4)[15]|(?<=5)[0346]|(?<=6)[2346789]|(?<=7)[01256789]|(?<=8)[0125679])|(?<=5)[0123456789]((?<=0)[24567]|(?<=1)[012345679]|(?<=2)[125679]|(?<=3)[0234679]|(?<=4)[12345689]|(?<=5)[015679]|(?<=6)[01489]|(?<=7)[12]|(?<=8)[05689]|(?<=9)[012])|(?<=6)[0124]((?<=0)[456789]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=4)[2])|(?<=7)[012345678]((?<=0)[16789]|(?<=1)[012456789]|(?<=2)[012346789]|(?<=3)[12356789]|(?<=4)[0123478]|(?<=5)[0234567]|(?<=6)[079]|(?<=7)[0245789]|(?<=8)[1234578])|(?<=8)[0123456789]((?<=0)[123456789]|(?<=1)[023456789]|(?<=2)[01234567]|(?<=3)[06789]|(?<=4)[0123567]|(?<=5)[0345689]|(?<=6)[014579]|(?<=7)[01234789]|(?<=8)[01234569]|(?<=9)[1234578])|(?<=9)[0]((?<=0)[1345]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[1345679]|(?<=1)[0245789]|(?<=2)[01245678]|(?<=3)[0134578]|(?<=4)[2345679]|(?<=5)[012345679]|(?<=6)[012345678]|(?<=7)[1245678]|(?<=8)[123456789]|(?<=9)[0])|(?<=1)[01234]((?<=0)[12468]|(?<=1)[026]|(?<=2)[02369]|(?<=3)[1235679]|(?<=4)[02345678])|(?<=2)[012346789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[23456789]|(?<=4)[13]|(?<=6)[0]|(?<=7)[5]|(?<=8)[2]|(?<=9)[0])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[01234567]|(?<=2)[01234579]|(?<=3)[0123478]|(?<=4)[012456789]|(?<=5)[0123789]|(?<=6)[012345678]|(?<=7)[06789]|(?<=8)[0])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0123679]|(?<=2)[012345789]|(?<=3)[012345678]|(?<=4)[023456789]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[023456789]|(?<=8)[0234689]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[12]|(?<=1)[0]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[0124567]|(?<=5)[01245789]|(?<=6)[012345])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[012356789]|(?<=2)[023456789]|(?<=3)[123456789]|(?<=4)[012467]|(?<=5)[0568]|(?<=6)[0123568]|(?<=7)[0123456789]|(?<=8)[012346789]|(?<=9)[01235678])|(?<=7)[012345678]((?<=0)[15]|(?<=1)[01234567]|(?<=2)[012345789]|(?<=3)[012346789]|(?<=4)[1245678]|(?<=5)[0234679]|(?<=6)[0123457]|(?<=7)[0123456789]|(?<=8)[0134])|(?<=8)[0234567]((?<=0)[1]|(?<=2)[1345789]|(?<=3)[124]|(?<=4)[0156789]|(?<=5)[1367]|(?<=6)[0134568]|(?<=7)[0])|(?<=9)[023456]((?<=0)[124569]|(?<=2)[0123456789]|(?<=3)[0145678]|(?<=4)[02345689]|(?<=5)[12345678]|(?<=6)[0123]))|(?<=6)[0123456789]((?<=0)[023456]((?<=0)[12]|(?<=2)[02345789]|(?<=3)[0345678]|(?<=4)[015689]|(?<=5)[012345679]|(?<=6)[136])|(?<=1)[01234567]((?<=0)[125]|(?<=1)[01234567]|(?<=2)[013457]|(?<=3)[0123467]|(?<=4)[0123568]|(?<=5)[01345679]|(?<=6)[01]|(?<=7)[2])|(?<=2)[0123456]((?<=0)[1]|(?<=1)[0123478]|(?<=2)[0234689]|(?<=3)[0235689]|(?<=4)[0245689]|(?<=5)[0345689]|(?<=6)[023])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[1234679]|(?<=2)[1236789]|(?<=3)[12345]|(?<=4)[01234567]|(?<=5)[01234]|(?<=6)[01245]|(?<=7)[01234])|(?<=4)[012347]((?<=0)[1234567]|(?<=1)[012567]|(?<=2)[01234678]|(?<=3)[034568]|(?<=4)[01234]|(?<=7)[5])|(?<=5)[01456]((?<=0)[123456789]|(?<=1)[01]|(?<=4)[6]|(?<=5)[0]|(?<=6)[3])|(?<=6)[0123456789]((?<=0)[12]|(?<=1)[13679]|(?<=2)[0123457]|(?<=3)[013456789]|(?<=4)[015678]|(?<=5)[01245679]|(?<=6)[12456789]|(?<=7)[012345789]|(?<=8)[0234569]|(?<=9)[123459])|(?<=7)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[0123458]|(?<=4)[0345689]|(?<=5)[0])|(?<=8)[02345678]((?<=0)[123]|(?<=2)[012356789]|(?<=3)[023456789]|(?<=4)[01345789]|(?<=5)[12345689]|(?<=6)[0134568]|(?<=7)[012456789]|(?<=8)[12])|(?<=9)[012345]((?<=0)[1]|(?<=1)[012457]|(?<=2)[012356789]|(?<=3)[02356789]|(?<=4)[0123678]|(?<=5)[0]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[2345679]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[01345678]|(?<=8)[0124678]|(?<=9)[034789])|(?<=1)[012]((?<=0)[12349]|(?<=1)[0123]|(?<=2)[0])|(?<=2)[01234567]((?<=0)[12]|(?<=1)[01234579]|(?<=2)[01234589]|(?<=3)[2356789]|(?<=4)[0134679]|(?<=5)[0123457]|(?<=6)[012345678]|(?<=7)[1])|(?<=3)[01234567]((?<=0)[1234679]|(?<=1)[13456789]|(?<=2)[01234579]|(?<=3)[19]|(?<=4)[0234579]|(?<=5)[02356]|(?<=6)[01234568]|(?<=7)[012])|(?<=4)[0]((?<=0)[1234678])|(?<=5)[012345678]((?<=0)[12456789]|(?<=1)[26789]|(?<=2)[0279]|(?<=3)[24568]|(?<=4)[0357]|(?<=5)[012457]|(?<=6)[0235689]|(?<=7)[02689]|(?<=8)[124])|(?<=6)[0]((?<=0)[1236])|(?<=7)[0234567]((?<=0)[12]|(?<=2)[0134789]|(?<=3)[0179]|(?<=4)[0245789]|(?<=5)[012468]|(?<=6)[0234589]|(?<=7)[1246789])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[02345]|(?<=2)[0123479]|(?<=3)[024567]|(?<=4)[0124567]|(?<=5)[01356789]|(?<=6)[01245678]|(?<=7)[0268]|(?<=8)[01456789])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[012359]|(?<=3)[0134568]|(?<=4)[1345689]|(?<=5)[123479]|(?<=6)[0134578]|(?<=7)[024689]|(?<=8)[01235]))|(?<=8)[0123456789]((?<=0)[123456789]((?<=1)[1234578]|(?<=2)[0]|(?<=3)[01245678]|(?<=4)[012569]|(?<=5)[12345689]|(?<=6)[2345679]|(?<=7)[012346789]|(?<=8)[0135678]|(?<=9)[12])|(?<=1)[09]((?<=0)[123469]|(?<=9)[5])|(?<=2)[012345]((?<=0)[12]|(?<=1)[0124689]|(?<=2)[0123459]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[02456])|(?<=3)[0234567]((?<=0)[12]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0234679]|(?<=5)[0134567]|(?<=6)[0]|(?<=7)[012])|(?<=4)[01234567]((?<=0)[357]|(?<=1)[134579]|(?<=2)[014568]|(?<=3)[013456789]|(?<=4)[0134567]|(?<=5)[12345678]|(?<=6)[01234569]|(?<=7)[0123])|(?<=5)[01]((?<=0)[345789]|(?<=1)[02789])|(?<=6)[0123456]((?<=0)[23]|(?<=1)[02456789]|(?<=2)[123456789]|(?<=3)[012456]|(?<=4)[01234]|(?<=5)[1567]|(?<=6)[01])|(?<=7)[0]((?<=0)[12456789])|(?<=8)[012345]((?<=0)[1]|(?<=1)[024678]|(?<=2)[012345689]|(?<=3)[012347]|(?<=4)[02345678]|(?<=5)[0134])|(?<=9)[012345678]((?<=0)[12]|(?<=1)[23457]|(?<=2)[013579]|(?<=3)[023568]|(?<=4)[02467]|(?<=5)[0145]|(?<=6)[02469]|(?<=7)[02467]|(?<=8)[0]))|(?<=9)[013456789]((?<=0)[0123456789]((?<=0)[12346789]|(?<=1)[0234578]|(?<=2)[01235679]|(?<=3)[01234568]|(?<=4)[013467]|(?<=5)[0234567]|(?<=6)[013467]|(?<=7)[02345689]|(?<=8)[123567]|(?<=9)[0456])|(?<=1)[012345]((?<=0)[2346789]|(?<=1)[12345689]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[01234])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[012679]|(?<=2)[0]|(?<=3)[035]|(?<=4)[123458]|(?<=5)[0258]|(?<=6)[23579]|(?<=7)[2345]|(?<=8)[023]|(?<=9)[0])|(?<=4)[02345679]((?<=0)[1356]|(?<=2)[2568]|(?<=3)[5678]|(?<=4)[0246]|(?<=5)[3467]|(?<=6)[02458]|(?<=7)[23457]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[1345678]|(?<=1)[01268]|(?<=2)[023569]|(?<=3)[0345689]|(?<=4)[0134579]|(?<=5)[01459]|(?<=6)[02457])|(?<=6)[01]((?<=0)[12456789]|(?<=1)[01])|(?<=7)[0123]((?<=0)[123679]|(?<=1)[01367]|(?<=2)[0]|(?<=3)[0123456])|(?<=8)[01]((?<=0)[123456789]|(?<=1)[0])|(?<=9)[0345678]((?<=0)[124]|(?<=3)[0134689]|(?<=4)[0134567]|(?<=5)[01234568]|(?<=6)[0234678]|(?<=7)[013579]|(?<=8)[0])))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[04]|(?<=3)[267]|(?<=4)[5]|(?<=5)[279]|(?<=6)[4])|(?<=1)[0123456789]((?<=0)[569]|(?<=1)[012579]|(?<=2)[0149]|(?<=3)[02567]|(?<=4)[13478]|(?<=5)[1258]|(?<=6)[4569]|(?<=7)[0156]|(?<=8)[01467]|(?<=9)[01478])|(?<=2)[023456]((?<=0)[4]|(?<=2)[0]|(?<=3)[0]|(?<=4)[05]|(?<=5)[0]|(?<=6)[0])|(?<=3)[1789]((?<=1)[79]|(?<=7)[3]|(?<=8)[8]|(?<=9)[0])|(?<=4)[0123]((?<=0)[8]|(?<=1)[58]|(?<=2)[27]|(?<=3)[1])|(?<=5)[1234569]((?<=1)[05]|(?<=2)[0]|(?<=3)[05]|(?<=4)[02]|(?<=5)[1]|(?<=6)[056]|(?<=9)[1])|(?<=6)[0123456789]((?<=0)[1236789]|(?<=1)[12356789]|(?<=2)[012345689]|(?<=3)[024679]|(?<=4)[056]|(?<=5)[036789]|(?<=6)[01247]|(?<=7)[045678]|(?<=8)[0456789]|(?<=9)[0235])|(?<=7)[0123456789]((?<=0)[15678]|(?<=1)[012456]|(?<=2)[01234]|(?<=3)[23567]|(?<=4)[02345678]|(?<=5)[14589]|(?<=6)[23459]|(?<=7)[01246789]|(?<=8)[12345]|(?<=9)[4])|(?<=8)[13456789]((?<=1)[245678]|(?<=3)[23789]|(?<=4)[12]|(?<=5)[012345]|(?<=6)[01268]|(?<=7)[1246789]|(?<=8)[0269]|(?<=9)[24569])|(?<=9)[01]((?<=0)[123456]|(?<=1)[02]))|(?<=1)[012456789]((?<=0)[0123456789]((?<=0)[159]|(?<=1)[023457]|(?<=2)[389]|(?<=3)[0124567]|(?<=4)[02345678]|(?<=5)[0123467]|(?<=6)[01]|(?<=7)[145678]|(?<=8)[2457]|(?<=9)[03])|(?<=1)[0123456]((?<=0)[2458]|(?<=1)[1347]|(?<=2)[028]|(?<=3)[01236]|(?<=4)[046]|(?<=5)[2345678]|(?<=6)[0123])|(?<=2)[0123458]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0134679]|(?<=4)[04]|(?<=5)[012]|(?<=8)[567])|(?<=4)[0]((?<=0)[12359])|(?<=5)[023456]((?<=0)[2]|(?<=2)[01349]|(?<=3)[012689]|(?<=4)[01235]|(?<=5)[057]|(?<=6)[012])|(?<=6)[01234567]((?<=0)[17]|(?<=1)[02379]|(?<=2)[023456789]|(?<=3)[1245689]|(?<=4)[01345789]|(?<=5)[012345789]|(?<=6)[0123456789]|(?<=7)[12356789])|(?<=7)[0123456789]((?<=0)[12345]|(?<=1)[013456789]|(?<=2)[237]|(?<=3)[3478]|(?<=4)[026]|(?<=5)[045678]|(?<=6)[2679]|(?<=7)[01346789]|(?<=8)[0123478]|(?<=9)[0134578])|(?<=8)[012345679]((?<=0)[14]|(?<=1)[01347]|(?<=2)[12469]|(?<=3)[0578]|(?<=4)[0129]|(?<=5)[0136]|(?<=6)[12345679]|(?<=7)[1245]|(?<=9)[0])|(?<=9)[0123]((?<=0)[1234]|(?<=1)[12345789]|(?<=2)[01]|(?<=3)[0]))|(?<=2)[0123456789]((?<=0)[0123467]((?<=0)[3]|(?<=1)[5]|(?<=2)[567]|(?<=3)[012359]|(?<=4)[12346]|(?<=6)[06]|(?<=7)[9])|(?<=1)[0235789]((?<=0)[12]|(?<=2)[45]|(?<=3)[4]|(?<=5)[0123]|(?<=7)[2]|(?<=8)[012]|(?<=9)[123])|(?<=2)[01]((?<=0)[12345679]|(?<=1)[134])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[01245])|(?<=4)[02345678]((?<=0)[15678]|(?<=2)[7]|(?<=3)[235678]|(?<=4)[38]|(?<=5)[4]|(?<=6)[09]|(?<=7)[236]|(?<=8)[0258])|(?<=5)[012345678]((?<=0)[3489]|(?<=1)[14]|(?<=2)[09]|(?<=3)[4589]|(?<=4)[268]|(?<=5)[1346]|(?<=6)[07]|(?<=7)[268]|(?<=8)[0])|(?<=6)[0123456]((?<=0)[123]|(?<=1)[01]|(?<=2)[03457]|(?<=3)[079]|(?<=4)[0123456]|(?<=5)[024567]|(?<=6)[034])|(?<=7)[01234]((?<=0)[19]|(?<=1)[12345689]|(?<=2)[023456789]|(?<=3)[012345678]|(?<=4)[0123679])|(?<=8)[012345]((?<=0)[127]|(?<=1)[0125]|(?<=2)[0147]|(?<=3)[01245]|(?<=4)[012345679]|(?<=5)[013])|(?<=9)[012345678]((?<=0)[12348]|(?<=1)[1]|(?<=2)[023]|(?<=3)[1256789]|(?<=4)[0236789]|(?<=5)[2789]|(?<=6)[034789]|(?<=7)[12346]|(?<=8)[09]))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[2459]|(?<=1)[15]|(?<=2)[123457]|(?<=3)[02589]|(?<=4)[0357]|(?<=5)[0569]|(?<=6)[01235689]|(?<=7)[012569]|(?<=8)[134569]|(?<=9)[123])|(?<=1)[0123456789]((?<=0)[23689]|(?<=1)[01234679]|(?<=2)[034689]|(?<=3)[089]|(?<=4)[016789]|(?<=5)[036]|(?<=6)[01389]|(?<=7)[3567]|(?<=8)[0158]|(?<=9)[2])|(?<=2)[123589]((?<=1)[9]|(?<=2)[0123456789]|(?<=3)[01345678]|(?<=5)[0]|(?<=8)[4]|(?<=9)[48])|(?<=3)[01234589]((?<=0)[1234678]|(?<=1)[0456]|(?<=2)[012345]|(?<=3)[67]|(?<=4)[7]|(?<=5)[046789]|(?<=8)[9]|(?<=9)[58])|(?<=4)[01234568]((?<=0)[15789]|(?<=1)[0345678]|(?<=2)[012367]|(?<=3)[02345678]|(?<=4)[012]|(?<=5)[12345679]|(?<=6)[0124]|(?<=8)[0678])|(?<=5)[0125]((?<=0)[2345789]|(?<=1)[01378]|(?<=2)[3]|(?<=5)[1])|(?<=6)[05689]((?<=0)[12345678]|(?<=5)[1]|(?<=6)[123456789]|(?<=8)[1]|(?<=9)[01236])|(?<=7)[0]((?<=0)[1234789])|(?<=8)[023456789]((?<=0)[135]|(?<=2)[14789]|(?<=3)[012346789]|(?<=4)[01234567]|(?<=5)[0167]|(?<=6)[0678]|(?<=7)[0245689]|(?<=8)[12345789]|(?<=9)[0134789])|(?<=9)[01234567]((?<=0)[19]|(?<=1)[579]|(?<=2)[012347]|(?<=3)[04678]|(?<=4)[2347]|(?<=5)[024589]|(?<=6)[0234678]|(?<=7)[046]))|(?<=4)[0123456789]((?<=0)[1256789]((?<=1)[123456789]|(?<=2)[02]|(?<=5)[34589]|(?<=6)[0145679]|(?<=7)[0236789]|(?<=8)[23456789]|(?<=9)[01235])|(?<=1)[012345678]((?<=0)[1245]|(?<=1)[2]|(?<=2)[0124789]|(?<=3)[12346789]|(?<=4)[12789]|(?<=5)[013]|(?<=6)[12578]|(?<=7)[14569]|(?<=8)[45])|(?<=2)[0123456789]((?<=0)[12]|(?<=1)[01679]|(?<=2)[014568]|(?<=3)[0679]|(?<=4)[34568]|(?<=5)[0168]|(?<=6)[03569]|(?<=7)[012379]|(?<=8)[0123]|(?<=9)[023])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[2345678]|(?<=3)[03]|(?<=4)[0378]|(?<=5)[0124]|(?<=6)[01368]|(?<=7)[04578]|(?<=8)[012])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[12356]|(?<=2)[126]|(?<=3)[0123579]|(?<=4)[01258]|(?<=5)[0789]|(?<=6)[04579]|(?<=7)[1234679]|(?<=8)[234567])|(?<=5)[0123456789]((?<=0)[1234]|(?<=1)[57]|(?<=2)[01236789]|(?<=3)[014689]|(?<=4)[019]|(?<=5)[01345678]|(?<=6)[23569]|(?<=7)[0124789]|(?<=8)[01689]|(?<=9)[02345789])|(?<=6)[012345]((?<=0)[12345679]|(?<=1)[234]|(?<=2)[02]|(?<=3)[014579]|(?<=4)[169]|(?<=5)[167])|(?<=7)[01234]((?<=0)[1]|(?<=1)[24569]|(?<=2)[469]|(?<=3)[136789]|(?<=4)[07])|(?<=8)[0123456789]((?<=0)[18]|(?<=1)[135678]|(?<=2)[23678]|(?<=3)[01469]|(?<=4)[3456789]|(?<=5)[013457]|(?<=6)[0126789]|(?<=7)[0123489]|(?<=8)[012478]|(?<=9)[2458])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[0568]|(?<=2)[0457]|(?<=3)[1458]|(?<=4)[13456]|(?<=5)[147]|(?<=6)[236]|(?<=7)[0467]|(?<=8)[13456]|(?<=9)[13]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[235789]|(?<=1)[159]|(?<=2)[12458]|(?<=3)[013569]|(?<=4)[0345789]|(?<=5)[13479]|(?<=6)[012347]|(?<=7)[0156]|(?<=8)[123568]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[236789]|(?<=1)[01234589]|(?<=2)[13456]|(?<=3)[023469]|(?<=4)[012389]|(?<=5)[2469]|(?<=6)[0124589]|(?<=7)[347]|(?<=8)[013567]|(?<=9)[3])|(?<=2)[01345678]((?<=0)[12345689]|(?<=1)[134]|(?<=3)[1459]|(?<=4)[134578]|(?<=5)[1239]|(?<=6)[01245678]|(?<=7)[0156]|(?<=8)[567])|(?<=3)[0128]((?<=0)[1234569]|(?<=1)[12345]|(?<=2)[0]|(?<=8)[7])|(?<=4)[01234]((?<=0)[1345]|(?<=1)[1349]|(?<=2)[012578]|(?<=3)[012478]|(?<=4)[2346])|(?<=5)[01234567]((?<=0)[12345678]|(?<=1)[012457]|(?<=2)[013469]|(?<=3)[0457]|(?<=4)[01457]|(?<=5)[0579]|(?<=6)[0457]|(?<=7)[013])|(?<=6)[0123456789]((?<=0)[1678]|(?<=1)[127]|(?<=2)[1458]|(?<=3)[0245789]|(?<=4)[4679]|(?<=5)[01234]|(?<=6)[1679]|(?<=7)[012468]|(?<=8)[58]|(?<=9)[0269])|(?<=7)[05]((?<=0)[12345]|(?<=5)[5])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[012378]|(?<=2)[03567]|(?<=3)[12679]|(?<=4)[01345689]|(?<=5)[13457]|(?<=6)[24568]|(?<=7)[0135689]|(?<=8)[02])|(?<=9)[012345678]((?<=0)[124789]|(?<=1)[135678]|(?<=2)[0128]|(?<=3)[268]|(?<=4)[23]|(?<=5)[18]|(?<=6)[269]|(?<=7)[126789]|(?<=8)[14569]))|(?<=6)[012345678]((?<=0)[034567]((?<=0)[3]|(?<=3)[0123456789]|(?<=4)[017]|(?<=5)[05689]|(?<=6)[02]|(?<=7)[045])|(?<=1)[0345678]((?<=0)[145]|(?<=3)[34678]|(?<=4)[1236789]|(?<=5)[01259]|(?<=6)[012479]|(?<=7)[058]|(?<=8)[0147])|(?<=2)[0123456789]((?<=0)[1235689]|(?<=1)[0578]|(?<=2)[248]|(?<=3)[04678]|(?<=4)[1]|(?<=5)[03479]|(?<=6)[01346789]|(?<=7)[013568]|(?<=8)[0235789]|(?<=9)[123468])|(?<=3)[02345678]((?<=0)[1]|(?<=2)[01357]|(?<=3)[05789]|(?<=4)[236789]|(?<=5)[14]|(?<=6)[1269]|(?<=7)[24678]|(?<=8)[456])|(?<=4)[0123456]((?<=0)[458]|(?<=1)[012569]|(?<=2)[12456]|(?<=3)[015678]|(?<=4)[03478]|(?<=5)[126]|(?<=6)[3])|(?<=5)[0123456789]((?<=0)[1568]|(?<=1)[9]|(?<=2)[0145]|(?<=3)[47]|(?<=4)[123467]|(?<=5)[49]|(?<=6)[0238]|(?<=7)[012456]|(?<=8)[125678]|(?<=9)[01])|(?<=6)[012356789]((?<=0)[1]|(?<=1)[01579]|(?<=2)[13479]|(?<=3)[168]|(?<=5)[16]|(?<=6)[027]|(?<=7)[1689]|(?<=8)[014]|(?<=9)[01])|(?<=7)[0123456]((?<=0)[457]|(?<=1)[014679]|(?<=2)[026]|(?<=3)[19]|(?<=4)[3]|(?<=5)[0357]|(?<=6)[1347])|(?<=8)[01234568]((?<=0)[12478]|(?<=1)[024578]|(?<=2)[3]|(?<=3)[368]|(?<=4)[57]|(?<=5)[125]|(?<=6)[56]|(?<=8)[46]))|(?<=7)[0123456789]((?<=0)[012345]((?<=0)[679]|(?<=1)[12346789]|(?<=2)[01234578]|(?<=3)[0]|(?<=4)[01235678]|(?<=5)[012345])|(?<=1)[012]((?<=0)[1345679]|(?<=1)[0]|(?<=2)[7])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[23457]|(?<=2)[9]|(?<=3)[1359]|(?<=4)[234789]|(?<=5)[23689]|(?<=6)[02358]|(?<=7)[8]|(?<=8)[12348]|(?<=9)[12589])|(?<=3)[01234567]((?<=0)[1256]|(?<=1)[01234567]|(?<=2)[056]|(?<=3)[02]|(?<=4)[012349]|(?<=5)[015678]|(?<=6)[0]|(?<=7)[014679])|(?<=4)[015]((?<=0)[1356789]|(?<=1)[012]|(?<=5)[5])|(?<=5)[0123456789]((?<=0)[123456789]|(?<=1)[01346789]|(?<=2)[012345679]|(?<=3)[0134679]|(?<=4)[0124569]|(?<=5)[135679]|(?<=6)[023589]|(?<=7)[0123467]|(?<=8)[123479]|(?<=9)[1234679])|(?<=6)[019]((?<=0)[13456789]|(?<=1)[0234567]|(?<=9)[57])|(?<=7)[01]((?<=0)[1345789]|(?<=1)[23])|(?<=8)[0123456789]((?<=0)[13456789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[012479]|(?<=4)[012345679]|(?<=5)[01235678]|(?<=6)[01234569]|(?<=7)[0123456789]|(?<=8)[012345689]|(?<=9)[012367])|(?<=9)[012345678]((?<=0)[9]|(?<=1)[05679]|(?<=2)[0123456789]|(?<=3)[256789]|(?<=4)[12346789]|(?<=5)[0346789]|(?<=6)[02456789]|(?<=7)[0234689]|(?<=8)[012356]))|(?<=8)[0123456789]((?<=0)[012345789]((?<=0)[1679]|(?<=1)[26789]|(?<=2)[013457]|(?<=3)[1234679]|(?<=4)[0123]|(?<=5)[246]|(?<=7)[123456789]|(?<=8)[013689]|(?<=9)[01278])|(?<=1)[01234567]((?<=0)[12345789]|(?<=1)[024579]|(?<=2)[045789]|(?<=3)[3456789]|(?<=4)[467]|(?<=5)[029]|(?<=6)[0346789]|(?<=7)[034])|(?<=2)[0124678]((?<=0)[23456789]|(?<=1)[01234567]|(?<=2)[367]|(?<=4)[4]|(?<=6)[29]|(?<=7)[03478]|(?<=8)[02])|(?<=3)[0123456789]((?<=0)[1345678]|(?<=1)[012458]|(?<=2)[035678]|(?<=3)[01234789]|(?<=4)[012345789]|(?<=5)[01256789]|(?<=6)[023456789]|(?<=7)[123456789]|(?<=8)[234567]|(?<=9)[012345689])|(?<=4)[012345678]((?<=0)[1359]|(?<=1)[12]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[12345789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0289]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[1489]|(?<=1)[01235689]|(?<=2)[013456789]|(?<=3)[0123789]|(?<=4)[023467]|(?<=5)[1234567]|(?<=6)[02]|(?<=7)[012345789]|(?<=8)[01245679]|(?<=9)[04])|(?<=6)[0123456789]((?<=0)[1245679]|(?<=1)[012356789]|(?<=2)[123456789]|(?<=3)[0145678]|(?<=4)[01234569]|(?<=5)[012345789]|(?<=6)[023456789]|(?<=7)[012356789]|(?<=8)[123459]|(?<=9)[023478])|(?<=7)[0123456789]((?<=0)[1245789]|(?<=1)[0123456789]|(?<=2)[0123569]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[123456789]|(?<=6)[12368]|(?<=7)[012345789]|(?<=8)[12356789]|(?<=9)[012])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0]((?<=0)[124569]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[1369]|(?<=1)[04568]|(?<=2)[0]|(?<=3)[01236789]|(?<=4)[0245678]|(?<=5)[12345689]|(?<=6)[123579]|(?<=7)[0234589]|(?<=8)[012])|(?<=1)[012345678]((?<=0)[124578]|(?<=1)[1234578]|(?<=2)[2356789]|(?<=3)[03578]|(?<=4)[2568]|(?<=5)[0234]|(?<=6)[01234689]|(?<=7)[02578]|(?<=8)[0])|(?<=2)[012]((?<=0)[13456789]|(?<=1)[02]|(?<=2)[359])|(?<=3)[012345678]((?<=0)[12367]|(?<=1)[6]|(?<=2)[0123459]|(?<=3)[0123458]|(?<=4)[0169]|(?<=5)[1356]|(?<=6)[04589]|(?<=7)[023456789]|(?<=8)[458])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[0248]|(?<=2)[04569]|(?<=3)[12456789]|(?<=4)[05689]|(?<=5)[0123568]|(?<=6)[14689]|(?<=7)[0124579]|(?<=8)[1235678]|(?<=9)[23])|(?<=5)[0123456789]((?<=0)[156]|(?<=1)[012689]|(?<=2)[0567]|(?<=3)[026]|(?<=4)[0134567]|(?<=5)[0456]|(?<=6)[03456789]|(?<=7)[01245679]|(?<=8)[01234589]|(?<=9)[012346])|(?<=6)[0123456789]((?<=0)[1579]|(?<=1)[13457]|(?<=2)[0145678]|(?<=3)[014589]|(?<=4)[0234569]|(?<=5)[01345789]|(?<=6)[1245679]|(?<=7)[012368]|(?<=8)[012345679]|(?<=9)[012367])|(?<=7)[01234]((?<=0)[246789]|(?<=1)[024578]|(?<=2)[046789]|(?<=3)[023]|(?<=4)[1235])|(?<=8)[01234569]((?<=0)[1359]|(?<=1)[02679]|(?<=2)[146789]|(?<=3)[124568]|(?<=4)[012345789]|(?<=5)[136]|(?<=6)[0]|(?<=9)[9])|(?<=9)[01234]((?<=0)[245679]|(?<=1)[012568]|(?<=2)[012346789]|(?<=3)[24569]|(?<=4)[01345])))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24589]|(?<=1)[12346789]|(?<=2)[12458]|(?<=3)[0234589]|(?<=4)[0134567]|(?<=5)[24568]|(?<=6)[024678]|(?<=7)[0125689]|(?<=8)[023478]|(?<=9)[023467])|(?<=1)[012345678]((?<=0)[12345678]|(?<=1)[01345678]|(?<=2)[0124567]|(?<=3)[24579]|(?<=4)[1345789]|(?<=5)[237]|(?<=6)[158]|(?<=7)[01356789]|(?<=8)[02345789])|(?<=2)[0123456789]((?<=0)[456]|(?<=1)[345678]|(?<=2)[023489]|(?<=3)[03468]|(?<=4)[018]|(?<=5)[01236789]|(?<=6)[03589]|(?<=7)[234567]|(?<=8)[145689]|(?<=9)[01234567])|(?<=3)[0123456]((?<=0)[356789]|(?<=1)[0123456789]|(?<=2)[246789]|(?<=3)[1246789]|(?<=4)[0124569]|(?<=5)[04]|(?<=6)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123457]|(?<=2)[01356789]|(?<=3)[469]|(?<=4)[125689]|(?<=5)[012345678]|(?<=6)[0147]|(?<=7)[01347])|(?<=5)[0123456789]((?<=0)[1467]|(?<=1)[01236789]|(?<=2)[01235789]|(?<=3)[013456789]|(?<=4)[012356789]|(?<=5)[2345789]|(?<=6)[02345678]|(?<=7)[123567]|(?<=8)[12]|(?<=9)[78])|(?<=6)[012345678]((?<=0)[125679]|(?<=1)[9]|(?<=2)[012345789]|(?<=3)[013459]|(?<=4)[12368]|(?<=5)[056]|(?<=6)[023456789]|(?<=7)[378]|(?<=8)[03])|(?<=7)[012345]((?<=0)[1578]|(?<=1)[01]|(?<=2)[014568]|(?<=3)[01345689]|(?<=4)[01267]|(?<=5)[0123567])|(?<=8)[0123]((?<=0)[235789]|(?<=1)[02345678]|(?<=2)[012348]|(?<=3)[03])|(?<=9)[01]((?<=0)[145679]|(?<=1)[2]))|(?<=1)[023456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[12456789]|(?<=2)[012345789]|(?<=3)[0123456789]|(?<=4)[1245679]|(?<=5)[0124578]|(?<=6)[0123456789]|(?<=7)[01256789]|(?<=8)[12345789]|(?<=9)[01234678])|(?<=2)[012]((?<=0)[1467]|(?<=1)[01367]|(?<=2)[0])|(?<=3)[0123]((?<=0)[1235789]|(?<=1)[234568]|(?<=2)[012346789]|(?<=3)[13])|(?<=4)[012]((?<=0)[1456789]|(?<=1)[0159]|(?<=2)[1])|(?<=5)[01234569]((?<=0)[13]|(?<=1)[023689]|(?<=2)[023457]|(?<=3)[23579]|(?<=4)[23456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=9)[9])|(?<=6)[023459]((?<=0)[1256]|(?<=2)[02345679]|(?<=3)[012456789]|(?<=4)[1235789]|(?<=5)[0]|(?<=9)[89])|(?<=7)[0123456789]((?<=0)[14579]|(?<=1)[12469]|(?<=2)[0127]|(?<=3)[0358]|(?<=4)[3479]|(?<=5)[0367]|(?<=6)[3458]|(?<=7)[1234589]|(?<=8)[0134789]|(?<=9)[01234568])|(?<=8)[0123]((?<=0)[1345678]|(?<=1)[012456]|(?<=2)[012345679]|(?<=3)[01236])|(?<=9)[0]((?<=0)[1345679]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[389]|(?<=1)[13]|(?<=2)[456]|(?<=3)[348]|(?<=4)[0346]|(?<=5)[234589]|(?<=6)[01234568]|(?<=7)[1239]|(?<=8)[0123467]|(?<=9)[124567])|(?<=1)[0123456789]((?<=0)[2]|(?<=1)[0234789]|(?<=2)[4789]|(?<=3)[01234679]|(?<=4)[01578]|(?<=5)[79]|(?<=6)[23489]|(?<=7)[4679]|(?<=8)[01279]|(?<=9)[0235])|(?<=2)[01234567]((?<=0)[23456789]|(?<=1)[01246789]|(?<=2)[012345678]|(?<=3)[34]|(?<=4)[46]|(?<=5)[046789]|(?<=6)[6]|(?<=7)[7])|(?<=3)[01234569]((?<=0)[13456789]|(?<=1)[01237]|(?<=2)[0123478]|(?<=3)[0123467]|(?<=4)[034678]|(?<=5)[0125689]|(?<=6)[01]|(?<=9)[9])|(?<=4)[0123456]((?<=0)[1345789]|(?<=1)[03]|(?<=2)[01345678]|(?<=3)[01235789]|(?<=4)[02345689]|(?<=5)[569]|(?<=6)[0123456])|(?<=5)[012345678]((?<=0)[123456789]|(?<=1)[124]|(?<=2)[6]|(?<=3)[0134569]|(?<=4)[12478]|(?<=5)[0]|(?<=6)[13456789]|(?<=7)[01789]|(?<=8)[03])|(?<=6)[012345689]((?<=0)[1356789]|(?<=1)[0256789]|(?<=2)[12568]|(?<=3)[149]|(?<=4)[0138]|(?<=5)[368]|(?<=6)[46789]|(?<=8)[0136]|(?<=9)[23467])|(?<=7)[0123456789]((?<=0)[123789]|(?<=1)[234]|(?<=2)[03456]|(?<=3)[02568]|(?<=4)[46]|(?<=5)[01479]|(?<=6)[345678]|(?<=7)[135689]|(?<=8)[049]|(?<=9)[268])|(?<=8)[01239]((?<=0)[13456789]|(?<=1)[01246789]|(?<=2)[012456789]|(?<=3)[01235679]|(?<=9)[9])|(?<=9)[0234567]((?<=0)[1345789]|(?<=2)[02567]|(?<=3)[1457]|(?<=4)[089]|(?<=5)[0123589]|(?<=6)[023678]|(?<=7)[06]))|(?<=3)[013456789]((?<=0)[01234567]((?<=0)[149]|(?<=1)[02345689]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[023]|(?<=5)[01456]|(?<=6)[023456789]|(?<=7)[0136])|(?<=1)[023456789]((?<=0)[19]|(?<=2)[256789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[045678]|(?<=6)[01256789]|(?<=7)[023456789]|(?<=8)[012345679]|(?<=9)[0346])|(?<=3)[012358]((?<=0)[145689]|(?<=1)[12345679]|(?<=2)[12345678]|(?<=3)[0124]|(?<=5)[1]|(?<=8)[8])|(?<=4)[0123456789]((?<=0)[13456789]|(?<=1)[01234578]|(?<=2)[68]|(?<=3)[012345678]|(?<=4)[0124569]|(?<=5)[58]|(?<=6)[012379]|(?<=7)[0123678]|(?<=8)[03467]|(?<=9)[368])|(?<=5)[0123456789]((?<=0)[3]|(?<=1)[0134]|(?<=2)[1357]|(?<=3)[048]|(?<=4)[012345789]|(?<=5)[0689]|(?<=6)[35679]|(?<=7)[0234689]|(?<=8)[45]|(?<=9)[24678])|(?<=6)[01234]((?<=0)[2345679]|(?<=1)[0123456789]|(?<=2)[014569]|(?<=3)[457]|(?<=4)[7])|(?<=7)[0145678]((?<=0)[123456789]|(?<=1)[0123456]|(?<=4)[4]|(?<=5)[569]|(?<=6)[0123457]|(?<=7)[01234678]|(?<=8)[1256])|(?<=8)[0123456789]((?<=0)[1359]|(?<=1)[01235]|(?<=2)[357]|(?<=3)[045789]|(?<=4)[0134789]|(?<=5)[0123456789]|(?<=6)[0578]|(?<=7)[023567]|(?<=8)[014]|(?<=9)[0678])|(?<=9)[0123456789]((?<=0)[1345789]|(?<=1)[234679]|(?<=2)[01248]|(?<=3)[0156]|(?<=4)[4678]|(?<=5)[0234567]|(?<=6)[0567]|(?<=7)[12346]|(?<=8)[0123]|(?<=9)[013]))|(?<=4)[124679]((?<=1)[01234]((?<=0)[1234589]|(?<=1)[0234679]|(?<=2)[0]|(?<=3)[45789]|(?<=4)[0125])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[0125679]|(?<=2)[123489]|(?<=3)[123456789]|(?<=4)[0123]|(?<=5)[01]|(?<=6)[6789]|(?<=7)[5]|(?<=8)[56789]|(?<=9)[123])|(?<=4)[23456789]((?<=2)[089]|(?<=3)[12346]|(?<=4)[25689]|(?<=5)[023]|(?<=6)[15]|(?<=7)[01234569]|(?<=8)[012478]|(?<=9)[18])|(?<=6)[01356789]((?<=0)[1246789]|(?<=1)[034]|(?<=3)[789]|(?<=5)[2345]|(?<=6)[1789]|(?<=7)[79]|(?<=8)[134589]|(?<=9)[0158])|(?<=7)[0123456789]((?<=0)[5]|(?<=1)[145]|(?<=2)[9]|(?<=3)[14679]|(?<=4)[134678]|(?<=5)[3689]|(?<=6)[0129]|(?<=7)[123]|(?<=8)[5678]|(?<=9)[7])|(?<=9)[45789]((?<=4)[5679]|(?<=5)[012367]|(?<=7)[24]|(?<=8)[123467]|(?<=9)[0467]))|(?<=5)[012456789]((?<=0)[0123456789]((?<=0)[4567]|(?<=1)[03469]|(?<=2)[023]|(?<=3)[123456]|(?<=4)[0234569]|(?<=5)[1234578]|(?<=6)[012348]|(?<=7)[01234789]|(?<=8)[023579]|(?<=9)[14678])|(?<=1)[12345678]((?<=1)[12456789]|(?<=2)[0145678]|(?<=3)[01356]|(?<=4)[36789]|(?<=5)[01]|(?<=6)[0]|(?<=7)[1235689]|(?<=8)[0134568])|(?<=2)[012345]((?<=0)[3456789]|(?<=1)[012345678]|(?<=2)[1234689]|(?<=3)[345]|(?<=4)[2349]|(?<=5)[4])|(?<=4)[0456789]((?<=0)[1456]|(?<=4)[123467]|(?<=5)[236789]|(?<=6)[0123469]|(?<=7)[034567]|(?<=8)[017]|(?<=9)[01])|(?<=5)[0456789]((?<=0)[134]|(?<=4)[012345689]|(?<=5)[023459]|(?<=6)[345]|(?<=7)[0123456789]|(?<=8)[0124567]|(?<=9)[234])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[01345689]|(?<=2)[012]|(?<=3)[0234]|(?<=4)[0356789]|(?<=5)[01234]|(?<=6)[01]|(?<=7)[012347])|(?<=7)[34567]((?<=3)[9]|(?<=4)[01456789]|(?<=5)[012456789]|(?<=6)[01345689]|(?<=7)[123456])|(?<=8)[0129]((?<=0)[123568]|(?<=1)[016]|(?<=2)[4]|(?<=9)[6])|(?<=9)[056789]((?<=0)[134567]|(?<=5)[012346789]|(?<=6)[0123678]|(?<=7)[12345689]|(?<=8)[01346789]|(?<=9)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[35689]|(?<=1)[0367]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[01236789]|(?<=5)[12347]|(?<=6)[4679]|(?<=7)[1589]|(?<=8)[012389]|(?<=9)[123])|(?<=1)[013]((?<=0)[1456789]|(?<=1)[01234567]|(?<=3)[0])|(?<=2)[05678]((?<=0)[13567]|(?<=5)[01568]|(?<=6)[023456789]|(?<=7)[12346789]|(?<=8)[0])|(?<=3)[01234567]((?<=0)[135]|(?<=1)[012346789]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[03456]|(?<=5)[0123]|(?<=6)[02]|(?<=7)[013456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0156]|(?<=3)[2569]|(?<=4)[12456]|(?<=5)[13456]|(?<=6)[07]|(?<=7)[0134567]|(?<=8)[0123])|(?<=5)[012345678]((?<=0)[23579]|(?<=1)[1238]|(?<=2)[123456789]|(?<=3)[02589]|(?<=4)[012345789]|(?<=5)[0135689]|(?<=6)[0124789]|(?<=7)[1245689]|(?<=8)[0123457])|(?<=6)[015689]((?<=0)[23456789]|(?<=1)[01235789]|(?<=5)[2]|(?<=6)[3]|(?<=8)[8]|(?<=9)[35])|(?<=7)[023456789]((?<=0)[13]|(?<=2)[023678]|(?<=3)[268]|(?<=4)[012489]|(?<=5)[01234689]|(?<=6)[13456789]|(?<=7)[356]|(?<=8)[23456]|(?<=9)[023])|(?<=8)[034567]((?<=0)[14]|(?<=3)[02]|(?<=4)[9]|(?<=5)[01234568]|(?<=6)[01235679]|(?<=7)[014579])|(?<=9)[012]((?<=0)[1478]|(?<=1)[023569]|(?<=2)[125]))|(?<=7)[012346789]((?<=0)[123456789]((?<=1)[02345689]|(?<=2)[02356789]|(?<=3)[01234567]|(?<=4)[0236789]|(?<=5)[0125789]|(?<=6)[0124679]|(?<=7)[2345689]|(?<=8)[023567]|(?<=9)[015678])|(?<=1)[0123456789]((?<=0)[1]|(?<=1)[058]|(?<=2)[2789]|(?<=3)[024578]|(?<=4)[012345689]|(?<=5)[013]|(?<=6)[0567]|(?<=7)[124589]|(?<=8)[013456789]|(?<=9)[01])|(?<=2)[0123]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[018]|(?<=3)[28])|(?<=3)[0123456789]((?<=0)[12356789]|(?<=1)[01235678]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[0123578]|(?<=5)[012345679]|(?<=6)[01235679]|(?<=7)[0345679]|(?<=8)[013578]|(?<=9)[14678])|(?<=4)[0125]((?<=0)[23456789]|(?<=1)[012569]|(?<=2)[1]|(?<=5)[0])|(?<=6)[01245689]((?<=0)[14]|(?<=1)[45678]|(?<=2)[0]|(?<=4)[01235]|(?<=5)[06789]|(?<=6)[0345]|(?<=8)[0123678]|(?<=9)[0124])|(?<=7)[01234567]((?<=0)[1589]|(?<=1)[0134569]|(?<=2)[12345679]|(?<=3)[012378]|(?<=4)[2358]|(?<=5)[234567]|(?<=6)[0234569]|(?<=7)[012479])|(?<=8)[0123456789]((?<=0)[134679]|(?<=1)[013489]|(?<=2)[015689]|(?<=3)[0]|(?<=4)[01356789]|(?<=5)[12347]|(?<=6)[0123569]|(?<=7)[012346789]|(?<=8)[0125678]|(?<=9)[012])|(?<=9)[0123]((?<=0)[29]|(?<=1)[2456789]|(?<=2)[012349]|(?<=3)[1248]))|(?<=8)[0123456789]((?<=0)[012345678]((?<=0)[124678]|(?<=1)[1256789]|(?<=2)[13489]|(?<=3)[04679]|(?<=4)[0124679]|(?<=5)[0234789]|(?<=6)[0136789]|(?<=7)[05679]|(?<=8)[0])|(?<=1)[012345]((?<=0)[3456789]|(?<=1)[123456789]|(?<=2)[025678]|(?<=3)[1234589]|(?<=4)[1]|(?<=5)[2])|(?<=2)[023456]((?<=0)[1]|(?<=2)[0124569]|(?<=3)[0123567]|(?<=4)[012]|(?<=5)[13456789]|(?<=6)[01])|(?<=3)[0123456789]((?<=0)[15]|(?<=1)[0135678]|(?<=2)[016789]|(?<=3)[0234789]|(?<=4)[01234578]|(?<=5)[1256789]|(?<=6)[12356789]|(?<=7)[0124569]|(?<=8)[012789]|(?<=9)[012])|(?<=4)[0245678]((?<=0)[1]|(?<=2)[5]|(?<=4)[9]|(?<=5)[012345679]|(?<=6)[0123489]|(?<=7)[12345678]|(?<=8)[1235678])|(?<=5)[045678]((?<=0)[13456]|(?<=4)[12345789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[012345789]|(?<=8)[01235789])|(?<=6)[012345678]((?<=0)[136]|(?<=1)[014789]|(?<=2)[01235679]|(?<=3)[123579]|(?<=4)[1234567]|(?<=5)[0124589]|(?<=6)[134568]|(?<=7)[0123467]|(?<=8)[035])|(?<=7)[02345678]((?<=0)[13]|(?<=2)[012356]|(?<=3)[0123678]|(?<=4)[04568]|(?<=5)[13469]|(?<=6)[01245789]|(?<=7)[123468]|(?<=8)[1])|(?<=8)[0234567]((?<=0)[14]|(?<=2)[146789]|(?<=3)[3489]|(?<=4)[1346789]|(?<=5)[01256789]|(?<=6)[02345689]|(?<=7)[013689])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[34567]|(?<=2)[012345789]|(?<=3)[0]|(?<=4)[01346789]|(?<=5)[012347]|(?<=6)[1234567]))|(?<=9)[012345678]((?<=0)[3456789]((?<=3)[89]|(?<=4)[0124567]|(?<=5)[146789]|(?<=6)[123679]|(?<=7)[13489]|(?<=8)[2368]|(?<=9)[024567])|(?<=1)[012456789]((?<=0)[8]|(?<=1)[01345679]|(?<=2)[0]|(?<=4)[045689]|(?<=5)[0234679]|(?<=6)[026789]|(?<=7)[0345679]|(?<=8)[039]|(?<=9)[1234])|(?<=2)[01367]((?<=0)[1234689]|(?<=1)[0123678]|(?<=3)[2]|(?<=6)[9]|(?<=7)[2])|(?<=3)[023456]((?<=0)[1579]|(?<=2)[02345678]|(?<=3)[0256789]|(?<=4)[125678]|(?<=5)[0245689]|(?<=6)[01234567])|(?<=4)[02345678]((?<=0)[126]|(?<=2)[12356789]|(?<=3)[79]|(?<=4)[03]|(?<=5)[12569]|(?<=6)[12456]|(?<=7)[0456789]|(?<=8)[0123])|(?<=5)[023456789]((?<=0)[137]|(?<=2)[059]|(?<=3)[0124]|(?<=4)[0]|(?<=5)[36]|(?<=6)[0123457]|(?<=7)[123467]|(?<=8)[1]|(?<=9)[5])|(?<=6)[023456]((?<=0)[1]|(?<=2)[9]|(?<=3)[01358]|(?<=4)[13578]|(?<=5)[23467]|(?<=6)[123456789])|(?<=7)[034567]((?<=0)[125]|(?<=3)[05679]|(?<=4)[0134567]|(?<=5)[0123569]|(?<=6)[2679]|(?<=7)[1236])|(?<=8)[123456789]((?<=1)[3579]|(?<=2)[345678]|(?<=3)[2467]|(?<=4)[01256]|(?<=5)[149]|(?<=6)[1267]|(?<=7)[07]|(?<=8)[56]|(?<=9)[7])))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[01234567]((?<=0)[346789]|(?<=1)[012349]|(?<=2)[02356]|(?<=3)[1367]|(?<=4)[015679]|(?<=5)[01256789]|(?<=6)[01235789]|(?<=7)[015678])|(?<=1)[0124567]((?<=0)[4789]|(?<=1)[015789]|(?<=2)[1]|(?<=4)[023456]|(?<=5)[0257]|(?<=6)[0125]|(?<=7)[015678])|(?<=2)[012345789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012389]|(?<=3)[1]|(?<=4)[1235]|(?<=5)[8]|(?<=7)[2]|(?<=8)[0]|(?<=9)[19])|(?<=3)[123456789]((?<=1)[01236]|(?<=2)[248]|(?<=3)[04679]|(?<=4)[2678]|(?<=5)[01356789]|(?<=6)[013]|(?<=7)[012469]|(?<=8)[0357]|(?<=9)[01])|(?<=4)[012345678]((?<=0)[2349]|(?<=1)[9]|(?<=2)[2]|(?<=3)[47]|(?<=4)[024578]|(?<=5)[6]|(?<=6)[0148]|(?<=7)[25]|(?<=8)[1469])|(?<=5)[0123]((?<=0)[2345789]|(?<=1)[0134567]|(?<=2)[6]|(?<=3)[6])|(?<=6)[0]((?<=0)[1])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[9]|(?<=3)[47]|(?<=4)[014]|(?<=5)[9]|(?<=6)[39]|(?<=7)[1])|(?<=8)[01234567]((?<=0)[13678]|(?<=1)[035689]|(?<=2)[0346789]|(?<=3)[01]|(?<=4)[034579]|(?<=5)[4568]|(?<=6)[2358]|(?<=7)[034])|(?<=9)[0123456789]((?<=0)[236]|(?<=1)[345]|(?<=2)[137]|(?<=3)[59]|(?<=4)[01369]|(?<=5)[38]|(?<=6)[245]|(?<=7)[279]|(?<=8)[1238]|(?<=9)[57]))|(?<=1)[012345678]((?<=0)[013456789]((?<=0)[12345678]|(?<=1)[0145678]|(?<=3)[013459]|(?<=4)[012345689]|(?<=5)[12569]|(?<=6)[34]|(?<=7)[13456]|(?<=8)[0356]|(?<=9)[1234578])|(?<=1)[02345678]((?<=0)[12]|(?<=2)[149]|(?<=3)[259]|(?<=4)[123469]|(?<=5)[9]|(?<=6)[4689]|(?<=7)[1459]|(?<=8)[0139])|(?<=2)[01234567]((?<=0)[134]|(?<=1)[469]|(?<=2)[246]|(?<=3)[01248]|(?<=4)[0]|(?<=5)[04567]|(?<=6)[0234578]|(?<=7)[14])|(?<=3)[01345689]((?<=0)[1]|(?<=1)[0147]|(?<=3)[29]|(?<=4)[8]|(?<=5)[12]|(?<=6)[04567]|(?<=8)[56]|(?<=9)[07])|(?<=4)[0267]((?<=0)[8]|(?<=2)[15]|(?<=6)[45]|(?<=7)[2])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[23479]|(?<=2)[24678]|(?<=3)[145789]|(?<=4)[03478]|(?<=5)[345789]|(?<=6)[0234678]|(?<=7)[12])|(?<=6)[0123456]((?<=0)[1234567]|(?<=1)[2569]|(?<=2)[12]|(?<=3)[01256]|(?<=4)[023579]|(?<=5)[01359]|(?<=6)[03679])|(?<=7)[01234567]((?<=0)[1]|(?<=1)[2349]|(?<=2)[123579]|(?<=3)[159]|(?<=4)[0569]|(?<=5)[149]|(?<=6)[02346]|(?<=7)[2345678])|(?<=8)[0123456]((?<=0)[4]|(?<=1)[02579]|(?<=2)[124568]|(?<=3)[123456789]|(?<=4)[0345789]|(?<=5)[589]|(?<=6)[12]))|(?<=2)[01234567]((?<=0)[02345678]((?<=0)[13]|(?<=2)[012345789]|(?<=3)[1256789]|(?<=4)[0145789]|(?<=5)[0134568]|(?<=6)[01469]|(?<=7)[1689]|(?<=8)[1235678])|(?<=1)[0234567]((?<=0)[134]|(?<=2)[023479]|(?<=3)[0134]|(?<=4)[01]|(?<=5)[134679]|(?<=6)[03467]|(?<=7)[01])|(?<=2)[012345678]((?<=0)[2467]|(?<=1)[01457]|(?<=2)[03]|(?<=3)[246]|(?<=4)[0]|(?<=5)[2469]|(?<=6)[1256]|(?<=7)[3456]|(?<=8)[056])|(?<=3)[0234567]((?<=0)[13]|(?<=2)[012345678]|(?<=3)[023789]|(?<=4)[345789]|(?<=5)[012456]|(?<=6)[16789]|(?<=7)[012468])|(?<=4)[0123456]((?<=0)[4689]|(?<=1)[013]|(?<=2)[0]|(?<=3)[167]|(?<=4)[01245]|(?<=5)[01235689]|(?<=6)[1234])|(?<=5)[0123456]((?<=0)[13]|(?<=1)[689]|(?<=2)[8]|(?<=3)[39]|(?<=4)[14]|(?<=5)[3]|(?<=6)[567])|(?<=6)[02345]((?<=0)[23]|(?<=2)[9]|(?<=3)[13458]|(?<=4)[279]|(?<=5)[3])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[235678]|(?<=2)[124689]|(?<=3)[23]|(?<=4)[0123689]|(?<=5)[34789]|(?<=6)[245]|(?<=7)[6]|(?<=8)[248]))|(?<=3)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[12356789]|(?<=3)[0123567]|(?<=4)[04567]|(?<=5)[0456]|(?<=6)[01245678]|(?<=7)[0124678]|(?<=8)[01245])|(?<=1)[0123456]((?<=0)[1235679]|(?<=1)[01235679]|(?<=2)[35678]|(?<=3)[05678]|(?<=4)[023456789]|(?<=5)[012345678]|(?<=6)[024])|(?<=2)[01234]((?<=0)[12345679]|(?<=1)[012345789]|(?<=2)[01234789]|(?<=3)[0125]|(?<=4)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01456789]|(?<=2)[0123456]|(?<=3)[01234678]|(?<=4)[012345678]|(?<=5)[016789]|(?<=6)[0])|(?<=4)[0123456]((?<=0)[23678]|(?<=1)[02346]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[0235679]|(?<=5)[012678]|(?<=6)[023456789])|(?<=5)[01234567]((?<=0)[12456]|(?<=1)[01256789]|(?<=2)[0123456789]|(?<=3)[01234567]|(?<=4)[01235789]|(?<=5)[1345678]|(?<=6)[05679]|(?<=7)[01])|(?<=6)[012]((?<=0)[456789]|(?<=1)[012345679]|(?<=2)[03])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[136789]|(?<=2)[01234578]|(?<=3)[012345689]|(?<=4)[06789]|(?<=5)[045689]|(?<=6)[0124678]|(?<=7)[123789]|(?<=8)[023678]|(?<=9)[13])|(?<=8)[01234]((?<=0)[245]|(?<=1)[12]|(?<=2)[124]|(?<=3)[0267]|(?<=4)[02345])|(?<=9)[012345678]((?<=0)[12356789]|(?<=1)[023457]|(?<=2)[0568]|(?<=3)[01234589]|(?<=4)[02345678]|(?<=5)[0123]|(?<=6)[123478]|(?<=7)[123467]|(?<=8)[13568]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[134]|(?<=1)[0127]|(?<=2)[123468]|(?<=3)[0259]|(?<=4)[01456789]|(?<=5)[0234567]|(?<=6)[024578]|(?<=7)[02467]|(?<=8)[01245679]|(?<=9)[023459])|(?<=1)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345679])|(?<=2)[012345678]((?<=0)[123]|(?<=1)[24567]|(?<=2)[134]|(?<=3)[0123456]|(?<=4)[013]|(?<=5)[013456]|(?<=6)[0246]|(?<=7)[0234568]|(?<=8)[015678])|(?<=3)[0123]((?<=0)[12345678]|(?<=1)[012349]|(?<=2)[015]|(?<=3)[3])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[0123578]|(?<=2)[0345789]|(?<=3)[0126789]|(?<=4)[01234569]|(?<=5)[01245]|(?<=6)[0]|(?<=7)[013]|(?<=8)[1345]|(?<=9)[013])|(?<=5)[015]((?<=0)[2345679]|(?<=1)[01245]|(?<=5)[5])|(?<=6)[0123456789]((?<=0)[16789]|(?<=1)[01234589]|(?<=2)[012456789]|(?<=3)[0234789]|(?<=4)[0134567]|(?<=5)[1234679]|(?<=6)[01235679]|(?<=7)[0125678]|(?<=8)[01235789]|(?<=9)[013579])|(?<=7)[0123]((?<=0)[23456789]|(?<=1)[048]|(?<=2)[01]|(?<=3)[0])|(?<=8)[0123456789]((?<=0)[24579]|(?<=1)[134578]|(?<=2)[0245678]|(?<=3)[036789]|(?<=4)[01234679]|(?<=5)[01345679]|(?<=6)[14567]|(?<=7)[0458]|(?<=8)[012379]|(?<=9)[0])|(?<=9)[0]((?<=0)[1234567]))|(?<=5)[012345678]((?<=0)[0134567]((?<=0)[1235]|(?<=1)[1345]|(?<=3)[023469]|(?<=4)[0124]|(?<=5)[0123456]|(?<=6)[2456789]|(?<=7)[0])|(?<=1)[01234567]((?<=0)[123567]|(?<=1)[123589]|(?<=2)[0123]|(?<=3)[01235]|(?<=4)[024678]|(?<=5)[023456789]|(?<=6)[0246789]|(?<=7)[12467])|(?<=2)[0123456]((?<=0)[23456789]|(?<=1)[123456789]|(?<=2)[0345679]|(?<=3)[01236789]|(?<=4)[0123456789]|(?<=5)[125]|(?<=6)[7])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[012456789]|(?<=5)[01234689]|(?<=6)[0123589]|(?<=7)[012378]|(?<=8)[012345789]|(?<=9)[0])|(?<=4)[0123456]((?<=0)[234569]|(?<=1)[045679]|(?<=2)[034689]|(?<=3)[0123459]|(?<=4)[09]|(?<=5)[89]|(?<=6)[9])|(?<=5)[0]((?<=0)[123456])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0123489]|(?<=3)[01468]|(?<=4)[0245678]|(?<=5)[012346789]|(?<=6)[01239]|(?<=7)[1234789]|(?<=8)[0124568]|(?<=9)[023456789])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[014569]|(?<=2)[013479]|(?<=3)[2459]|(?<=4)[0123456]|(?<=5)[0]|(?<=6)[0146789]|(?<=7)[01235689]|(?<=8)[0234689])|(?<=8)[0123456789]((?<=0)[1456789]|(?<=1)[02345679]|(?<=2)[012678]|(?<=3)[0123568]|(?<=4)[01345689]|(?<=5)[01345689]|(?<=6)[0123456789]|(?<=7)[012345679]|(?<=8)[0123456789]|(?<=9)[013456789]))|(?<=6)[0123456789]((?<=0)[0134567]((?<=0)[1]|(?<=1)[12367]|(?<=3)[0123456789]|(?<=4)[0145789]|(?<=5)[0125678]|(?<=6)[0234589]|(?<=7)[0124567])|(?<=1)[012345678]((?<=0)[234567]|(?<=1)[0123578]|(?<=2)[012345678]|(?<=3)[0135]|(?<=4)[02346789]|(?<=5)[0145678]|(?<=6)[012345678]|(?<=7)[012356]|(?<=8)[012346])|(?<=2)[0123456789]((?<=0)[1234568]|(?<=1)[46789]|(?<=2)[012456789]|(?<=3)[145679]|(?<=4)[01]|(?<=5)[0469]|(?<=6)[08]|(?<=7)[8]|(?<=8)[0]|(?<=9)[0])|(?<=3)[012456789]((?<=0)[12347]|(?<=1)[0129]|(?<=2)[012347]|(?<=4)[01256789]|(?<=5)[06]|(?<=6)[0568]|(?<=7)[1345679]|(?<=8)[1235]|(?<=9)[01234])|(?<=4)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=5)[0123456789]((?<=0)[124678]|(?<=1)[013467]|(?<=2)[468]|(?<=3)[01246789]|(?<=4)[02345]|(?<=5)[023456]|(?<=6)[12357]|(?<=7)[01234]|(?<=8)[02]|(?<=9)[05])|(?<=6)[0123]((?<=0)[1]|(?<=1)[345679]|(?<=2)[48]|(?<=3)[57])|(?<=7)[0123456789]((?<=0)[123456]|(?<=1)[014]|(?<=2)[135]|(?<=3)[012378]|(?<=4)[01235678]|(?<=5)[059]|(?<=6)[0134567]|(?<=7)[012346789]|(?<=8)[13456789]|(?<=9)[123456789])|(?<=8)[01234]((?<=0)[23456789]|(?<=1)[45689]|(?<=2)[5]|(?<=3)[5]|(?<=4)[5])|(?<=9)[0123456789]((?<=0)[12]|(?<=1)[0134579]|(?<=2)[023689]|(?<=3)[01236789]|(?<=4)[013567]|(?<=5)[0123789]|(?<=6)[012578]|(?<=7)[014589]|(?<=8)[02456789]|(?<=9)[012468]))|(?<=7)[0123456789]((?<=0)[012346]((?<=0)[136]|(?<=1)[012678]|(?<=2)[012345]|(?<=3)[012345678]|(?<=4)[0123]|(?<=6)[0])|(?<=1)[01234567]((?<=0)[2468]|(?<=1)[012456789]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[012357]|(?<=5)[0]|(?<=6)[01234567]|(?<=7)[02457])|(?<=2)[02345678]((?<=0)[13]|(?<=2)[0345679]|(?<=3)[012456]|(?<=4)[03467]|(?<=5)[0]|(?<=6)[0345]|(?<=7)[0234]|(?<=8)[0123])|(?<=3)[023456789]((?<=0)[23456]|(?<=2)[04567]|(?<=3)[01456789]|(?<=4)[0124568]|(?<=5)[123456789]|(?<=6)[0126789]|(?<=7)[0134]|(?<=8)[012345678]|(?<=9)[02346])|(?<=4)[0234567]((?<=0)[134568]|(?<=2)[01479]|(?<=3)[12345678]|(?<=4)[135689]|(?<=5)[123456789]|(?<=6)[0245789]|(?<=7)[01])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[234569]|(?<=2)[012345789]|(?<=3)[1257]|(?<=4)[126]|(?<=5)[012378]|(?<=6)[12478]|(?<=7)[3456789]|(?<=8)[014568]|(?<=9)[01678])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[0123569]|(?<=2)[0]|(?<=3)[01345789]|(?<=4)[089]|(?<=5)[4]|(?<=6)[056]|(?<=7)[0]|(?<=8)[3])|(?<=7)[012]((?<=0)[8]|(?<=1)[012345]|(?<=2)[05])|(?<=8)[0345678]((?<=0)[234579]|(?<=3)[1234678]|(?<=4)[01256789]|(?<=5)[01345789]|(?<=6)[01235689]|(?<=7)[0124569]|(?<=8)[01245])|(?<=9)[0123456789]((?<=0)[145679]|(?<=1)[678]|(?<=2)[012345689]|(?<=3)[023]|(?<=4)[01234689]|(?<=5)[01245789]|(?<=6)[03456789]|(?<=7)[014578]|(?<=8)[0123679]|(?<=9)[0123457]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123569]|(?<=1)[457]|(?<=2)[1235678]|(?<=3)[02345689]|(?<=4)[012345789]|(?<=5)[0149]|(?<=6)[02345679]|(?<=7)[01234569]|(?<=8)[01234589]|(?<=9)[12345678])|(?<=1)[0123456789]((?<=0)[134589]|(?<=1)[14678]|(?<=2)[0245678]|(?<=3)[01345789]|(?<=4)[013456]|(?<=5)[024789]|(?<=6)[012456789]|(?<=7)[0346789]|(?<=8)[023456789]|(?<=9)[0123578])|(?<=2)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[013456789]|(?<=3)[03456789]|(?<=4)[023])|(?<=3)[0123456789]((?<=0)[124679]|(?<=1)[0234567]|(?<=2)[02346789]|(?<=3)[1456]|(?<=4)[01268]|(?<=5)[03679]|(?<=6)[0237]|(?<=7)[01457]|(?<=8)[01236]|(?<=9)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[0124569]|(?<=5)[01345678]|(?<=6)[0123456789]|(?<=7)[012356])|(?<=5)[0123]((?<=0)[2345679]|(?<=1)[9]|(?<=2)[9]|(?<=3)[2])|(?<=6)[0123456]((?<=0)[123479]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[0279]|(?<=5)[0123456789]|(?<=6)[12])|(?<=7)[01234567]((?<=0)[13568]|(?<=1)[0]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0123456789]|(?<=5)[045679]|(?<=6)[01235678]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[16789]|(?<=1)[1356789]|(?<=2)[01234579]|(?<=3)[1245678]|(?<=4)[012356789]|(?<=5)[0123456789]|(?<=6)[0124567]|(?<=7)[0123456789]|(?<=8)[01345689]|(?<=9)[01234567])|(?<=9)[013]((?<=0)[6]|(?<=1)[01257]|(?<=3)[3]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1246789]|(?<=1)[0123457]|(?<=2)[1246789]|(?<=3)[01234678]|(?<=4)[0235678]|(?<=5)[01235678]|(?<=6)[01345678]|(?<=7)[012345689]|(?<=8)[02345789]|(?<=9)[0123456789])|(?<=1)[0123]((?<=0)[123467]|(?<=1)[1235679]|(?<=2)[056789]|(?<=3)[0])|(?<=2)[02345678]((?<=0)[123]|(?<=2)[014789]|(?<=3)[02345678]|(?<=4)[01256789]|(?<=5)[012345689]|(?<=6)[123456789]|(?<=7)[0124679]|(?<=8)[23456789])|(?<=3)[01234]((?<=0)[12345679]|(?<=1)[025689]|(?<=2)[012356789]|(?<=3)[012356789]|(?<=4)[0123456789])|(?<=4)[0123456]((?<=0)[12345689]|(?<=1)[0125789]|(?<=2)[0134568]|(?<=3)[014567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[014])|(?<=5)[01234]((?<=0)[3456789]|(?<=1)[29]|(?<=2)[5]|(?<=3)[4]|(?<=4)[468])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[012356789]|(?<=3)[0123456789]|(?<=4)[02345689]|(?<=5)[01345679]|(?<=6)[034578]|(?<=7)[045679]|(?<=8)[02345689]|(?<=9)[06])|(?<=7)[0123456789]((?<=0)[15679]|(?<=1)[02356789]|(?<=2)[012456789]|(?<=3)[03568]|(?<=4)[03456789]|(?<=5)[1235679]|(?<=6)[0245689]|(?<=7)[045679]|(?<=8)[012348]|(?<=9)[13569])|(?<=8)[0123456789]((?<=0)[125678]|(?<=1)[245678]|(?<=2)[0125679]|(?<=3)[13456789]|(?<=4)[01789]|(?<=5)[23458]|(?<=6)[123468]|(?<=7)[012346789]|(?<=8)[0134567]|(?<=9)[123456])|(?<=9)[01234567]((?<=0)[12358]|(?<=1)[012356789]|(?<=2)[012579]|(?<=3)[01458]|(?<=4)[25678]|(?<=5)[023589]|(?<=6)[01235789]|(?<=7)[01])))|(?<=5)[0123456789]((?<=0)[012345678]((?<=0)[01234567]((?<=0)[12356789]|(?<=1)[0234]|(?<=2)[012356789]|(?<=3)[12345689]|(?<=4)[01246789]|(?<=5)[01245678]|(?<=6)[0123456789]|(?<=7)[01234568])|(?<=1)[01234567]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0134])|(?<=2)[01234567]((?<=0)[1678]|(?<=1)[012346789]|(?<=2)[02356789]|(?<=3)[0123456789]|(?<=4)[012346789]|(?<=5)[01245678]|(?<=6)[12345689]|(?<=7)[12345678])|(?<=3)[012]((?<=0)[9]|(?<=1)[012345679]|(?<=2)[0123457])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0134678]|(?<=3)[012345689]|(?<=4)[0146789]|(?<=5)[0123456789]|(?<=6)[01456789]|(?<=7)[012356789]|(?<=8)[0234])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[01235689]|(?<=4)[01234568]|(?<=5)[1246789]|(?<=6)[012356789]|(?<=7)[013456789]|(?<=8)[123568]|(?<=9)[012345789])|(?<=6)[012345678]((?<=0)[123456789]|(?<=1)[12369]|(?<=2)[0123456789]|(?<=3)[01234568]|(?<=4)[12345789]|(?<=5)[012345789]|(?<=6)[02456789]|(?<=7)[01234567]|(?<=8)[012])|(?<=7)[0]((?<=0)[1237])|(?<=8)[03456]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[012356789]|(?<=5)[134789]|(?<=6)[01234]))|(?<=1)[0123456]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01245689]|(?<=2)[023456789]|(?<=3)[013456789]|(?<=4)[01456789]|(?<=5)[01234568]|(?<=6)[0123])|(?<=1)[01]((?<=0)[1345689]|(?<=1)[1])|(?<=2)[0345]((?<=0)[1]|(?<=3)[01245789]|(?<=4)[0123456789]|(?<=5)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1348]|(?<=4)[0123567]|(?<=5)[014578]|(?<=6)[03456])|(?<=4)[03456]((?<=0)[1]|(?<=3)[012369]|(?<=4)[0123456789]|(?<=5)[01234589]|(?<=6)[0123567])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[0]|(?<=2)[01356789]|(?<=3)[01234567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012356789])|(?<=6)[0345]((?<=0)[1]|(?<=3)[0126789]|(?<=4)[056789]|(?<=5)[012346]))|(?<=2)[012345678]((?<=0)[034567]((?<=0)[123]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[023467]|(?<=6)[045689]|(?<=7)[0123456789])|(?<=1)[034567]((?<=0)[1]|(?<=3)[23456]|(?<=4)[012467]|(?<=5)[1456789]|(?<=6)[012345689]|(?<=7)[0125])|(?<=2)[012345]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[123567]|(?<=4)[01256789]|(?<=5)[123457])|(?<=3)[0123456]((?<=0)[1256789]|(?<=1)[02345678]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[012456789]|(?<=5)[12345689]|(?<=6)[12])|(?<=4)[01]((?<=0)[12345]|(?<=1)[1])|(?<=5)[03456789]((?<=0)[1]|(?<=3)[0134567]|(?<=4)[023489]|(?<=5)[01234567]|(?<=6)[012356789]|(?<=7)[0123467]|(?<=8)[0134568]|(?<=9)[01345])|(?<=6)[0123456]((?<=0)[1]|(?<=1)[9]|(?<=2)[0134567]|(?<=3)[0125789]|(?<=4)[0145679]|(?<=5)[0123456789]|(?<=6)[0])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0126789]|(?<=3)[012789]|(?<=4)[256789]|(?<=5)[0123456789]|(?<=6)[0156789]|(?<=7)[1234678])|(?<=8)[0]((?<=0)[123467]))|(?<=3)[01245789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[0123456789]|(?<=2)[0123479]|(?<=3)[123456789]|(?<=4)[02456789]|(?<=5)[01789]|(?<=6)[13569]|(?<=7)[02345689]|(?<=8)[0135689]|(?<=9)[012345789])|(?<=1)[0123456789]((?<=0)[3458]|(?<=1)[04589]|(?<=2)[01256789]|(?<=3)[0279]|(?<=4)[0234679]|(?<=5)[0134678]|(?<=6)[78]|(?<=7)[026789]|(?<=8)[12345689]|(?<=9)[0125])|(?<=2)[01239]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[35]|(?<=9)[5])|(?<=4)[0]((?<=0)[23456])|(?<=5)[0123456789]((?<=0)[12345678]|(?<=1)[015678]|(?<=2)[012356789]|(?<=3)[01234678]|(?<=4)[01345689]|(?<=5)[013456789]|(?<=6)[0123569]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[034789])|(?<=7)[0129]((?<=0)[3456]|(?<=1)[13456789]|(?<=2)[6]|(?<=9)[2])|(?<=8)[012]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[01567])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[01369]|(?<=2)[02345689]|(?<=3)[012345679]|(?<=4)[012346789]|(?<=5)[01234569]|(?<=6)[01234589]))|(?<=4)[0123456789]((?<=0)[0128]((?<=0)[12345679]|(?<=1)[134567]|(?<=2)[012345678]|(?<=8)[2])|(?<=1)[012345678]((?<=0)[123467]|(?<=1)[0123459]|(?<=2)[013456789]|(?<=3)[056789]|(?<=4)[0139]|(?<=5)[012345679]|(?<=6)[012569]|(?<=7)[013457]|(?<=8)[0])|(?<=2)[01234]((?<=0)[1245789]|(?<=1)[01234567]|(?<=2)[0789]|(?<=3)[0245]|(?<=4)[1567])|(?<=3)[01]((?<=0)[12347]|(?<=1)[13])|(?<=4)[0123456789]((?<=0)[1356789]|(?<=1)[01234678]|(?<=2)[012345678]|(?<=3)[03567]|(?<=4)[01236789]|(?<=5)[012456789]|(?<=6)[02345679]|(?<=7)[0134569]|(?<=8)[012456789]|(?<=9)[0134589])|(?<=5)[0123456]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[0145679]|(?<=3)[0146789]|(?<=4)[0125678]|(?<=5)[02456789]|(?<=6)[01234568])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[012345689]|(?<=2)[123456789]|(?<=3)[012456789]|(?<=4)[234568]|(?<=5)[0123456789]|(?<=6)[0145679]|(?<=7)[0])|(?<=7)[0234567]((?<=0)[13]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[01256789]|(?<=5)[01456789]|(?<=6)[01236789]|(?<=7)[0123])|(?<=8)[0123456789]((?<=0)[156]|(?<=1)[023479]|(?<=2)[01246789]|(?<=3)[0256789]|(?<=4)[0123456789]|(?<=5)[03456789]|(?<=6)[124578]|(?<=7)[0123456]|(?<=8)[089]|(?<=9)[1356])|(?<=9)[012345678]((?<=0)[1249]|(?<=1)[1345]|(?<=2)[1236789]|(?<=3)[012357]|(?<=4)[0123456789]|(?<=5)[026]|(?<=6)[012345678]|(?<=7)[014789]|(?<=8)[0123456]))|(?<=5)[01346789]((?<=0)[0123456789]((?<=0)[1356789]|(?<=1)[12346789]|(?<=2)[0145679]|(?<=3)[0123678]|(?<=4)[012345679]|(?<=5)[1234567]|(?<=6)[035689]|(?<=7)[012345679]|(?<=8)[0245789]|(?<=9)[02])|(?<=1)[01235]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0]|(?<=5)[05])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[01245789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[023456789]|(?<=6)[02346789]|(?<=7)[012345689]|(?<=8)[12456789]|(?<=9)[015678])|(?<=4)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[123456789]|(?<=5)[045])|(?<=6)[01]((?<=0)[12345679]|(?<=1)[23456])|(?<=7)[0123456789]((?<=0)[23456789]|(?<=1)[01236789]|(?<=2)[0123456]|(?<=3)[1234568]|(?<=4)[124689]|(?<=5)[0123678]|(?<=6)[0345789]|(?<=7)[1259]|(?<=8)[01234567]|(?<=9)[0235678])|(?<=8)[01]((?<=0)[2345678]|(?<=1)[0124])|(?<=9)[0123456789]((?<=0)[1234569]|(?<=1)[02789]|(?<=2)[012345679]|(?<=3)[1234569]|(?<=4)[01345679]|(?<=5)[012345679]|(?<=6)[012345789]|(?<=7)[012345679]|(?<=8)[12357]|(?<=9)[012]))|(?<=6)[01234567]((?<=0)[0123456789]((?<=0)[1379]|(?<=1)[0134679]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[1234568]|(?<=5)[01245678]|(?<=6)[023589]|(?<=7)[123458]|(?<=8)[01235789]|(?<=9)[013678])|(?<=1)[012345678]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[01235789]|(?<=3)[1246789]|(?<=4)[012345679]|(?<=5)[012356789]|(?<=6)[012456789]|(?<=7)[01234568]|(?<=8)[013567])|(?<=2)[0123456789]((?<=0)[1789]|(?<=1)[01245689]|(?<=2)[0123456789]|(?<=3)[0125679]|(?<=4)[0134589]|(?<=5)[1235678]|(?<=6)[0234567]|(?<=7)[01346789]|(?<=8)[012345789]|(?<=9)[1234567])|(?<=3)[012345678]((?<=0)[134789]|(?<=1)[012345689]|(?<=2)[013456789]|(?<=3)[01245689]|(?<=4)[023579]|(?<=5)[023456789]|(?<=6)[01234789]|(?<=7)[13456789]|(?<=8)[1245679])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[5]|(?<=3)[134578]|(?<=4)[012346789]|(?<=5)[02358]|(?<=6)[1456789]|(?<=7)[0234579]|(?<=8)[124])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[134567]|(?<=4)[0123456789]|(?<=5)[0123467]|(?<=6)[02356789]|(?<=7)[012345689]|(?<=8)[013456789]|(?<=9)[0124])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[136789]|(?<=3)[034679]|(?<=4)[14679]|(?<=5)[012345789]|(?<=6)[01236789]|(?<=7)[012368]|(?<=8)[0134568])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[013456]|(?<=2)[0123456789]|(?<=3)[12345678]|(?<=4)[248]|(?<=5)[01456789]|(?<=6)[0123]))|(?<=7)[01234567]((?<=0)[01234567]((?<=0)[1234567]|(?<=1)[02345678]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[012356789]|(?<=5)[012345789]|(?<=6)[123456789]|(?<=7)[01235678])|(?<=1)[019]((?<=0)[345678]|(?<=1)[07]|(?<=9)[7])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0134567]|(?<=3)[123456789]|(?<=4)[12356789]|(?<=5)[1256789]|(?<=6)[012345689]|(?<=7)[01234689])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[1234589]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[0345689]|(?<=6)[123456789]|(?<=7)[0134569]|(?<=8)[0123456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[01246789]|(?<=3)[023456789]|(?<=4)[0125689]|(?<=5)[0124567]|(?<=6)[0156789]|(?<=7)[012345679]|(?<=8)[1])|(?<=5)[02345678]((?<=0)[1]|(?<=2)[012389]|(?<=3)[1234678]|(?<=4)[013478]|(?<=5)[12359]|(?<=6)[02346789]|(?<=7)[0124679]|(?<=8)[045])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012356]|(?<=3)[01234689]|(?<=4)[01245689]|(?<=5)[0126789]|(?<=6)[01])|(?<=7)[0123456789]((?<=0)[1236]|(?<=1)[46789]|(?<=2)[0245]|(?<=3)[02578]|(?<=4)[14578]|(?<=5)[01245689]|(?<=6)[01234679]|(?<=7)[023569]|(?<=8)[023578]|(?<=9)[012349]))|(?<=8)[012345678]((?<=0)[012345678]((?<=0)[12456789]|(?<=1)[1235678]|(?<=2)[179]|(?<=3)[0123568]|(?<=4)[012356789]|(?<=5)[12346789]|(?<=6)[012345789]|(?<=7)[12456789]|(?<=8)[1])|(?<=1)[0]((?<=0)[2345])|(?<=2)[012345678]((?<=0)[12345]|(?<=1)[024689]|(?<=2)[02345789]|(?<=3)[01356789]|(?<=4)[01349]|(?<=5)[01456789]|(?<=6)[0125679]|(?<=7)[012345678]|(?<=8)[12])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[013678]|(?<=2)[134579]|(?<=3)[012589]|(?<=4)[134568]|(?<=5)[123567]|(?<=6)[12356789]|(?<=7)[02479]|(?<=8)[012456])|(?<=4)[0123456789]((?<=0)[125]|(?<=1)[3568]|(?<=2)[012345689]|(?<=3)[013689]|(?<=4)[0123458]|(?<=5)[124568]|(?<=6)[013467]|(?<=7)[2456789]|(?<=8)[01234678]|(?<=9)[024567])|(?<=5)[02345678]((?<=0)[1345]|(?<=2)[013489]|(?<=3)[012358]|(?<=4)[012459]|(?<=5)[2489]|(?<=6)[012345689]|(?<=7)[01235679]|(?<=8)[01])|(?<=6)[02345]((?<=0)[1]|(?<=2)[0123567]|(?<=3)[0124689]|(?<=4)[012345679]|(?<=5)[0123456])|(?<=7)[0123456789]((?<=0)[13457]|(?<=1)[012368]|(?<=2)[12357]|(?<=3)[0134567]|(?<=4)[01468]|(?<=5)[0256789]|(?<=6)[0123589]|(?<=7)[01235689]|(?<=8)[12345789]|(?<=9)[02345])|(?<=8)[0345]((?<=0)[1]|(?<=3)[01358]|(?<=4)[34579]|(?<=5)[2346]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[123678]|(?<=1)[012345689]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[13467]|(?<=5)[02345789]|(?<=6)[123456789]|(?<=7)[012456789]|(?<=8)[12356789])|(?<=1)[0]((?<=0)[1256])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[12345789]|(?<=2)[12356]|(?<=3)[01]|(?<=4)[0123478]|(?<=5)[023456789]|(?<=6)[0123]|(?<=7)[03456])|(?<=3)[012345]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[23467]|(?<=3)[0236789]|(?<=4)[34579]|(?<=5)[134])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[01246789]|(?<=2)[012457]|(?<=3)[023456]|(?<=4)[01234678]|(?<=5)[0123467]|(?<=6)[0123456789]|(?<=7)[12479]|(?<=8)[02345679])|(?<=5)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[012578]|(?<=4)[024567])|(?<=6)[0234]((?<=0)[12]|(?<=2)[35]|(?<=3)[12345689]|(?<=4)[0234578])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[0134568]|(?<=2)[01245789]|(?<=3)[0123569]|(?<=4)[01356789]|(?<=5)[01245689]|(?<=6)[012])|(?<=8)[01234567]((?<=0)[12348]|(?<=1)[2]|(?<=2)[013456789]|(?<=3)[012347]|(?<=4)[012345678]|(?<=5)[1345689]|(?<=6)[0345678]|(?<=7)[012345])|(?<=9)[0123]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[02356789]|(?<=3)[01234567])))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24578]|(?<=1)[0234568]|(?<=2)[012569]|(?<=3)[01345]|(?<=4)[012345678]|(?<=5)[0136]|(?<=6)[0124789]|(?<=7)[01234567]|(?<=8)[1345789]|(?<=9)[0136789])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[0123589]|(?<=2)[03469]|(?<=3)[01345679]|(?<=4)[01234568]|(?<=5)[01234567]|(?<=6)[023459]|(?<=7)[12345678]|(?<=8)[01345789]|(?<=9)[012345])|(?<=2)[0]((?<=0)[1238])|(?<=3)[0]((?<=0)[1245])|(?<=4)[0123456789]((?<=0)[12346789]|(?<=1)[0156789]|(?<=2)[012345689]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[012356789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[01247]|(?<=9)[01])|(?<=5)[01234568]((?<=0)[123456]|(?<=1)[0123456789]|(?<=2)[013567]|(?<=3)[01246789]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[01345]|(?<=8)[56])|(?<=6)[0123456]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[012346789]|(?<=4)[012345679]|(?<=5)[12345679]|(?<=6)[01])|(?<=7)[01]((?<=0)[67]|(?<=1)[24])|(?<=8)[02]((?<=0)[345]|(?<=2)[7])|(?<=9)[01234567]((?<=0)[1]|(?<=1)[012345789]|(?<=2)[01246789]|(?<=3)[012345689]|(?<=4)[0125689]|(?<=5)[0123456789]|(?<=6)[012346789]|(?<=7)[034]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1678]|(?<=1)[012345689]|(?<=2)[014578]|(?<=3)[0126789]|(?<=4)[12346789]|(?<=5)[0123479]|(?<=6)[01234578]|(?<=7)[012345789]|(?<=8)[0145789]|(?<=9)[1])|(?<=1)[01]((?<=0)[1234789]|(?<=1)[1245])|(?<=2)[0345678]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[01246789]|(?<=6)[012345]|(?<=7)[023456789]|(?<=8)[12345])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[01245689]|(?<=5)[034689]|(?<=6)[01234789]|(?<=7)[0123456789])|(?<=4)[0123456789]((?<=0)[12]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[0123789]|(?<=5)[01234589]|(?<=6)[0256789]|(?<=7)[0123456789]|(?<=8)[02345689]|(?<=9)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[679]|(?<=2)[0345689]|(?<=3)[012345679]|(?<=4)[012345678]|(?<=5)[02349]|(?<=6)[012345789]|(?<=7)[012])|(?<=6)[012]((?<=0)[234567]|(?<=1)[01456]|(?<=2)[5])|(?<=7)[0234567]((?<=0)[145]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345789]|(?<=5)[01234569]|(?<=6)[0149]|(?<=7)[012345678])|(?<=8)[012345678]((?<=0)[12]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[012349]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[23456]|(?<=7)[012345678]|(?<=8)[0234])|(?<=9)[12345]((?<=1)[0123479]|(?<=2)[04589]|(?<=3)[0123678]|(?<=4)[012349]|(?<=5)[13567]))|(?<=2)[023456789]((?<=0)[0123456789]((?<=0)[1269]|(?<=1)[0123456789]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0456789]|(?<=5)[01234689]|(?<=6)[012379]|(?<=7)[456789]|(?<=8)[0123456789]|(?<=9)[01234578])|(?<=2)[0123456789]((?<=0)[1345678]|(?<=1)[456789]|(?<=2)[01356]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[0345678]|(?<=6)[012345689]|(?<=7)[12345789]|(?<=8)[01245689]|(?<=9)[234578])|(?<=3)[012345678]((?<=0)[15]|(?<=1)[123469]|(?<=2)[013456]|(?<=3)[04689]|(?<=4)[013456789]|(?<=5)[123456789]|(?<=6)[0123567]|(?<=7)[0345689]|(?<=8)[0])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[0134789]|(?<=2)[012345678]|(?<=3)[1234689]|(?<=4)[0123456789]|(?<=5)[012489]|(?<=6)[0123456789]|(?<=7)[13456789]|(?<=8)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[01236]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[01345678]|(?<=6)[013578]|(?<=7)[0123])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[0123578]|(?<=2)[12456789]|(?<=3)[0134589]|(?<=4)[02349]|(?<=5)[056]|(?<=6)[1345678]|(?<=7)[0123457]|(?<=8)[124589]|(?<=9)[012345])|(?<=7)[01]((?<=0)[123467]|(?<=1)[12])|(?<=8)[0123456789]((?<=0)[136789]|(?<=1)[012456789]|(?<=2)[012345789]|(?<=3)[012356789]|(?<=4)[1234689]|(?<=5)[01234689]|(?<=6)[012345789]|(?<=7)[012456789]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[1235678]|(?<=1)[02456789]|(?<=2)[01234678]|(?<=3)[01234589]|(?<=4)[01236789]|(?<=5)[012346789]|(?<=6)[012345679]|(?<=7)[0245679]|(?<=8)[234578]|(?<=9)[02456789]))|(?<=3)[013456789]((?<=0)[0123456789]((?<=0)[5]|(?<=1)[012345679]|(?<=2)[013568]|(?<=3)[01346789]|(?<=4)[012345789]|(?<=5)[012356]|(?<=6)[0189]|(?<=7)[0123479]|(?<=8)[04789]|(?<=9)[01])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[013467]|(?<=5)[5])|(?<=3)[03456789]((?<=0)[134]|(?<=3)[023469]|(?<=4)[1345789]|(?<=5)[012379]|(?<=6)[12356789]|(?<=7)[3679]|(?<=8)[0123456789]|(?<=9)[0])|(?<=4)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[0135678]|(?<=5)[012346789]|(?<=6)[012356789]|(?<=7)[1234])|(?<=5)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[1256789]|(?<=6)[013567])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[013678]|(?<=4)[058]|(?<=5)[03456]|(?<=6)[02345]|(?<=7)[0345])|(?<=7)[0345678]((?<=0)[13]|(?<=3)[025689]|(?<=4)[02345678]|(?<=5)[0158]|(?<=6)[034679]|(?<=7)[0145]|(?<=8)[0123457])|(?<=8)[02345678]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[03479]|(?<=4)[0156789]|(?<=5)[012357]|(?<=6)[0236789]|(?<=7)[0346789]|(?<=8)[02])|(?<=9)[03456]((?<=0)[1]|(?<=3)[2345679]|(?<=4)[012345]|(?<=5)[01234567]|(?<=6)[0124567]))|(?<=4)[0145678]((?<=0)[0123456789]((?<=0)[1]|(?<=1)[12456789]|(?<=2)[012489]|(?<=3)[04567]|(?<=4)[08]|(?<=5)[02345678]|(?<=6)[012345678]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[023678])|(?<=1)[0123456]((?<=0)[125689]|(?<=1)[012346789]|(?<=2)[03456789]|(?<=3)[012346789]|(?<=4)[5679]|(?<=5)[012345678]|(?<=6)[134567])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[13456789]|(?<=6)[1356789]|(?<=7)[01345679]|(?<=8)[012345679]|(?<=9)[012346789])|(?<=5)[0]((?<=0)[134567])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[023458]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[01478]|(?<=7)[0123469]|(?<=8)[123689])|(?<=7)[023456789]((?<=0)[1]|(?<=2)[0234568]|(?<=3)[034589]|(?<=4)[012345678]|(?<=5)[02569]|(?<=6)[123579]|(?<=7)[012689]|(?<=8)[01348]|(?<=9)[0])|(?<=8)[034567]((?<=0)[14]|(?<=3)[0123456]|(?<=4)[01234789]|(?<=5)[0456789]|(?<=6)[1235678]|(?<=7)[034]))|(?<=5)[012345678]((?<=0)[012345678]((?<=0)[1]|(?<=1)[0134678]|(?<=2)[03456]|(?<=3)[24579]|(?<=4)[0136789]|(?<=5)[0123489]|(?<=6)[123456789]|(?<=7)[2456789]|(?<=8)[012345])|(?<=1)[0]((?<=0)[19])|(?<=2)[01345678]((?<=0)[123]|(?<=1)[56]|(?<=3)[0123679]|(?<=4)[034678]|(?<=5)[01456789]|(?<=6)[012345]|(?<=7)[045689]|(?<=8)[01234567])|(?<=3)[023456]((?<=0)[15]|(?<=2)[012345679]|(?<=3)[023456789]|(?<=4)[045789]|(?<=5)[0145]|(?<=6)[0])|(?<=4)[0345678]((?<=0)[19]|(?<=3)[689]|(?<=4)[013469]|(?<=5)[23679]|(?<=6)[123468]|(?<=7)[039]|(?<=8)[346])|(?<=5)[023456789]((?<=0)[1]|(?<=2)[9]|(?<=3)[456]|(?<=4)[1238]|(?<=5)[025679]|(?<=6)[04567]|(?<=7)[01]|(?<=8)[0234689]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[1345689]|(?<=1)[012346789]|(?<=2)[02345679]|(?<=3)[01234578]|(?<=4)[0146789]|(?<=5)[02345678]|(?<=6)[012346789]|(?<=7)[24569]|(?<=8)[0125689]|(?<=9)[02])|(?<=7)[0123456789]((?<=0)[245678]|(?<=1)[0123457]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0124567]|(?<=5)[2345679]|(?<=6)[01246789]|(?<=7)[012345789]|(?<=8)[13456789]|(?<=9)[013])|(?<=8)[019]((?<=0)[1234679]|(?<=1)[0]|(?<=9)[7]))|(?<=6)[012456789]((?<=0)[0123456789]((?<=0)[2678]|(?<=1)[02345678]|(?<=2)[0134567]|(?<=3)[012359]|(?<=4)[0123456789]|(?<=5)[023468]|(?<=6)[012467]|(?<=7)[01235689]|(?<=8)[035678]|(?<=9)[0123457])|(?<=1)[016]((?<=0)[1234569]|(?<=1)[1258]|(?<=6)[0])|(?<=2)[0125]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013467]|(?<=5)[1])|(?<=4)[012345]((?<=0)[12346789]|(?<=1)[123456789]|(?<=2)[2345789]|(?<=3)[124689]|(?<=4)[0129]|(?<=5)[1])|(?<=5)[012345]((?<=0)[1236789]|(?<=1)[0245678]|(?<=2)[01234678]|(?<=3)[123456789]|(?<=4)[012346789]|(?<=5)[024])|(?<=6)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[12])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[0123467]|(?<=2)[045]|(?<=3)[2345689]|(?<=4)[0123689]|(?<=5)[1345678]|(?<=6)[012379]|(?<=7)[012356789]|(?<=8)[0123])|(?<=8)[034567]((?<=0)[1]|(?<=3)[034589]|(?<=4)[023569]|(?<=5)[012346789]|(?<=6)[012345689]|(?<=7)[0123])|(?<=9)[034567]((?<=0)[1]|(?<=3)[02356789]|(?<=4)[012345689]|(?<=5)[1235689]|(?<=6)[01234678]|(?<=7)[0]))|(?<=7)[0123456789]((?<=0)[01234567]((?<=0)[1234589]|(?<=1)[0236789]|(?<=2)[012345689]|(?<=3)[0156789]|(?<=4)[12579]|(?<=5)[0123456789]|(?<=6)[01235678]|(?<=7)[01234])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0124789]|(?<=2)[02347]|(?<=3)[1234578]|(?<=4)[0234679]|(?<=5)[0124569])|(?<=2)[01236]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013678]|(?<=3)[025]|(?<=6)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[0234567]|(?<=4)[01245679]|(?<=5)[1234567]|(?<=6)[0134])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0678]|(?<=2)[023578]|(?<=3)[0126789]|(?<=4)[123456789]|(?<=5)[012456789]|(?<=6)[04678]|(?<=7)[034568]|(?<=8)[0123457]|(?<=9)[012])|(?<=5)[012345678]((?<=0)[125]|(?<=1)[012345689]|(?<=2)[01234569]|(?<=3)[0]|(?<=4)[345678]|(?<=5)[0234679]|(?<=6)[01345678]|(?<=7)[02345689]|(?<=8)[134])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[12356789]|(?<=3)[1245789]|(?<=4)[023456789]|(?<=5)[01346789]|(?<=6)[0134579]|(?<=7)[12345])|(?<=7)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[123678]|(?<=6)[124])|(?<=8)[0345678]((?<=0)[1]|(?<=3)[1456789]|(?<=4)[0123469]|(?<=5)[0134579]|(?<=6)[012345789]|(?<=7)[016789]|(?<=8)[02])|(?<=9)[05]((?<=0)[1]|(?<=5)[01234]))|(?<=8)[013456789]((?<=0)[01234567]((?<=0)[1234578]|(?<=1)[0456789]|(?<=2)[023589]|(?<=3)[01346789]|(?<=4)[01245678]|(?<=5)[056789]|(?<=6)[123456789]|(?<=7)[0123])|(?<=1)[012345678]((?<=0)[245678]|(?<=1)[01234678]|(?<=2)[23478]|(?<=3)[012345678]|(?<=4)[247]|(?<=5)[247]|(?<=6)[4]|(?<=7)[8]|(?<=8)[23])|(?<=3)[012345678]((?<=0)[134579]|(?<=1)[03456789]|(?<=2)[0123456789]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[01245789]|(?<=6)[01245678]|(?<=7)[01256789]|(?<=8)[012])|(?<=4)[0123456]((?<=0)[12345679]|(?<=1)[03456789]|(?<=2)[0123489]|(?<=3)[01346789]|(?<=4)[012345678]|(?<=5)[02345678]|(?<=6)[01234567])|(?<=5)[01238]((?<=0)[2345678]|(?<=1)[02467]|(?<=2)[01234678]|(?<=3)[12]|(?<=8)[8])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[12345678]|(?<=4)[01234789]|(?<=5)[1234589]|(?<=6)[012345679])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[023456789]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[12356789]|(?<=6)[013456789]|(?<=7)[01346789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13]|(?<=1)[02345678]|(?<=2)[012345678]|(?<=3)[12345678]|(?<=4)[012345679]|(?<=5)[02345689]|(?<=6)[01234569]|(?<=7)[012345689]|(?<=8)[123])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[023456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[02456789]|(?<=6)[01467]|(?<=7)[0123456789]|(?<=8)[012]))|(?<=9)[0123]((?<=0)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[02346789]|(?<=4)[0123456])|(?<=1)[0234567]((?<=0)[1]|(?<=2)[01235789]|(?<=3)[0123458]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[12356789]|(?<=7)[01])|(?<=2)[012]((?<=0)[1]|(?<=1)[01246789]|(?<=2)[01])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1345679]|(?<=4)[0135678]|(?<=5)[012345678]|(?<=6)[01567])))|(?<=7)[0123456789]((?<=0)[01345678]((?<=0)[03456789]((?<=0)[12356]|(?<=3)[0126789]|(?<=4)[01379]|(?<=5)[0123678]|(?<=6)[2578]|(?<=7)[012569]|(?<=8)[0234567]|(?<=9)[0124])|(?<=1)[12346]((?<=1)[23456789]|(?<=2)[123456789]|(?<=3)[019]|(?<=4)[8]|(?<=6)[3])|(?<=3)[013456789]((?<=0)[1]|(?<=1)[0]|(?<=3)[9]|(?<=4)[0123456]|(?<=5)[23456789]|(?<=6)[034]|(?<=7)[23457]|(?<=8)[0]|(?<=9)[0123457])|(?<=4)[0234567]((?<=0)[123]|(?<=2)[0267]|(?<=3)[135678]|(?<=4)[123456789]|(?<=5)[012345678]|(?<=6)[0123456]|(?<=7)[1])|(?<=5)[0123456789]((?<=0)[13678]|(?<=1)[023456789]|(?<=2)[02345689]|(?<=3)[1234578]|(?<=4)[1234689]|(?<=5)[01245689]|(?<=6)[03]|(?<=7)[05678]|(?<=8)[01234569]|(?<=9)[12])|(?<=6)[0123456]((?<=0)[1579]|(?<=1)[15]|(?<=2)[9]|(?<=3)[01234789]|(?<=4)[0345678]|(?<=5)[0123456789]|(?<=6)[0123589])|(?<=7)[0123456789]((?<=0)[6]|(?<=1)[012459]|(?<=2)[123569]|(?<=3)[0234679]|(?<=4)[034789]|(?<=5)[02345679]|(?<=6)[0123479]|(?<=7)[02345678]|(?<=8)[02356789]|(?<=9)[1])|(?<=8)[0123]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[05]|(?<=3)[6]))|(?<=1)[012346789]((?<=0)[012345678]((?<=0)[12346789]|(?<=1)[689]|(?<=2)[134789]|(?<=3)[01234789]|(?<=4)[03456789]|(?<=5)[125]|(?<=6)[013456789]|(?<=7)[0123589]|(?<=8)[2])|(?<=1)[012]((?<=0)[13456789]|(?<=1)[012589]|(?<=2)[9])|(?<=2)[0123456789]((?<=0)[1239]|(?<=1)[289]|(?<=2)[0235679]|(?<=3)[0234578]|(?<=4)[12357]|(?<=5)[013469]|(?<=6)[0134689]|(?<=7)[025679]|(?<=8)[026]|(?<=9)[125])|(?<=3)[01234567]((?<=0)[123]|(?<=1)[6]|(?<=2)[0235678]|(?<=3)[013469]|(?<=4)[012356]|(?<=5)[013456789]|(?<=6)[026789]|(?<=7)[1358])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[01456789]|(?<=2)[23456789]|(?<=3)[0234589]|(?<=4)[1679]|(?<=5)[0245679]|(?<=6)[12356789]|(?<=7)[23459]|(?<=8)[0356]|(?<=9)[7])|(?<=6)[034567]((?<=0)[123]|(?<=3)[01589]|(?<=4)[023467]|(?<=5)[1234589]|(?<=6)[0123567]|(?<=7)[0145678])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0124568]|(?<=3)[0]|(?<=4)[02345789]|(?<=5)[12389]|(?<=6)[23456]|(?<=7)[02])|(?<=8)[023456]((?<=0)[1]|(?<=2)[023567]|(?<=3)[123456789]|(?<=4)[12567]|(?<=5)[12345789]|(?<=6)[012456])|(?<=9)[012345679]((?<=0)[19]|(?<=1)[3]|(?<=2)[1239]|(?<=3)[357]|(?<=4)[0123459]|(?<=5)[0236789]|(?<=6)[0124589]|(?<=7)[0123]|(?<=9)[89]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[012345679]|(?<=2)[0123456789]|(?<=3)[01245689]|(?<=4)[01245678]|(?<=5)[1235789]|(?<=6)[013456789]|(?<=7)[0234569]|(?<=8)[012345678]|(?<=9)[9])|(?<=1)[0123456789]((?<=0)[1234678]|(?<=1)[012346789]|(?<=2)[012356789]|(?<=3)[012345679]|(?<=4)[0123]|(?<=5)[02367]|(?<=6)[056789]|(?<=7)[035689]|(?<=8)[0123]|(?<=9)[9])|(?<=2)[012]((?<=0)[1245679]|(?<=1)[012]|(?<=2)[37])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[135]|(?<=2)[02456789]|(?<=3)[0123589]|(?<=4)[012678]|(?<=5)[01234589]|(?<=6)[0456789]|(?<=7)[0234679]|(?<=8)[34679]|(?<=9)[012456])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[012345679]|(?<=2)[12456789]|(?<=3)[012345678]|(?<=4)[01234579]|(?<=5)[03456789]|(?<=6)[0124679]|(?<=7)[0123689]|(?<=8)[2])|(?<=5)[012345678]((?<=0)[1]|(?<=1)[23579]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[02346]|(?<=5)[03456]|(?<=6)[012456789]|(?<=7)[1236789]|(?<=8)[13457])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[15679]|(?<=2)[34689]|(?<=3)[012345689]|(?<=4)[012458]|(?<=5)[01358]|(?<=6)[0123689]|(?<=7)[02579]|(?<=8)[023567])|(?<=7)[01234567]((?<=0)[134]|(?<=1)[2345789]|(?<=2)[1279]|(?<=3)[024689]|(?<=4)[024579]|(?<=5)[12368]|(?<=6)[012489]|(?<=7)[346])|(?<=8)[023456]((?<=0)[12]|(?<=2)[1346789]|(?<=3)[02345789]|(?<=4)[0123567]|(?<=5)[12345678]|(?<=6)[035])|(?<=9)[012345]((?<=0)[13458]|(?<=1)[6]|(?<=2)[13678]|(?<=3)[02345678]|(?<=4)[013456789]|(?<=5)[0125689]))|(?<=3)[01456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123468]|(?<=4)[012345789]|(?<=5)[0123456789]|(?<=6)[123456789]|(?<=7)[012345789]|(?<=8)[02469]|(?<=9)[02356789])|(?<=1)[01234567]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[012789]|(?<=3)[012459]|(?<=4)[1259]|(?<=5)[019]|(?<=6)[0259]|(?<=7)[039])|(?<=4)[02345689]((?<=0)[1]|(?<=2)[5]|(?<=3)[023456789]|(?<=4)[012346789]|(?<=5)[035689]|(?<=6)[013]|(?<=8)[178]|(?<=9)[1])|(?<=5)[0234567]((?<=0)[1357]|(?<=2)[0136789]|(?<=3)[0123789]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[02456789]|(?<=7)[0123])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0245678]|(?<=3)[289]|(?<=4)[124567]|(?<=5)[014589]|(?<=6)[012346789]|(?<=7)[3])|(?<=7)[01234567]((?<=0)[135]|(?<=1)[6789]|(?<=2)[0246789]|(?<=3)[013456789]|(?<=4)[1234679]|(?<=5)[03456789]|(?<=6)[0123468]|(?<=7)[0123])|(?<=8)[03456]((?<=0)[1]|(?<=3)[2458]|(?<=4)[012348]|(?<=5)[1235789]|(?<=6)[0])|(?<=9)[03456]((?<=0)[1]|(?<=3)[123789]|(?<=4)[245679]|(?<=5)[01]|(?<=6)[0]))|(?<=4)[013456789]((?<=0)[012345678]((?<=0)[12368]|(?<=1)[01245679]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[1245678]|(?<=5)[012345689]|(?<=6)[012368]|(?<=7)[012345789]|(?<=8)[012345])|(?<=1)[012347]((?<=0)[345678]|(?<=1)[0245679]|(?<=2)[06789]|(?<=3)[01234567]|(?<=4)[56]|(?<=7)[1])|(?<=3)[034567]((?<=0)[1]|(?<=3)[0123789]|(?<=4)[0234679]|(?<=5)[02489]|(?<=6)[013456789]|(?<=7)[0])|(?<=4)[0234567]((?<=0)[13]|(?<=2)[12356789]|(?<=3)[01245678]|(?<=4)[12567]|(?<=5)[012456789]|(?<=6)[0234789]|(?<=7)[0127])|(?<=5)[0234567]((?<=0)[1]|(?<=2)[12358]|(?<=3)[0134568]|(?<=4)[03679]|(?<=5)[2345678]|(?<=6)[0123579]|(?<=7)[0124678])|(?<=6)[0345]((?<=0)[14]|(?<=3)[012367]|(?<=4)[013467]|(?<=5)[0123])|(?<=7)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[01345678]|(?<=4)[013578]|(?<=5)[034569]|(?<=6)[0146])|(?<=8)[02345678]((?<=0)[14]|(?<=2)[045679]|(?<=3)[01234679]|(?<=4)[0234589]|(?<=5)[01245679]|(?<=6)[0456789]|(?<=7)[12358]|(?<=8)[0134])|(?<=9)[03456]((?<=0)[12]|(?<=3)[0125679]|(?<=4)[0123456789]|(?<=5)[1345679]|(?<=6)[023456]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[12679]|(?<=1)[039]|(?<=2)[0123458]|(?<=3)[2345689]|(?<=4)[012348]|(?<=5)[0124678]|(?<=6)[01235789]|(?<=7)[01245678]|(?<=8)[012789]|(?<=9)[02348])|(?<=1)[012345678]((?<=0)[123459]|(?<=1)[045679]|(?<=2)[4567]|(?<=3)[2457]|(?<=4)[012346789]|(?<=5)[023456789]|(?<=6)[01345679]|(?<=7)[23]|(?<=8)[0129])|(?<=2)[012345678]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[03456789]|(?<=3)[012345678]|(?<=4)[01346789]|(?<=5)[1234]|(?<=6)[1]|(?<=7)[0]|(?<=8)[7])|(?<=3)[9]((?<=9)[0])|(?<=4)[0123456789]((?<=0)[1279]|(?<=1)[012345678]|(?<=2)[01234689]|(?<=3)[123456789]|(?<=4)[0126789]|(?<=5)[01234579]|(?<=6)[0289]|(?<=7)[0123456789]|(?<=8)[0126789]|(?<=9)[01234567])|(?<=5)[0567]((?<=0)[13]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[01234])|(?<=6)[03456789]((?<=0)[12345]|(?<=3)[01389]|(?<=4)[0123457]|(?<=5)[01246789]|(?<=6)[12789]|(?<=7)[012]|(?<=8)[01234679]|(?<=9)[1234])|(?<=7)[0156789]((?<=0)[123456789]|(?<=1)[1]|(?<=5)[012456789]|(?<=6)[023456]|(?<=7)[01389]|(?<=8)[0234589]|(?<=9)[012])|(?<=8)[034568]((?<=0)[13]|(?<=3)[13589]|(?<=4)[0456789]|(?<=5)[01235689]|(?<=6)[0125]|(?<=8)[46])|(?<=9)[02345678]((?<=0)[134]|(?<=2)[5689]|(?<=3)[0123456789]|(?<=4)[1234689]|(?<=5)[1469]|(?<=6)[01245689]|(?<=7)[2345679]|(?<=8)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[125689]|(?<=1)[012345678]|(?<=2)[01238]|(?<=3)[134569]|(?<=4)[013489]|(?<=5)[01234589]|(?<=6)[0134567]|(?<=7)[01378]|(?<=8)[245678]|(?<=9)[23])|(?<=1)[012345678]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[03679]|(?<=3)[123457]|(?<=4)[08]|(?<=5)[5]|(?<=6)[4]|(?<=7)[79]|(?<=8)[02])|(?<=2)[01234567]((?<=0)[135789]|(?<=1)[0]|(?<=2)[5678]|(?<=3)[03489]|(?<=4)[0145789]|(?<=5)[0123589]|(?<=6)[12345678]|(?<=7)[0123])|(?<=3)[015678]((?<=0)[125689]|(?<=1)[01]|(?<=5)[147]|(?<=6)[034567]|(?<=7)[0123479]|(?<=8)[0489])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[4679]|(?<=3)[01235679]|(?<=4)[2345689]|(?<=5)[02345789]|(?<=6)[023469]|(?<=7)[012456]|(?<=8)[13467]|(?<=9)[01])|(?<=5)[012345679]((?<=0)[124]|(?<=1)[1389]|(?<=2)[0234578]|(?<=3)[014789]|(?<=4)[123489]|(?<=5)[04679]|(?<=6)[15679]|(?<=7)[0134789]|(?<=9)[6789])|(?<=6)[23456789]((?<=2)[12346789]|(?<=3)[0123456789]|(?<=4)[0123589]|(?<=5)[01234567]|(?<=6)[014567]|(?<=7)[013689]|(?<=8)[0125679]|(?<=9)[0123])|(?<=7)[019]((?<=0)[145678]|(?<=1)[012]|(?<=9)[8])|(?<=8)[023456789]((?<=0)[12]|(?<=2)[0134578]|(?<=3)[12467]|(?<=4)[124589]|(?<=5)[2346789]|(?<=6)[124569]|(?<=7)[01234578]|(?<=8)[024578]|(?<=9)[0])|(?<=9)[0345]((?<=0)[1234589]|(?<=3)[02345679]|(?<=4)[0135]|(?<=5)[013578]))|(?<=7)[023456789]((?<=0)[0123456789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345689])|(?<=2)[0]((?<=0)[4])|(?<=3)[0123456789]((?<=0)[12346]|(?<=1)[68]|(?<=2)[0678]|(?<=3)[145689]|(?<=4)[01256]|(?<=5)[01456789]|(?<=6)[02345789]|(?<=7)[123456789]|(?<=8)[01245689]|(?<=9)[6])|(?<=4)[0123456789]((?<=0)[167]|(?<=1)[245789]|(?<=2)[023689]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[013456789]|(?<=8)[012345689]|(?<=9)[348])|(?<=5)[0123456789]((?<=0)[234567]|(?<=1)[0145789]|(?<=2)[013]|(?<=3)[012345689]|(?<=4)[1567]|(?<=5)[0145]|(?<=6)[01234568]|(?<=7)[13578]|(?<=8)[01234567]|(?<=9)[0178])|(?<=6)[123456]((?<=1)[12345679]|(?<=2)[234579]|(?<=3)[02]|(?<=4)[02]|(?<=5)[015679]|(?<=6)[012345])|(?<=7)[01]((?<=0)[1235678]|(?<=1)[3])|(?<=8)[0345678]((?<=0)[12378]|(?<=3)[013567]|(?<=4)[035]|(?<=5)[235679]|(?<=6)[1345678]|(?<=7)[1235689]|(?<=8)[02])|(?<=9)[056789]((?<=0)[145]|(?<=5)[0147]|(?<=6)[0123489]|(?<=7)[013456789]|(?<=8)[234678]|(?<=9)[01345]))|(?<=8)[0123456789]((?<=0)[01234567]((?<=0)[123456789]|(?<=1)[012345679]|(?<=2)[123456789]|(?<=3)[9]|(?<=4)[013456]|(?<=5)[0256789]|(?<=6)[12345679]|(?<=7)[0123456])|(?<=1)[0123456]((?<=0)[124789]|(?<=1)[12346789]|(?<=2)[12345]|(?<=3)[023]|(?<=4)[012345678]|(?<=5)[012459]|(?<=6)[01234])|(?<=2)[0123456]((?<=0)[12345789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[02345789]|(?<=5)[0123456789]|(?<=6)[01346])|(?<=3)[3456789]((?<=3)[02689]|(?<=4)[0123479]|(?<=5)[1235789]|(?<=6)[012389]|(?<=7)[012345679]|(?<=8)[0234579]|(?<=9)[013])|(?<=4)[01]((?<=0)[12456789]|(?<=1)[0123456789])|(?<=5)[0123456789]((?<=0)[134]|(?<=1)[6]|(?<=2)[016]|(?<=3)[56789]|(?<=4)[01235789]|(?<=5)[02789]|(?<=6)[012345679]|(?<=7)[023456789]|(?<=8)[02345689]|(?<=9)[0123456789])|(?<=6)[012345678]((?<=0)[256789]|(?<=1)[0123456789]|(?<=2)[01234689]|(?<=3)[12345689]|(?<=4)[0123458]|(?<=5)[023456789]|(?<=6)[01234569]|(?<=7)[0124567]|(?<=8)[1])|(?<=7)[012345]((?<=0)[12345]|(?<=1)[279]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[12456789]|(?<=5)[012346789])|(?<=8)[02345678]((?<=0)[12]|(?<=2)[789]|(?<=3)[02346789]|(?<=4)[0123]|(?<=5)[012]|(?<=6)[01]|(?<=7)[012379]|(?<=8)[013456])|(?<=9)[3456]((?<=3)[123458]|(?<=4)[0123456789]|(?<=5)[0134679]|(?<=6)[23]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[012345689]|(?<=2)[124579]|(?<=3)[1234569]|(?<=4)[0123456]|(?<=5)[12346789]|(?<=6)[1234568]|(?<=7)[02389]|(?<=8)[012345678]|(?<=9)[12345678])|(?<=1)[012]((?<=0)[12346789]|(?<=1)[0189]|(?<=2)[14])|(?<=2)[023456]((?<=0)[1]|(?<=2)[035679]|(?<=3)[01345679]|(?<=4)[0134578]|(?<=5)[01256789]|(?<=6)[1])|(?<=3)[12345678]((?<=1)[12346]|(?<=2)[234569]|(?<=3)[0169]|(?<=4)[234567]|(?<=5)[01356789]|(?<=6)[034679]|(?<=7)[01236789]|(?<=8)[0123])|(?<=4)[012]((?<=0)[123467]|(?<=1)[0123456]|(?<=2)[34])|(?<=5)[0123456]((?<=0)[1234568]|(?<=1)[012789]|(?<=2)[0156789]|(?<=3)[023456789]|(?<=4)[013456789]|(?<=5)[36]|(?<=6)[0123567])|(?<=6)[09]((?<=0)[123567]|(?<=9)[9])|(?<=7)[012345678]((?<=0)[13567]|(?<=1)[3489]|(?<=2)[01]|(?<=3)[0134589]|(?<=4)[1234589]|(?<=5)[245689]|(?<=6)[1234569]|(?<=7)[02678]|(?<=8)[0123589])|(?<=8)[2345]((?<=2)[1]|(?<=3)[02456789]|(?<=4)[2356789]|(?<=5)[12345])|(?<=9)[0123]((?<=0)[12345678]|(?<=1)[12568]|(?<=2)[024578]|(?<=3)[024568])))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[01234]((?<=0)[23457]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[013]|(?<=4)[5])|(?<=1)[0123]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[0123456789]|(?<=3)[012345678])|(?<=2)[0123469]((?<=0)[2345679]|(?<=1)[01245689]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[1679]|(?<=6)[046]|(?<=9)[034])|(?<=3)[01]((?<=0)[12345]|(?<=1)[0])|(?<=4)[0123456789]((?<=0)[13]|(?<=1)[9]|(?<=2)[012345678]|(?<=3)[02345689]|(?<=4)[02346789]|(?<=5)[12345679]|(?<=6)[1356789]|(?<=7)[01345689]|(?<=8)[01237]|(?<=9)[8])|(?<=5)[012345]((?<=0)[134]|(?<=1)[0234567]|(?<=2)[014568]|(?<=3)[0245678]|(?<=4)[02345679]|(?<=5)[0])|(?<=6)[012345]((?<=0)[123]|(?<=1)[0125]|(?<=2)[01234]|(?<=3)[14]|(?<=4)[02345689]|(?<=5)[01234])|(?<=7)[02345]((?<=0)[15]|(?<=2)[01236789]|(?<=3)[1234567]|(?<=4)[012345679]|(?<=5)[0145789])|(?<=8)[012346]((?<=0)[1245789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[0123456]|(?<=4)[0]|(?<=6)[01234])|(?<=9)[01235]((?<=0)[23456789]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[089]|(?<=5)[1]))|(?<=1)[0123456]((?<=0)[0123456789]((?<=0)[1345678]|(?<=1)[9]|(?<=2)[01234579]|(?<=3)[0369]|(?<=4)[01345679]|(?<=5)[0245789]|(?<=6)[23479]|(?<=7)[1367]|(?<=8)[12479]|(?<=9)[012])|(?<=1)[02345]((?<=0)[1]|(?<=2)[012345689]|(?<=3)[0123678]|(?<=4)[01346789]|(?<=5)[1245])|(?<=2)[012345]((?<=0)[1]|(?<=1)[012]|(?<=2)[012345678]|(?<=3)[0235679]|(?<=4)[012348]|(?<=5)[123])|(?<=3)[023]((?<=0)[13]|(?<=2)[01345678]|(?<=3)[01245])|(?<=4)[0123]((?<=0)[13]|(?<=1)[0135689]|(?<=2)[23456789]|(?<=3)[012345])|(?<=5)[02]((?<=0)[134567]|(?<=2)[01234567])|(?<=6)[012345]((?<=0)[1]|(?<=1)[0125]|(?<=2)[01345]|(?<=3)[01235789]|(?<=4)[012356789]|(?<=5)[0234567]))|(?<=2)[0123456789]((?<=0)[05678]((?<=0)[1579]|(?<=5)[01234589]|(?<=6)[013]|(?<=7)[023]|(?<=8)[1234])|(?<=1)[9]((?<=9)[0])|(?<=2)[0124]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[1234579]|(?<=4)[0234])|(?<=3)[0123]((?<=0)[1]|(?<=1)[0]|(?<=2)[1234579]|(?<=3)[12456])|(?<=4)[012345]((?<=0)[1]|(?<=1)[0124]|(?<=2)[012368]|(?<=3)[012345]|(?<=4)[0123]|(?<=5)[0])|(?<=5)[012]((?<=0)[1]|(?<=1)[023456]|(?<=2)[03])|(?<=6)[0234]((?<=0)[149]|(?<=2)[0]|(?<=3)[0356789]|(?<=4)[0234689])|(?<=7)[0123]((?<=0)[1]|(?<=1)[012468]|(?<=2)[013579]|(?<=3)[012])|(?<=8)[034]((?<=0)[1]|(?<=3)[123456789]|(?<=4)[245])|(?<=9)[0234]((?<=0)[1]|(?<=2)[2359]|(?<=3)[023456789]|(?<=4)[12345]))|(?<=3)[012345678]((?<=0)[012]((?<=0)[1]|(?<=1)[1234]|(?<=2)[5])|(?<=1)[012]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[01234678])|(?<=2)[012345678]((?<=0)[12349]|(?<=1)[01234578]|(?<=2)[013678]|(?<=3)[23456789]|(?<=4)[13456]|(?<=5)[012345]|(?<=6)[123]|(?<=7)[124678]|(?<=8)[13567])|(?<=3)[012345]((?<=0)[12]|(?<=1)[123468]|(?<=2)[01234578]|(?<=3)[02345678]|(?<=4)[01246789]|(?<=5)[02345])|(?<=4)[0123456]((?<=0)[1246]|(?<=1)[4]|(?<=2)[012345789]|(?<=3)[134568]|(?<=4)[02345689]|(?<=5)[01245]|(?<=6)[023456789])|(?<=5)[02345]((?<=0)[1]|(?<=2)[023456]|(?<=3)[035679]|(?<=4)[0123456789]|(?<=5)[2345])|(?<=6)[012345678]((?<=0)[2457]|(?<=1)[0125679]|(?<=2)[2346789]|(?<=3)[12346789]|(?<=4)[12345678]|(?<=5)[014567]|(?<=6)[0169]|(?<=7)[0267]|(?<=8)[67])|(?<=7)[012]((?<=0)[234569]|(?<=1)[2346]|(?<=2)[05])|(?<=8)[01234567]((?<=0)[12345689]|(?<=1)[012345]|(?<=2)[1234567]|(?<=3)[02345679]|(?<=4)[0123456789]|(?<=5)[01245678]|(?<=6)[0146789]|(?<=7)[012346]))|(?<=4)[0134567]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[034578]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[012345679]|(?<=7)[01234568]|(?<=8)[012345678]|(?<=9)[2345678])|(?<=1)[012358]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[013489]|(?<=3)[8]|(?<=5)[0]|(?<=8)[0])|(?<=3)[01234]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[01])|(?<=4)[01]((?<=0)[13458]|(?<=1)[4])|(?<=5)[01234]((?<=0)[1]|(?<=1)[123568]|(?<=2)[01235689]|(?<=3)[012345679]|(?<=4)[02])|(?<=6)[023456]((?<=0)[1246]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[023456789]|(?<=5)[1234567]|(?<=6)[023457])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[01234567]|(?<=7)[0234569]|(?<=8)[01234]|(?<=9)[0]))|(?<=5)[01235679]((?<=0)[0123458]((?<=0)[346789]|(?<=1)[23456789]|(?<=2)[012346789]|(?<=3)[123457]|(?<=4)[0123458]|(?<=5)[0134]|(?<=8)[3567])|(?<=1)[123479]((?<=1)[89]|(?<=2)[01238]|(?<=3)[125789]|(?<=4)[012357]|(?<=7)[23]|(?<=9)[1234])|(?<=2)[012345689]((?<=0)[123456789]|(?<=1)[0235]|(?<=2)[456]|(?<=3)[346]|(?<=4)[89]|(?<=5)[013456789]|(?<=6)[023468]|(?<=8)[12346]|(?<=9)[5678])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0]|(?<=2)[012345689]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[0123457]|(?<=7)[1345789]|(?<=8)[12378]|(?<=9)[0256])|(?<=5)[0345]((?<=0)[1]|(?<=3)[01234569]|(?<=4)[0123456]|(?<=5)[01234])|(?<=6)[012345]((?<=0)[12356789]|(?<=1)[013456789]|(?<=2)[012345679]|(?<=3)[012345789]|(?<=4)[013568]|(?<=5)[0348])|(?<=7)[012345]((?<=0)[1456789]|(?<=1)[012345689]|(?<=2)[1346]|(?<=3)[045679]|(?<=4)[12356789]|(?<=5)[0567])|(?<=9)[01234]((?<=0)[12]|(?<=1)[12]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[012]))|(?<=6)[0345]((?<=0)[012345]((?<=0)[1345]|(?<=1)[15678]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[0234567]|(?<=5)[234])|(?<=3)[012345]((?<=0)[135]|(?<=1)[345]|(?<=2)[012345679]|(?<=3)[12345678]|(?<=4)[3]|(?<=5)[1])|(?<=4)[01234]((?<=0)[13469]|(?<=1)[13]|(?<=2)[69]|(?<=3)[12345678]|(?<=4)[012345])|(?<=5)[012345]((?<=0)[2345678]|(?<=1)[01245]|(?<=2)[0]|(?<=3)[58]|(?<=4)[0457]|(?<=5)[6]))|(?<=7)[01345789]((?<=0)[012345678]((?<=0)[1245678]|(?<=1)[012345678]|(?<=2)[0123456789]|(?<=3)[1245678]|(?<=4)[0123456789]|(?<=5)[12369]|(?<=6)[012348]|(?<=7)[02]|(?<=8)[3])|(?<=1)[01245]((?<=0)[12456789]|(?<=1)[0123467]|(?<=2)[01234]|(?<=4)[4]|(?<=5)[1])|(?<=3)[0124567]((?<=0)[15]|(?<=1)[01235679]|(?<=2)[01235678]|(?<=4)[7]|(?<=5)[7]|(?<=6)[45]|(?<=7)[5])|(?<=4)[012569]((?<=0)[12]|(?<=1)[02356789]|(?<=2)[01]|(?<=5)[5]|(?<=6)[1]|(?<=9)[9])|(?<=5)[012345678]((?<=0)[15678]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[0125789]|(?<=4)[034789]|(?<=5)[1234678]|(?<=6)[0245679]|(?<=7)[135789]|(?<=8)[0123])|(?<=7)[012345]((?<=0)[1]|(?<=1)[0123458]|(?<=2)[23489]|(?<=3)[0123456]|(?<=4)[0235679]|(?<=5)[023])|(?<=8)[023]((?<=0)[1]|(?<=2)[01345789]|(?<=3)[012])|(?<=9)[034]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[0123]))|(?<=8)[01234]((?<=0)[012345678]((?<=0)[12345789]|(?<=1)[12]|(?<=2)[0123456789]|(?<=3)[0489]|(?<=4)[0123456789]|(?<=5)[12356]|(?<=6)[135]|(?<=7)[2]|(?<=8)[1])|(?<=1)[0123]((?<=0)[13]|(?<=1)[2345689]|(?<=2)[01456]|(?<=3)[02456])|(?<=2)[0123456]((?<=0)[13]|(?<=1)[0]|(?<=2)[0]|(?<=3)[012]|(?<=4)[024]|(?<=5)[023456]|(?<=6)[0234578])|(?<=3)[012345]((?<=0)[1]|(?<=1)[0124678]|(?<=2)[1345]|(?<=3)[06789]|(?<=4)[0123456789]|(?<=5)[012345])|(?<=4)[0123]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[12467]|(?<=3)[014569]))|(?<=9)[0134578]((?<=0)[012345678]((?<=0)[1234578]|(?<=1)[012345789]|(?<=2)[0125679]|(?<=3)[01249]|(?<=4)[023456789]|(?<=5)[24]|(?<=6)[01]|(?<=7)[04]|(?<=8)[1456])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[035789]|(?<=2)[0123489]|(?<=3)[014589]|(?<=4)[123456789]|(?<=5)[68]|(?<=6)[169]|(?<=7)[89]|(?<=8)[3]|(?<=9)[1])|(?<=3)[01]((?<=0)[1]|(?<=1)[01456789])|(?<=4)[01234569]((?<=0)[2345689]|(?<=1)[01234589]|(?<=2)[0123456789]|(?<=3)[01346789]|(?<=4)[012456789]|(?<=5)[01]|(?<=6)[0]|(?<=9)[6])|(?<=5)[0125]((?<=0)[123689]|(?<=1)[0129]|(?<=2)[13]|(?<=5)[7])|(?<=7)[0]((?<=0)[13456])|(?<=8)[01238]((?<=0)[1]|(?<=1)[5]|(?<=2)[0123568]|(?<=3)[012345]|(?<=8)[3])))|(?<=9)[0123456789]((?<=0)[02345678]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[26789]|(?<=6)[123456789]|(?<=7)[1379]|(?<=8)[9]|(?<=9)[45])|(?<=2)[0123456789]((?<=0)[1]|(?<=1)[012]|(?<=2)[012]|(?<=3)[02]|(?<=4)[0125789]|(?<=5)[045]|(?<=6)[02356]|(?<=7)[024578]|(?<=8)[0]|(?<=9)[0123])|(?<=3)[0]((?<=0)[12345])|(?<=4)[0]((?<=0)[12345])|(?<=5)[0]((?<=0)[123456])|(?<=6)[02345678]((?<=0)[123456]|(?<=2)[013]|(?<=3)[0189]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=7)[012345]((?<=0)[1346]|(?<=1)[023567]|(?<=2)[03]|(?<=3)[12]|(?<=4)[0234567]|(?<=5)[5])|(?<=8)[01234]((?<=0)[2345678]|(?<=1)[0345]|(?<=2)[2]|(?<=3)[1]|(?<=4)[0]))|(?<=1)[0123456789]((?<=0)[01234]((?<=0)[1678]|(?<=1)[016]|(?<=2)[04]|(?<=3)[0]|(?<=4)[026])|(?<=1)[02]((?<=0)[1345678]|(?<=2)[5])|(?<=2)[01]((?<=0)[12345678]|(?<=1)[04])|(?<=3)[0123456789]((?<=0)[123467]|(?<=1)[16]|(?<=2)[01456]|(?<=3)[015]|(?<=4)[02345]|(?<=5)[012456]|(?<=6)[01247]|(?<=7)[17]|(?<=8)[147]|(?<=9)[0])|(?<=4)[0123]((?<=0)[12356]|(?<=1)[1]|(?<=2)[3]|(?<=3)[6])|(?<=5)[0]((?<=0)[12456])|(?<=6)[0]((?<=0)[1245678])|(?<=7)[0123456789]((?<=0)[12689]|(?<=1)[01]|(?<=2)[234]|(?<=3)[012379]|(?<=4)[014568]|(?<=5)[02459]|(?<=6)[12345678]|(?<=7)[0356]|(?<=8)[0469]|(?<=9)[012])|(?<=8)[0]((?<=0)[13])|(?<=9)[01345678]((?<=0)[1256]|(?<=1)[0134567]|(?<=3)[1245]|(?<=4)[1258]|(?<=5)[0]|(?<=6)[23]|(?<=7)[78]|(?<=8)[0]))|(?<=2)[012345678]((?<=0)[0123456789]((?<=0)[34789]|(?<=1)[0149]|(?<=2)[01456789]|(?<=3)[67]|(?<=4)[0]|(?<=5)[456789]|(?<=6)[0145679]|(?<=7)[0158]|(?<=8)[12346]|(?<=9)[1236])|(?<=1)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[012346789]|(?<=3)[0124569]|(?<=4)[057]|(?<=5)[45]|(?<=6)[1]|(?<=7)[39]|(?<=8)[2])|(?<=2)[012345678]((?<=0)[13]|(?<=1)[01]|(?<=2)[02357]|(?<=3)[013469]|(?<=4)[01239]|(?<=5)[012346789]|(?<=6)[024678]|(?<=7)[0345678]|(?<=8)[012345])|(?<=3)[0123456789]((?<=0)[145789]|(?<=1)[0134567]|(?<=2)[0124578]|(?<=3)[2356789]|(?<=4)[124567]|(?<=5)[024689]|(?<=6)[34589]|(?<=7)[1234678]|(?<=8)[24569]|(?<=9)[1245789])|(?<=4)[01]((?<=0)[14578]|(?<=1)[015])|(?<=5)[0123456789]((?<=0)[13456789]|(?<=1)[8]|(?<=2)[1]|(?<=3)[0269]|(?<=4)[34589]|(?<=5)[1357]|(?<=6)[1237]|(?<=7)[01]|(?<=8)[234567]|(?<=9)[01256])|(?<=6)[0123456789]((?<=0)[2346]|(?<=1)[02478]|(?<=2)[045679]|(?<=3)[07]|(?<=4)[6789]|(?<=5)[13567]|(?<=6)[0123]|(?<=7)[2356789]|(?<=8)[38]|(?<=9)[1247])|(?<=7)[08]((?<=0)[1345678]|(?<=8)[02])|(?<=8)[0234678]((?<=0)[1245678]|(?<=2)[13]|(?<=3)[1235]|(?<=4)[01345]|(?<=6)[0156789]|(?<=7)[09]|(?<=8)[012367]))|(?<=3)[012345679]((?<=0)[012346]((?<=0)[134]|(?<=1)[0235]|(?<=2)[123]|(?<=3)[0356]|(?<=4)[0123]|(?<=6)[034567])|(?<=1)[01]((?<=0)[135689]|(?<=1)[017])|(?<=2)[0123456789]((?<=0)[12345678]|(?<=1)[02589]|(?<=2)[01234567]|(?<=3)[045789]|(?<=4)[012345679]|(?<=5)[01245678]|(?<=6)[01235678]|(?<=7)[012467]|(?<=8)[03567]|(?<=9)[12])|(?<=3)[01]((?<=0)[1456789]|(?<=1)[1234])|(?<=4)[0123456]((?<=0)[125789]|(?<=1)[0]|(?<=2)[0246789]|(?<=3)[023467]|(?<=4)[0124569]|(?<=5)[0123458]|(?<=6)[0135])|(?<=5)[012345689]((?<=0)[15]|(?<=1)[02346789]|(?<=2)[2346789]|(?<=3)[012456]|(?<=4)[134569]|(?<=5)[0123458]|(?<=6)[0123]|(?<=8)[1]|(?<=9)[1])|(?<=6)[01234567]((?<=0)[12345689]|(?<=1)[01245689]|(?<=2)[012345678]|(?<=3)[01345678]|(?<=4)[01345678]|(?<=5)[0123467]|(?<=6)[02456789]|(?<=7)[035])|(?<=7)[01234]((?<=0)[123456]|(?<=1)[01]|(?<=2)[01235678]|(?<=3)[07]|(?<=4)[01])|(?<=9)[023456]((?<=0)[15678]|(?<=2)[01345678]|(?<=3)[023]|(?<=4)[034]|(?<=5)[0345]|(?<=6)[02]))|(?<=4)[013456789]((?<=0)[01234678]((?<=0)[25]|(?<=1)[04589]|(?<=2)[0124578]|(?<=3)[078]|(?<=4)[0134]|(?<=6)[012356]|(?<=7)[04]|(?<=8)[05679])|(?<=1)[012358]((?<=0)[2345789]|(?<=1)[01245678]|(?<=2)[1234789]|(?<=3)[01234]|(?<=5)[8]|(?<=8)[8])|(?<=3)[0]((?<=0)[13456])|(?<=4)[0]((?<=0)[1234])|(?<=5)[0123456789]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[013568]|(?<=3)[01345689]|(?<=4)[12456789]|(?<=5)[01235689]|(?<=6)[0123456789]|(?<=7)[123456789]|(?<=8)[02356789]|(?<=9)[01256789])|(?<=6)[012]((?<=0)[12356789]|(?<=1)[012389]|(?<=2)[1])|(?<=7)[012]((?<=0)[23456789]|(?<=1)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0234567]((?<=0)[134]|(?<=2)[0234589]|(?<=3)[013789]|(?<=4)[015679]|(?<=5)[012467]|(?<=6)[0345]|(?<=7)[0123]))|(?<=5)[0123456789]((?<=0)[01234567]((?<=0)[2345678]|(?<=1)[0234789]|(?<=2)[03]|(?<=3)[023579]|(?<=4)[1356]|(?<=5)[0134]|(?<=6)[02456]|(?<=7)[0356])|(?<=1)[1234]((?<=1)[01236789]|(?<=2)[0123456789]|(?<=3)[012345689]|(?<=4)[08])|(?<=2)[012345]((?<=0)[2345679]|(?<=1)[01259]|(?<=2)[012345678]|(?<=3)[012367]|(?<=4)[0256789]|(?<=5)[1234578])|(?<=3)[0123456789]((?<=0)[1345679]|(?<=1)[012356789]|(?<=2)[0123456789]|(?<=3)[0345678]|(?<=4)[01568]|(?<=5)[0145678]|(?<=6)[013456789]|(?<=7)[0245679]|(?<=8)[02356789]|(?<=9)[1])|(?<=4)[0123456789]((?<=0)[134579]|(?<=1)[02579]|(?<=2)[012356789]|(?<=3)[0125679]|(?<=4)[12345689]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[0126]|(?<=8)[02568]|(?<=9)[02347])|(?<=5)[0123456789]((?<=0)[13]|(?<=1)[149]|(?<=2)[145678]|(?<=3)[1678]|(?<=4)[02356789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[013]|(?<=8)[579]|(?<=9)[5])|(?<=6)[0123456789]((?<=0)[12345678]|(?<=1)[02345689]|(?<=2)[013456789]|(?<=3)[0123456789]|(?<=4)[012568]|(?<=5)[0123589]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345789])|(?<=7)[01234567]((?<=0)[139]|(?<=1)[3457]|(?<=2)[01268]|(?<=3)[56]|(?<=4)[267]|(?<=5)[78]|(?<=6)[25]|(?<=7)[6])|(?<=8)[12346]((?<=1)[1456789]|(?<=2)[0123456789]|(?<=3)[01234578]|(?<=4)[123]|(?<=6)[4])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[023456789]|(?<=2)[0235689]|(?<=3)[02456789]|(?<=4)[123456789]|(?<=5)[013456789]|(?<=6)[01235689]|(?<=7)[012345789]|(?<=8)[1234678]|(?<=9)[13]))|(?<=6)[01789]((?<=0)[0123456789]((?<=0)[1236789]|(?<=1)[01345679]|(?<=2)[012345789]|(?<=3)[12345789]|(?<=4)[014678]|(?<=5)[012456789]|(?<=6)[12345789]|(?<=7)[134568]|(?<=8)[045678]|(?<=9)[0123467])|(?<=1)[0123456]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0234567]|(?<=4)[0123568]|(?<=5)[05]|(?<=6)[1])|(?<=7)[0123456789]((?<=0)[1345678]|(?<=1)[0234679]|(?<=2)[0256789]|(?<=3)[012478]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[012345689]|(?<=7)[012346789]|(?<=8)[0123569]|(?<=9)[01235679])|(?<=8)[12456]((?<=1)[3456789]|(?<=2)[01256]|(?<=4)[8]|(?<=5)[03789]|(?<=6)[03])|(?<=9)[125]((?<=1)[03567]|(?<=2)[89]|(?<=5)[012]))|(?<=7)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[13456789]|(?<=2)[012346789]|(?<=3)[012345789]|(?<=4)[012589]|(?<=5)[01345678]|(?<=6)[0234578]|(?<=7)[018]|(?<=8)[069])|(?<=1)[01234]((?<=0)[1236789]|(?<=1)[0123456789]|(?<=2)[1234578]|(?<=3)[012345678]|(?<=4)[01456789])|(?<=2)[012356]((?<=0)[12345689]|(?<=1)[0123456789]|(?<=2)[01234579]|(?<=3)[012369]|(?<=5)[8]|(?<=6)[67])|(?<=3)[0123456789]((?<=0)[123456]|(?<=1)[07]|(?<=2)[1245679]|(?<=3)[013568]|(?<=4)[12345678]|(?<=5)[012578]|(?<=6)[012456789]|(?<=7)[01345678]|(?<=8)[01345689]|(?<=9)[01246])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[012345679]|(?<=2)[03469]|(?<=3)[012456789]|(?<=4)[12346789]|(?<=5)[0123456789]|(?<=6)[1235679]|(?<=7)[0136789]|(?<=8)[0146789]|(?<=9)[023456789])|(?<=5)[0234]((?<=0)[1234]|(?<=2)[0234567]|(?<=3)[012456789]|(?<=4)[0134])|(?<=6)[0234]((?<=0)[134]|(?<=2)[01234567]|(?<=3)[023456789]|(?<=4)[01])|(?<=7)[0123456]((?<=0)[12379]|(?<=1)[012]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[1]|(?<=5)[01234689]|(?<=6)[01])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[0234789]|(?<=2)[0345678]|(?<=3)[03456789]|(?<=4)[01234568]|(?<=5)[0679]|(?<=6)[245789]|(?<=7)[034567]|(?<=8)[023456])|(?<=9)[012]((?<=0)[123456789]|(?<=1)[013478]|(?<=2)[0]))|(?<=8)[012345689]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[01249]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[02357]|(?<=5)[012356789]|(?<=6)[58]|(?<=7)[02457]|(?<=8)[7]|(?<=9)[2])|(?<=1)[0123456789]((?<=0)[123456789]|(?<=1)[0256789]|(?<=2)[1256]|(?<=3)[346]|(?<=4)[468]|(?<=5)[458]|(?<=6)[468]|(?<=7)[478]|(?<=8)[8]|(?<=9)[589])|(?<=2)[023456789]((?<=0)[13478]|(?<=2)[01234569]|(?<=3)[02356789]|(?<=4)[01345789]|(?<=5)[01235678]|(?<=6)[0123467]|(?<=7)[0123456789]|(?<=8)[0123468]|(?<=9)[024567])|(?<=3)[0123456789]((?<=0)[345]|(?<=1)[01245]|(?<=2)[01356789]|(?<=3)[012356789]|(?<=4)[02569]|(?<=5)[013456789]|(?<=6)[012345678]|(?<=7)[01234567]|(?<=8)[0123578]|(?<=9)[01246])|(?<=4)[0123469]((?<=0)[23456789]|(?<=1)[68]|(?<=2)[124]|(?<=3)[0389]|(?<=4)[34567]|(?<=6)[567]|(?<=9)[89])|(?<=5)[0123456789]((?<=0)[12356]|(?<=1)[236]|(?<=2)[04678]|(?<=3)[012356789]|(?<=4)[124678]|(?<=5)[0256789]|(?<=6)[02345689]|(?<=7)[0125679]|(?<=8)[0123456789]|(?<=9)[0123567])|(?<=6)[012345678]((?<=0)[12345679]|(?<=1)[01234679]|(?<=2)[01345689]|(?<=3)[12589]|(?<=4)[012345789]|(?<=5)[01]|(?<=6)[012345]|(?<=7)[012345]|(?<=8)[23456])|(?<=8)[0123456]((?<=0)[12]|(?<=1)[12345679]|(?<=2)[12346789]|(?<=3)[0123467]|(?<=4)[013456789]|(?<=5)[012356789]|(?<=6)[02])|(?<=9)[02345]((?<=0)[1238]|(?<=2)[12356]|(?<=3)[023456789]|(?<=4)[01234678]|(?<=5)[0123]))|(?<=9)[0123456789]((?<=0)[01234]((?<=0)[1345689]|(?<=1)[12346789]|(?<=2)[01235679]|(?<=3)[01234679]|(?<=4)[0])|(?<=1)[012345678]((?<=0)[12359]|(?<=1)[013456789]|(?<=2)[12345689]|(?<=3)[013456789]|(?<=4)[01346789]|(?<=5)[0123456789]|(?<=6)[013679]|(?<=7)[013469]|(?<=8)[015])|(?<=2)[0125]((?<=0)[12345678]|(?<=1)[2678]|(?<=2)[34]|(?<=5)[18])|(?<=3)[0234567]((?<=0)[1]|(?<=2)[01234689]|(?<=3)[035678]|(?<=4)[13456789]|(?<=5)[0234679]|(?<=6)[0123]|(?<=7)[1])|(?<=4)[0]((?<=0)[123])|(?<=5)[013456789]((?<=0)[12345678]|(?<=1)[356789]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0123456789]|(?<=6)[13456789]|(?<=7)[123456789]|(?<=8)[01356789]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[23456789]|(?<=1)[012345]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[012345])|(?<=7)[0123456789]((?<=0)[12345679]|(?<=1)[24]|(?<=2)[012345679]|(?<=3)[02346789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012345678]|(?<=8)[012345689]|(?<=9)[01])|(?<=8)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[02356]|(?<=4)[01]|(?<=5)[0])|(?<=9)[012]((?<=0)[13]|(?<=1)[89]|(?<=2)[1235679])))))$") + US: new RegExp("^([0123456789]((?<=0)[012345678]((?<=0)[6789]((?<=6)[0123456789]((?<=0)[1236]|(?<=1)[01267]|(?<=2)[2347]|(?<=3)[1678]|(?<=4)[167]|(?<=5)[02369]|(?<=6)[02479]|(?<=7)[04678]|(?<=8)[023578]|(?<=9)[02348])|(?<=7)[0123456789]((?<=0)[3457]|(?<=1)[456789]|(?<=2)[035789]|(?<=3)[015689]|(?<=4)[015]|(?<=5)[147]|(?<=6)[5679]|(?<=7)[123578]|(?<=8)[02346]|(?<=9)[145])|(?<=8)[02345]((?<=0)[2]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01])|(?<=9)[012345678]((?<=0)[1679]|(?<=1)[123578]|(?<=2)[0134567]|(?<=3)[4]|(?<=4)[9]|(?<=5)[0123679]|(?<=6)[0125689]|(?<=7)[169]|(?<=8)[2357]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[0123]|(?<=2)[026789]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[03467]|(?<=6)[023689]|(?<=7)[01234579]|(?<=8)[01234589]|(?<=9)[2345678])|(?<=1)[01245]((?<=0)[3456789]|(?<=1)[89]|(?<=2)[89]|(?<=4)[4]|(?<=5)[1])|(?<=2)[0234567]((?<=0)[1]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[023457]|(?<=5)[3456789]|(?<=6)[02467]|(?<=7)[0])|(?<=3)[0345678]((?<=0)[1]|(?<=3)[01789]|(?<=4)[01234679]|(?<=5)[0145]|(?<=6)[04678]|(?<=7)[035689]|(?<=8)[0])|(?<=4)[234567]((?<=2)[0]|(?<=3)[012468]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[023489]|(?<=7)[345])|(?<=5)[0123456789]((?<=0)[134567]|(?<=1)[05689]|(?<=2)[01234579]|(?<=3)[124567]|(?<=4)[01235]|(?<=5)[0]|(?<=6)[0124689]|(?<=7)[01]|(?<=8)[1358]|(?<=9)[0])|(?<=6)[01]((?<=0)[23456789]|(?<=1)[012])|(?<=7)[01234567]((?<=0)[12]|(?<=1)[89]|(?<=2)[01]|(?<=3)[01]|(?<=4)[01256789]|(?<=5)[2467]|(?<=6)[0]|(?<=7)[023568])|(?<=8)[0123456789]((?<=0)[13]|(?<=1)[0]|(?<=2)[1467]|(?<=3)[02345]|(?<=4)[01345]|(?<=5)[0124]|(?<=6)[02347]|(?<=7)[69]|(?<=8)[067]|(?<=9)[0])|(?<=9)[012345678]((?<=0)[1245678]|(?<=1)[35]|(?<=2)[1239]|(?<=3)[078]|(?<=4)[0459]|(?<=5)[012]|(?<=6)[0569]|(?<=7)[0]|(?<=8)[2345]))|(?<=2)[0123456789]((?<=0)[123456789]((?<=1)[9]|(?<=2)[156]|(?<=3)[0258]|(?<=4)[3578]|(?<=5)[02346]|(?<=6)[1267]|(?<=7)[12]|(?<=8)[1]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[89]|(?<=1)[01345689]|(?<=2)[012456789]|(?<=3)[012345689]|(?<=4)[01234589]|(?<=5)[0125]|(?<=6)[39]|(?<=7)[016]|(?<=8)[04689]|(?<=9)[019])|(?<=2)[01]((?<=0)[35]|(?<=1)[05])|(?<=3)[02345678]((?<=0)[12]|(?<=2)[245]|(?<=3)[02389]|(?<=4)[1367]|(?<=5)[01679]|(?<=6)[04678]|(?<=7)[059]|(?<=8)[2])|(?<=4)[2456789]((?<=2)[01]|(?<=4)[56]|(?<=5)[123789]|(?<=6)[01245678]|(?<=7)[2468]|(?<=8)[12]|(?<=9)[234])|(?<=5)[345678]((?<=3)[2456789]|(?<=4)[023]|(?<=5)[346789]|(?<=6)[12348]|(?<=7)[156]|(?<=8)[4])|(?<=6)[034567]((?<=0)[1]|(?<=3)[01235789]|(?<=4)[123456789]|(?<=5)[023579]|(?<=6)[034678]|(?<=7)[01235])|(?<=7)[012346789]((?<=0)[23]|(?<=1)[35789]|(?<=2)[013456]|(?<=3)[89]|(?<=4)[0345678]|(?<=6)[0234679]|(?<=7)[0179]|(?<=8)[0]|(?<=9)[01])|(?<=8)[0123456789]((?<=0)[246789]|(?<=1)[2345678]|(?<=2)[23456789]|(?<=3)[012356789]|(?<=4)[012]|(?<=5)[2789]|(?<=6)[01345]|(?<=7)[12345689]|(?<=8)[125689]|(?<=9)[1234568])|(?<=9)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[01]))|(?<=3)[0123456789]((?<=0)[345678]((?<=3)[1234678]|(?<=4)[23456789]|(?<=5)[123457]|(?<=6)[0234]|(?<=7)[01679]|(?<=8)[2467])|(?<=1)[01]((?<=0)[123469]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[5678]|(?<=2)[012345679]|(?<=3)[0134578]|(?<=4)[01234569]|(?<=5)[13456789]|(?<=6)[01234689]|(?<=7)[35689]|(?<=8)[012457]|(?<=9)[013])|(?<=3)[0]((?<=0)[1347])|(?<=4)[34567]((?<=3)[1]|(?<=4)[0123456789]|(?<=5)[0125678]|(?<=6)[124567]|(?<=7)[0])|(?<=5)[6789]((?<=6)[1]|(?<=7)[04569]|(?<=8)[01234568]|(?<=9)[023578])|(?<=6)[0]((?<=0)[12345789])|(?<=7)[45678]((?<=4)[01358]|(?<=5)[01235]|(?<=6)[568]|(?<=7)[013479]|(?<=8)[01245])|(?<=8)[0123456789]((?<=0)[19]|(?<=1)[012346789]|(?<=2)[034567]|(?<=3)[02356789]|(?<=4)[012456789]|(?<=5)[012345678]|(?<=6)[01245789]|(?<=7)[0123458]|(?<=8)[234567]|(?<=9)[047])|(?<=9)[01]((?<=0)[123456789]|(?<=1)[01]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[1235689]|(?<=1)[01579]|(?<=2)[012479]|(?<=3)[02789]|(?<=4)[01236789]|(?<=5)[01567]|(?<=6)[1234689]|(?<=7)[123469]|(?<=8)[345678]|(?<=9)[0123567])|(?<=1)[01]((?<=0)[12356789]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[0679]|(?<=2)[012467]|(?<=3)[146789]|(?<=4)[0]|(?<=5)[023456789]|(?<=6)[013578]|(?<=7)[01456]|(?<=8)[01245679]|(?<=9)[024])|(?<=3)[3456]((?<=3)[0]|(?<=4)[12456789]|(?<=5)[012345789]|(?<=6)[034])|(?<=4)[0123456789]((?<=0)[168]|(?<=1)[0123456789]|(?<=2)[1246789]|(?<=3)[01458]|(?<=4)[123489]|(?<=5)[01345679]|(?<=6)[0123489]|(?<=7)[12345689]|(?<=8)[15789]|(?<=9)[0123567])|(?<=5)[34567]((?<=3)[05789]|(?<=4)[13478]|(?<=5)[134568]|(?<=6)[2348]|(?<=7)[012345689])|(?<=6)[0123456789]((?<=0)[5679]|(?<=1)[1234679]|(?<=2)[2345678]|(?<=3)[0145]|(?<=4)[0235689]|(?<=5)[0234578]|(?<=6)[0246789]|(?<=7)[1345679]|(?<=8)[013456]|(?<=9)[134])|(?<=7)[345678]((?<=3)[02345679]|(?<=4)[023567]|(?<=5)[0678]|(?<=6)[012345689]|(?<=7)[234679]|(?<=8)[013567])|(?<=8)[456]((?<=4)[13789]|(?<=5)[12345689]|(?<=6)[01234])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[012578]|(?<=2)[0123456789]|(?<=3)[026789]|(?<=4)[01234579]|(?<=5)[01235678]|(?<=6)[1345679]|(?<=7)[01345689]|(?<=8)[123456789]|(?<=9)[2]))|(?<=5)[012346789]((?<=0)[03456789]((?<=0)[19]|(?<=3)[0123456789]|(?<=4)[0123568]|(?<=5)[01235689]|(?<=6)[0125789]|(?<=7)[01235679]|(?<=8)[134689]|(?<=9)[1])|(?<=1)[0456]((?<=0)[1]|(?<=4)[123689]|(?<=5)[01234568]|(?<=6)[1])|(?<=2)[056]((?<=0)[1]|(?<=5)[0123457]|(?<=6)[012])|(?<=3)[0456]((?<=0)[1]|(?<=4)[0123456]|(?<=5)[012345689]|(?<=6)[0123])|(?<=4)[03456789]((?<=0)[13458]|(?<=3)[9]|(?<=4)[012345678]|(?<=5)[02456789]|(?<=6)[123458]|(?<=7)[1234678]|(?<=8)[12356789]|(?<=9)[1245])|(?<=6)[045678]((?<=0)[2]|(?<=4)[01789]|(?<=5)[01234568]|(?<=6)[0134679]|(?<=7)[023456789]|(?<=8)[012])|(?<=7)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[234678]|(?<=5)[13789]|(?<=6)[0123456789]|(?<=7)[02345678])|(?<=8)[1234567]((?<=1)[9]|(?<=2)[012456789]|(?<=3)[023679]|(?<=4)[0123567]|(?<=5)[0135789]|(?<=6)[02678]|(?<=7)[12345])|(?<=9)[0]((?<=0)[1234567]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[12]|(?<=1)[03689]|(?<=2)[01234679]|(?<=3)[123579]|(?<=4)[023]|(?<=5)[123789]|(?<=6)[012356789]|(?<=7)[01234689]|(?<=8)[0124589]|(?<=9)[0123568])|(?<=1)[012]((?<=0)[356789]|(?<=1)[0124789]|(?<=2)[0])|(?<=2)[2345678]((?<=2)[6]|(?<=3)[1245789]|(?<=4)[123789]|(?<=5)[045689]|(?<=6)[0234689]|(?<=7)[789]|(?<=8)[012])|(?<=3)[23456789]((?<=2)[0]|(?<=3)[012345689]|(?<=4)[0]|(?<=5)[0134579]|(?<=6)[05]|(?<=7)[013456789]|(?<=8)[024579]|(?<=9)[0])|(?<=4)[0123456789]((?<=0)[1359]|(?<=1)[023456789]|(?<=2)[02346]|(?<=3)[789]|(?<=4)[12347]|(?<=5)[015679]|(?<=6)[01789]|(?<=7)[01235789]|(?<=8)[0123489]|(?<=9)[28])|(?<=5)[12]((?<=1)[0123456789]|(?<=2)[45])|(?<=6)[01]((?<=0)[45678]|(?<=1)[01245])|(?<=7)[0156789]((?<=0)[24568]|(?<=1)[026]|(?<=5)[0123456789]|(?<=6)[23]|(?<=7)[06789]|(?<=8)[234567]|(?<=9)[0134568])|(?<=8)[012345789]((?<=0)[147]|(?<=1)[012]|(?<=2)[045]|(?<=3)[01]|(?<=4)[0]|(?<=5)[01345]|(?<=7)[078]|(?<=8)[03]|(?<=9)[067])|(?<=9)[0]((?<=0)[123567]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[12345689]|(?<=1)[01234678]|(?<=2)[012346789]|(?<=3)[01234569]|(?<=4)[01234567]|(?<=5)[0245789]|(?<=6)[023456789]|(?<=7)[0123456789]|(?<=8)[0123678]|(?<=9)[02345])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0124])|(?<=2)[0]((?<=0)[1234568])|(?<=3)[01]((?<=0)[24567]|(?<=1)[01])|(?<=4)[012345678]((?<=0)[1357]|(?<=1)[06789]|(?<=2)[01234]|(?<=3)[025689]|(?<=4)[0246]|(?<=5)[02678]|(?<=6)[01235]|(?<=7)[0]|(?<=8)[01])|(?<=5)[012]((?<=0)[1234568]|(?<=1)[234]|(?<=2)[24])|(?<=6)[0234567]((?<=0)[1345678]|(?<=2)[014678]|(?<=3)[012]|(?<=4)[0123456789]|(?<=5)[0267]|(?<=6)[01236]|(?<=7)[0567])|(?<=7)[0123456]((?<=0)[1234]|(?<=1)[126789]|(?<=2)[01234678]|(?<=3)[012345789]|(?<=4)[0678]|(?<=5)[0135678]|(?<=6)[024])|(?<=8)[02345678]((?<=0)[13]|(?<=2)[01235678]|(?<=3)[0123468]|(?<=4)[02346789]|(?<=5)[012367]|(?<=6)[03569]|(?<=7)[01468]|(?<=8)[0125])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[0124678]|(?<=3)[01234569]|(?<=4)[056]|(?<=5)[0]|(?<=6)[01]|(?<=7)[04679]|(?<=8)[01]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0124569]|(?<=2)[01236789]|(?<=3)[0123456789]|(?<=4)[1235689]|(?<=5)[012345679]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[013456789]|(?<=9)[012345678])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=2)[01234567]((?<=0)[12345]|(?<=1)[0257]|(?<=2)[13456]|(?<=3)[024]|(?<=4)[012345678]|(?<=5)[1]|(?<=6)[0]|(?<=7)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01246789]|(?<=2)[012346789]|(?<=3)[02]|(?<=4)[01345689]|(?<=5)[023]|(?<=6)[01])|(?<=4)[0]((?<=0)[1236])|(?<=5)[0123456]((?<=0)[125]|(?<=1)[012458]|(?<=2)[0578]|(?<=3)[03456]|(?<=4)[024]|(?<=5)[0134589]|(?<=6)[012])|(?<=6)[012349]((?<=0)[89]|(?<=1)[0189]|(?<=2)[089]|(?<=3)[8]|(?<=4)[018]|(?<=9)[01])|(?<=7)[02345]((?<=0)[1]|(?<=2)[01234]|(?<=3)[01234568]|(?<=4)[012]|(?<=5)[01235789])|(?<=8)[0123456789]((?<=0)[124579]|(?<=1)[0267]|(?<=2)[0123456789]|(?<=3)[0123567]|(?<=4)[0468]|(?<=5)[0234789]|(?<=6)[13579]|(?<=7)[2369]|(?<=8)[024679]|(?<=9)[0])|(?<=9)[0]((?<=0)[124])))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[0123467]((?<=0)[12345679]|(?<=1)[012346789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[04]|(?<=6)[59]|(?<=7)[5])|(?<=1)[0125679]((?<=0)[3]|(?<=1)[01259]|(?<=2)[8]|(?<=5)[234]|(?<=6)[25789]|(?<=7)[012347]|(?<=9)[9])|(?<=2)[78]((?<=7)[189]|(?<=8)[02])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[0124])|(?<=4)[567]((?<=5)[123456789]|(?<=6)[0123456789]|(?<=7)[012345])|(?<=5)[0123456789]((?<=0)[12345679]|(?<=1)[01246789]|(?<=2)[0234678]|(?<=3)[0235678]|(?<=4)[012356789]|(?<=5)[023]|(?<=6)[0267]|(?<=7)[036789]|(?<=8)[0389]|(?<=9)[0145678])|(?<=6)[0]((?<=0)[134567])|(?<=7)[01]((?<=0)[13456789]|(?<=1)[0])|(?<=8)[0]((?<=0)[1345])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[012345678]|(?<=3)[0123]|(?<=4)[01]|(?<=5)[023468]|(?<=6)[0234589]|(?<=7)[0345679]|(?<=8)[03456789]|(?<=9)[023468]))|(?<=1)[0123456789]((?<=0)[0123459]((?<=0)[1345]|(?<=1)[0]|(?<=2)[0134]|(?<=3)[0]|(?<=4)[02]|(?<=5)[0]|(?<=9)[6])|(?<=1)[0]((?<=0)[1234569])|(?<=2)[01234]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[9])|(?<=3)[5678]((?<=5)[456789]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[5])|(?<=4)[1235]((?<=1)[123456789]|(?<=2)[012346789]|(?<=3)[0234569]|(?<=5)[1])|(?<=5)[0123456789]((?<=0)[179]|(?<=1)[0468]|(?<=2)[0]|(?<=3)[0]|(?<=4)[25789]|(?<=5)[02346789]|(?<=6)[0135689]|(?<=7)[025679]|(?<=8)[01]|(?<=9)[068])|(?<=6)[9]((?<=9)[12347])|(?<=7)[0123456789]((?<=0)[1234569]|(?<=1)[03456789]|(?<=2)[01245679]|(?<=3)[0123589]|(?<=4)[0123679]|(?<=5)[12345678]|(?<=6)[23456789]|(?<=7)[0126789]|(?<=8)[02346789]|(?<=9)[012345678])|(?<=8)[0]((?<=0)[134])|(?<=9)[0345678]((?<=0)[1]|(?<=3)[01234579]|(?<=4)[01246789]|(?<=5)[0123456789]|(?<=6)[01234578]|(?<=7)[01235678]|(?<=8)[0]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[789]|(?<=1)[05789]|(?<=2)[02345789]|(?<=3)[123567]|(?<=4)[0123567]|(?<=5)[12346789]|(?<=6)[0123456789]|(?<=7)[01245678]|(?<=8)[234567]|(?<=9)[02345])|(?<=1)[0123456789]((?<=0)[68]|(?<=1)[05678]|(?<=2)[012345]|(?<=3)[01246789]|(?<=4)[034789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[0234567]|(?<=8)[023456789]|(?<=9)[02345678])|(?<=2)[012]((?<=0)[23456789]|(?<=1)[01]|(?<=2)[26])|(?<=3)[0]((?<=0)[23456789])|(?<=4)[0123456789]((?<=0)[145679]|(?<=1)[012346789]|(?<=2)[01234789]|(?<=3)[012345689]|(?<=4)[01234689]|(?<=5)[0123456789]|(?<=6)[01345689]|(?<=7)[0123457]|(?<=8)[012345679]|(?<=9)[01234568])|(?<=5)[0123456789]((?<=0)[123478]|(?<=1)[2345678]|(?<=2)[0123456789]|(?<=3)[01348]|(?<=4)[023456789]|(?<=5)[03]|(?<=6)[1345679]|(?<=7)[0124578]|(?<=8)[0123569]|(?<=9)[024])|(?<=6)[0]((?<=0)[134])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[9]|(?<=2)[01234569]|(?<=3)[234678]|(?<=4)[012356789]|(?<=5)[012489]|(?<=6)[023456789]|(?<=7)[0156789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13489]|(?<=1)[01245679]|(?<=2)[0123478]|(?<=3)[123456789]|(?<=4)[12345679]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012348]|(?<=8)[34567])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[0123456789]|(?<=2)[012346789]|(?<=3)[02345679]|(?<=4)[123456]|(?<=5)[02356789]|(?<=6)[01245679]|(?<=7)[023456789]|(?<=8)[0135679]|(?<=9)[23678]))|(?<=3)[0123456789]((?<=0)[23456789]((?<=2)[0146789]|(?<=3)[012345679]|(?<=4)[01245]|(?<=5)[12347]|(?<=6)[01235689]|(?<=7)[1234678]|(?<=8)[0123478]|(?<=9)[02])|(?<=1)[0123456]((?<=0)[12348]|(?<=1)[0123456789]|(?<=2)[012346]|(?<=3)[124568]|(?<=4)[012345678]|(?<=5)[23456789]|(?<=6)[0234567])|(?<=2)[01249]((?<=0)[23456789]|(?<=1)[012459]|(?<=2)[4]|(?<=4)[4]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[1234589]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[12345789]|(?<=4)[023568]|(?<=5)[023457]|(?<=6)[0134578])|(?<=4)[0123456789]((?<=0)[2346789]|(?<=1)[0135678]|(?<=2)[01458]|(?<=3)[1356789]|(?<=4)[01]|(?<=5)[0245679]|(?<=6)[01489]|(?<=7)[01235678]|(?<=8)[02345689]|(?<=9)[012345])|(?<=5)[0]((?<=0)[12])|(?<=6)[0123456789]((?<=0)[1235678]|(?<=1)[123456789]|(?<=2)[01234568]|(?<=3)[023456789]|(?<=4)[012356789]|(?<=5)[01245689]|(?<=6)[012456789]|(?<=7)[02345689]|(?<=8)[0123457]|(?<=9)[012345679])|(?<=7)[3456789]((?<=3)[01234689]|(?<=4)[034678]|(?<=5)[01234567]|(?<=6)[0]|(?<=7)[45678]|(?<=8)[0234678]|(?<=9)[0567])|(?<=8)[0123456]((?<=0)[12346789]|(?<=1)[012345]|(?<=2)[0567]|(?<=3)[0234589]|(?<=4)[1234679]|(?<=5)[069]|(?<=6)[012345])|(?<=9)[0]((?<=0)[12345]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[145689]|(?<=1)[123]|(?<=2)[0456789]|(?<=3)[012345679]|(?<=4)[012378]|(?<=5)[12456789]|(?<=6)[012356789]|(?<=7)[025]|(?<=8)[012356]|(?<=9)[1248])|(?<=1)[01234567]((?<=0)[123589]|(?<=1)[123]|(?<=2)[05679]|(?<=3)[01245689]|(?<=4)[135]|(?<=5)[0]|(?<=6)[6789]|(?<=7)[01234])|(?<=2)[0126]((?<=0)[12346789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=6)[01])|(?<=3)[0]((?<=0)[12345])|(?<=4)[12345678]((?<=1)[134568]|(?<=2)[0234578]|(?<=3)[2357]|(?<=4)[15]|(?<=5)[0346]|(?<=6)[2346789]|(?<=7)[01256789]|(?<=8)[0125679])|(?<=5)[0123456789]((?<=0)[24567]|(?<=1)[012345679]|(?<=2)[125679]|(?<=3)[0234679]|(?<=4)[12345689]|(?<=5)[015679]|(?<=6)[01489]|(?<=7)[12]|(?<=8)[05689]|(?<=9)[012])|(?<=6)[0124]((?<=0)[456789]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=4)[2])|(?<=7)[012345678]((?<=0)[16789]|(?<=1)[012456789]|(?<=2)[012346789]|(?<=3)[12356789]|(?<=4)[0123478]|(?<=5)[0234567]|(?<=6)[079]|(?<=7)[0245789]|(?<=8)[1234578])|(?<=8)[0123456789]((?<=0)[123456789]|(?<=1)[023456789]|(?<=2)[01234567]|(?<=3)[06789]|(?<=4)[0123567]|(?<=5)[0345689]|(?<=6)[014579]|(?<=7)[01234789]|(?<=8)[01234569]|(?<=9)[1234578])|(?<=9)[0]((?<=0)[1345]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[1345679]|(?<=1)[0245789]|(?<=2)[01245678]|(?<=3)[0134578]|(?<=4)[2345679]|(?<=5)[012345679]|(?<=6)[012345678]|(?<=7)[1245678]|(?<=8)[123456789]|(?<=9)[0])|(?<=1)[01234]((?<=0)[12468]|(?<=1)[026]|(?<=2)[02369]|(?<=3)[1235679]|(?<=4)[02345678])|(?<=2)[012346789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[23456789]|(?<=4)[13]|(?<=6)[0]|(?<=7)[5]|(?<=8)[2]|(?<=9)[0])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[01234567]|(?<=2)[01234579]|(?<=3)[0123478]|(?<=4)[012456789]|(?<=5)[0123789]|(?<=6)[012345678]|(?<=7)[06789]|(?<=8)[0])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0123679]|(?<=2)[012345789]|(?<=3)[012345678]|(?<=4)[023456789]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[023456789]|(?<=8)[0234689]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[12]|(?<=1)[0]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[0124567]|(?<=5)[01245789]|(?<=6)[012345])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[012356789]|(?<=2)[023456789]|(?<=3)[123456789]|(?<=4)[012467]|(?<=5)[0568]|(?<=6)[0123568]|(?<=7)[0123456789]|(?<=8)[012346789]|(?<=9)[01235678])|(?<=7)[012345678]((?<=0)[15]|(?<=1)[01234567]|(?<=2)[012345789]|(?<=3)[012346789]|(?<=4)[1245678]|(?<=5)[0234679]|(?<=6)[0123457]|(?<=7)[0123456789]|(?<=8)[0134])|(?<=8)[0234567]((?<=0)[1]|(?<=2)[1345789]|(?<=3)[124]|(?<=4)[0156789]|(?<=5)[1367]|(?<=6)[0134568]|(?<=7)[0])|(?<=9)[023456]((?<=0)[124569]|(?<=2)[0123456789]|(?<=3)[0145678]|(?<=4)[02345689]|(?<=5)[12345678]|(?<=6)[0123]))|(?<=6)[0123456789]((?<=0)[023456]((?<=0)[12]|(?<=2)[02345789]|(?<=3)[0345678]|(?<=4)[015689]|(?<=5)[012345679]|(?<=6)[136])|(?<=1)[01234567]((?<=0)[125]|(?<=1)[01234567]|(?<=2)[013457]|(?<=3)[0123467]|(?<=4)[0123568]|(?<=5)[01345679]|(?<=6)[01]|(?<=7)[2])|(?<=2)[0123456]((?<=0)[1]|(?<=1)[0123478]|(?<=2)[0234689]|(?<=3)[0235689]|(?<=4)[0245689]|(?<=5)[0345689]|(?<=6)[023])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[1234679]|(?<=2)[1236789]|(?<=3)[12345]|(?<=4)[01234567]|(?<=5)[01234]|(?<=6)[01245]|(?<=7)[01234])|(?<=4)[012347]((?<=0)[1234567]|(?<=1)[012567]|(?<=2)[01234678]|(?<=3)[034568]|(?<=4)[01234]|(?<=7)[5])|(?<=5)[01456]((?<=0)[123456789]|(?<=1)[01]|(?<=4)[6]|(?<=5)[0]|(?<=6)[3])|(?<=6)[0123456789]((?<=0)[12]|(?<=1)[13679]|(?<=2)[0123457]|(?<=3)[013456789]|(?<=4)[015678]|(?<=5)[01245679]|(?<=6)[12456789]|(?<=7)[012345789]|(?<=8)[0234569]|(?<=9)[123459])|(?<=7)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[0123458]|(?<=4)[0345689]|(?<=5)[0])|(?<=8)[02345678]((?<=0)[123]|(?<=2)[012356789]|(?<=3)[023456789]|(?<=4)[01345789]|(?<=5)[12345689]|(?<=6)[0134568]|(?<=7)[012456789]|(?<=8)[12])|(?<=9)[012345]((?<=0)[1]|(?<=1)[012457]|(?<=2)[012356789]|(?<=3)[02356789]|(?<=4)[0123678]|(?<=5)[0]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[2345679]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[01345678]|(?<=8)[0124678]|(?<=9)[034789])|(?<=1)[012]((?<=0)[12349]|(?<=1)[0123]|(?<=2)[0])|(?<=2)[01234567]((?<=0)[12]|(?<=1)[01234579]|(?<=2)[01234589]|(?<=3)[2356789]|(?<=4)[0134679]|(?<=5)[0123457]|(?<=6)[012345678]|(?<=7)[1])|(?<=3)[01234567]((?<=0)[1234679]|(?<=1)[13456789]|(?<=2)[01234579]|(?<=3)[19]|(?<=4)[0234579]|(?<=5)[02356]|(?<=6)[01234568]|(?<=7)[012])|(?<=4)[0]((?<=0)[1234678])|(?<=5)[012345678]((?<=0)[12456789]|(?<=1)[26789]|(?<=2)[0279]|(?<=3)[24568]|(?<=4)[0357]|(?<=5)[012457]|(?<=6)[0235689]|(?<=7)[02689]|(?<=8)[124])|(?<=6)[0]((?<=0)[1236])|(?<=7)[0234567]((?<=0)[12]|(?<=2)[0134789]|(?<=3)[0179]|(?<=4)[0245789]|(?<=5)[012468]|(?<=6)[0234589]|(?<=7)[1246789])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[02345]|(?<=2)[0123479]|(?<=3)[024567]|(?<=4)[0124567]|(?<=5)[01356789]|(?<=6)[01245678]|(?<=7)[0268]|(?<=8)[01456789])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[012359]|(?<=3)[0134568]|(?<=4)[1345689]|(?<=5)[123479]|(?<=6)[0134578]|(?<=7)[024689]|(?<=8)[01235]))|(?<=8)[0123456789]((?<=0)[123456789]((?<=1)[1234578]|(?<=2)[0]|(?<=3)[01245678]|(?<=4)[012569]|(?<=5)[12345689]|(?<=6)[2345679]|(?<=7)[012346789]|(?<=8)[0135678]|(?<=9)[12])|(?<=1)[09]((?<=0)[123469]|(?<=9)[5])|(?<=2)[012345]((?<=0)[12]|(?<=1)[0124689]|(?<=2)[0123459]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[02456])|(?<=3)[0234567]((?<=0)[12]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0234679]|(?<=5)[0134567]|(?<=6)[0]|(?<=7)[012])|(?<=4)[01234567]((?<=0)[357]|(?<=1)[134579]|(?<=2)[014568]|(?<=3)[013456789]|(?<=4)[0134567]|(?<=5)[12345678]|(?<=6)[01234569]|(?<=7)[0123])|(?<=5)[01]((?<=0)[345789]|(?<=1)[02789])|(?<=6)[0123456]((?<=0)[23]|(?<=1)[02456789]|(?<=2)[123456789]|(?<=3)[012456]|(?<=4)[01234]|(?<=5)[1567]|(?<=6)[01])|(?<=7)[0]((?<=0)[12456789])|(?<=8)[012345]((?<=0)[1]|(?<=1)[024678]|(?<=2)[012345689]|(?<=3)[012347]|(?<=4)[02345678]|(?<=5)[0134])|(?<=9)[012345678]((?<=0)[12]|(?<=1)[23457]|(?<=2)[013579]|(?<=3)[023568]|(?<=4)[02467]|(?<=5)[0145]|(?<=6)[02469]|(?<=7)[02467]|(?<=8)[0]))|(?<=9)[013456789]((?<=0)[0123456789]((?<=0)[12346789]|(?<=1)[0234578]|(?<=2)[01235679]|(?<=3)[01234568]|(?<=4)[013467]|(?<=5)[0234567]|(?<=6)[013467]|(?<=7)[02345689]|(?<=8)[123567]|(?<=9)[0456])|(?<=1)[012345]((?<=0)[2346789]|(?<=1)[12345689]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[01234])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[012679]|(?<=2)[0]|(?<=3)[035]|(?<=4)[123458]|(?<=5)[0258]|(?<=6)[23579]|(?<=7)[2345]|(?<=8)[023]|(?<=9)[0])|(?<=4)[02345679]((?<=0)[1356]|(?<=2)[2568]|(?<=3)[5678]|(?<=4)[0246]|(?<=5)[3467]|(?<=6)[02458]|(?<=7)[23457]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[1345678]|(?<=1)[01268]|(?<=2)[023569]|(?<=3)[0345689]|(?<=4)[0134579]|(?<=5)[01459]|(?<=6)[02457])|(?<=6)[01]((?<=0)[12456789]|(?<=1)[01])|(?<=7)[0123]((?<=0)[123679]|(?<=1)[01367]|(?<=2)[0]|(?<=3)[0123456])|(?<=8)[01]((?<=0)[123456789]|(?<=1)[0])|(?<=9)[0345678]((?<=0)[124]|(?<=3)[0134689]|(?<=4)[0134567]|(?<=5)[01234568]|(?<=6)[0234678]|(?<=7)[013579]|(?<=8)[0])))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[04]|(?<=3)[267]|(?<=4)[5]|(?<=5)[279]|(?<=6)[4])|(?<=1)[0123456789]((?<=0)[569]|(?<=1)[012579]|(?<=2)[0149]|(?<=3)[02567]|(?<=4)[13478]|(?<=5)[1258]|(?<=6)[4569]|(?<=7)[0156]|(?<=8)[01467]|(?<=9)[01478])|(?<=2)[023456]((?<=0)[4]|(?<=2)[0]|(?<=3)[0]|(?<=4)[05]|(?<=5)[0]|(?<=6)[0])|(?<=3)[1789]((?<=1)[79]|(?<=7)[3]|(?<=8)[8]|(?<=9)[0])|(?<=4)[0123]((?<=0)[8]|(?<=1)[58]|(?<=2)[27]|(?<=3)[1])|(?<=5)[1234569]((?<=1)[05]|(?<=2)[0]|(?<=3)[05]|(?<=4)[02]|(?<=5)[1]|(?<=6)[056]|(?<=9)[1])|(?<=6)[0123456789]((?<=0)[1236789]|(?<=1)[12356789]|(?<=2)[012345689]|(?<=3)[024679]|(?<=4)[056]|(?<=5)[036789]|(?<=6)[01247]|(?<=7)[045678]|(?<=8)[0456789]|(?<=9)[0235])|(?<=7)[0123456789]((?<=0)[15678]|(?<=1)[012456]|(?<=2)[01234]|(?<=3)[23567]|(?<=4)[02345678]|(?<=5)[14589]|(?<=6)[23459]|(?<=7)[01246789]|(?<=8)[12345]|(?<=9)[4])|(?<=8)[13456789]((?<=1)[245678]|(?<=3)[23789]|(?<=4)[12]|(?<=5)[012345]|(?<=6)[01268]|(?<=7)[1246789]|(?<=8)[0269]|(?<=9)[24569])|(?<=9)[01]((?<=0)[123456]|(?<=1)[02]))|(?<=1)[012456789]((?<=0)[0123456789]((?<=0)[159]|(?<=1)[023457]|(?<=2)[389]|(?<=3)[0124567]|(?<=4)[02345678]|(?<=5)[0123467]|(?<=6)[01]|(?<=7)[145678]|(?<=8)[2457]|(?<=9)[03])|(?<=1)[0123456]((?<=0)[2458]|(?<=1)[1347]|(?<=2)[028]|(?<=3)[01236]|(?<=4)[046]|(?<=5)[2345678]|(?<=6)[0123])|(?<=2)[0123458]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0134679]|(?<=4)[04]|(?<=5)[012]|(?<=8)[567])|(?<=4)[0]((?<=0)[12359])|(?<=5)[023456]((?<=0)[2]|(?<=2)[01349]|(?<=3)[012689]|(?<=4)[01235]|(?<=5)[057]|(?<=6)[012])|(?<=6)[01234567]((?<=0)[17]|(?<=1)[02379]|(?<=2)[023456789]|(?<=3)[1245689]|(?<=4)[01345789]|(?<=5)[012345789]|(?<=6)[0123456789]|(?<=7)[12356789])|(?<=7)[0123456789]((?<=0)[12345]|(?<=1)[013456789]|(?<=2)[237]|(?<=3)[3478]|(?<=4)[026]|(?<=5)[045678]|(?<=6)[2679]|(?<=7)[01346789]|(?<=8)[0123478]|(?<=9)[0134578])|(?<=8)[012345679]((?<=0)[14]|(?<=1)[01347]|(?<=2)[12469]|(?<=3)[0578]|(?<=4)[0129]|(?<=5)[0136]|(?<=6)[12345679]|(?<=7)[1245]|(?<=9)[0])|(?<=9)[0123]((?<=0)[1234]|(?<=1)[12345789]|(?<=2)[01]|(?<=3)[0]))|(?<=2)[0123456789]((?<=0)[0123467]((?<=0)[3]|(?<=1)[5]|(?<=2)[567]|(?<=3)[012359]|(?<=4)[12346]|(?<=6)[06]|(?<=7)[9])|(?<=1)[0235789]((?<=0)[12]|(?<=2)[45]|(?<=3)[4]|(?<=5)[0123]|(?<=7)[2]|(?<=8)[012]|(?<=9)[123])|(?<=2)[01]((?<=0)[12345679]|(?<=1)[134])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[01245])|(?<=4)[02345678]((?<=0)[15678]|(?<=2)[7]|(?<=3)[235678]|(?<=4)[38]|(?<=5)[4]|(?<=6)[09]|(?<=7)[236]|(?<=8)[0258])|(?<=5)[012345678]((?<=0)[3489]|(?<=1)[14]|(?<=2)[09]|(?<=3)[4589]|(?<=4)[268]|(?<=5)[1346]|(?<=6)[07]|(?<=7)[268]|(?<=8)[0])|(?<=6)[0123456]((?<=0)[123]|(?<=1)[01]|(?<=2)[03457]|(?<=3)[079]|(?<=4)[0123456]|(?<=5)[024567]|(?<=6)[034])|(?<=7)[01234]((?<=0)[19]|(?<=1)[12345689]|(?<=2)[023456789]|(?<=3)[012345678]|(?<=4)[0123679])|(?<=8)[012345]((?<=0)[127]|(?<=1)[0125]|(?<=2)[0147]|(?<=3)[01245]|(?<=4)[012345679]|(?<=5)[013])|(?<=9)[012345678]((?<=0)[12348]|(?<=1)[1]|(?<=2)[023]|(?<=3)[1256789]|(?<=4)[0236789]|(?<=5)[2789]|(?<=6)[034789]|(?<=7)[12346]|(?<=8)[09]))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[2459]|(?<=1)[15]|(?<=2)[123457]|(?<=3)[02589]|(?<=4)[0357]|(?<=5)[0569]|(?<=6)[01235689]|(?<=7)[012569]|(?<=8)[134569]|(?<=9)[123])|(?<=1)[0123456789]((?<=0)[23689]|(?<=1)[01234679]|(?<=2)[034689]|(?<=3)[089]|(?<=4)[016789]|(?<=5)[036]|(?<=6)[01389]|(?<=7)[3567]|(?<=8)[0158]|(?<=9)[2])|(?<=2)[123589]((?<=1)[9]|(?<=2)[0123456789]|(?<=3)[01345678]|(?<=5)[0]|(?<=8)[4]|(?<=9)[48])|(?<=3)[01234589]((?<=0)[1234678]|(?<=1)[0456]|(?<=2)[012345]|(?<=3)[67]|(?<=4)[7]|(?<=5)[046789]|(?<=8)[9]|(?<=9)[58])|(?<=4)[01234568]((?<=0)[15789]|(?<=1)[0345678]|(?<=2)[012367]|(?<=3)[02345678]|(?<=4)[012]|(?<=5)[12345679]|(?<=6)[0124]|(?<=8)[0678])|(?<=5)[0125]((?<=0)[2345789]|(?<=1)[01378]|(?<=2)[3]|(?<=5)[1])|(?<=6)[05689]((?<=0)[12345678]|(?<=5)[1]|(?<=6)[123456789]|(?<=8)[1]|(?<=9)[01236])|(?<=7)[0]((?<=0)[1234789])|(?<=8)[023456789]((?<=0)[135]|(?<=2)[14789]|(?<=3)[012346789]|(?<=4)[01234567]|(?<=5)[0167]|(?<=6)[0678]|(?<=7)[0245689]|(?<=8)[12345789]|(?<=9)[0134789])|(?<=9)[01234567]((?<=0)[19]|(?<=1)[579]|(?<=2)[012347]|(?<=3)[04678]|(?<=4)[2347]|(?<=5)[024589]|(?<=6)[0234678]|(?<=7)[046]))|(?<=4)[0123456789]((?<=0)[1256789]((?<=1)[123456789]|(?<=2)[02]|(?<=5)[34589]|(?<=6)[0145679]|(?<=7)[0236789]|(?<=8)[23456789]|(?<=9)[01235])|(?<=1)[012345678]((?<=0)[1245]|(?<=1)[2]|(?<=2)[0124789]|(?<=3)[12346789]|(?<=4)[12789]|(?<=5)[013]|(?<=6)[12578]|(?<=7)[14569]|(?<=8)[45])|(?<=2)[0123456789]((?<=0)[12]|(?<=1)[01679]|(?<=2)[014568]|(?<=3)[0679]|(?<=4)[34568]|(?<=5)[0168]|(?<=6)[03569]|(?<=7)[012379]|(?<=8)[0123]|(?<=9)[023])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[2345678]|(?<=3)[03]|(?<=4)[0378]|(?<=5)[0124]|(?<=6)[01368]|(?<=7)[04578]|(?<=8)[012])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[12356]|(?<=2)[126]|(?<=3)[0123579]|(?<=4)[01258]|(?<=5)[0789]|(?<=6)[04579]|(?<=7)[1234679]|(?<=8)[234567])|(?<=5)[0123456789]((?<=0)[1234]|(?<=1)[57]|(?<=2)[01236789]|(?<=3)[014689]|(?<=4)[019]|(?<=5)[01345678]|(?<=6)[23569]|(?<=7)[0124789]|(?<=8)[01689]|(?<=9)[02345789])|(?<=6)[012345]((?<=0)[12345679]|(?<=1)[234]|(?<=2)[02]|(?<=3)[014579]|(?<=4)[169]|(?<=5)[167])|(?<=7)[01234]((?<=0)[1]|(?<=1)[24569]|(?<=2)[469]|(?<=3)[136789]|(?<=4)[07])|(?<=8)[0123456789]((?<=0)[18]|(?<=1)[135678]|(?<=2)[23678]|(?<=3)[01469]|(?<=4)[3456789]|(?<=5)[013457]|(?<=6)[0126789]|(?<=7)[0123489]|(?<=8)[012478]|(?<=9)[2458])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[0568]|(?<=2)[0457]|(?<=3)[1458]|(?<=4)[13456]|(?<=5)[147]|(?<=6)[236]|(?<=7)[0467]|(?<=8)[13456]|(?<=9)[13]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[235789]|(?<=1)[159]|(?<=2)[12458]|(?<=3)[013569]|(?<=4)[0345789]|(?<=5)[13479]|(?<=6)[012347]|(?<=7)[0156]|(?<=8)[123568]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[236789]|(?<=1)[01234589]|(?<=2)[13456]|(?<=3)[023469]|(?<=4)[012389]|(?<=5)[2469]|(?<=6)[0124589]|(?<=7)[347]|(?<=8)[013567]|(?<=9)[3])|(?<=2)[01345678]((?<=0)[12345689]|(?<=1)[134]|(?<=3)[1459]|(?<=4)[134578]|(?<=5)[1239]|(?<=6)[01245678]|(?<=7)[0156]|(?<=8)[567])|(?<=3)[0128]((?<=0)[1234569]|(?<=1)[12345]|(?<=2)[0]|(?<=8)[7])|(?<=4)[01234]((?<=0)[1345]|(?<=1)[1349]|(?<=2)[012578]|(?<=3)[012478]|(?<=4)[2346])|(?<=5)[01234567]((?<=0)[12345678]|(?<=1)[012457]|(?<=2)[013469]|(?<=3)[0457]|(?<=4)[01457]|(?<=5)[0579]|(?<=6)[0457]|(?<=7)[013])|(?<=6)[0123456789]((?<=0)[1678]|(?<=1)[127]|(?<=2)[1458]|(?<=3)[0245789]|(?<=4)[4679]|(?<=5)[01234]|(?<=6)[1679]|(?<=7)[012468]|(?<=8)[58]|(?<=9)[0269])|(?<=7)[05]((?<=0)[12345]|(?<=5)[5])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[012378]|(?<=2)[03567]|(?<=3)[12679]|(?<=4)[01345689]|(?<=5)[13457]|(?<=6)[24568]|(?<=7)[0135689]|(?<=8)[02])|(?<=9)[012345678]((?<=0)[124789]|(?<=1)[135678]|(?<=2)[0128]|(?<=3)[268]|(?<=4)[23]|(?<=5)[18]|(?<=6)[269]|(?<=7)[126789]|(?<=8)[14569]))|(?<=6)[012345678]((?<=0)[034567]((?<=0)[3]|(?<=3)[0123456789]|(?<=4)[017]|(?<=5)[05689]|(?<=6)[02]|(?<=7)[045])|(?<=1)[0345678]((?<=0)[145]|(?<=3)[34678]|(?<=4)[1236789]|(?<=5)[01259]|(?<=6)[012479]|(?<=7)[058]|(?<=8)[0147])|(?<=2)[0123456789]((?<=0)[1235689]|(?<=1)[0578]|(?<=2)[248]|(?<=3)[04678]|(?<=4)[1]|(?<=5)[03479]|(?<=6)[01346789]|(?<=7)[013568]|(?<=8)[0235789]|(?<=9)[123468])|(?<=3)[02345678]((?<=0)[1]|(?<=2)[01357]|(?<=3)[05789]|(?<=4)[236789]|(?<=5)[14]|(?<=6)[1269]|(?<=7)[24678]|(?<=8)[456])|(?<=4)[0123456]((?<=0)[458]|(?<=1)[012569]|(?<=2)[12456]|(?<=3)[015678]|(?<=4)[03478]|(?<=5)[126]|(?<=6)[3])|(?<=5)[0123456789]((?<=0)[1568]|(?<=1)[9]|(?<=2)[0145]|(?<=3)[47]|(?<=4)[123467]|(?<=5)[49]|(?<=6)[0238]|(?<=7)[012456]|(?<=8)[125678]|(?<=9)[01])|(?<=6)[012356789]((?<=0)[1]|(?<=1)[01579]|(?<=2)[13479]|(?<=3)[168]|(?<=5)[16]|(?<=6)[027]|(?<=7)[1689]|(?<=8)[014]|(?<=9)[01])|(?<=7)[0123456]((?<=0)[457]|(?<=1)[014679]|(?<=2)[026]|(?<=3)[19]|(?<=4)[3]|(?<=5)[0357]|(?<=6)[1347])|(?<=8)[01234568]((?<=0)[12478]|(?<=1)[024578]|(?<=2)[3]|(?<=3)[368]|(?<=4)[57]|(?<=5)[125]|(?<=6)[56]|(?<=8)[46]))|(?<=7)[0123456789]((?<=0)[012345]((?<=0)[679]|(?<=1)[12346789]|(?<=2)[01234578]|(?<=3)[0]|(?<=4)[01235678]|(?<=5)[012345])|(?<=1)[012]((?<=0)[1345679]|(?<=1)[0]|(?<=2)[7])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[23457]|(?<=2)[9]|(?<=3)[1359]|(?<=4)[234789]|(?<=5)[23689]|(?<=6)[02358]|(?<=7)[8]|(?<=8)[12348]|(?<=9)[12589])|(?<=3)[01234567]((?<=0)[1256]|(?<=1)[01234567]|(?<=2)[056]|(?<=3)[02]|(?<=4)[012349]|(?<=5)[015678]|(?<=6)[0]|(?<=7)[014679])|(?<=4)[015]((?<=0)[1356789]|(?<=1)[012]|(?<=5)[5])|(?<=5)[0123456789]((?<=0)[123456789]|(?<=1)[01346789]|(?<=2)[012345679]|(?<=3)[0134679]|(?<=4)[0124569]|(?<=5)[135679]|(?<=6)[023589]|(?<=7)[0123467]|(?<=8)[123479]|(?<=9)[1234679])|(?<=6)[019]((?<=0)[13456789]|(?<=1)[0234567]|(?<=9)[57])|(?<=7)[01]((?<=0)[1345789]|(?<=1)[23])|(?<=8)[0123456789]((?<=0)[13456789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[012479]|(?<=4)[012345679]|(?<=5)[01235678]|(?<=6)[01234569]|(?<=7)[0123456789]|(?<=8)[012345689]|(?<=9)[012367])|(?<=9)[012345678]((?<=0)[9]|(?<=1)[05679]|(?<=2)[0123456789]|(?<=3)[256789]|(?<=4)[12346789]|(?<=5)[0346789]|(?<=6)[02456789]|(?<=7)[0234689]|(?<=8)[012356]))|(?<=8)[0123456789]((?<=0)[012345789]((?<=0)[1679]|(?<=1)[26789]|(?<=2)[013457]|(?<=3)[1234679]|(?<=4)[0123]|(?<=5)[246]|(?<=7)[123456789]|(?<=8)[013689]|(?<=9)[01278])|(?<=1)[01234567]((?<=0)[12345789]|(?<=1)[024579]|(?<=2)[045789]|(?<=3)[3456789]|(?<=4)[467]|(?<=5)[029]|(?<=6)[0346789]|(?<=7)[034])|(?<=2)[0124678]((?<=0)[23456789]|(?<=1)[01234567]|(?<=2)[367]|(?<=4)[4]|(?<=6)[29]|(?<=7)[03478]|(?<=8)[02])|(?<=3)[0123456789]((?<=0)[1345678]|(?<=1)[012458]|(?<=2)[035678]|(?<=3)[01234789]|(?<=4)[012345789]|(?<=5)[01256789]|(?<=6)[023456789]|(?<=7)[123456789]|(?<=8)[234567]|(?<=9)[012345689])|(?<=4)[012345678]((?<=0)[1359]|(?<=1)[12]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[12345789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0289]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[1489]|(?<=1)[01235689]|(?<=2)[013456789]|(?<=3)[0123789]|(?<=4)[023467]|(?<=5)[1234567]|(?<=6)[02]|(?<=7)[012345789]|(?<=8)[01245679]|(?<=9)[04])|(?<=6)[0123456789]((?<=0)[1245679]|(?<=1)[012356789]|(?<=2)[123456789]|(?<=3)[0145678]|(?<=4)[01234569]|(?<=5)[012345789]|(?<=6)[023456789]|(?<=7)[012356789]|(?<=8)[123459]|(?<=9)[023478])|(?<=7)[0123456789]((?<=0)[1245789]|(?<=1)[0123456789]|(?<=2)[0123569]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[123456789]|(?<=6)[12368]|(?<=7)[012345789]|(?<=8)[12356789]|(?<=9)[012])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0]((?<=0)[124569]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[1369]|(?<=1)[04568]|(?<=2)[0]|(?<=3)[01236789]|(?<=4)[0245678]|(?<=5)[12345689]|(?<=6)[123579]|(?<=7)[0234589]|(?<=8)[012])|(?<=1)[012345678]((?<=0)[124578]|(?<=1)[1234578]|(?<=2)[2356789]|(?<=3)[03578]|(?<=4)[2568]|(?<=5)[0234]|(?<=6)[01234689]|(?<=7)[02578]|(?<=8)[0])|(?<=2)[012]((?<=0)[13456789]|(?<=1)[02]|(?<=2)[359])|(?<=3)[012345678]((?<=0)[12367]|(?<=1)[6]|(?<=2)[0123459]|(?<=3)[0123458]|(?<=4)[0169]|(?<=5)[1356]|(?<=6)[04589]|(?<=7)[023456789]|(?<=8)[458])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[0248]|(?<=2)[04569]|(?<=3)[12456789]|(?<=4)[05689]|(?<=5)[0123568]|(?<=6)[14689]|(?<=7)[0124579]|(?<=8)[1235678]|(?<=9)[23])|(?<=5)[0123456789]((?<=0)[156]|(?<=1)[012689]|(?<=2)[0567]|(?<=3)[026]|(?<=4)[0134567]|(?<=5)[0456]|(?<=6)[03456789]|(?<=7)[01245679]|(?<=8)[01234589]|(?<=9)[012346])|(?<=6)[0123456789]((?<=0)[1579]|(?<=1)[13457]|(?<=2)[0145678]|(?<=3)[014589]|(?<=4)[0234569]|(?<=5)[01345789]|(?<=6)[1245679]|(?<=7)[012368]|(?<=8)[012345679]|(?<=9)[012367])|(?<=7)[01234]((?<=0)[246789]|(?<=1)[024578]|(?<=2)[046789]|(?<=3)[023]|(?<=4)[1235])|(?<=8)[01234569]((?<=0)[1359]|(?<=1)[02679]|(?<=2)[146789]|(?<=3)[124568]|(?<=4)[012345789]|(?<=5)[136]|(?<=6)[0]|(?<=9)[9])|(?<=9)[01234]((?<=0)[245679]|(?<=1)[012568]|(?<=2)[012346789]|(?<=3)[24569]|(?<=4)[01345])))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24589]|(?<=1)[12346789]|(?<=2)[12458]|(?<=3)[0234589]|(?<=4)[0134567]|(?<=5)[24568]|(?<=6)[024678]|(?<=7)[0125689]|(?<=8)[023478]|(?<=9)[023467])|(?<=1)[012345678]((?<=0)[12345678]|(?<=1)[01345678]|(?<=2)[0124567]|(?<=3)[24579]|(?<=4)[1345789]|(?<=5)[237]|(?<=6)[158]|(?<=7)[01356789]|(?<=8)[02345789])|(?<=2)[0123456789]((?<=0)[456]|(?<=1)[345678]|(?<=2)[023489]|(?<=3)[03468]|(?<=4)[018]|(?<=5)[01236789]|(?<=6)[03589]|(?<=7)[234567]|(?<=8)[145689]|(?<=9)[01234567])|(?<=3)[0123456]((?<=0)[356789]|(?<=1)[0123456789]|(?<=2)[246789]|(?<=3)[1246789]|(?<=4)[0124569]|(?<=5)[04]|(?<=6)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123457]|(?<=2)[01356789]|(?<=3)[469]|(?<=4)[125689]|(?<=5)[012345678]|(?<=6)[0147]|(?<=7)[01347])|(?<=5)[0123456789]((?<=0)[1467]|(?<=1)[01236789]|(?<=2)[01235789]|(?<=3)[013456789]|(?<=4)[012356789]|(?<=5)[2345789]|(?<=6)[02345678]|(?<=7)[123567]|(?<=8)[12]|(?<=9)[78])|(?<=6)[012345678]((?<=0)[125679]|(?<=1)[9]|(?<=2)[012345789]|(?<=3)[013459]|(?<=4)[12368]|(?<=5)[056]|(?<=6)[023456789]|(?<=7)[378]|(?<=8)[03])|(?<=7)[012345]((?<=0)[1578]|(?<=1)[01]|(?<=2)[014568]|(?<=3)[01345689]|(?<=4)[01267]|(?<=5)[0123567])|(?<=8)[0123]((?<=0)[235789]|(?<=1)[02345678]|(?<=2)[012348]|(?<=3)[03])|(?<=9)[01]((?<=0)[145679]|(?<=1)[2]))|(?<=1)[023456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[12456789]|(?<=2)[012345789]|(?<=3)[0123456789]|(?<=4)[1245679]|(?<=5)[0124578]|(?<=6)[0123456789]|(?<=7)[01256789]|(?<=8)[12345789]|(?<=9)[01234678])|(?<=2)[012]((?<=0)[1467]|(?<=1)[01367]|(?<=2)[0])|(?<=3)[0123]((?<=0)[1235789]|(?<=1)[234568]|(?<=2)[012346789]|(?<=3)[13])|(?<=4)[012]((?<=0)[1456789]|(?<=1)[0159]|(?<=2)[1])|(?<=5)[01234569]((?<=0)[13]|(?<=1)[023689]|(?<=2)[023457]|(?<=3)[23579]|(?<=4)[23456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=9)[9])|(?<=6)[023459]((?<=0)[1256]|(?<=2)[02345679]|(?<=3)[012456789]|(?<=4)[1235789]|(?<=5)[0]|(?<=9)[89])|(?<=7)[0123456789]((?<=0)[14579]|(?<=1)[12469]|(?<=2)[0127]|(?<=3)[0358]|(?<=4)[3479]|(?<=5)[0367]|(?<=6)[3458]|(?<=7)[1234589]|(?<=8)[0134789]|(?<=9)[01234568])|(?<=8)[0123]((?<=0)[1345678]|(?<=1)[012456]|(?<=2)[012345679]|(?<=3)[01236])|(?<=9)[0]((?<=0)[1345679]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[389]|(?<=1)[13]|(?<=2)[456]|(?<=3)[348]|(?<=4)[0346]|(?<=5)[234589]|(?<=6)[01234568]|(?<=7)[1239]|(?<=8)[0123467]|(?<=9)[124567])|(?<=1)[0123456789]((?<=0)[2]|(?<=1)[0234789]|(?<=2)[4789]|(?<=3)[01234679]|(?<=4)[01578]|(?<=5)[79]|(?<=6)[23489]|(?<=7)[4679]|(?<=8)[01279]|(?<=9)[0235])|(?<=2)[01234567]((?<=0)[23456789]|(?<=1)[01246789]|(?<=2)[012345678]|(?<=3)[34]|(?<=4)[46]|(?<=5)[046789]|(?<=6)[6]|(?<=7)[7])|(?<=3)[01234569]((?<=0)[13456789]|(?<=1)[01237]|(?<=2)[0123478]|(?<=3)[0123467]|(?<=4)[034678]|(?<=5)[0125689]|(?<=6)[01]|(?<=9)[9])|(?<=4)[0123456]((?<=0)[1345789]|(?<=1)[03]|(?<=2)[01345678]|(?<=3)[01235789]|(?<=4)[02345689]|(?<=5)[569]|(?<=6)[0123456])|(?<=5)[012345678]((?<=0)[123456789]|(?<=1)[124]|(?<=2)[6]|(?<=3)[0134569]|(?<=4)[12478]|(?<=5)[0]|(?<=6)[13456789]|(?<=7)[01789]|(?<=8)[03])|(?<=6)[012345689]((?<=0)[1356789]|(?<=1)[0256789]|(?<=2)[12568]|(?<=3)[149]|(?<=4)[0138]|(?<=5)[368]|(?<=6)[46789]|(?<=8)[0136]|(?<=9)[23467])|(?<=7)[0123456789]((?<=0)[123789]|(?<=1)[234]|(?<=2)[03456]|(?<=3)[02568]|(?<=4)[46]|(?<=5)[01479]|(?<=6)[345678]|(?<=7)[135689]|(?<=8)[049]|(?<=9)[268])|(?<=8)[01239]((?<=0)[13456789]|(?<=1)[01246789]|(?<=2)[012456789]|(?<=3)[01235679]|(?<=9)[9])|(?<=9)[0234567]((?<=0)[1345789]|(?<=2)[02567]|(?<=3)[1457]|(?<=4)[089]|(?<=5)[0123589]|(?<=6)[023678]|(?<=7)[06]))|(?<=3)[013456789]((?<=0)[01234567]((?<=0)[149]|(?<=1)[02345689]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[023]|(?<=5)[01456]|(?<=6)[023456789]|(?<=7)[0136])|(?<=1)[023456789]((?<=0)[19]|(?<=2)[256789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[045678]|(?<=6)[01256789]|(?<=7)[023456789]|(?<=8)[012345679]|(?<=9)[0346])|(?<=3)[012358]((?<=0)[145689]|(?<=1)[12345679]|(?<=2)[12345678]|(?<=3)[0124]|(?<=5)[1]|(?<=8)[8])|(?<=4)[0123456789]((?<=0)[13456789]|(?<=1)[01234578]|(?<=2)[68]|(?<=3)[012345678]|(?<=4)[0124569]|(?<=5)[58]|(?<=6)[012379]|(?<=7)[0123678]|(?<=8)[03467]|(?<=9)[368])|(?<=5)[0123456789]((?<=0)[3]|(?<=1)[0134]|(?<=2)[1357]|(?<=3)[048]|(?<=4)[012345789]|(?<=5)[0689]|(?<=6)[35679]|(?<=7)[0234689]|(?<=8)[45]|(?<=9)[24678])|(?<=6)[01234]((?<=0)[2345679]|(?<=1)[0123456789]|(?<=2)[014569]|(?<=3)[457]|(?<=4)[7])|(?<=7)[0145678]((?<=0)[123456789]|(?<=1)[0123456]|(?<=4)[4]|(?<=5)[569]|(?<=6)[0123457]|(?<=7)[01234678]|(?<=8)[1256])|(?<=8)[0123456789]((?<=0)[1359]|(?<=1)[01235]|(?<=2)[357]|(?<=3)[045789]|(?<=4)[0134789]|(?<=5)[0123456789]|(?<=6)[0578]|(?<=7)[023567]|(?<=8)[014]|(?<=9)[0678])|(?<=9)[0123456789]((?<=0)[1345789]|(?<=1)[234679]|(?<=2)[01248]|(?<=3)[0156]|(?<=4)[4678]|(?<=5)[0234567]|(?<=6)[0567]|(?<=7)[12346]|(?<=8)[0123]|(?<=9)[013]))|(?<=4)[124679]((?<=1)[01234]((?<=0)[1234589]|(?<=1)[0234679]|(?<=2)[0]|(?<=3)[45789]|(?<=4)[0125])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[0125679]|(?<=2)[123489]|(?<=3)[123456789]|(?<=4)[0123]|(?<=5)[01]|(?<=6)[6789]|(?<=7)[5]|(?<=8)[56789]|(?<=9)[123])|(?<=4)[23456789]((?<=2)[089]|(?<=3)[12346]|(?<=4)[25689]|(?<=5)[023]|(?<=6)[15]|(?<=7)[01234569]|(?<=8)[012478]|(?<=9)[18])|(?<=6)[01356789]((?<=0)[1246789]|(?<=1)[034]|(?<=3)[789]|(?<=5)[2345]|(?<=6)[1789]|(?<=7)[79]|(?<=8)[134589]|(?<=9)[0158])|(?<=7)[0123456789]((?<=0)[5]|(?<=1)[145]|(?<=2)[9]|(?<=3)[14679]|(?<=4)[134678]|(?<=5)[3689]|(?<=6)[0129]|(?<=7)[123]|(?<=8)[5678]|(?<=9)[7])|(?<=9)[45789]((?<=4)[5679]|(?<=5)[012367]|(?<=7)[24]|(?<=8)[123467]|(?<=9)[0467]))|(?<=5)[012456789]((?<=0)[0123456789]((?<=0)[4567]|(?<=1)[03469]|(?<=2)[023]|(?<=3)[123456]|(?<=4)[0234569]|(?<=5)[1234578]|(?<=6)[012348]|(?<=7)[01234789]|(?<=8)[023579]|(?<=9)[14678])|(?<=1)[12345678]((?<=1)[12456789]|(?<=2)[0145678]|(?<=3)[01356]|(?<=4)[36789]|(?<=5)[01]|(?<=6)[0]|(?<=7)[1235689]|(?<=8)[0134568])|(?<=2)[012345]((?<=0)[3456789]|(?<=1)[012345678]|(?<=2)[1234689]|(?<=3)[345]|(?<=4)[2349]|(?<=5)[4])|(?<=4)[0456789]((?<=0)[1456]|(?<=4)[123467]|(?<=5)[236789]|(?<=6)[0123469]|(?<=7)[034567]|(?<=8)[017]|(?<=9)[01])|(?<=5)[0456789]((?<=0)[134]|(?<=4)[012345689]|(?<=5)[023459]|(?<=6)[345]|(?<=7)[0123456789]|(?<=8)[0124567]|(?<=9)[234])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[01345689]|(?<=2)[012]|(?<=3)[0234]|(?<=4)[0356789]|(?<=5)[01234]|(?<=6)[01]|(?<=7)[012347])|(?<=7)[34567]((?<=3)[9]|(?<=4)[01456789]|(?<=5)[012456789]|(?<=6)[01345689]|(?<=7)[123456])|(?<=8)[0129]((?<=0)[123568]|(?<=1)[016]|(?<=2)[4]|(?<=9)[6])|(?<=9)[056789]((?<=0)[134567]|(?<=5)[012346789]|(?<=6)[0123678]|(?<=7)[12345689]|(?<=8)[01346789]|(?<=9)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[35689]|(?<=1)[0367]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[01236789]|(?<=5)[12347]|(?<=6)[4679]|(?<=7)[1589]|(?<=8)[012389]|(?<=9)[123])|(?<=1)[013]((?<=0)[1456789]|(?<=1)[01234567]|(?<=3)[0])|(?<=2)[05678]((?<=0)[13567]|(?<=5)[01568]|(?<=6)[023456789]|(?<=7)[12346789]|(?<=8)[0])|(?<=3)[01234567]((?<=0)[135]|(?<=1)[012346789]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[03456]|(?<=5)[0123]|(?<=6)[02]|(?<=7)[013456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0156]|(?<=3)[2569]|(?<=4)[12456]|(?<=5)[13456]|(?<=6)[07]|(?<=7)[0134567]|(?<=8)[0123])|(?<=5)[012345678]((?<=0)[23579]|(?<=1)[1238]|(?<=2)[123456789]|(?<=3)[02589]|(?<=4)[012345789]|(?<=5)[0135689]|(?<=6)[0124789]|(?<=7)[1245689]|(?<=8)[0123457])|(?<=6)[015689]((?<=0)[23456789]|(?<=1)[01235789]|(?<=5)[2]|(?<=6)[3]|(?<=8)[8]|(?<=9)[35])|(?<=7)[023456789]((?<=0)[13]|(?<=2)[023678]|(?<=3)[268]|(?<=4)[012489]|(?<=5)[01234689]|(?<=6)[13456789]|(?<=7)[356]|(?<=8)[23456]|(?<=9)[023])|(?<=8)[034567]((?<=0)[14]|(?<=3)[02]|(?<=4)[9]|(?<=5)[01234568]|(?<=6)[01235679]|(?<=7)[014579])|(?<=9)[012]((?<=0)[1478]|(?<=1)[023569]|(?<=2)[125]))|(?<=7)[012346789]((?<=0)[123456789]((?<=1)[02345689]|(?<=2)[02356789]|(?<=3)[01234567]|(?<=4)[0236789]|(?<=5)[0125789]|(?<=6)[0124679]|(?<=7)[2345689]|(?<=8)[023567]|(?<=9)[015678])|(?<=1)[0123456789]((?<=0)[1]|(?<=1)[058]|(?<=2)[2789]|(?<=3)[024578]|(?<=4)[012345689]|(?<=5)[013]|(?<=6)[0567]|(?<=7)[124589]|(?<=8)[013456789]|(?<=9)[01])|(?<=2)[0123]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[018]|(?<=3)[28])|(?<=3)[0123456789]((?<=0)[12356789]|(?<=1)[01235678]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[0123578]|(?<=5)[012345679]|(?<=6)[01235679]|(?<=7)[0345679]|(?<=8)[013578]|(?<=9)[14678])|(?<=4)[0125]((?<=0)[23456789]|(?<=1)[012569]|(?<=2)[1]|(?<=5)[0])|(?<=6)[01245689]((?<=0)[14]|(?<=1)[45678]|(?<=2)[0]|(?<=4)[01235]|(?<=5)[06789]|(?<=6)[0345]|(?<=8)[0123678]|(?<=9)[0124])|(?<=7)[01234567]((?<=0)[1589]|(?<=1)[0134569]|(?<=2)[12345679]|(?<=3)[012378]|(?<=4)[2358]|(?<=5)[234567]|(?<=6)[0234569]|(?<=7)[012479])|(?<=8)[0123456789]((?<=0)[134679]|(?<=1)[013489]|(?<=2)[015689]|(?<=3)[0]|(?<=4)[01356789]|(?<=5)[12347]|(?<=6)[0123569]|(?<=7)[012346789]|(?<=8)[0125678]|(?<=9)[012])|(?<=9)[0123]((?<=0)[29]|(?<=1)[2456789]|(?<=2)[012349]|(?<=3)[1248]))|(?<=8)[0123456789]((?<=0)[012345678]((?<=0)[124678]|(?<=1)[1256789]|(?<=2)[13489]|(?<=3)[04679]|(?<=4)[0124679]|(?<=5)[0234789]|(?<=6)[0136789]|(?<=7)[05679]|(?<=8)[0])|(?<=1)[012345]((?<=0)[3456789]|(?<=1)[123456789]|(?<=2)[025678]|(?<=3)[1234589]|(?<=4)[1]|(?<=5)[2])|(?<=2)[023456]((?<=0)[1]|(?<=2)[0124569]|(?<=3)[0123567]|(?<=4)[012]|(?<=5)[13456789]|(?<=6)[01])|(?<=3)[0123456789]((?<=0)[15]|(?<=1)[0135678]|(?<=2)[016789]|(?<=3)[0234789]|(?<=4)[01234578]|(?<=5)[1256789]|(?<=6)[12356789]|(?<=7)[0124569]|(?<=8)[012789]|(?<=9)[012])|(?<=4)[0245678]((?<=0)[1]|(?<=2)[5]|(?<=4)[9]|(?<=5)[012345679]|(?<=6)[0123489]|(?<=7)[12345678]|(?<=8)[1235678])|(?<=5)[045678]((?<=0)[13456]|(?<=4)[12345789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[012345789]|(?<=8)[01235789])|(?<=6)[012345678]((?<=0)[136]|(?<=1)[014789]|(?<=2)[01235679]|(?<=3)[123579]|(?<=4)[1234567]|(?<=5)[0124589]|(?<=6)[134568]|(?<=7)[0123467]|(?<=8)[035])|(?<=7)[02345678]((?<=0)[13]|(?<=2)[012356]|(?<=3)[0123678]|(?<=4)[04568]|(?<=5)[13469]|(?<=6)[01245789]|(?<=7)[123468]|(?<=8)[1])|(?<=8)[0234567]((?<=0)[14]|(?<=2)[146789]|(?<=3)[3489]|(?<=4)[1346789]|(?<=5)[01256789]|(?<=6)[02345689]|(?<=7)[013689])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[34567]|(?<=2)[012345789]|(?<=3)[0]|(?<=4)[01346789]|(?<=5)[012347]|(?<=6)[1234567]))|(?<=9)[012345678]((?<=0)[3456789]((?<=3)[89]|(?<=4)[0124567]|(?<=5)[146789]|(?<=6)[123679]|(?<=7)[13489]|(?<=8)[2368]|(?<=9)[024567])|(?<=1)[012456789]((?<=0)[8]|(?<=1)[01345679]|(?<=2)[0]|(?<=4)[045689]|(?<=5)[0234679]|(?<=6)[026789]|(?<=7)[0345679]|(?<=8)[039]|(?<=9)[1234])|(?<=2)[01367]((?<=0)[1234689]|(?<=1)[0123678]|(?<=3)[2]|(?<=6)[9]|(?<=7)[2])|(?<=3)[023456]((?<=0)[1579]|(?<=2)[02345678]|(?<=3)[0256789]|(?<=4)[125678]|(?<=5)[0245689]|(?<=6)[01234567])|(?<=4)[02345678]((?<=0)[126]|(?<=2)[12356789]|(?<=3)[79]|(?<=4)[03]|(?<=5)[12569]|(?<=6)[12456]|(?<=7)[0456789]|(?<=8)[0123])|(?<=5)[023456789]((?<=0)[137]|(?<=2)[059]|(?<=3)[0124]|(?<=4)[0]|(?<=5)[36]|(?<=6)[0123457]|(?<=7)[123467]|(?<=8)[1]|(?<=9)[5])|(?<=6)[023456]((?<=0)[1]|(?<=2)[9]|(?<=3)[01358]|(?<=4)[13578]|(?<=5)[23467]|(?<=6)[123456789])|(?<=7)[034567]((?<=0)[125]|(?<=3)[05679]|(?<=4)[0134567]|(?<=5)[0123569]|(?<=6)[2679]|(?<=7)[1236])|(?<=8)[123456789]((?<=1)[3579]|(?<=2)[345678]|(?<=3)[2467]|(?<=4)[01256]|(?<=5)[149]|(?<=6)[1267]|(?<=7)[07]|(?<=8)[56]|(?<=9)[7])))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[01234567]((?<=0)[346789]|(?<=1)[012349]|(?<=2)[02356]|(?<=3)[1367]|(?<=4)[015679]|(?<=5)[01256789]|(?<=6)[01235789]|(?<=7)[015678])|(?<=1)[0124567]((?<=0)[4789]|(?<=1)[015789]|(?<=2)[1]|(?<=4)[023456]|(?<=5)[0257]|(?<=6)[0125]|(?<=7)[015678])|(?<=2)[012345789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012389]|(?<=3)[1]|(?<=4)[1235]|(?<=5)[8]|(?<=7)[2]|(?<=8)[0]|(?<=9)[19])|(?<=3)[123456789]((?<=1)[01236]|(?<=2)[248]|(?<=3)[04679]|(?<=4)[2678]|(?<=5)[01356789]|(?<=6)[013]|(?<=7)[012469]|(?<=8)[0357]|(?<=9)[01])|(?<=4)[012345678]((?<=0)[2349]|(?<=1)[9]|(?<=2)[2]|(?<=3)[47]|(?<=4)[024578]|(?<=5)[6]|(?<=6)[0148]|(?<=7)[25]|(?<=8)[1469])|(?<=5)[0123]((?<=0)[2345789]|(?<=1)[0134567]|(?<=2)[6]|(?<=3)[6])|(?<=6)[0]((?<=0)[1])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[9]|(?<=3)[47]|(?<=4)[014]|(?<=5)[9]|(?<=6)[39]|(?<=7)[1])|(?<=8)[01234567]((?<=0)[13678]|(?<=1)[035689]|(?<=2)[0346789]|(?<=3)[01]|(?<=4)[034579]|(?<=5)[4568]|(?<=6)[2358]|(?<=7)[034])|(?<=9)[0123456789]((?<=0)[236]|(?<=1)[345]|(?<=2)[137]|(?<=3)[59]|(?<=4)[01369]|(?<=5)[38]|(?<=6)[245]|(?<=7)[279]|(?<=8)[1238]|(?<=9)[57]))|(?<=1)[012345678]((?<=0)[013456789]((?<=0)[12345678]|(?<=1)[0145678]|(?<=3)[013459]|(?<=4)[012345689]|(?<=5)[12569]|(?<=6)[34]|(?<=7)[13456]|(?<=8)[0356]|(?<=9)[1234578])|(?<=1)[02345678]((?<=0)[12]|(?<=2)[149]|(?<=3)[259]|(?<=4)[123469]|(?<=5)[9]|(?<=6)[4689]|(?<=7)[1459]|(?<=8)[0139])|(?<=2)[01234567]((?<=0)[134]|(?<=1)[469]|(?<=2)[246]|(?<=3)[01248]|(?<=4)[0]|(?<=5)[04567]|(?<=6)[0234578]|(?<=7)[14])|(?<=3)[01345689]((?<=0)[1]|(?<=1)[0147]|(?<=3)[29]|(?<=4)[8]|(?<=5)[12]|(?<=6)[04567]|(?<=8)[56]|(?<=9)[07])|(?<=4)[0267]((?<=0)[8]|(?<=2)[15]|(?<=6)[45]|(?<=7)[2])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[23479]|(?<=2)[24678]|(?<=3)[145789]|(?<=4)[03478]|(?<=5)[345789]|(?<=6)[0234678]|(?<=7)[12])|(?<=6)[0123456]((?<=0)[1234567]|(?<=1)[2569]|(?<=2)[12]|(?<=3)[01256]|(?<=4)[023579]|(?<=5)[01359]|(?<=6)[03679])|(?<=7)[01234567]((?<=0)[1]|(?<=1)[2349]|(?<=2)[123579]|(?<=3)[159]|(?<=4)[0569]|(?<=5)[149]|(?<=6)[02346]|(?<=7)[2345678])|(?<=8)[0123456]((?<=0)[4]|(?<=1)[02579]|(?<=2)[124568]|(?<=3)[123456789]|(?<=4)[0345789]|(?<=5)[589]|(?<=6)[12]))|(?<=2)[01234567]((?<=0)[02345678]((?<=0)[13]|(?<=2)[012345789]|(?<=3)[1256789]|(?<=4)[0145789]|(?<=5)[0134568]|(?<=6)[01469]|(?<=7)[1689]|(?<=8)[1235678])|(?<=1)[0234567]((?<=0)[134]|(?<=2)[023479]|(?<=3)[0134]|(?<=4)[01]|(?<=5)[134679]|(?<=6)[03467]|(?<=7)[01])|(?<=2)[012345678]((?<=0)[2467]|(?<=1)[01457]|(?<=2)[03]|(?<=3)[246]|(?<=4)[0]|(?<=5)[2469]|(?<=6)[1256]|(?<=7)[3456]|(?<=8)[056])|(?<=3)[0234567]((?<=0)[13]|(?<=2)[012345678]|(?<=3)[023789]|(?<=4)[345789]|(?<=5)[012456]|(?<=6)[16789]|(?<=7)[012468])|(?<=4)[0123456]((?<=0)[4689]|(?<=1)[013]|(?<=2)[0]|(?<=3)[167]|(?<=4)[01245]|(?<=5)[01235689]|(?<=6)[1234])|(?<=5)[0123456]((?<=0)[13]|(?<=1)[689]|(?<=2)[8]|(?<=3)[39]|(?<=4)[14]|(?<=5)[3]|(?<=6)[567])|(?<=6)[02345]((?<=0)[23]|(?<=2)[9]|(?<=3)[13458]|(?<=4)[279]|(?<=5)[3])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[235678]|(?<=2)[124689]|(?<=3)[23]|(?<=4)[0123689]|(?<=5)[34789]|(?<=6)[245]|(?<=7)[6]|(?<=8)[248]))|(?<=3)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[12356789]|(?<=3)[0123567]|(?<=4)[04567]|(?<=5)[0456]|(?<=6)[01245678]|(?<=7)[0124678]|(?<=8)[01245])|(?<=1)[0123456]((?<=0)[1235679]|(?<=1)[01235679]|(?<=2)[35678]|(?<=3)[05678]|(?<=4)[023456789]|(?<=5)[012345678]|(?<=6)[024])|(?<=2)[01234]((?<=0)[12345679]|(?<=1)[012345789]|(?<=2)[01234789]|(?<=3)[0125]|(?<=4)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01456789]|(?<=2)[0123456]|(?<=3)[01234678]|(?<=4)[012345678]|(?<=5)[016789]|(?<=6)[0])|(?<=4)[0123456]((?<=0)[23678]|(?<=1)[02346]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[0235679]|(?<=5)[012678]|(?<=6)[023456789])|(?<=5)[01234567]((?<=0)[12456]|(?<=1)[01256789]|(?<=2)[0123456789]|(?<=3)[01234567]|(?<=4)[01235789]|(?<=5)[1345678]|(?<=6)[05679]|(?<=7)[01])|(?<=6)[012]((?<=0)[456789]|(?<=1)[012345679]|(?<=2)[03])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[136789]|(?<=2)[01234578]|(?<=3)[012345689]|(?<=4)[06789]|(?<=5)[045689]|(?<=6)[0124678]|(?<=7)[123789]|(?<=8)[023678]|(?<=9)[13])|(?<=8)[01234]((?<=0)[245]|(?<=1)[12]|(?<=2)[124]|(?<=3)[0267]|(?<=4)[02345])|(?<=9)[012345678]((?<=0)[12356789]|(?<=1)[023457]|(?<=2)[0568]|(?<=3)[01234589]|(?<=4)[02345678]|(?<=5)[0123]|(?<=6)[123478]|(?<=7)[123467]|(?<=8)[13568]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[134]|(?<=1)[0127]|(?<=2)[123468]|(?<=3)[0259]|(?<=4)[01456789]|(?<=5)[0234567]|(?<=6)[024578]|(?<=7)[02467]|(?<=8)[01245679]|(?<=9)[023459])|(?<=1)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345679])|(?<=2)[012345678]((?<=0)[123]|(?<=1)[24567]|(?<=2)[134]|(?<=3)[0123456]|(?<=4)[013]|(?<=5)[013456]|(?<=6)[0246]|(?<=7)[0234568]|(?<=8)[015678])|(?<=3)[0123]((?<=0)[12345678]|(?<=1)[012349]|(?<=2)[015]|(?<=3)[3])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[0123578]|(?<=2)[0345789]|(?<=3)[0126789]|(?<=4)[01234569]|(?<=5)[01245]|(?<=6)[0]|(?<=7)[013]|(?<=8)[1345]|(?<=9)[013])|(?<=5)[015]((?<=0)[2345679]|(?<=1)[01245]|(?<=5)[5])|(?<=6)[0123456789]((?<=0)[16789]|(?<=1)[01234589]|(?<=2)[012456789]|(?<=3)[0234789]|(?<=4)[0134567]|(?<=5)[1234679]|(?<=6)[01235679]|(?<=7)[0125678]|(?<=8)[01235789]|(?<=9)[013579])|(?<=7)[0123]((?<=0)[23456789]|(?<=1)[048]|(?<=2)[01]|(?<=3)[0])|(?<=8)[0123456789]((?<=0)[24579]|(?<=1)[134578]|(?<=2)[0245678]|(?<=3)[036789]|(?<=4)[01234679]|(?<=5)[01345679]|(?<=6)[14567]|(?<=7)[0458]|(?<=8)[012379]|(?<=9)[0])|(?<=9)[0]((?<=0)[1234567]))|(?<=5)[012345678]((?<=0)[0134567]((?<=0)[1235]|(?<=1)[1345]|(?<=3)[023469]|(?<=4)[0124]|(?<=5)[0123456]|(?<=6)[2456789]|(?<=7)[0])|(?<=1)[01234567]((?<=0)[123567]|(?<=1)[123589]|(?<=2)[0123]|(?<=3)[01235]|(?<=4)[024678]|(?<=5)[023456789]|(?<=6)[0246789]|(?<=7)[12467])|(?<=2)[0123456]((?<=0)[23456789]|(?<=1)[123456789]|(?<=2)[0345679]|(?<=3)[01236789]|(?<=4)[0123456789]|(?<=5)[125]|(?<=6)[7])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[012456789]|(?<=5)[01234689]|(?<=6)[0123589]|(?<=7)[012378]|(?<=8)[012345789]|(?<=9)[0])|(?<=4)[0123456]((?<=0)[234569]|(?<=1)[045679]|(?<=2)[034689]|(?<=3)[0123459]|(?<=4)[09]|(?<=5)[89]|(?<=6)[9])|(?<=5)[0]((?<=0)[123456])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0123489]|(?<=3)[01468]|(?<=4)[0245678]|(?<=5)[012346789]|(?<=6)[01239]|(?<=7)[1234789]|(?<=8)[0124568]|(?<=9)[023456789])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[014569]|(?<=2)[013479]|(?<=3)[2459]|(?<=4)[0123456]|(?<=5)[0]|(?<=6)[0146789]|(?<=7)[01235689]|(?<=8)[0234689])|(?<=8)[0123456789]((?<=0)[1456789]|(?<=1)[02345679]|(?<=2)[012678]|(?<=3)[0123568]|(?<=4)[01345689]|(?<=5)[01345689]|(?<=6)[0123456789]|(?<=7)[012345679]|(?<=8)[0123456789]|(?<=9)[013456789]))|(?<=6)[0123456789]((?<=0)[0134567]((?<=0)[1]|(?<=1)[12367]|(?<=3)[0123456789]|(?<=4)[0145789]|(?<=5)[0125678]|(?<=6)[0234589]|(?<=7)[0124567])|(?<=1)[012345678]((?<=0)[234567]|(?<=1)[0123578]|(?<=2)[012345678]|(?<=3)[0135]|(?<=4)[02346789]|(?<=5)[0145678]|(?<=6)[012345678]|(?<=7)[012356]|(?<=8)[012346])|(?<=2)[0123456789]((?<=0)[1234568]|(?<=1)[46789]|(?<=2)[012456789]|(?<=3)[145679]|(?<=4)[01]|(?<=5)[0469]|(?<=6)[08]|(?<=7)[8]|(?<=8)[0]|(?<=9)[0])|(?<=3)[012456789]((?<=0)[12347]|(?<=1)[0129]|(?<=2)[012347]|(?<=4)[01256789]|(?<=5)[06]|(?<=6)[0568]|(?<=7)[1345679]|(?<=8)[1235]|(?<=9)[01234])|(?<=4)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=5)[0123456789]((?<=0)[124678]|(?<=1)[013467]|(?<=2)[468]|(?<=3)[01246789]|(?<=4)[02345]|(?<=5)[023456]|(?<=6)[12357]|(?<=7)[01234]|(?<=8)[02]|(?<=9)[05])|(?<=6)[0123]((?<=0)[1]|(?<=1)[345679]|(?<=2)[48]|(?<=3)[57])|(?<=7)[0123456789]((?<=0)[123456]|(?<=1)[014]|(?<=2)[135]|(?<=3)[012378]|(?<=4)[01235678]|(?<=5)[059]|(?<=6)[0134567]|(?<=7)[012346789]|(?<=8)[13456789]|(?<=9)[123456789])|(?<=8)[01234]((?<=0)[23456789]|(?<=1)[45689]|(?<=2)[5]|(?<=3)[5]|(?<=4)[5])|(?<=9)[0123456789]((?<=0)[12]|(?<=1)[0134579]|(?<=2)[023689]|(?<=3)[01236789]|(?<=4)[013567]|(?<=5)[0123789]|(?<=6)[012578]|(?<=7)[014589]|(?<=8)[02456789]|(?<=9)[012468]))|(?<=7)[0123456789]((?<=0)[012346]((?<=0)[136]|(?<=1)[012678]|(?<=2)[012345]|(?<=3)[012345678]|(?<=4)[0123]|(?<=6)[0])|(?<=1)[01234567]((?<=0)[2468]|(?<=1)[012456789]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[012357]|(?<=5)[0]|(?<=6)[01234567]|(?<=7)[02457])|(?<=2)[02345678]((?<=0)[13]|(?<=2)[0345679]|(?<=3)[012456]|(?<=4)[03467]|(?<=5)[0]|(?<=6)[0345]|(?<=7)[0234]|(?<=8)[0123])|(?<=3)[023456789]((?<=0)[23456]|(?<=2)[04567]|(?<=3)[01456789]|(?<=4)[0124568]|(?<=5)[123456789]|(?<=6)[0126789]|(?<=7)[0134]|(?<=8)[012345678]|(?<=9)[02346])|(?<=4)[0234567]((?<=0)[134568]|(?<=2)[01479]|(?<=3)[12345678]|(?<=4)[135689]|(?<=5)[123456789]|(?<=6)[0245789]|(?<=7)[01])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[234569]|(?<=2)[012345789]|(?<=3)[1257]|(?<=4)[126]|(?<=5)[012378]|(?<=6)[12478]|(?<=7)[3456789]|(?<=8)[014568]|(?<=9)[01678])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[0123569]|(?<=2)[0]|(?<=3)[01345789]|(?<=4)[089]|(?<=5)[4]|(?<=6)[056]|(?<=7)[0]|(?<=8)[3])|(?<=7)[012]((?<=0)[8]|(?<=1)[012345]|(?<=2)[05])|(?<=8)[0345678]((?<=0)[234579]|(?<=3)[1234678]|(?<=4)[01256789]|(?<=5)[01345789]|(?<=6)[01235689]|(?<=7)[0124569]|(?<=8)[01245])|(?<=9)[0123456789]((?<=0)[145679]|(?<=1)[678]|(?<=2)[012345689]|(?<=3)[023]|(?<=4)[01234689]|(?<=5)[01245789]|(?<=6)[03456789]|(?<=7)[014578]|(?<=8)[0123679]|(?<=9)[0123457]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123569]|(?<=1)[457]|(?<=2)[1235678]|(?<=3)[02345689]|(?<=4)[012345789]|(?<=5)[0149]|(?<=6)[02345679]|(?<=7)[01234569]|(?<=8)[01234589]|(?<=9)[12345678])|(?<=1)[0123456789]((?<=0)[134589]|(?<=1)[14678]|(?<=2)[0245678]|(?<=3)[01345789]|(?<=4)[013456]|(?<=5)[024789]|(?<=6)[012456789]|(?<=7)[0346789]|(?<=8)[023456789]|(?<=9)[0123578])|(?<=2)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[013456789]|(?<=3)[03456789]|(?<=4)[023])|(?<=3)[0123456789]((?<=0)[124679]|(?<=1)[0234567]|(?<=2)[02346789]|(?<=3)[1456]|(?<=4)[01268]|(?<=5)[03679]|(?<=6)[0237]|(?<=7)[01457]|(?<=8)[01236]|(?<=9)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[0124569]|(?<=5)[01345678]|(?<=6)[0123456789]|(?<=7)[012356])|(?<=5)[0123]((?<=0)[2345679]|(?<=1)[9]|(?<=2)[9]|(?<=3)[2])|(?<=6)[0123456]((?<=0)[123479]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[0279]|(?<=5)[0123456789]|(?<=6)[12])|(?<=7)[01234567]((?<=0)[13568]|(?<=1)[0]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0123456789]|(?<=5)[045679]|(?<=6)[01235678]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[16789]|(?<=1)[1356789]|(?<=2)[01234579]|(?<=3)[1245678]|(?<=4)[012356789]|(?<=5)[0123456789]|(?<=6)[0124567]|(?<=7)[0123456789]|(?<=8)[01345689]|(?<=9)[01234567])|(?<=9)[013]((?<=0)[6]|(?<=1)[01257]|(?<=3)[3]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1246789]|(?<=1)[0123457]|(?<=2)[1246789]|(?<=3)[01234678]|(?<=4)[0235678]|(?<=5)[01235678]|(?<=6)[01345678]|(?<=7)[012345689]|(?<=8)[02345789]|(?<=9)[0123456789])|(?<=1)[0123]((?<=0)[123467]|(?<=1)[1235679]|(?<=2)[056789]|(?<=3)[0])|(?<=2)[02345678]((?<=0)[123]|(?<=2)[014789]|(?<=3)[02345678]|(?<=4)[01256789]|(?<=5)[012345689]|(?<=6)[123456789]|(?<=7)[0124679]|(?<=8)[23456789])|(?<=3)[01234]((?<=0)[12345679]|(?<=1)[025689]|(?<=2)[012356789]|(?<=3)[012356789]|(?<=4)[0123456789])|(?<=4)[0123456]((?<=0)[12345689]|(?<=1)[0125789]|(?<=2)[0134568]|(?<=3)[014567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[014])|(?<=5)[01234]((?<=0)[3456789]|(?<=1)[29]|(?<=2)[5]|(?<=3)[4]|(?<=4)[468])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[012356789]|(?<=3)[0123456789]|(?<=4)[02345689]|(?<=5)[01345679]|(?<=6)[034578]|(?<=7)[045679]|(?<=8)[02345689]|(?<=9)[06])|(?<=7)[0123456789]((?<=0)[15679]|(?<=1)[02356789]|(?<=2)[012456789]|(?<=3)[03568]|(?<=4)[03456789]|(?<=5)[1235679]|(?<=6)[0245689]|(?<=7)[045679]|(?<=8)[012348]|(?<=9)[13569])|(?<=8)[0123456789]((?<=0)[125678]|(?<=1)[245678]|(?<=2)[0125679]|(?<=3)[13456789]|(?<=4)[01789]|(?<=5)[23458]|(?<=6)[123468]|(?<=7)[012346789]|(?<=8)[0134567]|(?<=9)[123456])|(?<=9)[01234567]((?<=0)[12358]|(?<=1)[012356789]|(?<=2)[012579]|(?<=3)[01458]|(?<=4)[25678]|(?<=5)[023589]|(?<=6)[01235789]|(?<=7)[01])))|(?<=5)[0123456789]((?<=0)[012345678]((?<=0)[01234567]((?<=0)[12356789]|(?<=1)[0234]|(?<=2)[012356789]|(?<=3)[12345689]|(?<=4)[01246789]|(?<=5)[01245678]|(?<=6)[0123456789]|(?<=7)[01234568])|(?<=1)[01234567]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0134])|(?<=2)[01234567]((?<=0)[1678]|(?<=1)[012346789]|(?<=2)[02356789]|(?<=3)[0123456789]|(?<=4)[012346789]|(?<=5)[01245678]|(?<=6)[12345689]|(?<=7)[12345678])|(?<=3)[012]((?<=0)[9]|(?<=1)[012345679]|(?<=2)[0123457])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0134678]|(?<=3)[012345689]|(?<=4)[0146789]|(?<=5)[0123456789]|(?<=6)[01456789]|(?<=7)[012356789]|(?<=8)[0234])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[01235689]|(?<=4)[01234568]|(?<=5)[1246789]|(?<=6)[012356789]|(?<=7)[013456789]|(?<=8)[123568]|(?<=9)[012345789])|(?<=6)[012345678]((?<=0)[123456789]|(?<=1)[12369]|(?<=2)[0123456789]|(?<=3)[01234568]|(?<=4)[12345789]|(?<=5)[012345789]|(?<=6)[02456789]|(?<=7)[01234567]|(?<=8)[012])|(?<=7)[0]((?<=0)[1237])|(?<=8)[03456]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[012356789]|(?<=5)[134789]|(?<=6)[01234]))|(?<=1)[0123456]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01245689]|(?<=2)[023456789]|(?<=3)[013456789]|(?<=4)[01456789]|(?<=5)[01234568]|(?<=6)[0123])|(?<=1)[01]((?<=0)[1345689]|(?<=1)[1])|(?<=2)[0345]((?<=0)[1]|(?<=3)[01245789]|(?<=4)[0123456789]|(?<=5)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1348]|(?<=4)[0123567]|(?<=5)[014578]|(?<=6)[03456])|(?<=4)[03456]((?<=0)[1]|(?<=3)[012369]|(?<=4)[0123456789]|(?<=5)[01234589]|(?<=6)[0123567])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[0]|(?<=2)[01356789]|(?<=3)[01234567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012356789])|(?<=6)[0345]((?<=0)[1]|(?<=3)[0126789]|(?<=4)[056789]|(?<=5)[012346]))|(?<=2)[012345678]((?<=0)[034567]((?<=0)[123]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[023467]|(?<=6)[045689]|(?<=7)[0123456789])|(?<=1)[034567]((?<=0)[1]|(?<=3)[23456]|(?<=4)[012467]|(?<=5)[1456789]|(?<=6)[012345689]|(?<=7)[0125])|(?<=2)[012345]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[123567]|(?<=4)[01256789]|(?<=5)[123457])|(?<=3)[0123456]((?<=0)[1256789]|(?<=1)[02345678]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[012456789]|(?<=5)[12345689]|(?<=6)[12])|(?<=4)[01]((?<=0)[12345]|(?<=1)[1])|(?<=5)[03456789]((?<=0)[1]|(?<=3)[0134567]|(?<=4)[023489]|(?<=5)[01234567]|(?<=6)[012356789]|(?<=7)[0123467]|(?<=8)[0134568]|(?<=9)[01345])|(?<=6)[0123456]((?<=0)[1]|(?<=1)[9]|(?<=2)[0134567]|(?<=3)[0125789]|(?<=4)[0145679]|(?<=5)[0123456789]|(?<=6)[0])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0126789]|(?<=3)[012789]|(?<=4)[256789]|(?<=5)[0123456789]|(?<=6)[0156789]|(?<=7)[1234678])|(?<=8)[0]((?<=0)[123467]))|(?<=3)[01245789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[0123456789]|(?<=2)[0123479]|(?<=3)[123456789]|(?<=4)[02456789]|(?<=5)[01789]|(?<=6)[13569]|(?<=7)[02345689]|(?<=8)[0135689]|(?<=9)[012345789])|(?<=1)[0123456789]((?<=0)[3458]|(?<=1)[04589]|(?<=2)[01256789]|(?<=3)[0279]|(?<=4)[0234679]|(?<=5)[0134678]|(?<=6)[78]|(?<=7)[026789]|(?<=8)[12345689]|(?<=9)[0125])|(?<=2)[01239]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[35]|(?<=9)[5])|(?<=4)[0]((?<=0)[23456])|(?<=5)[0123456789]((?<=0)[12345678]|(?<=1)[015678]|(?<=2)[012356789]|(?<=3)[01234678]|(?<=4)[01345689]|(?<=5)[013456789]|(?<=6)[0123569]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[034789])|(?<=7)[0129]((?<=0)[3456]|(?<=1)[13456789]|(?<=2)[6]|(?<=9)[2])|(?<=8)[012]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[01567])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[01369]|(?<=2)[02345689]|(?<=3)[012345679]|(?<=4)[012346789]|(?<=5)[01234569]|(?<=6)[01234589]))|(?<=4)[0123456789]((?<=0)[0128]((?<=0)[12345679]|(?<=1)[134567]|(?<=2)[012345678]|(?<=8)[2])|(?<=1)[012345678]((?<=0)[123467]|(?<=1)[0123459]|(?<=2)[013456789]|(?<=3)[056789]|(?<=4)[0139]|(?<=5)[012345679]|(?<=6)[012569]|(?<=7)[013457]|(?<=8)[0])|(?<=2)[01234]((?<=0)[1245789]|(?<=1)[01234567]|(?<=2)[0789]|(?<=3)[0245]|(?<=4)[1567])|(?<=3)[01]((?<=0)[12347]|(?<=1)[13])|(?<=4)[0123456789]((?<=0)[1356789]|(?<=1)[01234678]|(?<=2)[012345678]|(?<=3)[03567]|(?<=4)[01236789]|(?<=5)[012456789]|(?<=6)[02345679]|(?<=7)[0134569]|(?<=8)[012456789]|(?<=9)[0134589])|(?<=5)[0123456]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[0145679]|(?<=3)[0146789]|(?<=4)[0125678]|(?<=5)[02456789]|(?<=6)[01234568])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[012345689]|(?<=2)[123456789]|(?<=3)[012456789]|(?<=4)[234568]|(?<=5)[0123456789]|(?<=6)[0145679]|(?<=7)[0])|(?<=7)[0234567]((?<=0)[13]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[01256789]|(?<=5)[01456789]|(?<=6)[01236789]|(?<=7)[0123])|(?<=8)[0123456789]((?<=0)[156]|(?<=1)[023479]|(?<=2)[01246789]|(?<=3)[0256789]|(?<=4)[0123456789]|(?<=5)[03456789]|(?<=6)[124578]|(?<=7)[0123456]|(?<=8)[089]|(?<=9)[1356])|(?<=9)[012345678]((?<=0)[1249]|(?<=1)[1345]|(?<=2)[1236789]|(?<=3)[012357]|(?<=4)[0123456789]|(?<=5)[026]|(?<=6)[012345678]|(?<=7)[014789]|(?<=8)[0123456]))|(?<=5)[01346789]((?<=0)[0123456789]((?<=0)[1356789]|(?<=1)[12346789]|(?<=2)[0145679]|(?<=3)[0123678]|(?<=4)[012345679]|(?<=5)[1234567]|(?<=6)[035689]|(?<=7)[012345679]|(?<=8)[0245789]|(?<=9)[02])|(?<=1)[01235]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0]|(?<=5)[05])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[01245789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[023456789]|(?<=6)[02346789]|(?<=7)[012345689]|(?<=8)[12456789]|(?<=9)[015678])|(?<=4)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[123456789]|(?<=5)[045])|(?<=6)[01]((?<=0)[12345679]|(?<=1)[23456])|(?<=7)[0123456789]((?<=0)[23456789]|(?<=1)[01236789]|(?<=2)[0123456]|(?<=3)[1234568]|(?<=4)[124689]|(?<=5)[0123678]|(?<=6)[0345789]|(?<=7)[1259]|(?<=8)[01234567]|(?<=9)[0235678])|(?<=8)[01]((?<=0)[2345678]|(?<=1)[0124])|(?<=9)[0123456789]((?<=0)[1234569]|(?<=1)[02789]|(?<=2)[012345679]|(?<=3)[1234569]|(?<=4)[01345679]|(?<=5)[012345679]|(?<=6)[012345789]|(?<=7)[012345679]|(?<=8)[12357]|(?<=9)[012]))|(?<=6)[01234567]((?<=0)[0123456789]((?<=0)[1379]|(?<=1)[0134679]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[1234568]|(?<=5)[01245678]|(?<=6)[023589]|(?<=7)[123458]|(?<=8)[01235789]|(?<=9)[013678])|(?<=1)[012345678]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[01235789]|(?<=3)[1246789]|(?<=4)[012345679]|(?<=5)[012356789]|(?<=6)[012456789]|(?<=7)[01234568]|(?<=8)[013567])|(?<=2)[0123456789]((?<=0)[1789]|(?<=1)[01245689]|(?<=2)[0123456789]|(?<=3)[0125679]|(?<=4)[0134589]|(?<=5)[1235678]|(?<=6)[0234567]|(?<=7)[01346789]|(?<=8)[012345789]|(?<=9)[1234567])|(?<=3)[012345678]((?<=0)[134789]|(?<=1)[012345689]|(?<=2)[013456789]|(?<=3)[01245689]|(?<=4)[023579]|(?<=5)[023456789]|(?<=6)[01234789]|(?<=7)[13456789]|(?<=8)[1245679])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[5]|(?<=3)[134578]|(?<=4)[012346789]|(?<=5)[02358]|(?<=6)[1456789]|(?<=7)[0234579]|(?<=8)[124])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[134567]|(?<=4)[0123456789]|(?<=5)[0123467]|(?<=6)[02356789]|(?<=7)[012345689]|(?<=8)[013456789]|(?<=9)[0124])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[136789]|(?<=3)[034679]|(?<=4)[14679]|(?<=5)[012345789]|(?<=6)[01236789]|(?<=7)[012368]|(?<=8)[0134568])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[013456]|(?<=2)[0123456789]|(?<=3)[12345678]|(?<=4)[248]|(?<=5)[01456789]|(?<=6)[0123]))|(?<=7)[01234567]((?<=0)[01234567]((?<=0)[1234567]|(?<=1)[02345678]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[012356789]|(?<=5)[012345789]|(?<=6)[123456789]|(?<=7)[01235678])|(?<=1)[019]((?<=0)[345678]|(?<=1)[07]|(?<=9)[7])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0134567]|(?<=3)[123456789]|(?<=4)[12356789]|(?<=5)[1256789]|(?<=6)[012345689]|(?<=7)[01234689])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[1234589]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[0345689]|(?<=6)[123456789]|(?<=7)[0134569]|(?<=8)[0123456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[01246789]|(?<=3)[023456789]|(?<=4)[0125689]|(?<=5)[0124567]|(?<=6)[0156789]|(?<=7)[012345679]|(?<=8)[1])|(?<=5)[02345678]((?<=0)[1]|(?<=2)[012389]|(?<=3)[1234678]|(?<=4)[013478]|(?<=5)[12359]|(?<=6)[02346789]|(?<=7)[0124679]|(?<=8)[045])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012356]|(?<=3)[01234689]|(?<=4)[01245689]|(?<=5)[0126789]|(?<=6)[01])|(?<=7)[0123456789]((?<=0)[1236]|(?<=1)[46789]|(?<=2)[0245]|(?<=3)[02578]|(?<=4)[14578]|(?<=5)[01245689]|(?<=6)[01234679]|(?<=7)[023569]|(?<=8)[023578]|(?<=9)[012349]))|(?<=8)[012345678]((?<=0)[012345678]((?<=0)[12456789]|(?<=1)[1235678]|(?<=2)[179]|(?<=3)[0123568]|(?<=4)[012356789]|(?<=5)[12346789]|(?<=6)[012345789]|(?<=7)[12456789]|(?<=8)[1])|(?<=1)[0]((?<=0)[2345])|(?<=2)[012345678]((?<=0)[12345]|(?<=1)[024689]|(?<=2)[02345789]|(?<=3)[01356789]|(?<=4)[01349]|(?<=5)[01456789]|(?<=6)[0125679]|(?<=7)[012345678]|(?<=8)[12])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[013678]|(?<=2)[134579]|(?<=3)[012589]|(?<=4)[134568]|(?<=5)[123567]|(?<=6)[12356789]|(?<=7)[02479]|(?<=8)[012456])|(?<=4)[0123456789]((?<=0)[125]|(?<=1)[3568]|(?<=2)[012345689]|(?<=3)[013689]|(?<=4)[0123458]|(?<=5)[124568]|(?<=6)[013467]|(?<=7)[2456789]|(?<=8)[01234678]|(?<=9)[024567])|(?<=5)[02345678]((?<=0)[1345]|(?<=2)[013489]|(?<=3)[012358]|(?<=4)[012459]|(?<=5)[2489]|(?<=6)[012345689]|(?<=7)[01235679]|(?<=8)[01])|(?<=6)[02345]((?<=0)[1]|(?<=2)[0123567]|(?<=3)[0124689]|(?<=4)[012345679]|(?<=5)[0123456])|(?<=7)[0123456789]((?<=0)[13457]|(?<=1)[012368]|(?<=2)[12357]|(?<=3)[0134567]|(?<=4)[01468]|(?<=5)[0256789]|(?<=6)[0123589]|(?<=7)[01235689]|(?<=8)[12345789]|(?<=9)[02345])|(?<=8)[0345]((?<=0)[1]|(?<=3)[01358]|(?<=4)[34579]|(?<=5)[2346]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[123678]|(?<=1)[012345689]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[13467]|(?<=5)[02345789]|(?<=6)[123456789]|(?<=7)[012456789]|(?<=8)[12356789])|(?<=1)[0]((?<=0)[1256])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[12345789]|(?<=2)[12356]|(?<=3)[01]|(?<=4)[0123478]|(?<=5)[023456789]|(?<=6)[0123]|(?<=7)[03456])|(?<=3)[012345]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[23467]|(?<=3)[0236789]|(?<=4)[34579]|(?<=5)[134])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[01246789]|(?<=2)[012457]|(?<=3)[023456]|(?<=4)[01234678]|(?<=5)[0123467]|(?<=6)[0123456789]|(?<=7)[12479]|(?<=8)[02345679])|(?<=5)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[012578]|(?<=4)[024567])|(?<=6)[0234]((?<=0)[12]|(?<=2)[35]|(?<=3)[12345689]|(?<=4)[0234578])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[0134568]|(?<=2)[01245789]|(?<=3)[0123569]|(?<=4)[01356789]|(?<=5)[01245689]|(?<=6)[012])|(?<=8)[01234567]((?<=0)[12348]|(?<=1)[2]|(?<=2)[013456789]|(?<=3)[012347]|(?<=4)[012345678]|(?<=5)[1345689]|(?<=6)[0345678]|(?<=7)[012345])|(?<=9)[0123]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[02356789]|(?<=3)[01234567])))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24578]|(?<=1)[0234568]|(?<=2)[012569]|(?<=3)[01345]|(?<=4)[012345678]|(?<=5)[0136]|(?<=6)[0124789]|(?<=7)[01234567]|(?<=8)[1345789]|(?<=9)[0136789])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[0123589]|(?<=2)[03469]|(?<=3)[01345679]|(?<=4)[01234568]|(?<=5)[01234567]|(?<=6)[023459]|(?<=7)[12345678]|(?<=8)[01345789]|(?<=9)[012345])|(?<=2)[0]((?<=0)[1238])|(?<=3)[0]((?<=0)[1245])|(?<=4)[0123456789]((?<=0)[12346789]|(?<=1)[0156789]|(?<=2)[012345689]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[012356789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[01247]|(?<=9)[01])|(?<=5)[01234568]((?<=0)[123456]|(?<=1)[0123456789]|(?<=2)[013567]|(?<=3)[01246789]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[01345]|(?<=8)[56])|(?<=6)[0123456]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[012346789]|(?<=4)[012345679]|(?<=5)[12345679]|(?<=6)[01])|(?<=7)[01]((?<=0)[67]|(?<=1)[24])|(?<=8)[02]((?<=0)[345]|(?<=2)[7])|(?<=9)[01234567]((?<=0)[1]|(?<=1)[012345789]|(?<=2)[01246789]|(?<=3)[012345689]|(?<=4)[0125689]|(?<=5)[0123456789]|(?<=6)[012346789]|(?<=7)[034]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1678]|(?<=1)[012345689]|(?<=2)[014578]|(?<=3)[0126789]|(?<=4)[12346789]|(?<=5)[0123479]|(?<=6)[01234578]|(?<=7)[012345789]|(?<=8)[0145789]|(?<=9)[1])|(?<=1)[01]((?<=0)[1234789]|(?<=1)[1245])|(?<=2)[0345678]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[01246789]|(?<=6)[012345]|(?<=7)[023456789]|(?<=8)[12345])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[01245689]|(?<=5)[034689]|(?<=6)[01234789]|(?<=7)[0123456789])|(?<=4)[0123456789]((?<=0)[12]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[0123789]|(?<=5)[01234589]|(?<=6)[0256789]|(?<=7)[0123456789]|(?<=8)[02345689]|(?<=9)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[679]|(?<=2)[0345689]|(?<=3)[012345679]|(?<=4)[012345678]|(?<=5)[02349]|(?<=6)[012345789]|(?<=7)[012])|(?<=6)[012]((?<=0)[234567]|(?<=1)[01456]|(?<=2)[5])|(?<=7)[0234567]((?<=0)[145]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345789]|(?<=5)[01234569]|(?<=6)[0149]|(?<=7)[012345678])|(?<=8)[012345678]((?<=0)[12]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[012349]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[23456]|(?<=7)[012345678]|(?<=8)[0234])|(?<=9)[12345]((?<=1)[0123479]|(?<=2)[04589]|(?<=3)[0123678]|(?<=4)[012349]|(?<=5)[13567]))|(?<=2)[023456789]((?<=0)[0123456789]((?<=0)[1269]|(?<=1)[0123456789]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0456789]|(?<=5)[01234689]|(?<=6)[012379]|(?<=7)[456789]|(?<=8)[0123456789]|(?<=9)[01234578])|(?<=2)[0123456789]((?<=0)[1345678]|(?<=1)[456789]|(?<=2)[01356]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[0345678]|(?<=6)[012345689]|(?<=7)[12345789]|(?<=8)[01245689]|(?<=9)[234578])|(?<=3)[012345678]((?<=0)[15]|(?<=1)[123469]|(?<=2)[013456]|(?<=3)[04689]|(?<=4)[013456789]|(?<=5)[123456789]|(?<=6)[0123567]|(?<=7)[0345689]|(?<=8)[0])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[0134789]|(?<=2)[012345678]|(?<=3)[1234689]|(?<=4)[0123456789]|(?<=5)[012489]|(?<=6)[0123456789]|(?<=7)[13456789]|(?<=8)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[01236]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[01345678]|(?<=6)[013578]|(?<=7)[0123])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[0123578]|(?<=2)[12456789]|(?<=3)[0134589]|(?<=4)[02349]|(?<=5)[056]|(?<=6)[1345678]|(?<=7)[0123457]|(?<=8)[124589]|(?<=9)[012345])|(?<=7)[01]((?<=0)[123467]|(?<=1)[12])|(?<=8)[0123456789]((?<=0)[136789]|(?<=1)[012456789]|(?<=2)[012345789]|(?<=3)[012356789]|(?<=4)[1234689]|(?<=5)[01234689]|(?<=6)[012345789]|(?<=7)[012456789]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[1235678]|(?<=1)[02456789]|(?<=2)[01234678]|(?<=3)[01234589]|(?<=4)[01236789]|(?<=5)[012346789]|(?<=6)[012345679]|(?<=7)[0245679]|(?<=8)[234578]|(?<=9)[02456789]))|(?<=3)[013456789]((?<=0)[0123456789]((?<=0)[5]|(?<=1)[012345679]|(?<=2)[013568]|(?<=3)[01346789]|(?<=4)[012345789]|(?<=5)[012356]|(?<=6)[0189]|(?<=7)[0123479]|(?<=8)[04789]|(?<=9)[01])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[013467]|(?<=5)[5])|(?<=3)[03456789]((?<=0)[134]|(?<=3)[023469]|(?<=4)[1345789]|(?<=5)[012379]|(?<=6)[12356789]|(?<=7)[3679]|(?<=8)[0123456789]|(?<=9)[0])|(?<=4)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[0135678]|(?<=5)[012346789]|(?<=6)[012356789]|(?<=7)[1234])|(?<=5)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[1256789]|(?<=6)[013567])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[013678]|(?<=4)[058]|(?<=5)[03456]|(?<=6)[02345]|(?<=7)[0345])|(?<=7)[0345678]((?<=0)[13]|(?<=3)[025689]|(?<=4)[02345678]|(?<=5)[0158]|(?<=6)[034679]|(?<=7)[0145]|(?<=8)[0123457])|(?<=8)[02345678]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[03479]|(?<=4)[0156789]|(?<=5)[012357]|(?<=6)[0236789]|(?<=7)[0346789]|(?<=8)[02])|(?<=9)[03456]((?<=0)[1]|(?<=3)[2345679]|(?<=4)[012345]|(?<=5)[01234567]|(?<=6)[0124567]))|(?<=4)[0145678]((?<=0)[0123456789]((?<=0)[1]|(?<=1)[12456789]|(?<=2)[012489]|(?<=3)[04567]|(?<=4)[08]|(?<=5)[02345678]|(?<=6)[012345678]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[023678])|(?<=1)[0123456]((?<=0)[125689]|(?<=1)[012346789]|(?<=2)[03456789]|(?<=3)[012346789]|(?<=4)[5679]|(?<=5)[012345678]|(?<=6)[134567])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[13456789]|(?<=6)[1356789]|(?<=7)[01345679]|(?<=8)[012345679]|(?<=9)[012346789])|(?<=5)[0]((?<=0)[134567])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[023458]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[01478]|(?<=7)[0123469]|(?<=8)[123689])|(?<=7)[023456789]((?<=0)[1]|(?<=2)[0234568]|(?<=3)[034589]|(?<=4)[012345678]|(?<=5)[02569]|(?<=6)[123579]|(?<=7)[012689]|(?<=8)[01348]|(?<=9)[0])|(?<=8)[034567]((?<=0)[14]|(?<=3)[0123456]|(?<=4)[01234789]|(?<=5)[0456789]|(?<=6)[1235678]|(?<=7)[034]))|(?<=5)[012345678]((?<=0)[012345678]((?<=0)[1]|(?<=1)[0134678]|(?<=2)[03456]|(?<=3)[24579]|(?<=4)[0136789]|(?<=5)[0123489]|(?<=6)[123456789]|(?<=7)[2456789]|(?<=8)[012345])|(?<=1)[0]((?<=0)[19])|(?<=2)[01345678]((?<=0)[123]|(?<=1)[56]|(?<=3)[0123679]|(?<=4)[034678]|(?<=5)[01456789]|(?<=6)[012345]|(?<=7)[045689]|(?<=8)[01234567])|(?<=3)[023456]((?<=0)[15]|(?<=2)[012345679]|(?<=3)[023456789]|(?<=4)[045789]|(?<=5)[0145]|(?<=6)[0])|(?<=4)[0345678]((?<=0)[19]|(?<=3)[689]|(?<=4)[013469]|(?<=5)[23679]|(?<=6)[123468]|(?<=7)[039]|(?<=8)[346])|(?<=5)[023456789]((?<=0)[1]|(?<=2)[9]|(?<=3)[456]|(?<=4)[1238]|(?<=5)[025679]|(?<=6)[04567]|(?<=7)[01]|(?<=8)[0234689]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[1345689]|(?<=1)[012346789]|(?<=2)[02345679]|(?<=3)[01234578]|(?<=4)[0146789]|(?<=5)[02345678]|(?<=6)[012346789]|(?<=7)[24569]|(?<=8)[0125689]|(?<=9)[02])|(?<=7)[0123456789]((?<=0)[245678]|(?<=1)[0123457]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0124567]|(?<=5)[2345679]|(?<=6)[01246789]|(?<=7)[012345789]|(?<=8)[13456789]|(?<=9)[013])|(?<=8)[019]((?<=0)[1234679]|(?<=1)[0]|(?<=9)[7]))|(?<=6)[012456789]((?<=0)[0123456789]((?<=0)[2678]|(?<=1)[02345678]|(?<=2)[0134567]|(?<=3)[012359]|(?<=4)[0123456789]|(?<=5)[023468]|(?<=6)[012467]|(?<=7)[01235689]|(?<=8)[035678]|(?<=9)[0123457])|(?<=1)[016]((?<=0)[1234569]|(?<=1)[1258]|(?<=6)[0])|(?<=2)[0125]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013467]|(?<=5)[1])|(?<=4)[012345]((?<=0)[12346789]|(?<=1)[123456789]|(?<=2)[2345789]|(?<=3)[124689]|(?<=4)[0129]|(?<=5)[1])|(?<=5)[012345]((?<=0)[1236789]|(?<=1)[0245678]|(?<=2)[01234678]|(?<=3)[123456789]|(?<=4)[012346789]|(?<=5)[024])|(?<=6)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[12])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[0123467]|(?<=2)[045]|(?<=3)[2345689]|(?<=4)[0123689]|(?<=5)[1345678]|(?<=6)[012379]|(?<=7)[012356789]|(?<=8)[0123])|(?<=8)[034567]((?<=0)[1]|(?<=3)[034589]|(?<=4)[023569]|(?<=5)[012346789]|(?<=6)[012345689]|(?<=7)[0123])|(?<=9)[034567]((?<=0)[1]|(?<=3)[02356789]|(?<=4)[012345689]|(?<=5)[1235689]|(?<=6)[01234678]|(?<=7)[0]))|(?<=7)[0123456789]((?<=0)[01234567]((?<=0)[1234589]|(?<=1)[0236789]|(?<=2)[012345689]|(?<=3)[0156789]|(?<=4)[12579]|(?<=5)[0123456789]|(?<=6)[01235678]|(?<=7)[01234])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0124789]|(?<=2)[02347]|(?<=3)[1234578]|(?<=4)[0234679]|(?<=5)[0124569])|(?<=2)[01236]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013678]|(?<=3)[025]|(?<=6)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[0234567]|(?<=4)[01245679]|(?<=5)[1234567]|(?<=6)[0134])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0678]|(?<=2)[023578]|(?<=3)[0126789]|(?<=4)[123456789]|(?<=5)[012456789]|(?<=6)[04678]|(?<=7)[034568]|(?<=8)[0123457]|(?<=9)[012])|(?<=5)[012345678]((?<=0)[125]|(?<=1)[012345689]|(?<=2)[01234569]|(?<=3)[0]|(?<=4)[345678]|(?<=5)[0234679]|(?<=6)[01345678]|(?<=7)[02345689]|(?<=8)[134])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[12356789]|(?<=3)[1245789]|(?<=4)[023456789]|(?<=5)[01346789]|(?<=6)[0134579]|(?<=7)[12345])|(?<=7)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[123678]|(?<=6)[124])|(?<=8)[0345678]((?<=0)[1]|(?<=3)[1456789]|(?<=4)[0123469]|(?<=5)[0134579]|(?<=6)[012345789]|(?<=7)[016789]|(?<=8)[02])|(?<=9)[05]((?<=0)[1]|(?<=5)[01234]))|(?<=8)[013456789]((?<=0)[01234567]((?<=0)[1234578]|(?<=1)[0456789]|(?<=2)[023589]|(?<=3)[01346789]|(?<=4)[01245678]|(?<=5)[056789]|(?<=6)[123456789]|(?<=7)[0123])|(?<=1)[012345678]((?<=0)[245678]|(?<=1)[01234678]|(?<=2)[23478]|(?<=3)[012345678]|(?<=4)[247]|(?<=5)[247]|(?<=6)[4]|(?<=7)[8]|(?<=8)[23])|(?<=3)[012345678]((?<=0)[134579]|(?<=1)[03456789]|(?<=2)[0123456789]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[01245789]|(?<=6)[01245678]|(?<=7)[01256789]|(?<=8)[012])|(?<=4)[0123456]((?<=0)[12345679]|(?<=1)[03456789]|(?<=2)[0123489]|(?<=3)[01346789]|(?<=4)[012345678]|(?<=5)[02345678]|(?<=6)[01234567])|(?<=5)[01238]((?<=0)[2345678]|(?<=1)[02467]|(?<=2)[01234678]|(?<=3)[12]|(?<=8)[8])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[12345678]|(?<=4)[01234789]|(?<=5)[1234589]|(?<=6)[012345679])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[023456789]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[12356789]|(?<=6)[013456789]|(?<=7)[01346789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13]|(?<=1)[02345678]|(?<=2)[012345678]|(?<=3)[12345678]|(?<=4)[012345679]|(?<=5)[02345689]|(?<=6)[01234569]|(?<=7)[012345689]|(?<=8)[123])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[023456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[02456789]|(?<=6)[01467]|(?<=7)[0123456789]|(?<=8)[012]))|(?<=9)[0123]((?<=0)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[02346789]|(?<=4)[0123456])|(?<=1)[0234567]((?<=0)[1]|(?<=2)[01235789]|(?<=3)[0123458]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[12356789]|(?<=7)[01])|(?<=2)[012]((?<=0)[1]|(?<=1)[01246789]|(?<=2)[01])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1345679]|(?<=4)[0135678]|(?<=5)[012345678]|(?<=6)[01567])))|(?<=7)[0123456789]((?<=0)[01345678]((?<=0)[03456789]((?<=0)[12356]|(?<=3)[0126789]|(?<=4)[01379]|(?<=5)[0123678]|(?<=6)[2578]|(?<=7)[012569]|(?<=8)[0234567]|(?<=9)[0124])|(?<=1)[12346]((?<=1)[23456789]|(?<=2)[123456789]|(?<=3)[019]|(?<=4)[8]|(?<=6)[3])|(?<=3)[013456789]((?<=0)[1]|(?<=1)[0]|(?<=3)[9]|(?<=4)[0123456]|(?<=5)[23456789]|(?<=6)[034]|(?<=7)[23457]|(?<=8)[0]|(?<=9)[0123457])|(?<=4)[0234567]((?<=0)[123]|(?<=2)[0267]|(?<=3)[135678]|(?<=4)[123456789]|(?<=5)[012345678]|(?<=6)[0123456]|(?<=7)[1])|(?<=5)[0123456789]((?<=0)[13678]|(?<=1)[023456789]|(?<=2)[02345689]|(?<=3)[1234578]|(?<=4)[1234689]|(?<=5)[01245689]|(?<=6)[03]|(?<=7)[05678]|(?<=8)[01234569]|(?<=9)[12])|(?<=6)[0123456]((?<=0)[1579]|(?<=1)[15]|(?<=2)[9]|(?<=3)[01234789]|(?<=4)[0345678]|(?<=5)[0123456789]|(?<=6)[0123589])|(?<=7)[0123456789]((?<=0)[6]|(?<=1)[012459]|(?<=2)[123569]|(?<=3)[0234679]|(?<=4)[034789]|(?<=5)[02345679]|(?<=6)[0123479]|(?<=7)[02345678]|(?<=8)[02356789]|(?<=9)[1])|(?<=8)[0123]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[05]|(?<=3)[6]))|(?<=1)[012346789]((?<=0)[012345678]((?<=0)[12346789]|(?<=1)[689]|(?<=2)[134789]|(?<=3)[01234789]|(?<=4)[03456789]|(?<=5)[125]|(?<=6)[013456789]|(?<=7)[0123589]|(?<=8)[2])|(?<=1)[012]((?<=0)[13456789]|(?<=1)[012589]|(?<=2)[9])|(?<=2)[0123456789]((?<=0)[1239]|(?<=1)[289]|(?<=2)[0235679]|(?<=3)[0234578]|(?<=4)[12357]|(?<=5)[013469]|(?<=6)[0134689]|(?<=7)[025679]|(?<=8)[026]|(?<=9)[125])|(?<=3)[01234567]((?<=0)[123]|(?<=1)[6]|(?<=2)[0235678]|(?<=3)[013469]|(?<=4)[012356]|(?<=5)[013456789]|(?<=6)[026789]|(?<=7)[1358])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[01456789]|(?<=2)[23456789]|(?<=3)[0234589]|(?<=4)[1679]|(?<=5)[0245679]|(?<=6)[12356789]|(?<=7)[23459]|(?<=8)[0356]|(?<=9)[7])|(?<=6)[034567]((?<=0)[123]|(?<=3)[01589]|(?<=4)[023467]|(?<=5)[1234589]|(?<=6)[0123567]|(?<=7)[0145678])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0124568]|(?<=3)[0]|(?<=4)[02345789]|(?<=5)[12389]|(?<=6)[23456]|(?<=7)[02])|(?<=8)[023456]((?<=0)[1]|(?<=2)[023567]|(?<=3)[123456789]|(?<=4)[12567]|(?<=5)[12345789]|(?<=6)[012456])|(?<=9)[012345679]((?<=0)[19]|(?<=1)[3]|(?<=2)[1239]|(?<=3)[357]|(?<=4)[0123459]|(?<=5)[0236789]|(?<=6)[0124589]|(?<=7)[0123]|(?<=9)[89]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[012345679]|(?<=2)[0123456789]|(?<=3)[01245689]|(?<=4)[01245678]|(?<=5)[1235789]|(?<=6)[013456789]|(?<=7)[0234569]|(?<=8)[012345678]|(?<=9)[9])|(?<=1)[0123456789]((?<=0)[1234678]|(?<=1)[012346789]|(?<=2)[012356789]|(?<=3)[012345679]|(?<=4)[0123]|(?<=5)[02367]|(?<=6)[056789]|(?<=7)[035689]|(?<=8)[0123]|(?<=9)[9])|(?<=2)[012]((?<=0)[1245679]|(?<=1)[012]|(?<=2)[37])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[135]|(?<=2)[02456789]|(?<=3)[0123589]|(?<=4)[012678]|(?<=5)[01234589]|(?<=6)[0456789]|(?<=7)[0234679]|(?<=8)[34679]|(?<=9)[012456])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[012345679]|(?<=2)[12456789]|(?<=3)[012345678]|(?<=4)[01234579]|(?<=5)[03456789]|(?<=6)[0124679]|(?<=7)[0123689]|(?<=8)[2])|(?<=5)[012345678]((?<=0)[1]|(?<=1)[23579]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[02346]|(?<=5)[03456]|(?<=6)[012456789]|(?<=7)[1236789]|(?<=8)[13457])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[15679]|(?<=2)[34689]|(?<=3)[012345689]|(?<=4)[012458]|(?<=5)[01358]|(?<=6)[0123689]|(?<=7)[02579]|(?<=8)[023567])|(?<=7)[01234567]((?<=0)[134]|(?<=1)[2345789]|(?<=2)[1279]|(?<=3)[024689]|(?<=4)[024579]|(?<=5)[12368]|(?<=6)[012489]|(?<=7)[346])|(?<=8)[023456]((?<=0)[12]|(?<=2)[1346789]|(?<=3)[02345789]|(?<=4)[0123567]|(?<=5)[12345678]|(?<=6)[035])|(?<=9)[012345]((?<=0)[13458]|(?<=1)[6]|(?<=2)[13678]|(?<=3)[02345678]|(?<=4)[013456789]|(?<=5)[0125689]))|(?<=3)[01456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123468]|(?<=4)[012345789]|(?<=5)[0123456789]|(?<=6)[123456789]|(?<=7)[012345789]|(?<=8)[02469]|(?<=9)[02356789])|(?<=1)[01234567]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[012789]|(?<=3)[012459]|(?<=4)[1259]|(?<=5)[019]|(?<=6)[0259]|(?<=7)[039])|(?<=4)[02345689]((?<=0)[1]|(?<=2)[5]|(?<=3)[023456789]|(?<=4)[012346789]|(?<=5)[035689]|(?<=6)[013]|(?<=8)[178]|(?<=9)[1])|(?<=5)[0234567]((?<=0)[1357]|(?<=2)[0136789]|(?<=3)[0123789]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[02456789]|(?<=7)[0123])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0245678]|(?<=3)[289]|(?<=4)[124567]|(?<=5)[014589]|(?<=6)[012346789]|(?<=7)[3])|(?<=7)[01234567]((?<=0)[135]|(?<=1)[6789]|(?<=2)[0246789]|(?<=3)[013456789]|(?<=4)[1234679]|(?<=5)[03456789]|(?<=6)[0123468]|(?<=7)[0123])|(?<=8)[03456]((?<=0)[1]|(?<=3)[2458]|(?<=4)[012348]|(?<=5)[1235789]|(?<=6)[0])|(?<=9)[03456]((?<=0)[1]|(?<=3)[123789]|(?<=4)[245679]|(?<=5)[01]|(?<=6)[0]))|(?<=4)[013456789]((?<=0)[012345678]((?<=0)[12368]|(?<=1)[01245679]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[1245678]|(?<=5)[012345689]|(?<=6)[012368]|(?<=7)[012345789]|(?<=8)[012345])|(?<=1)[012347]((?<=0)[345678]|(?<=1)[0245679]|(?<=2)[06789]|(?<=3)[01234567]|(?<=4)[56]|(?<=7)[1])|(?<=3)[034567]((?<=0)[1]|(?<=3)[0123789]|(?<=4)[0234679]|(?<=5)[02489]|(?<=6)[013456789]|(?<=7)[0])|(?<=4)[0234567]((?<=0)[13]|(?<=2)[12356789]|(?<=3)[01245678]|(?<=4)[12567]|(?<=5)[012456789]|(?<=6)[0234789]|(?<=7)[0127])|(?<=5)[0234567]((?<=0)[1]|(?<=2)[12358]|(?<=3)[0134568]|(?<=4)[03679]|(?<=5)[2345678]|(?<=6)[0123579]|(?<=7)[0124678])|(?<=6)[0345]((?<=0)[14]|(?<=3)[012367]|(?<=4)[013467]|(?<=5)[0123])|(?<=7)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[01345678]|(?<=4)[013578]|(?<=5)[034569]|(?<=6)[0146])|(?<=8)[02345678]((?<=0)[14]|(?<=2)[045679]|(?<=3)[01234679]|(?<=4)[0234589]|(?<=5)[01245679]|(?<=6)[0456789]|(?<=7)[12358]|(?<=8)[0134])|(?<=9)[03456]((?<=0)[12]|(?<=3)[0125679]|(?<=4)[0123456789]|(?<=5)[1345679]|(?<=6)[023456]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[12679]|(?<=1)[039]|(?<=2)[0123458]|(?<=3)[2345689]|(?<=4)[012348]|(?<=5)[0124678]|(?<=6)[01235789]|(?<=7)[01245678]|(?<=8)[012789]|(?<=9)[02348])|(?<=1)[012345678]((?<=0)[123459]|(?<=1)[045679]|(?<=2)[4567]|(?<=3)[2457]|(?<=4)[012346789]|(?<=5)[023456789]|(?<=6)[01345679]|(?<=7)[23]|(?<=8)[0129])|(?<=2)[012345678]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[03456789]|(?<=3)[012345678]|(?<=4)[01346789]|(?<=5)[1234]|(?<=6)[1]|(?<=7)[0]|(?<=8)[7])|(?<=3)[9]((?<=9)[0])|(?<=4)[0123456789]((?<=0)[1279]|(?<=1)[012345678]|(?<=2)[01234689]|(?<=3)[123456789]|(?<=4)[0126789]|(?<=5)[01234579]|(?<=6)[0289]|(?<=7)[0123456789]|(?<=8)[0126789]|(?<=9)[01234567])|(?<=5)[0567]((?<=0)[13]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[01234])|(?<=6)[03456789]((?<=0)[12345]|(?<=3)[01389]|(?<=4)[0123457]|(?<=5)[01246789]|(?<=6)[12789]|(?<=7)[012]|(?<=8)[01234679]|(?<=9)[1234])|(?<=7)[0156789]((?<=0)[123456789]|(?<=1)[1]|(?<=5)[012456789]|(?<=6)[023456]|(?<=7)[01389]|(?<=8)[0234589]|(?<=9)[012])|(?<=8)[034568]((?<=0)[13]|(?<=3)[13589]|(?<=4)[0456789]|(?<=5)[01235689]|(?<=6)[0125]|(?<=8)[46])|(?<=9)[02345678]((?<=0)[134]|(?<=2)[5689]|(?<=3)[0123456789]|(?<=4)[1234689]|(?<=5)[1469]|(?<=6)[01245689]|(?<=7)[2345679]|(?<=8)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[125689]|(?<=1)[012345678]|(?<=2)[01238]|(?<=3)[134569]|(?<=4)[013489]|(?<=5)[01234589]|(?<=6)[0134567]|(?<=7)[01378]|(?<=8)[245678]|(?<=9)[23])|(?<=1)[012345678]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[03679]|(?<=3)[123457]|(?<=4)[08]|(?<=5)[5]|(?<=6)[4]|(?<=7)[79]|(?<=8)[02])|(?<=2)[01234567]((?<=0)[135789]|(?<=1)[0]|(?<=2)[5678]|(?<=3)[03489]|(?<=4)[0145789]|(?<=5)[0123589]|(?<=6)[12345678]|(?<=7)[0123])|(?<=3)[015678]((?<=0)[125689]|(?<=1)[01]|(?<=5)[147]|(?<=6)[034567]|(?<=7)[0123479]|(?<=8)[0489])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[4679]|(?<=3)[01235679]|(?<=4)[2345689]|(?<=5)[02345789]|(?<=6)[023469]|(?<=7)[012456]|(?<=8)[13467]|(?<=9)[01])|(?<=5)[012345679]((?<=0)[124]|(?<=1)[1389]|(?<=2)[0234578]|(?<=3)[014789]|(?<=4)[123489]|(?<=5)[04679]|(?<=6)[15679]|(?<=7)[0134789]|(?<=9)[6789])|(?<=6)[23456789]((?<=2)[12346789]|(?<=3)[0123456789]|(?<=4)[0123589]|(?<=5)[01234567]|(?<=6)[014567]|(?<=7)[013689]|(?<=8)[0125679]|(?<=9)[0123])|(?<=7)[019]((?<=0)[145678]|(?<=1)[012]|(?<=9)[8])|(?<=8)[023456789]((?<=0)[12]|(?<=2)[0134578]|(?<=3)[12467]|(?<=4)[124589]|(?<=5)[2346789]|(?<=6)[124569]|(?<=7)[01234578]|(?<=8)[024578]|(?<=9)[0])|(?<=9)[0345]((?<=0)[1234589]|(?<=3)[02345679]|(?<=4)[0135]|(?<=5)[013578]))|(?<=7)[023456789]((?<=0)[0123456789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345689])|(?<=2)[0]((?<=0)[4])|(?<=3)[0123456789]((?<=0)[12346]|(?<=1)[68]|(?<=2)[0678]|(?<=3)[145689]|(?<=4)[01256]|(?<=5)[01456789]|(?<=6)[02345789]|(?<=7)[123456789]|(?<=8)[01245689]|(?<=9)[6])|(?<=4)[0123456789]((?<=0)[167]|(?<=1)[245789]|(?<=2)[023689]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[013456789]|(?<=8)[012345689]|(?<=9)[348])|(?<=5)[0123456789]((?<=0)[234567]|(?<=1)[0145789]|(?<=2)[013]|(?<=3)[012345689]|(?<=4)[1567]|(?<=5)[0145]|(?<=6)[01234568]|(?<=7)[13578]|(?<=8)[01234567]|(?<=9)[0178])|(?<=6)[123456]((?<=1)[12345679]|(?<=2)[234579]|(?<=3)[02]|(?<=4)[02]|(?<=5)[015679]|(?<=6)[012345])|(?<=7)[01]((?<=0)[1235678]|(?<=1)[3])|(?<=8)[0345678]((?<=0)[12378]|(?<=3)[013567]|(?<=4)[035]|(?<=5)[235679]|(?<=6)[1345678]|(?<=7)[1235689]|(?<=8)[02])|(?<=9)[056789]((?<=0)[145]|(?<=5)[0147]|(?<=6)[0123489]|(?<=7)[013456789]|(?<=8)[234678]|(?<=9)[01345]))|(?<=8)[0123456789]((?<=0)[01234567]((?<=0)[123456789]|(?<=1)[012345679]|(?<=2)[123456789]|(?<=3)[9]|(?<=4)[013456]|(?<=5)[0256789]|(?<=6)[12345679]|(?<=7)[0123456])|(?<=1)[0123456]((?<=0)[124789]|(?<=1)[12346789]|(?<=2)[12345]|(?<=3)[023]|(?<=4)[012345678]|(?<=5)[012459]|(?<=6)[01234])|(?<=2)[0123456]((?<=0)[12345789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[02345789]|(?<=5)[0123456789]|(?<=6)[01346])|(?<=3)[3456789]((?<=3)[02689]|(?<=4)[0123479]|(?<=5)[1235789]|(?<=6)[012389]|(?<=7)[012345679]|(?<=8)[0234579]|(?<=9)[013])|(?<=4)[01]((?<=0)[12456789]|(?<=1)[0123456789])|(?<=5)[0123456789]((?<=0)[134]|(?<=1)[6]|(?<=2)[016]|(?<=3)[56789]|(?<=4)[01235789]|(?<=5)[02789]|(?<=6)[012345679]|(?<=7)[023456789]|(?<=8)[02345689]|(?<=9)[0123456789])|(?<=6)[012345678]((?<=0)[256789]|(?<=1)[0123456789]|(?<=2)[01234689]|(?<=3)[12345689]|(?<=4)[0123458]|(?<=5)[023456789]|(?<=6)[01234569]|(?<=7)[0124567]|(?<=8)[1])|(?<=7)[012345]((?<=0)[12345]|(?<=1)[279]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[12456789]|(?<=5)[012346789])|(?<=8)[02345678]((?<=0)[12]|(?<=2)[789]|(?<=3)[02346789]|(?<=4)[0123]|(?<=5)[012]|(?<=6)[01]|(?<=7)[012379]|(?<=8)[013456])|(?<=9)[3456]((?<=3)[123458]|(?<=4)[0123456789]|(?<=5)[0134679]|(?<=6)[23]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[012345689]|(?<=2)[124579]|(?<=3)[1234569]|(?<=4)[0123456]|(?<=5)[12346789]|(?<=6)[1234568]|(?<=7)[02389]|(?<=8)[012345678]|(?<=9)[12345678])|(?<=1)[012]((?<=0)[12346789]|(?<=1)[0189]|(?<=2)[14])|(?<=2)[023456]((?<=0)[1]|(?<=2)[035679]|(?<=3)[01345679]|(?<=4)[0134578]|(?<=5)[01256789]|(?<=6)[1])|(?<=3)[12345678]((?<=1)[12346]|(?<=2)[234569]|(?<=3)[0169]|(?<=4)[234567]|(?<=5)[01356789]|(?<=6)[034679]|(?<=7)[01236789]|(?<=8)[0123])|(?<=4)[012]((?<=0)[123467]|(?<=1)[0123456]|(?<=2)[34])|(?<=5)[0123456]((?<=0)[1234568]|(?<=1)[012789]|(?<=2)[0156789]|(?<=3)[023456789]|(?<=4)[013456789]|(?<=5)[36]|(?<=6)[0123567])|(?<=6)[09]((?<=0)[123567]|(?<=9)[9])|(?<=7)[012345678]((?<=0)[13567]|(?<=1)[3489]|(?<=2)[01]|(?<=3)[0134589]|(?<=4)[1234589]|(?<=5)[245689]|(?<=6)[1234569]|(?<=7)[02678]|(?<=8)[0123589])|(?<=8)[2345]((?<=2)[1]|(?<=3)[02456789]|(?<=4)[2356789]|(?<=5)[12345])|(?<=9)[0123]((?<=0)[12345678]|(?<=1)[12568]|(?<=2)[024578]|(?<=3)[024568])))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[01234]((?<=0)[23457]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[013]|(?<=4)[5])|(?<=1)[0123]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[0123456789]|(?<=3)[012345678])|(?<=2)[0123469]((?<=0)[2345679]|(?<=1)[01245689]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[1679]|(?<=6)[046]|(?<=9)[034])|(?<=3)[01]((?<=0)[12345]|(?<=1)[0])|(?<=4)[0123456789]((?<=0)[13]|(?<=1)[9]|(?<=2)[012345678]|(?<=3)[02345689]|(?<=4)[02346789]|(?<=5)[12345679]|(?<=6)[1356789]|(?<=7)[01345689]|(?<=8)[01237]|(?<=9)[8])|(?<=5)[012345]((?<=0)[134]|(?<=1)[0234567]|(?<=2)[014568]|(?<=3)[0245678]|(?<=4)[02345679]|(?<=5)[0])|(?<=6)[012345]((?<=0)[123]|(?<=1)[0125]|(?<=2)[01234]|(?<=3)[14]|(?<=4)[02345689]|(?<=5)[01234])|(?<=7)[02345]((?<=0)[15]|(?<=2)[01236789]|(?<=3)[1234567]|(?<=4)[012345679]|(?<=5)[0145789])|(?<=8)[012346]((?<=0)[1245789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[0123456]|(?<=4)[0]|(?<=6)[01234])|(?<=9)[01235]((?<=0)[23456789]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[089]|(?<=5)[1]))|(?<=1)[0123456]((?<=0)[0123456789]((?<=0)[1345678]|(?<=1)[9]|(?<=2)[01234579]|(?<=3)[0369]|(?<=4)[01345679]|(?<=5)[0245789]|(?<=6)[23479]|(?<=7)[1367]|(?<=8)[12479]|(?<=9)[012])|(?<=1)[02345]((?<=0)[1]|(?<=2)[012345689]|(?<=3)[0123678]|(?<=4)[01346789]|(?<=5)[1245])|(?<=2)[012345]((?<=0)[1]|(?<=1)[012]|(?<=2)[012345678]|(?<=3)[0235679]|(?<=4)[012348]|(?<=5)[123])|(?<=3)[023]((?<=0)[13]|(?<=2)[01345678]|(?<=3)[01245])|(?<=4)[0123]((?<=0)[13]|(?<=1)[0135689]|(?<=2)[23456789]|(?<=3)[012345])|(?<=5)[02]((?<=0)[134567]|(?<=2)[01234567])|(?<=6)[012345]((?<=0)[1]|(?<=1)[0125]|(?<=2)[01345]|(?<=3)[01235789]|(?<=4)[012356789]|(?<=5)[0234567]))|(?<=2)[0123456789]((?<=0)[05678]((?<=0)[1579]|(?<=5)[01234589]|(?<=6)[013]|(?<=7)[023]|(?<=8)[1234])|(?<=1)[9]((?<=9)[0])|(?<=2)[0124]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[1234579]|(?<=4)[0234])|(?<=3)[0123]((?<=0)[1]|(?<=1)[0]|(?<=2)[1234579]|(?<=3)[12456])|(?<=4)[012345]((?<=0)[1]|(?<=1)[0124]|(?<=2)[012368]|(?<=3)[012345]|(?<=4)[0123]|(?<=5)[0])|(?<=5)[012]((?<=0)[1]|(?<=1)[023456]|(?<=2)[03])|(?<=6)[0234]((?<=0)[149]|(?<=2)[0]|(?<=3)[0356789]|(?<=4)[0234689])|(?<=7)[0123]((?<=0)[1]|(?<=1)[012468]|(?<=2)[013579]|(?<=3)[012])|(?<=8)[034]((?<=0)[1]|(?<=3)[123456789]|(?<=4)[245])|(?<=9)[0234]((?<=0)[1]|(?<=2)[2359]|(?<=3)[023456789]|(?<=4)[12345]))|(?<=3)[012345678]((?<=0)[012]((?<=0)[1]|(?<=1)[1234]|(?<=2)[5])|(?<=1)[012]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[01234678])|(?<=2)[012345678]((?<=0)[12349]|(?<=1)[01234578]|(?<=2)[013678]|(?<=3)[23456789]|(?<=4)[13456]|(?<=5)[012345]|(?<=6)[123]|(?<=7)[124678]|(?<=8)[13567])|(?<=3)[012345]((?<=0)[12]|(?<=1)[123468]|(?<=2)[01234578]|(?<=3)[02345678]|(?<=4)[01246789]|(?<=5)[02345])|(?<=4)[0123456]((?<=0)[1246]|(?<=1)[4]|(?<=2)[012345789]|(?<=3)[134568]|(?<=4)[02345689]|(?<=5)[01245]|(?<=6)[023456789])|(?<=5)[02345]((?<=0)[1]|(?<=2)[023456]|(?<=3)[035679]|(?<=4)[0123456789]|(?<=5)[2345])|(?<=6)[012345678]((?<=0)[2457]|(?<=1)[0125679]|(?<=2)[2346789]|(?<=3)[12346789]|(?<=4)[12345678]|(?<=5)[014567]|(?<=6)[0169]|(?<=7)[0267]|(?<=8)[67])|(?<=7)[012]((?<=0)[234569]|(?<=1)[2346]|(?<=2)[05])|(?<=8)[01234567]((?<=0)[12345689]|(?<=1)[012345]|(?<=2)[1234567]|(?<=3)[02345679]|(?<=4)[0123456789]|(?<=5)[01245678]|(?<=6)[0146789]|(?<=7)[012346]))|(?<=4)[0134567]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[034578]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[012345679]|(?<=7)[01234568]|(?<=8)[012345678]|(?<=9)[2345678])|(?<=1)[012358]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[013489]|(?<=3)[8]|(?<=5)[0]|(?<=8)[0])|(?<=3)[01234]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[01])|(?<=4)[01]((?<=0)[13458]|(?<=1)[4])|(?<=5)[01234]((?<=0)[1]|(?<=1)[123568]|(?<=2)[01235689]|(?<=3)[012345679]|(?<=4)[02])|(?<=6)[023456]((?<=0)[1246]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[023456789]|(?<=5)[1234567]|(?<=6)[023457])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[01234567]|(?<=7)[0234569]|(?<=8)[01234]|(?<=9)[0]))|(?<=5)[01235679]((?<=0)[0123458]((?<=0)[346789]|(?<=1)[23456789]|(?<=2)[012346789]|(?<=3)[123457]|(?<=4)[0123458]|(?<=5)[0134]|(?<=8)[3567])|(?<=1)[123479]((?<=1)[89]|(?<=2)[01238]|(?<=3)[125789]|(?<=4)[012357]|(?<=7)[23]|(?<=9)[1234])|(?<=2)[012345689]((?<=0)[123456789]|(?<=1)[0235]|(?<=2)[456]|(?<=3)[346]|(?<=4)[89]|(?<=5)[013456789]|(?<=6)[023468]|(?<=8)[12346]|(?<=9)[5678])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0]|(?<=2)[012345689]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[0123457]|(?<=7)[1345789]|(?<=8)[12378]|(?<=9)[0256])|(?<=5)[0345]((?<=0)[1]|(?<=3)[01234569]|(?<=4)[0123456]|(?<=5)[01234])|(?<=6)[012345]((?<=0)[12356789]|(?<=1)[013456789]|(?<=2)[012345679]|(?<=3)[012345789]|(?<=4)[013568]|(?<=5)[0348])|(?<=7)[012345]((?<=0)[1456789]|(?<=1)[012345689]|(?<=2)[1346]|(?<=3)[045679]|(?<=4)[12356789]|(?<=5)[0567])|(?<=9)[01234]((?<=0)[12]|(?<=1)[12]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[012]))|(?<=6)[0345]((?<=0)[012345]((?<=0)[1345]|(?<=1)[15678]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[0234567]|(?<=5)[234])|(?<=3)[012345]((?<=0)[135]|(?<=1)[345]|(?<=2)[012345679]|(?<=3)[12345678]|(?<=4)[3]|(?<=5)[1])|(?<=4)[01234]((?<=0)[13469]|(?<=1)[13]|(?<=2)[69]|(?<=3)[12345678]|(?<=4)[012345])|(?<=5)[012345]((?<=0)[2345678]|(?<=1)[01245]|(?<=2)[0]|(?<=3)[58]|(?<=4)[0457]|(?<=5)[6]))|(?<=7)[01345789]((?<=0)[012345678]((?<=0)[1245678]|(?<=1)[012345678]|(?<=2)[0123456789]|(?<=3)[1245678]|(?<=4)[0123456789]|(?<=5)[12369]|(?<=6)[012348]|(?<=7)[02]|(?<=8)[3])|(?<=1)[01245]((?<=0)[12456789]|(?<=1)[0123467]|(?<=2)[01234]|(?<=4)[4]|(?<=5)[1])|(?<=3)[0124567]((?<=0)[15]|(?<=1)[01235679]|(?<=2)[01235678]|(?<=4)[7]|(?<=5)[7]|(?<=6)[45]|(?<=7)[5])|(?<=4)[012569]((?<=0)[12]|(?<=1)[02356789]|(?<=2)[01]|(?<=5)[5]|(?<=6)[1]|(?<=9)[9])|(?<=5)[012345678]((?<=0)[15678]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[0125789]|(?<=4)[034789]|(?<=5)[1234678]|(?<=6)[0245679]|(?<=7)[135789]|(?<=8)[0123])|(?<=7)[012345]((?<=0)[1]|(?<=1)[0123458]|(?<=2)[23489]|(?<=3)[0123456]|(?<=4)[0235679]|(?<=5)[023])|(?<=8)[023]((?<=0)[1]|(?<=2)[01345789]|(?<=3)[012])|(?<=9)[034]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[0123]))|(?<=8)[01234]((?<=0)[012345678]((?<=0)[12345789]|(?<=1)[12]|(?<=2)[0123456789]|(?<=3)[0489]|(?<=4)[0123456789]|(?<=5)[12356]|(?<=6)[135]|(?<=7)[2]|(?<=8)[1])|(?<=1)[0123]((?<=0)[13]|(?<=1)[2345689]|(?<=2)[01456]|(?<=3)[02456])|(?<=2)[0123456]((?<=0)[13]|(?<=1)[0]|(?<=2)[0]|(?<=3)[012]|(?<=4)[024]|(?<=5)[023456]|(?<=6)[0234578])|(?<=3)[012345]((?<=0)[1]|(?<=1)[0124678]|(?<=2)[1345]|(?<=3)[06789]|(?<=4)[0123456789]|(?<=5)[012345])|(?<=4)[0123]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[12467]|(?<=3)[014569]))|(?<=9)[0134578]((?<=0)[012345678]((?<=0)[1234578]|(?<=1)[012345789]|(?<=2)[0125679]|(?<=3)[01249]|(?<=4)[023456789]|(?<=5)[24]|(?<=6)[01]|(?<=7)[04]|(?<=8)[1456])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[035789]|(?<=2)[0123489]|(?<=3)[014589]|(?<=4)[123456789]|(?<=5)[68]|(?<=6)[169]|(?<=7)[89]|(?<=8)[3]|(?<=9)[1])|(?<=3)[01]((?<=0)[1]|(?<=1)[01456789])|(?<=4)[01234569]((?<=0)[2345689]|(?<=1)[01234589]|(?<=2)[0123456789]|(?<=3)[01346789]|(?<=4)[012456789]|(?<=5)[01]|(?<=6)[0]|(?<=9)[6])|(?<=5)[0125]((?<=0)[123689]|(?<=1)[0129]|(?<=2)[13]|(?<=5)[7])|(?<=7)[0]((?<=0)[13456])|(?<=8)[01238]((?<=0)[1]|(?<=1)[5]|(?<=2)[0123568]|(?<=3)[012345]|(?<=8)[3])))|(?<=9)[0123456789]((?<=0)[02345678]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[26789]|(?<=6)[123456789]|(?<=7)[1379]|(?<=8)[9]|(?<=9)[45])|(?<=2)[0123456789]((?<=0)[1]|(?<=1)[012]|(?<=2)[012]|(?<=3)[02]|(?<=4)[0125789]|(?<=5)[045]|(?<=6)[02356]|(?<=7)[024578]|(?<=8)[0]|(?<=9)[0123])|(?<=3)[0]((?<=0)[12345])|(?<=4)[0]((?<=0)[12345])|(?<=5)[0]((?<=0)[123456])|(?<=6)[02345678]((?<=0)[123456]|(?<=2)[013]|(?<=3)[0189]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=7)[012345]((?<=0)[1346]|(?<=1)[023567]|(?<=2)[03]|(?<=3)[12]|(?<=4)[0234567]|(?<=5)[5])|(?<=8)[01234]((?<=0)[2345678]|(?<=1)[0345]|(?<=2)[2]|(?<=3)[1]|(?<=4)[0]))|(?<=1)[0123456789]((?<=0)[01234]((?<=0)[1678]|(?<=1)[016]|(?<=2)[04]|(?<=3)[0]|(?<=4)[026])|(?<=1)[02]((?<=0)[1345678]|(?<=2)[5])|(?<=2)[01]((?<=0)[12345678]|(?<=1)[04])|(?<=3)[0123456789]((?<=0)[123467]|(?<=1)[16]|(?<=2)[01456]|(?<=3)[015]|(?<=4)[02345]|(?<=5)[012456]|(?<=6)[01247]|(?<=7)[17]|(?<=8)[147]|(?<=9)[0])|(?<=4)[0123]((?<=0)[12356]|(?<=1)[1]|(?<=2)[3]|(?<=3)[6])|(?<=5)[0]((?<=0)[12456])|(?<=6)[0]((?<=0)[1245678])|(?<=7)[0123456789]((?<=0)[12689]|(?<=1)[01]|(?<=2)[234]|(?<=3)[012379]|(?<=4)[014568]|(?<=5)[02459]|(?<=6)[12345678]|(?<=7)[0356]|(?<=8)[0469]|(?<=9)[012])|(?<=8)[0]((?<=0)[13])|(?<=9)[01345678]((?<=0)[1256]|(?<=1)[0134567]|(?<=3)[1245]|(?<=4)[1258]|(?<=5)[0]|(?<=6)[23]|(?<=7)[78]|(?<=8)[0]))|(?<=2)[012345678]((?<=0)[0123456789]((?<=0)[34789]|(?<=1)[0149]|(?<=2)[01456789]|(?<=3)[67]|(?<=4)[0]|(?<=5)[456789]|(?<=6)[0145679]|(?<=7)[0158]|(?<=8)[12346]|(?<=9)[1236])|(?<=1)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[012346789]|(?<=3)[0124569]|(?<=4)[057]|(?<=5)[45]|(?<=6)[1]|(?<=7)[39]|(?<=8)[2])|(?<=2)[012345678]((?<=0)[13]|(?<=1)[01]|(?<=2)[02357]|(?<=3)[013469]|(?<=4)[01239]|(?<=5)[012346789]|(?<=6)[024678]|(?<=7)[0345678]|(?<=8)[012345])|(?<=3)[0123456789]((?<=0)[145789]|(?<=1)[0134567]|(?<=2)[0124578]|(?<=3)[2356789]|(?<=4)[124567]|(?<=5)[024689]|(?<=6)[34589]|(?<=7)[1234678]|(?<=8)[24569]|(?<=9)[1245789])|(?<=4)[01]((?<=0)[14578]|(?<=1)[015])|(?<=5)[0123456789]((?<=0)[13456789]|(?<=1)[8]|(?<=2)[1]|(?<=3)[0269]|(?<=4)[34589]|(?<=5)[1357]|(?<=6)[1237]|(?<=7)[01]|(?<=8)[234567]|(?<=9)[01256])|(?<=6)[0123456789]((?<=0)[2346]|(?<=1)[02478]|(?<=2)[045679]|(?<=3)[07]|(?<=4)[6789]|(?<=5)[13567]|(?<=6)[0123]|(?<=7)[2356789]|(?<=8)[38]|(?<=9)[1247])|(?<=7)[08]((?<=0)[1345678]|(?<=8)[02])|(?<=8)[0234678]((?<=0)[1245678]|(?<=2)[13]|(?<=3)[1235]|(?<=4)[01345]|(?<=6)[0156789]|(?<=7)[09]|(?<=8)[012367]))|(?<=3)[012345679]((?<=0)[012346]((?<=0)[134]|(?<=1)[0235]|(?<=2)[123]|(?<=3)[0356]|(?<=4)[0123]|(?<=6)[034567])|(?<=1)[01]((?<=0)[135689]|(?<=1)[017])|(?<=2)[0123456789]((?<=0)[12345678]|(?<=1)[02589]|(?<=2)[01234567]|(?<=3)[045789]|(?<=4)[012345679]|(?<=5)[01245678]|(?<=6)[01235678]|(?<=7)[012467]|(?<=8)[03567]|(?<=9)[12])|(?<=3)[01]((?<=0)[1456789]|(?<=1)[1234])|(?<=4)[0123456]((?<=0)[125789]|(?<=1)[0]|(?<=2)[0246789]|(?<=3)[023467]|(?<=4)[0124569]|(?<=5)[0123458]|(?<=6)[0135])|(?<=5)[012345689]((?<=0)[15]|(?<=1)[02346789]|(?<=2)[2346789]|(?<=3)[012456]|(?<=4)[134569]|(?<=5)[0123458]|(?<=6)[0123]|(?<=8)[1]|(?<=9)[1])|(?<=6)[01234567]((?<=0)[12345689]|(?<=1)[01245689]|(?<=2)[012345678]|(?<=3)[01345678]|(?<=4)[01345678]|(?<=5)[0123467]|(?<=6)[02456789]|(?<=7)[035])|(?<=7)[01234]((?<=0)[123456]|(?<=1)[01]|(?<=2)[01235678]|(?<=3)[07]|(?<=4)[01])|(?<=9)[023456]((?<=0)[15678]|(?<=2)[01345678]|(?<=3)[023]|(?<=4)[034]|(?<=5)[0345]|(?<=6)[02]))|(?<=4)[013456789]((?<=0)[01234678]((?<=0)[25]|(?<=1)[04589]|(?<=2)[0124578]|(?<=3)[078]|(?<=4)[0134]|(?<=6)[012356]|(?<=7)[04]|(?<=8)[05679])|(?<=1)[012358]((?<=0)[2345789]|(?<=1)[01245678]|(?<=2)[1234789]|(?<=3)[01234]|(?<=5)[8]|(?<=8)[8])|(?<=3)[0]((?<=0)[13456])|(?<=4)[0]((?<=0)[1234])|(?<=5)[0123456789]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[013568]|(?<=3)[01345689]|(?<=4)[12456789]|(?<=5)[01235689]|(?<=6)[0123456789]|(?<=7)[123456789]|(?<=8)[02356789]|(?<=9)[01256789])|(?<=6)[012]((?<=0)[12356789]|(?<=1)[012389]|(?<=2)[1])|(?<=7)[012]((?<=0)[23456789]|(?<=1)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0234567]((?<=0)[134]|(?<=2)[0234589]|(?<=3)[013789]|(?<=4)[015679]|(?<=5)[012467]|(?<=6)[0345]|(?<=7)[0123]))|(?<=5)[0123456789]((?<=0)[01234567]((?<=0)[2345678]|(?<=1)[0234789]|(?<=2)[03]|(?<=3)[023579]|(?<=4)[1356]|(?<=5)[0134]|(?<=6)[02456]|(?<=7)[0356])|(?<=1)[1234]((?<=1)[01236789]|(?<=2)[0123456789]|(?<=3)[012345689]|(?<=4)[08])|(?<=2)[012345]((?<=0)[2345679]|(?<=1)[01259]|(?<=2)[012345678]|(?<=3)[012367]|(?<=4)[0256789]|(?<=5)[1234578])|(?<=3)[0123456789]((?<=0)[1345679]|(?<=1)[012356789]|(?<=2)[0123456789]|(?<=3)[0345678]|(?<=4)[01568]|(?<=5)[0145678]|(?<=6)[013456789]|(?<=7)[0245679]|(?<=8)[02356789]|(?<=9)[1])|(?<=4)[0123456789]((?<=0)[134579]|(?<=1)[02579]|(?<=2)[012356789]|(?<=3)[0125679]|(?<=4)[12345689]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[0126]|(?<=8)[02568]|(?<=9)[02347])|(?<=5)[0123456789]((?<=0)[13]|(?<=1)[149]|(?<=2)[145678]|(?<=3)[1678]|(?<=4)[02356789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[013]|(?<=8)[579]|(?<=9)[5])|(?<=6)[0123456789]((?<=0)[12345678]|(?<=1)[02345689]|(?<=2)[013456789]|(?<=3)[0123456789]|(?<=4)[012568]|(?<=5)[0123589]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345789])|(?<=7)[01234567]((?<=0)[139]|(?<=1)[3457]|(?<=2)[01268]|(?<=3)[56]|(?<=4)[267]|(?<=5)[78]|(?<=6)[25]|(?<=7)[6])|(?<=8)[12346]((?<=1)[1456789]|(?<=2)[0123456789]|(?<=3)[01234578]|(?<=4)[123]|(?<=6)[4])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[023456789]|(?<=2)[0235689]|(?<=3)[02456789]|(?<=4)[123456789]|(?<=5)[013456789]|(?<=6)[01235689]|(?<=7)[012345789]|(?<=8)[1234678]|(?<=9)[13]))|(?<=6)[01789]((?<=0)[0123456789]((?<=0)[1236789]|(?<=1)[01345679]|(?<=2)[012345789]|(?<=3)[12345789]|(?<=4)[014678]|(?<=5)[012456789]|(?<=6)[12345789]|(?<=7)[134568]|(?<=8)[045678]|(?<=9)[0123467])|(?<=1)[0123456]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0234567]|(?<=4)[0123568]|(?<=5)[05]|(?<=6)[1])|(?<=7)[0123456789]((?<=0)[1345678]|(?<=1)[0234679]|(?<=2)[0256789]|(?<=3)[012478]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[012345689]|(?<=7)[012346789]|(?<=8)[0123569]|(?<=9)[01235679])|(?<=8)[12456]((?<=1)[3456789]|(?<=2)[01256]|(?<=4)[8]|(?<=5)[03789]|(?<=6)[03])|(?<=9)[125]((?<=1)[03567]|(?<=2)[89]|(?<=5)[012]))|(?<=7)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[13456789]|(?<=2)[012346789]|(?<=3)[012345789]|(?<=4)[012589]|(?<=5)[01345678]|(?<=6)[0234578]|(?<=7)[018]|(?<=8)[069])|(?<=1)[01234]((?<=0)[1236789]|(?<=1)[0123456789]|(?<=2)[1234578]|(?<=3)[012345678]|(?<=4)[01456789])|(?<=2)[012356]((?<=0)[12345689]|(?<=1)[0123456789]|(?<=2)[01234579]|(?<=3)[012369]|(?<=5)[8]|(?<=6)[67])|(?<=3)[0123456789]((?<=0)[123456]|(?<=1)[07]|(?<=2)[1245679]|(?<=3)[013568]|(?<=4)[12345678]|(?<=5)[012578]|(?<=6)[012456789]|(?<=7)[01345678]|(?<=8)[01345689]|(?<=9)[01246])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[012345679]|(?<=2)[03469]|(?<=3)[012456789]|(?<=4)[12346789]|(?<=5)[0123456789]|(?<=6)[1235679]|(?<=7)[0136789]|(?<=8)[0146789]|(?<=9)[023456789])|(?<=5)[0234]((?<=0)[1234]|(?<=2)[0234567]|(?<=3)[012456789]|(?<=4)[0134])|(?<=6)[0234]((?<=0)[134]|(?<=2)[01234567]|(?<=3)[023456789]|(?<=4)[01])|(?<=7)[0123456]((?<=0)[12379]|(?<=1)[012]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[1]|(?<=5)[01234689]|(?<=6)[01])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[0234789]|(?<=2)[0345678]|(?<=3)[03456789]|(?<=4)[01234568]|(?<=5)[0679]|(?<=6)[245789]|(?<=7)[034567]|(?<=8)[023456])|(?<=9)[012]((?<=0)[123456789]|(?<=1)[013478]|(?<=2)[0]))|(?<=8)[012345689]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[01249]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[02357]|(?<=5)[012356789]|(?<=6)[58]|(?<=7)[02457]|(?<=8)[7]|(?<=9)[2])|(?<=1)[0123456789]((?<=0)[123456789]|(?<=1)[0256789]|(?<=2)[1256]|(?<=3)[346]|(?<=4)[468]|(?<=5)[458]|(?<=6)[468]|(?<=7)[478]|(?<=8)[8]|(?<=9)[589])|(?<=2)[023456789]((?<=0)[13478]|(?<=2)[01234569]|(?<=3)[02356789]|(?<=4)[01345789]|(?<=5)[01235678]|(?<=6)[0123467]|(?<=7)[0123456789]|(?<=8)[0123468]|(?<=9)[024567])|(?<=3)[0123456789]((?<=0)[345]|(?<=1)[01245]|(?<=2)[01356789]|(?<=3)[012356789]|(?<=4)[02569]|(?<=5)[013456789]|(?<=6)[012345678]|(?<=7)[01234567]|(?<=8)[0123578]|(?<=9)[01246])|(?<=4)[0123469]((?<=0)[23456789]|(?<=1)[68]|(?<=2)[124]|(?<=3)[0389]|(?<=4)[34567]|(?<=6)[567]|(?<=9)[89])|(?<=5)[0123456789]((?<=0)[12356]|(?<=1)[236]|(?<=2)[04678]|(?<=3)[012356789]|(?<=4)[124678]|(?<=5)[0256789]|(?<=6)[02345689]|(?<=7)[0125679]|(?<=8)[0123456789]|(?<=9)[0123567])|(?<=6)[012345678]((?<=0)[12345679]|(?<=1)[01234679]|(?<=2)[01345689]|(?<=3)[12589]|(?<=4)[012345789]|(?<=5)[01]|(?<=6)[012345]|(?<=7)[012345]|(?<=8)[23456])|(?<=8)[0123456]((?<=0)[12]|(?<=1)[12345679]|(?<=2)[12346789]|(?<=3)[0123467]|(?<=4)[013456789]|(?<=5)[012356789]|(?<=6)[02])|(?<=9)[02345]((?<=0)[1238]|(?<=2)[12356]|(?<=3)[023456789]|(?<=4)[01234678]|(?<=5)[0123]))|(?<=9)[0123456789]((?<=0)[01234]((?<=0)[1345689]|(?<=1)[12346789]|(?<=2)[01235679]|(?<=3)[01234679]|(?<=4)[0])|(?<=1)[012345678]((?<=0)[12359]|(?<=1)[013456789]|(?<=2)[12345689]|(?<=3)[013456789]|(?<=4)[01346789]|(?<=5)[0123456789]|(?<=6)[013679]|(?<=7)[013469]|(?<=8)[015])|(?<=2)[0125]((?<=0)[12345678]|(?<=1)[2678]|(?<=2)[34]|(?<=5)[18])|(?<=3)[0234567]((?<=0)[1]|(?<=2)[01234689]|(?<=3)[035678]|(?<=4)[13456789]|(?<=5)[0234679]|(?<=6)[0123]|(?<=7)[1])|(?<=4)[0]((?<=0)[123])|(?<=5)[013456789]((?<=0)[12345678]|(?<=1)[356789]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0123456789]|(?<=6)[13456789]|(?<=7)[123456789]|(?<=8)[01356789]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[23456789]|(?<=1)[012345]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[012345])|(?<=7)[0123456789]((?<=0)[12345679]|(?<=1)[24]|(?<=2)[012345679]|(?<=3)[02346789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012345678]|(?<=8)[012345689]|(?<=9)[01])|(?<=8)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[02356]|(?<=4)[01]|(?<=5)[0])|(?<=9)[012]((?<=0)[13]|(?<=1)[89]|(?<=2)[1235679])))))$"), + EE: new RegExp("^([798154362]((?<=7)[614503298]((?<=6)[6978014235]((?<=6)[012]((?<=0)[798536]|(?<=1)[0467123958]|(?<=2)[314206])|(?<=9)[012]((?<=0)[168923574]|(?<=1)[7826901345]|(?<=2)[14325])|(?<=7)[01]((?<=0)[476938251]|(?<=1)[351082469])|(?<=8)[0]((?<=0)[56741])|(?<=0)[012]((?<=0)[913768425]|(?<=1)[9706534821]|(?<=2)[3120])|(?<=1)[0]((?<=0)[7134256])|(?<=4)[01]((?<=0)[645327198]|(?<=1)[456310827])|(?<=2)[10]((?<=1)[8905341672]|(?<=0)[431297586])|(?<=3)[01]((?<=0)[146523978]|(?<=1)[781362045])|(?<=5)[0]((?<=0)[65]))|(?<=1)[025413]((?<=0)[0128675]((?<=0)[48735912]|(?<=1)[063254178]|(?<=2)[043]|(?<=8)[210]|(?<=6)[7658493]|(?<=7)[20134]|(?<=5)[7286543])|(?<=2)[108]((?<=1)[10]|(?<=0)[17253469]|(?<=8)[0])|(?<=5)[01]((?<=0)[67548321]|(?<=1)[1203])|(?<=4)[018]((?<=0)[913628745]|(?<=1)[120]|(?<=8)[0])|(?<=1)[2018]((?<=2)[403125]|(?<=0)[29381457]|(?<=1)[802194]|(?<=8)[30])|(?<=3)[0]((?<=0)[193826754]))|(?<=4)[801267345]((?<=8)[01]((?<=0)[65798]|(?<=1)[2106435])|(?<=0)[102]((?<=1)[1792634058]|(?<=0)[1945678]|(?<=2)[04123])|(?<=1)[12]((?<=1)[7346125]|(?<=2)[120])|(?<=2)[2130]((?<=2)[0293468157]|(?<=1)[6213074589]|(?<=3)[0]|(?<=0)[961527348])|(?<=6)[30214]((?<=3)[0268195374]|(?<=0)[47918625]|(?<=2)[3695714028]|(?<=1)[2964075318]|(?<=4)[012])|(?<=7)[012]((?<=0)[31246789]|(?<=1)[6307928145]|(?<=2)[01])|(?<=3)[01]((?<=0)[7569]|(?<=1)[5246310])|(?<=4)[01]((?<=0)[39571428]|(?<=1)[20516347])|(?<=5)[0]((?<=0)[321]))|(?<=5)[320451]((?<=3)[1023]((?<=1)[7493601852]|(?<=0)[396152748]|(?<=2)[130426975]|(?<=3)[01])|(?<=2)[012]((?<=0)[123574968]|(?<=1)[0213746895]|(?<=2)[3425016])|(?<=0)[0312]((?<=0)[376849521]|(?<=3)[014586723]|(?<=1)[7654930281]|(?<=2)[4138609527])|(?<=4)[01]((?<=0)[419287365]|(?<=1)[3761054])|(?<=5)[01]((?<=0)[13578496]|(?<=1)[2603487159])|(?<=1)[012]((?<=0)[732416859]|(?<=1)[6793284015]|(?<=2)[6301524]))|(?<=0)[164325]((?<=1)[0128]((?<=0)[916483752]|(?<=1)[065341728]|(?<=2)[2130]|(?<=8)[102])|(?<=6)[0]((?<=0)[423965781])|(?<=4)[018]((?<=0)[174396852]|(?<=1)[412350]|(?<=8)[2])|(?<=3)[01]((?<=0)[86437912]|(?<=1)[01453786])|(?<=2)[10]((?<=1)[1]|(?<=0)[12])|(?<=5)[01]((?<=0)[245913687]|(?<=1)[1]))|(?<=3)[4056312]((?<=4)[01]((?<=0)[295813764]|(?<=1)[1365024])|(?<=0)[012]((?<=0)[231475698]|(?<=1)[9782430651]|(?<=2)[57321064])|(?<=5)[10]((?<=1)[04123]|(?<=0)[24875163])|(?<=6)[10]((?<=1)[150342]|(?<=0)[136492587])|(?<=3)[01]((?<=0)[842169573]|(?<=1)[0])|(?<=1)[01]((?<=0)[451839276]|(?<=1)[201])|(?<=2)[01]((?<=0)[251374689]|(?<=1)[1302]))|(?<=2)[072583146]((?<=0)[01]((?<=0)[97615423]|(?<=1)[01])|(?<=7)[25106]((?<=2)[0]|(?<=5)[896275413]|(?<=1)[823169574]|(?<=0)[1]|(?<=6)[1230])|(?<=2)[3410]((?<=3)[41032]|(?<=4)[3421650]|(?<=1)[031245]|(?<=0)[1])|(?<=5)[01]((?<=0)[178942635]|(?<=1)[3074216])|(?<=8)[10]((?<=1)[4132]|(?<=0)[5462731])|(?<=3)[10]((?<=1)[102]|(?<=0)[264581739])|(?<=1)[0]((?<=0)[231])|(?<=4)[10]((?<=1)[012]|(?<=0)[457316289])|(?<=6)[01]((?<=0)[678251394]|(?<=1)[354012]))|(?<=9)[513048762]((?<=5)[1432]((?<=1)[841726359]|(?<=4)[02134]|(?<=3)[210]|(?<=2)[9251460387])|(?<=1)[01]((?<=0)[1]|(?<=1)[210])|(?<=3)[2031]((?<=2)[430125]|(?<=0)[312]|(?<=3)[3]|(?<=1)[342])|(?<=0)[706152]((?<=7)[1302]|(?<=0)[62415938]|(?<=6)[8573021946]|(?<=1)[9215034678]|(?<=5)[13204]|(?<=2)[3201])|(?<=4)[01]((?<=0)[83967514]|(?<=1)[23791085])|(?<=8)[05314]((?<=0)[654178]|(?<=5)[2]|(?<=3)[0167]|(?<=1)[4325108]|(?<=4)[31])|(?<=7)[041]((?<=0)[51263894]|(?<=4)[435218]|(?<=1)[0])|(?<=6)[0134265]((?<=0)[67143258]|(?<=1)[071489365]|(?<=3)[10324]|(?<=4)[12034]|(?<=2)[0123]|(?<=6)[1]|(?<=5)[4])|(?<=2)[10]((?<=1)[31627845]|(?<=0)[1]))|(?<=8)[42301]((?<=4)[102]((?<=1)[5238901647]|(?<=0)[214596378]|(?<=2)[3021])|(?<=2)[0241356]((?<=0)[5637124]|(?<=2)[6371508492]|(?<=4)[6945283170]|(?<=1)[927581634]|(?<=3)[7590148263]|(?<=5)[6809735241]|(?<=6)[1032])|(?<=3)[01]((?<=0)[2415]|(?<=1)[38572461])|(?<=0)[1203]((?<=1)[358497612]|(?<=2)[0173962854]|(?<=0)[341]|(?<=3)[34102])|(?<=1)[012]((?<=0)[123]|(?<=1)[946183752]|(?<=2)[012])))|(?<=9)[34201]((?<=3)[048365217]((?<=0)[0]((?<=0)[1])|(?<=4)[45306127]((?<=4)[1047859236]|(?<=5)[4136205]|(?<=3)[421568973]|(?<=0)[1]|(?<=6)[781524369]|(?<=1)[214735]|(?<=2)[1]|(?<=7)[01])|(?<=8)[158724639]((?<=1)[2156038497]|(?<=5)[17926385]|(?<=8)[4861253970]|(?<=7)[241635]|(?<=2)[60]|(?<=4)[8437651]|(?<=6)[10]|(?<=3)[3296157]|(?<=9)[102])|(?<=3)[13240]((?<=1)[3461729]|(?<=3)[01]|(?<=2)[8253714096]|(?<=4)[312]|(?<=0)[1])|(?<=6)[13240]((?<=1)[2645371]|(?<=3)[54231]|(?<=2)[321]|(?<=4)[53241]|(?<=0)[1])|(?<=5)[201365]((?<=2)[6847395102]|(?<=0)[1]|(?<=1)[21]|(?<=3)[0]|(?<=6)[12]|(?<=5)[1])|(?<=2)[14235076]((?<=1)[36457812]|(?<=4)[0754682391]|(?<=2)[34021]|(?<=3)[528743196]|(?<=5)[10]|(?<=0)[1]|(?<=7)[1]|(?<=6)[10])|(?<=1)[012]((?<=0)[1]|(?<=1)[31245]|(?<=2)[12])|(?<=7)[310254]((?<=3)[45123]|(?<=1)[5471236]|(?<=0)[1]|(?<=2)[53241]|(?<=5)[324156]|(?<=4)[125436]))|(?<=4)[7126354]((?<=7)[5643210]((?<=5)[9576034128]|(?<=6)[4136520]|(?<=4)[196824375]|(?<=3)[24013]|(?<=2)[4783691025]|(?<=1)[564172839]|(?<=0)[21])|(?<=1)[42501637]((?<=4)[923154678]|(?<=2)[0792463851]|(?<=5)[13405]|(?<=0)[12]|(?<=1)[347862591]|(?<=6)[12]|(?<=3)[01]|(?<=7)[1])|(?<=2)[62543017]((?<=6)[23145]|(?<=2)[35124]|(?<=5)[9347015682]|(?<=4)[4820371659]|(?<=3)[823791546]|(?<=0)[12]|(?<=1)[691532847]|(?<=7)[2431])|(?<=6)[5134620]((?<=5)[195283746]|(?<=1)[321]|(?<=3)[6873549102]|(?<=4)[201]|(?<=6)[01]|(?<=2)[95826341]|(?<=0)[1])|(?<=3)[04231]((?<=0)[12]|(?<=4)[357264801]|(?<=2)[3102]|(?<=3)[783645291]|(?<=1)[258671394])|(?<=5)[324501]((?<=3)[719352648]|(?<=2)[2310]|(?<=4)[205431]|(?<=5)[321]|(?<=0)[1]|(?<=1)[3589271])|(?<=4)[01324]((?<=0)[1]|(?<=1)[984637512]|(?<=3)[43215]|(?<=2)[231504]|(?<=4)[32]))|(?<=2)[32140]((?<=3)[61240357]((?<=6)[931476582]|(?<=1)[319478526]|(?<=2)[2301]|(?<=4)[1639840572]|(?<=0)[21]|(?<=3)[47562318]|(?<=5)[01]|(?<=7)[0])|(?<=2)[06324157]((?<=0)[12]|(?<=6)[534701698]|(?<=3)[043526187]|(?<=2)[8954603271]|(?<=4)[961473258]|(?<=1)[728536914]|(?<=5)[9872403156]|(?<=7)[0])|(?<=1)[6270314]((?<=6)[314256]|(?<=2)[712496358]|(?<=7)[2148379]|(?<=0)[21]|(?<=3)[820365147]|(?<=1)[1684253]|(?<=4)[1])|(?<=4)[12]((?<=1)[1423]|(?<=2)[1204])|(?<=0)[2054136]((?<=2)[8164329750]|(?<=0)[321]|(?<=5)[8916472035]|(?<=4)[781652493]|(?<=1)[251743986]|(?<=3)[0]|(?<=6)[0]))|(?<=0)[547362189]((?<=5)[01]((?<=0)[35248679]|(?<=1)[0])|(?<=4)[03452168]((?<=0)[931752486]|(?<=3)[3980256714]|(?<=4)[46083125]|(?<=5)[3246185907]|(?<=2)[230175846]|(?<=1)[2049361578]|(?<=6)[013]|(?<=8)[10])|(?<=7)[210]((?<=2)[0]|(?<=1)[9541068372]|(?<=0)[1342])|(?<=3)[0]((?<=0)[3254])|(?<=6)[023145]((?<=0)[1526]|(?<=2)[5794062318]|(?<=3)[120564]|(?<=1)[246753]|(?<=4)[45106327]|(?<=5)[1])|(?<=2)[21304]((?<=2)[271864035]|(?<=1)[154923]|(?<=3)[1782430956]|(?<=0)[165278]|(?<=4)[160532847])|(?<=1)[0213]((?<=0)[372518496]|(?<=2)[357601248]|(?<=1)[836154207]|(?<=3)[102])|(?<=8)[102]((?<=1)[438627519]|(?<=0)[5142786]|(?<=2)[0])|(?<=9)[01]((?<=0)[1234]|(?<=1)[1]))|(?<=1)[0231]((?<=0)[102]((?<=1)[74213658]|(?<=0)[84156372]|(?<=2)[01])|(?<=2)[1302]((?<=1)[285319476]|(?<=3)[1320]|(?<=0)[14263875]|(?<=2)[01])|(?<=3)[01]((?<=0)[158629743]|(?<=1)[04213])|(?<=1)[01]((?<=0)[436251]|(?<=1)[425])))|(?<=8)[80756]((?<=8)[23014]((?<=2)[13024]((?<=1)[0259637481]|(?<=3)[7286945130]|(?<=0)[968412375]|(?<=2)[8314709562]|(?<=4)[0])|(?<=3)[102]((?<=1)[1357890462]|(?<=0)[518396274]|(?<=2)[2413605])|(?<=0)[0]((?<=0)[5432])|(?<=1)[012]((?<=0)[629135874]|(?<=1)[9021837465]|(?<=2)[0])|(?<=4)[13204]((?<=1)[6532471980]|(?<=3)[1805729463]|(?<=2)[1260735849]|(?<=0)[712943586]|(?<=4)[021]))|(?<=0)[0]((?<=0)[41239]((?<=4)[7521304]|(?<=1)[3258176490]|(?<=2)[0258349761]|(?<=3)[8463590712]|(?<=9)[98]))|(?<=7)[63724510]((?<=6)[0231]((?<=0)[589134276]|(?<=2)[7245309186]|(?<=3)[6302145]|(?<=1)[9170845362])|(?<=3)[10]((?<=1)[210]|(?<=0)[982531467])|(?<=7)[0]((?<=0)[1])|(?<=2)[23014]((?<=2)[4956301728]|(?<=3)[3062814957]|(?<=0)[372816954]|(?<=1)[3982016745]|(?<=4)[3120])|(?<=4)[0]((?<=0)[6321475])|(?<=5)[0]((?<=0)[1])|(?<=1)[0]((?<=0)[1])|(?<=0)[0]((?<=0)[1]))|(?<=5)[0]((?<=0)[01]((?<=0)[837291564]|(?<=1)[01]))|(?<=6)[873064251]((?<=8)[102]((?<=1)[6935087214]|(?<=0)[712953684]|(?<=2)[10])|(?<=7)[0]((?<=0)[534])|(?<=3)[0]((?<=0)[34561])|(?<=0)[012]((?<=0)[168493725]|(?<=1)[9084672351]|(?<=2)[10])|(?<=6)[0]((?<=0)[124635])|(?<=4)[01]((?<=0)[893152476]|(?<=1)[01])|(?<=2)[10]((?<=1)[10543267]|(?<=0)[921876534])|(?<=5)[0]((?<=0)[639581274])|(?<=1)[0]((?<=0)[239478156])))|(?<=1)[031259]((?<=0)[149630]((?<=1)[12345]((?<=1)[231984756]|(?<=2)[5391076428]|(?<=3)[3745208691]|(?<=4)[2514673908]|(?<=5)[210534968])|(?<=4)[1]((?<=1)[125436])|(?<=9)[12]((?<=1)[926387451]|(?<=2)[120])|(?<=6)[12]((?<=1)[612853794]|(?<=2)[10])|(?<=3)[12]((?<=1)[893147526]|(?<=2)[013])|(?<=0)[0]((?<=0)[1]))|(?<=3)[85964]((?<=8)[1]((?<=1)[6712])|(?<=5)[12]((?<=1)[693215874]|(?<=2)[014523])|(?<=9)[1]((?<=1)[497213568])|(?<=6)[21]((?<=2)[7461382095]|(?<=1)[913285764])|(?<=4)[21]((?<=2)[6510423]|(?<=1)[859641237]))|(?<=1)[7692341]((?<=7)[1]((?<=1)[231])|(?<=6)[12]((?<=1)[583942176]|(?<=2)[153420])|(?<=9)[1]((?<=1)[4321])|(?<=2)[1]((?<=1)[38724516])|(?<=3)[1]((?<=1)[13762458])|(?<=4)[1]((?<=1)[1245637])|(?<=1)[0]((?<=0)[1]))|(?<=2)[0169]((?<=0)[1]((?<=1)[54132])|(?<=1)[1]((?<=1)[123])|(?<=6)[21]((?<=2)[0]|(?<=1)[867341952])|(?<=9)[1]((?<=1)[631452789]))|(?<=5)[01]((?<=0)[450931267]((?<=4)[7981]|(?<=5)[095]|(?<=0)[79]|(?<=9)[8594]|(?<=3)[0]|(?<=1)[5]|(?<=2)[6]|(?<=6)[5]|(?<=7)[1])|(?<=1)[7968]((?<=7)[02]|(?<=9)[903]|(?<=6)[15]|(?<=8)[58]))|(?<=9)[0]((?<=0)[8]((?<=8)[6])))|(?<=5)[01]((?<=0)[4136705]((?<=4)[10]((?<=1)[20163457]|(?<=0)[6497538])|(?<=1)[10]((?<=1)[130452]|(?<=0)[5673984])|(?<=3)[0]((?<=0)[43])|(?<=6)[0]((?<=0)[365471])|(?<=7)[0]((?<=0)[587463])|(?<=0)[95]((?<=9)[0613]|(?<=5)[0])|(?<=5)[0]((?<=0)[1]))|(?<=1)[0]((?<=0)[10]((?<=1)[170]|(?<=0)[76395481])))|(?<=4)[513649028]((?<=5)[2143056]((?<=2)[02134]((?<=0)[425961378]|(?<=2)[5271640983]|(?<=1)[0756324819]|(?<=3)[9740182356]|(?<=4)[314])|(?<=1)[0]((?<=0)[68971])|(?<=4)[143052]((?<=1)[0712368945]|(?<=4)[5681329407]|(?<=3)[5328690471]|(?<=0)[163852479]|(?<=5)[01]|(?<=2)[6528149730])|(?<=3)[021]((?<=0)[316279485]|(?<=2)[01]|(?<=1)[6802475139])|(?<=0)[10]((?<=1)[10]|(?<=0)[653279148])|(?<=5)[0]((?<=0)[1])|(?<=6)[0]((?<=0)[1]))|(?<=1)[517203]((?<=5)[35469]((?<=3)[68235714]|(?<=5)[120376458]|(?<=4)[261354789]|(?<=6)[8]|(?<=9)[789513])|(?<=1)[01]((?<=0)[21634579]|(?<=1)[524031])|(?<=7)[102]((?<=1)[5438627]|(?<=0)[21]|(?<=2)[6])|(?<=2)[01]((?<=0)[631749258]|(?<=1)[145302])|(?<=0)[01]((?<=0)[397546812]|(?<=1)[2031])|(?<=3)[021]((?<=0)[932815467]|(?<=2)[03214]|(?<=1)[97254810]))|(?<=3)[40123]((?<=4)[0]((?<=0)[12438657])|(?<=0)[03]((?<=0)[41356]|(?<=3)[7])|(?<=1)[32]((?<=3)[13548762]|(?<=2)[5421])|(?<=2)[29]((?<=2)[125]|(?<=9)[9])|(?<=3)[0123]((?<=0)[345819672]|(?<=1)[10]|(?<=2)[1]|(?<=3)[1]))|(?<=6)[26035714]((?<=2)[01234]((?<=0)[741298653]|(?<=1)[6349271085]|(?<=2)[9827054316]|(?<=3)[014523]|(?<=4)[1])|(?<=6)[31204]((?<=3)[5802176943]|(?<=1)[5732801964]|(?<=2)[0842713956]|(?<=0)[472613985]|(?<=4)[210])|(?<=0)[2013]((?<=2)[8146097253]|(?<=0)[216349758]|(?<=1)[8615420973]|(?<=3)[0])|(?<=3)[2013]((?<=2)[591486032]|(?<=0)[125967348]|(?<=1)[9875320641]|(?<=3)[012])|(?<=5)[01]((?<=0)[546327198]|(?<=1)[4861539072])|(?<=7)[10]((?<=1)[103452]|(?<=0)[618729453])|(?<=1)[0]((?<=0)[56781])|(?<=4)[0]((?<=0)[1]))|(?<=4)[04312]((?<=0)[3201]((?<=3)[3715402]|(?<=2)[5864902137]|(?<=0)[314857629]|(?<=1)[5937408612])|(?<=4)[210]((?<=2)[0]|(?<=1)[4758029613]|(?<=0)[258634197])|(?<=3)[102]((?<=1)[27603154]|(?<=0)[87695]|(?<=2)[0])|(?<=1)[0]((?<=0)[69758])|(?<=2)[0123]((?<=0)[318249756]|(?<=1)[9201475836]|(?<=2)[7846301295]|(?<=3)[0]))|(?<=9)[2405136]((?<=2)[120]((?<=1)[37126089]|(?<=2)[308146572]|(?<=0)[56479318])|(?<=4)[012]((?<=0)[7648935]|(?<=1)[6573124809]|(?<=2)[351260])|(?<=0)[01]((?<=0)[38724695]|(?<=1)[20413])|(?<=5)[0]((?<=0)[93672854])|(?<=1)[102]((?<=1)[5793084162]|(?<=0)[6859743]|(?<=2)[07426135])|(?<=3)[102]((?<=1)[5162879043]|(?<=0)[6489753]|(?<=2)[31024])|(?<=6)[0]((?<=0)[43]))|(?<=0)[12]((?<=1)[021]((?<=0)[451963728]|(?<=2)[01]|(?<=1)[4275861093])|(?<=2)[34]((?<=3)[231]|(?<=4)[1]))|(?<=2)[1230]((?<=1)[1023]((?<=1)[5638290174]|(?<=0)[21438796]|(?<=2)[120]|(?<=3)[0])|(?<=2)[01]((?<=0)[86947532]|(?<=1)[31])|(?<=3)[012]((?<=0)[423519687]|(?<=1)[7934268150]|(?<=2)[13204])|(?<=0)[0]((?<=0)[1573642]))|(?<=8)[052431]((?<=0)[0213]((?<=0)[1658347]|(?<=2)[9614823057]|(?<=1)[8743569102]|(?<=3)[021])|(?<=5)[201]((?<=2)[0243561]|(?<=0)[37215698]|(?<=1)[0942536178])|(?<=2)[120]((?<=1)[6297048153]|(?<=2)[20341]|(?<=0)[57863429])|(?<=4)[10234]((?<=1)[3506487192]|(?<=0)[9675]|(?<=2)[8651370429]|(?<=3)[6834015792]|(?<=4)[635410])|(?<=3)[0]((?<=0)[3954678])|(?<=1)[0]((?<=0)[5634])))|(?<=3)[10]((?<=1)[02]((?<=0)[2]((?<=2)[6715243])|(?<=2)[2]((?<=2)[1]))|(?<=0)[376251]((?<=3)[239]((?<=2)[45316782]|(?<=3)[312]|(?<=9)[5])|(?<=7)[2]((?<=2)[12])|(?<=6)[20]((?<=2)[16345]|(?<=0)[1])|(?<=2)[2]((?<=2)[12])|(?<=5)[0]((?<=0)[76345])|(?<=1)[09]((?<=0)[3]|(?<=9)[87])))|(?<=6)[1032489756]((?<=1)[60127534]((?<=6)[102]((?<=1)[6479053281]|(?<=0)[123847596]|(?<=2)[102])|(?<=0)[01]((?<=0)[578324916]|(?<=1)[45173206])|(?<=1)[021]((?<=0)[29345678]|(?<=2)[0]|(?<=1)[8049253761])|(?<=2)[10]((?<=1)[71054632]|(?<=0)[52789436])|(?<=7)[01]((?<=0)[39827465]|(?<=1)[543102])|(?<=5)[0]((?<=0)[78634591])|(?<=3)[10]((?<=1)[539682714]|(?<=0)[175839426])|(?<=4)[10]((?<=1)[021]|(?<=0)[349826715]))|(?<=0)[145326]((?<=1)[0]((?<=0)[43])|(?<=4)[2013]((?<=2)[8674231059]|(?<=0)[5978346]|(?<=1)[4128397605]|(?<=3)[21])|(?<=5)[42031]((?<=4)[376891025]|(?<=2)[4123980765]|(?<=0)[58349276]|(?<=3)[9024578163]|(?<=1)[1896204753])|(?<=3)[0]((?<=0)[42653])|(?<=2)[1203]((?<=1)[1247580639]|(?<=2)[2865430917]|(?<=0)[851234679]|(?<=3)[120])|(?<=6)[0]((?<=0)[384625]))|(?<=3)[03425761]((?<=0)[10]((?<=1)[021]|(?<=0)[89726543])|(?<=3)[0]((?<=0)[3576489])|(?<=4)[01]((?<=0)[468975]|(?<=1)[4706839152])|(?<=2)[2013]((?<=2)[3940175862]|(?<=0)[37294685]|(?<=1)[1846705932]|(?<=3)[0])|(?<=5)[10]((?<=1)[40213]|(?<=0)[38725649])|(?<=7)[01]((?<=0)[63759428]|(?<=1)[0])|(?<=6)[01]((?<=0)[432581796]|(?<=1)[01])|(?<=1)[102]((?<=1)[5206398471]|(?<=0)[17839625]|(?<=2)[3102]))|(?<=2)[2354106]((?<=2)[021]((?<=0)[27639584]|(?<=2)[201]|(?<=1)[2376045891])|(?<=3)[10]((?<=1)[487163025]|(?<=0)[8943576])|(?<=5)[01]((?<=0)[37586942]|(?<=1)[102])|(?<=4)[10]((?<=1)[34210]|(?<=0)[71982654])|(?<=1)[012]((?<=0)[7589436]|(?<=1)[0319256748]|(?<=2)[120])|(?<=0)[1320]((?<=1)[0729861453]|(?<=3)[41032]|(?<=2)[2390175486]|(?<=0)[487569])|(?<=6)[0]((?<=0)[123]))|(?<=4)[4205361]((?<=4)[102]((?<=1)[6872914035]|(?<=0)[73156298]|(?<=2)[472380165])|(?<=2)[3201]((?<=3)[213]|(?<=2)[2573804961]|(?<=0)[7364985]|(?<=1)[4178390265])|(?<=0)[0123]((?<=0)[1574986]|(?<=1)[0576842193]|(?<=2)[1745263098]|(?<=3)[64073521])|(?<=5)[0]((?<=0)[3465])|(?<=3)[012]((?<=0)[198745326]|(?<=1)[874321965]|(?<=2)[0])|(?<=6)[10]((?<=1)[842763015]|(?<=0)[456978])|(?<=1)[0123]((?<=0)[372541698]|(?<=1)[5830417926]|(?<=2)[196327584]|(?<=3)[10]))|(?<=8)[35176204]((?<=3)[10]((?<=1)[3651240]|(?<=0)[457896])|(?<=5)[01]((?<=0)[872546]|(?<=1)[31])|(?<=1)[01]((?<=0)[5689473]|(?<=1)[5142630])|(?<=7)[01]((?<=0)[5947836]|(?<=1)[3562401])|(?<=6)[10]((?<=1)[715364892]|(?<=0)[645871])|(?<=2)[021]((?<=0)[54867931]|(?<=2)[92341]|(?<=1)[987])|(?<=0)[10]((?<=1)[1046532]|(?<=0)[764598])|(?<=4)[01]((?<=0)[5473829]|(?<=1)[10]))|(?<=9)[37150642]((?<=3)[01]((?<=0)[239576481]|(?<=1)[0])|(?<=7)[0123]((?<=0)[345196728]|(?<=1)[4530629178]|(?<=2)[6529014837]|(?<=3)[12073564])|(?<=1)[01]((?<=0)[74932586]|(?<=1)[103452])|(?<=5)[120]((?<=1)[0651279483]|(?<=2)[021]|(?<=0)[638257914])|(?<=0)[0]((?<=0)[2431])|(?<=6)[0128]((?<=0)[234718965]|(?<=1)[81972043]|(?<=2)[0]|(?<=8)[0213])|(?<=4)[10]((?<=1)[10]|(?<=0)[234957681])|(?<=2)[0]((?<=0)[21]))|(?<=7)[324501]((?<=3)[01]((?<=0)[273549186]|(?<=1)[10])|(?<=2)[10]((?<=1)[42567103]|(?<=0)[7836945])|(?<=4)[01]((?<=0)[354897]|(?<=1)[58167420])|(?<=5)[10]((?<=1)[2615430]|(?<=0)[6354987])|(?<=0)[01]((?<=0)[736549]|(?<=1)[2013])|(?<=1)[10]((?<=1)[1]|(?<=0)[54872936]))|(?<=5)[0653142]((?<=0)[10342]((?<=1)[534807269]|(?<=0)[671854293]|(?<=3)[3517984602]|(?<=4)[214503]|(?<=2)[4923708651])|(?<=6)[01]((?<=0)[6745389]|(?<=1)[0])|(?<=5)[2610354]((?<=2)[052146973]|(?<=6)[65]|(?<=1)[8249105376]|(?<=0)[362897541]|(?<=3)[264380571]|(?<=5)[032541]|(?<=4)[3674582910])|(?<=3)[6382704195]((?<=6)[8714235096]|(?<=3)[5714368029]|(?<=8)[9852134670]|(?<=2)[8074196253]|(?<=7)[8329410576]|(?<=0)[143296785]|(?<=4)[0236894175]|(?<=1)[0539127468]|(?<=9)[01]|(?<=5)[487592063])|(?<=1)[9576241038]((?<=9)[6145293780]|(?<=5)[2401685739]|(?<=7)[1928465730]|(?<=6)[5879413620]|(?<=2)[548216903]|(?<=4)[7213096485]|(?<=1)[806743159]|(?<=0)[712965834]|(?<=3)[6072138549]|(?<=8)[2049873615])|(?<=4)[01]((?<=0)[836215479]|(?<=1)[304512])|(?<=2)[0146253]((?<=0)[61738459]|(?<=1)[826904735]|(?<=4)[6795034182]|(?<=6)[0]|(?<=2)[3791642850]|(?<=5)[6382490175]|(?<=3)[597021436]))|(?<=6)[61453072]((?<=6)[12034]((?<=1)[7843659]|(?<=2)[0892514736]|(?<=0)[234]|(?<=3)[857126439]|(?<=4)[120])|(?<=1)[102]((?<=1)[058273146]|(?<=0)[386142795]|(?<=2)[0])|(?<=4)[102]((?<=1)[460981257]|(?<=0)[7493851]|(?<=2)[052413])|(?<=5)[01]((?<=0)[475698]|(?<=1)[7935826014])|(?<=3)[0]((?<=0)[321785964])|(?<=0)[01]((?<=0)[43295768]|(?<=1)[825413706])|(?<=7)[01]((?<=0)[261947583]|(?<=1)[210])|(?<=2)[6790815342]((?<=6)[0412386957]|(?<=7)[5409237816]|(?<=9)[8912453607]|(?<=0)[167589]|(?<=8)[2910748653]|(?<=1)[197308654]|(?<=5)[5872613490]|(?<=3)[9542183607]|(?<=4)[4907386512]|(?<=2)[6478025193])))|(?<=2)[109]((?<=1)[0]((?<=0)[4602573]((?<=4)[7945283106]|(?<=6)[428307691]|(?<=0)[743568]|(?<=2)[09678]|(?<=5)[1748350926]|(?<=7)[1025346]|(?<=3)[0164259873]))|(?<=0)[6123]((?<=6)[0]((?<=0)[9458376])|(?<=1)[0]((?<=0)[345])|(?<=2)[0]((?<=0)[65437])|(?<=3)[0]((?<=0)[4587396]))|(?<=9)[0]((?<=0)[2]((?<=2)[431256])))))$"), + ES: new RegExp("^([201345]((?<=2)[6247153890]((?<=6)[01235]((?<=0)[078]((?<=0)[123456789]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[01]|(?<=2)[01234567]|(?<=3)[012345]|(?<=4)[012345678]|(?<=5)[01]|(?<=6)[0]|(?<=9)[01])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[012346]|(?<=3)[0]|(?<=4)[01]|(?<=5)[06789]|(?<=6)[01]|(?<=7)[0]|(?<=8)[089]|(?<=9)[120])|(?<=3)[01234567]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456789]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0123456])|(?<=5)[012345678]((?<=0)[09]|(?<=1)[0123]|(?<=2)[056789]|(?<=3)[0123]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0456789]))|(?<=2)[012345678]((?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0123456]|(?<=3)[012345]|(?<=4)[0123456789]|(?<=5)[0]|(?<=6)[012]|(?<=9)[01234567])|(?<=2)[012345678]((?<=0)[0]|(?<=1)[023456]|(?<=2)[0123]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[012345]|(?<=6)[089]|(?<=7)[0]|(?<=8)[0123])|(?<=3)[012345679]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[06789]|(?<=4)[0789]|(?<=5)[01]|(?<=6)[01234567]|(?<=7)[012345678]|(?<=9)[012345])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[01234]|(?<=3)[056789]|(?<=4)[09]|(?<=5)[012]|(?<=6)[0123456789]|(?<=7)[01234]|(?<=8)[01234567])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[089]|(?<=3)[0123456]|(?<=4)[09]|(?<=5)[089]|(?<=6)[09]|(?<=7)[012]|(?<=8)[03456789]|(?<=9)[012])|(?<=6)[0123456]((?<=0)[09]|(?<=1)[0123]|(?<=2)[012345]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0123456])|(?<=7)[012345679]((?<=0)[0]|(?<=1)[012345]|(?<=2)[089]|(?<=3)[012]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[01]|(?<=7)[0123]|(?<=9)[012])|(?<=8)[0123678]((?<=0)[07968]|(?<=1)[01]|(?<=2)[012]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]))|(?<=4)[0123456789]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[02]|(?<=7)[01]|(?<=8)[0])|(?<=1)[012345679]((?<=0)[0]|(?<=1)[01234]|(?<=2)[01234567]|(?<=3)[0123456789]|(?<=4)[012345689]|(?<=5)[0123456]|(?<=6)[0123456]|(?<=7)[01245]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[056789]|(?<=1)[0789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[089]|(?<=5)[01237]|(?<=6)[80]|(?<=7)[01234567]|(?<=8)[012345678]|(?<=9)[01234])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[03456789]|(?<=3)[09]|(?<=4)[01234567]|(?<=5)[06789]|(?<=6)[0789]|(?<=7)[0456789]|(?<=8)[0456789]|(?<=9)[012345678])|(?<=4)[0123456789]((?<=0)[01234]|(?<=1)[0123456]|(?<=2)[089]|(?<=3)[03456789]|(?<=4)[012345678]|(?<=5)[0789]|(?<=6)[09]|(?<=7)[089]|(?<=8)[089]|(?<=9)[012345678])|(?<=5)[0123456]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0123456]|(?<=3)[0]|(?<=4)[0456789]|(?<=5)[0]|(?<=6)[056789])|(?<=6)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[09])|(?<=7)[01234569]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234]|(?<=3)[01234568]|(?<=4)[0123456]|(?<=5)[0]|(?<=6)[0123456789]|(?<=9)[01234567])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[06789]|(?<=4)[03456789]|(?<=5)[023456789]|(?<=6)[09]|(?<=7)[0789]|(?<=8)[023456789]|(?<=9)[0123])|(?<=9)[0123456789]((?<=0)[0]|(?<=1)[12345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[01456]))|(?<=7)[012345678]((?<=0)[078]((?<=0)[01234]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[023456789]|(?<=3)[01234569]|(?<=4)[0123456]|(?<=5)[01234567]|(?<=6)[012345689]|(?<=7)[0789]|(?<=8)[012345678]|(?<=9)[012])|(?<=2)[0123456789]((?<=0)[03456789]|(?<=1)[01234567]|(?<=2)[06789]|(?<=3)[012345]|(?<=4)[01345678]|(?<=5)[06789]|(?<=6)[06789]|(?<=7)[0123456789]|(?<=8)[02345679]|(?<=9)[0123456789])|(?<=3)[0123456789]((?<=0)[056789]|(?<=1)[078]|(?<=2)[04589]|(?<=3)[013456892]|(?<=4)[0123456789]|(?<=5)[09]|(?<=6)[02346789]|(?<=7)[0123456789]|(?<=8)[089]|(?<=9)[012])|(?<=4)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[012345]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0689]|(?<=7)[0])|(?<=5)[012345679]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0789]|(?<=3)[0123]|(?<=4)[03456789]|(?<=5)[0456789]|(?<=6)[089]|(?<=7)[06789]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0345678]|(?<=3)[0123456789]|(?<=4)[06789]|(?<=5)[0123456798]|(?<=6)[012345678]|(?<=7)[0123456789]|(?<=8)[056789]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456789]|(?<=3)[0789]|(?<=4)[02345789]|(?<=5)[012]|(?<=6)[05678]|(?<=7)[03456789]|(?<=8)[056789]|(?<=9)[012345678])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0123456]|(?<=3)[012345679]|(?<=4)[0123459]|(?<=5)[0]|(?<=6)[013456789]|(?<=7)[06789]|(?<=8)[089]|(?<=9)[0123]))|(?<=1)[501234678]((?<=5)[4012356789]((?<=4)[50]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012345])|(?<=0)[078]((?<=0)[1234567]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123]((?<=0)[0]|(?<=1)[0]|(?<=2)[02]|(?<=3)[0])|(?<=2)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=3)[012345689]((?<=0)[09]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[02]|(?<=5)[09]|(?<=6)[0]|(?<=8)[0678]|(?<=9)[0])|(?<=4)[012345]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[01]|(?<=4)[09]|(?<=5)[09])|(?<=6)[01234567]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[079]|(?<=5)[0]|(?<=6)[089]|(?<=7)[0])|(?<=7)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01]))|(?<=5)[01234567]((?<=0)[078]((?<=0)[12345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[09]|(?<=1)[01234]|(?<=2)[0123456]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[012345]|(?<=6)[012345]|(?<=7)[0123456789]|(?<=8)[01234567]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[0]|(?<=4)[012345]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[01]|(?<=8)[0123456798]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[05678]|(?<=2)[0]|(?<=3)[01234567]|(?<=4)[0134]|(?<=5)[012345]|(?<=6)[0])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[07]|(?<=6)[0]|(?<=7)[1]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[06789]|(?<=3)[0789]|(?<=4)[089]|(?<=5)[0123456]|(?<=6)[06789]|(?<=7)[01234567]|(?<=8)[0346789]|(?<=9)[0123456789])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[012345678]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=7)[01234589]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[056789]|(?<=4)[06789]|(?<=5)[0123]|(?<=8)[8]|(?<=9)[0123456789]))|(?<=3)[01234567]((?<=0)[078]((?<=0)[123456789]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012346])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0456789]|(?<=7)[0]|(?<=8)[09]|(?<=9)[012345678])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[09]|(?<=8)[09]|(?<=9)[0123])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[089]|(?<=7)[06789]|(?<=8)[056789]|(?<=9)[09])|(?<=5)[01234569]((?<=0)[09]|(?<=1)[09]|(?<=2)[0689]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[089]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[08]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0789]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0456789]|(?<=9)[0123])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0]))|(?<=8)[0123456789]((?<=0)[01234578]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345]|(?<=7)[01]|(?<=8)[023567])|(?<=1)[0134567892]((?<=0)[089]|(?<=1)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[0123456]|(?<=2)[0])|(?<=2)[0123456789]((?<=0)[09]|(?<=1)[012349]|(?<=2)[012349]|(?<=3)[012]|(?<=4)[083]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0234567])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01])|(?<=4)[0123456798]((?<=0)[0]|(?<=1)[01239]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[09]|(?<=9)[012]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012453]|(?<=2)[12349]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[045678])|(?<=6)[0123456789]((?<=0)[079]|(?<=1)[05]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[089]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123456])|(?<=7)[012345679]((?<=0)[01236789]|(?<=1)[0]|(?<=2)[01239]|(?<=3)[079]|(?<=4)[02391]|(?<=5)[0123456]|(?<=6)[0]|(?<=7)[0]|(?<=9)[1234])|(?<=8)[0123456897]((?<=0)[012345678]|(?<=1)[012345678]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01]|(?<=6)[01234]|(?<=8)[0]|(?<=9)[01]|(?<=7)[0])|(?<=9)[012345789]((?<=0)[123456790]|(?<=1)[0123456789]|(?<=2)[123450]|(?<=3)[1234567890]|(?<=4)[01234567]|(?<=5)[0]|(?<=7)[016789]|(?<=8)[01234]|(?<=9)[01]))|(?<=9)[01234567]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0134567])|(?<=2)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0789]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[12345])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[012]|(?<=6)[012]|(?<=7)[01]|(?<=8)[0]|(?<=9)[01234])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0123]|(?<=4)[0]|(?<=5)[012]|(?<=6)[0679]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=6)[0123456789]((?<=0)[01234]|(?<=1)[012]|(?<=2)[0]|(?<=3)[019]|(?<=4)[09]|(?<=5)[01]|(?<=6)[0]|(?<=7)[089]|(?<=8)[089]|(?<=9)[0123])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[08]|(?<=4)[09]|(?<=5)[012345]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[0123]))|(?<=0)[012345678]((?<=0)[0178]((?<=0)[123456789]|(?<=1)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[012345678]((?<=0)[0]|(?<=1)[05]|(?<=2)[08]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=2)[012345678]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[09]|(?<=6)[0789]|(?<=7)[01]|(?<=8)[0])|(?<=3)[0]((?<=0)[012345])|(?<=4)[09]((?<=0)[0]|(?<=9)[0123456])|(?<=5)[03456789]((?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0789]|(?<=7)[0789]|(?<=8)[0]|(?<=9)[0])|(?<=6)[09]((?<=0)[0]|(?<=9)[0])|(?<=7)[012345]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[09])|(?<=8)[0123567]((?<=0)[089]|(?<=1)[0]|(?<=2)[09]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])))|(?<=0)[213469587]((?<=2)[0123456]((?<=0)[0478]((?<=0)[12345678]|(?<=4)[9]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[045789]|(?<=3)[0679]|(?<=4)[012]|(?<=5)[0134562]|(?<=6)[012])|(?<=2)[01234567]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0123]|(?<=6)[0]|(?<=7)[0])|(?<=3)[012456]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[06789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[012345689]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[045679]|(?<=4)[089]|(?<=5)[09]|(?<=6)[012]|(?<=8)[045679]|(?<=9)[09])|(?<=5)[0123]((?<=0)[0]|(?<=1)[0123]|(?<=2)[09]|(?<=3)[046])|(?<=6)[01234569]((?<=0)[0]|(?<=1)[0124]|(?<=2)[0]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[0]|(?<=9)[0123456]))|(?<=1)[124035]((?<=1)[1023679]((?<=1)[807]|(?<=0)[0]|(?<=2)[089]|(?<=3)[089]|(?<=6)[059]|(?<=7)[0]|(?<=9)[123456])|(?<=2)[1023456]((?<=1)[1236]|(?<=0)[0678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[2034576]((?<=2)[70368]|(?<=0)[089]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=7)[046789]|(?<=6)[8])|(?<=0)[0178]((?<=0)[123456789]|(?<=1)[0235]|(?<=7)[1]|(?<=8)[0])|(?<=3)[0234]((?<=0)[06789]|(?<=2)[012]|(?<=3)[0]|(?<=4)[0])|(?<=5)[12]((?<=1)[0]|(?<=2)[0]))|(?<=3)[012345678]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[013456789]((?<=0)[089]|(?<=1)[012345]|(?<=3)[089]|(?<=4)[09]|(?<=5)[089]|(?<=6)[09]|(?<=7)[06789]|(?<=8)[0123456789]|(?<=9)[01345])|(?<=2)[09]((?<=0)[123456780]|(?<=9)[0123456])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0125]|(?<=3)[09]|(?<=4)[089]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=4)[0123456]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09])|(?<=5)[0123456789]((?<=0)[012398]|(?<=1)[06789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[089]|(?<=8)[019]|(?<=9)[09])|(?<=6)[013456789]((?<=0)[0]|(?<=1)[0]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0897]|(?<=6)[089]|(?<=7)[09]|(?<=8)[089]|(?<=9)[089])|(?<=7)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[03456789]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[09]|(?<=6)[09]|(?<=7)[089]|(?<=8)[06789]|(?<=9)[012345])|(?<=8)[01234567]((?<=0)[01234]|(?<=1)[012345689]|(?<=2)[0789]|(?<=3)[0789]|(?<=4)[01]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]))|(?<=4)[01245678]((?<=0)[087]((?<=0)[123456789]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456]((?<=0)[0]|(?<=1)[03456789]|(?<=2)[0]|(?<=3)[01]|(?<=4)[09]|(?<=5)[01]|(?<=6)[0])|(?<=2)[01345678]((?<=0)[0]|(?<=1)[0123]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[01456789]|(?<=8)[089])|(?<=4)[012345678]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[01]|(?<=4)[0]|(?<=5)[089]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0])|(?<=5)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0123]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0789])|(?<=6)[01234569]((?<=0)[0]|(?<=1)[06789]|(?<=2)[0189]|(?<=3)[089]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[012]|(?<=9)[01234])|(?<=7)[01234567]((?<=0)[0]|(?<=1)[0123567]|(?<=2)[01789]|(?<=3)[89]|(?<=4)[01356]|(?<=5)[0]|(?<=6)[089]|(?<=7)[089])|(?<=8)[012356789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[056789]|(?<=3)[089]|(?<=5)[0789]|(?<=6)[0789]|(?<=7)[0789]|(?<=8)[0789]|(?<=9)[0789]))|(?<=6)[6012345789]((?<=6)[9012345678]((?<=9)[102]|(?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[056789]|(?<=6)[0]|(?<=7)[089]|(?<=8)[09])|(?<=0)[01587]((?<=0)[123456789]|(?<=1)[012]|(?<=5)[0]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456789]((?<=0)[056789]|(?<=1)[0]|(?<=2)[09]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[012345678]|(?<=8)[01234567]|(?<=9)[01234567])|(?<=2)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[056789]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[08]|(?<=8)[09]|(?<=9)[01234])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[01235]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0123456]|(?<=5)[089]|(?<=6)[089]|(?<=7)[03456789]|(?<=8)[06789]|(?<=9)[089])|(?<=5)[01]((?<=0)[0]|(?<=1)[089])|(?<=7)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[01]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234])|(?<=9)[012345678]((?<=0)[06789]|(?<=1)[09]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]))|(?<=9)[2013456]((?<=2)[1023456789]((?<=1)[8012345679]|(?<=0)[0]|(?<=2)[01678]|(?<=3)[039]|(?<=4)[0456789]|(?<=5)[0123789]|(?<=6)[0789]|(?<=7)[012]|(?<=8)[05]|(?<=9)[0234])|(?<=0)[078]((?<=0)[1234567]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123459]((?<=0)[0789]|(?<=1)[089]|(?<=2)[013456789]|(?<=3)[013569]|(?<=4)[0123456]|(?<=5)[09]|(?<=9)[123456789])|(?<=3)[012345796]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[89]|(?<=4)[0123567894]|(?<=5)[01234]|(?<=7)[0]|(?<=9)[01]|(?<=6)[0])|(?<=4)[01345679]((?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[0134]|(?<=6)[0123]|(?<=7)[1]|(?<=9)[013])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0123456789]|(?<=6)[06789]|(?<=7)[012345]|(?<=8)[056789]|(?<=9)[1234])|(?<=6)[012456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=4)[0125679]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123]))|(?<=5)[2401356]((?<=2)[3012456789]((?<=3)[90]|(?<=0)[0]|(?<=1)[01234567]|(?<=2)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[078]|(?<=7)[089]|(?<=8)[09]|(?<=9)[0124689])|(?<=4)[2013456789]((?<=2)[9078]|(?<=0)[0]|(?<=1)[02345678]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[01]|(?<=7)[0]|(?<=8)[09]|(?<=9)[012])|(?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0234]|(?<=3)[01234]|(?<=4)[01356789]|(?<=5)[01234]|(?<=6)[023456]|(?<=9)[012345678])|(?<=3)[0125678]((?<=0)[019]|(?<=1)[01]|(?<=2)[0]|(?<=5)[078]|(?<=6)[9]|(?<=7)[06]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[02456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[1]|(?<=8)[0]|(?<=9)[0123])|(?<=6)[01239]((?<=0)[0]|(?<=1)[09]|(?<=2)[01]|(?<=3)[01345]|(?<=9)[01234567]))|(?<=8)[0123456789]((?<=0)[0123478]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012]|(?<=7)[501]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[04567]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[068]|(?<=5)[0]|(?<=6)[0]|(?<=7)[023481]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[012345678]|(?<=1)[01234]|(?<=2)[123456780]|(?<=3)[0123]|(?<=4)[01238]|(?<=5)[0134569]|(?<=6)[01239]|(?<=7)[01234589]|(?<=8)[01239]|(?<=9)[0123456789])|(?<=3)[0123456789]((?<=0)[01234]|(?<=1)[0789]|(?<=2)[089]|(?<=3)[089]|(?<=4)[089]|(?<=5)[089]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[012345678])|(?<=4)[0123456789]((?<=0)[01234]|(?<=1)[056]|(?<=2)[0]|(?<=3)[0]|(?<=4)[05]|(?<=5)[05689]|(?<=6)[019]|(?<=7)[012469]|(?<=8)[0]|(?<=9)[05])|(?<=5)[0123456789]((?<=0)[03456789]|(?<=1)[0123456789]|(?<=2)[0129]|(?<=3)[0]|(?<=4)[0]|(?<=5)[012349]|(?<=6)[09]|(?<=7)[0123]|(?<=8)[0456789]|(?<=9)[0123])|(?<=6)[0123456789]((?<=0)[04567]|(?<=1)[01234789]|(?<=2)[09]|(?<=3)[05]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01239]|(?<=8)[0]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[03]|(?<=1)[012789]|(?<=2)[09]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[03456789]|(?<=6)[09]|(?<=7)[035679]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=8)[012345678]((?<=0)[05]|(?<=1)[0128]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[09]|(?<=6)[0]|(?<=7)[012]|(?<=8)[0])|(?<=9)[012345678]((?<=0)[123456780]|(?<=1)[123456780]|(?<=2)[12340]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]))|(?<=7)[801234567]((?<=8)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[012])|(?<=0)[0178]((?<=0)[1234567890]|(?<=1)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[012456789]((?<=0)[0189]|(?<=1)[0]|(?<=2)[012]|(?<=4)[01234]|(?<=5)[097]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0341]|(?<=9)[012345689])|(?<=2)[0123456]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[09])|(?<=4)[0234567]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[089]|(?<=6)[09]|(?<=7)[0])|(?<=5)[0123456789]((?<=0)[09]|(?<=1)[0189]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09]|(?<=9)[0])|(?<=6)[0123456789]((?<=0)[098]|(?<=1)[01]|(?<=2)[09]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[01])|(?<=7)[0123456]((?<=0)[0123]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[09])))|(?<=1)[0456397218]((?<=0)[0123456789]((?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[069]|(?<=3)[01234567]|(?<=4)[0]|(?<=5)[0]|(?<=6)[01234]|(?<=7)[0]|(?<=8)[0123456789]|(?<=9)[01234589])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[012]|(?<=6)[01239]|(?<=7)[012]|(?<=8)[0]|(?<=9)[012])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0789]|(?<=2)[089]|(?<=3)[012345]|(?<=4)[01]|(?<=5)[09]|(?<=6)[0]|(?<=7)[01234]|(?<=8)[0]|(?<=9)[012346])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[01234569]|(?<=2)[0189]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[03456789]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0]|(?<=6)[01234567]|(?<=7)[012]|(?<=8)[0]|(?<=9)[01234567])|(?<=7)[012345]((?<=0)[0]|(?<=1)[012]|(?<=2)[089]|(?<=3)[09]|(?<=4)[089]|(?<=5)[09])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[089]|(?<=3)[09]|(?<=4)[089]|(?<=5)[0789]|(?<=6)[0456789]|(?<=7)[09]|(?<=8)[0123]|(?<=9)[0123456])|(?<=9)[013456789]((?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01]))|(?<=4)[0123456789]((?<=0)[01278]((?<=0)[0123456789]|(?<=1)[01234567]|(?<=2)[9]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123459]((?<=0)[0]|(?<=1)[01253]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0123])|(?<=2)[0123456789]((?<=0)[06789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0789])|(?<=3)[01235]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[023]|(?<=2)[0]|(?<=3)[09]|(?<=4)[056789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01])|(?<=5)[012345]((?<=0)[0]|(?<=1)[012]|(?<=2)[0]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0])|(?<=6)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0])|(?<=7)[01234]((?<=0)[09]|(?<=1)[019]|(?<=2)[09]|(?<=3)[09]|(?<=4)[09])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0789]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=9)[01234567]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[089]))|(?<=5)[0123456789]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[01]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0256789]|(?<=1)[0123456789]|(?<=2)[124567893]|(?<=3)[0789]|(?<=4)[0123456789]|(?<=5)[012345]|(?<=6)[056789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[01289])|(?<=2)[012345789]((?<=0)[0]|(?<=1)[01234568]|(?<=2)[089]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[6890]|(?<=7)[0]|(?<=8)[01256789]|(?<=9)[012356789])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[03456789]|(?<=2)[0456789]|(?<=3)[02789]|(?<=4)[079]|(?<=5)[0789]|(?<=6)[056789]|(?<=7)[9]|(?<=8)[06789]|(?<=9)[01])|(?<=4)[02789]((?<=0)[01234567]|(?<=2)[1]|(?<=7)[01]|(?<=8)[0]|(?<=9)[0])|(?<=5)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[08]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[012345]|(?<=6)[0123456789]|(?<=7)[0267893]|(?<=8)[02]|(?<=9)[012345678])|(?<=6)[0123456789]((?<=0)[0789]|(?<=1)[123456789]|(?<=2)[01234567]|(?<=3)[05789]|(?<=4)[0]|(?<=5)[069]|(?<=6)[089]|(?<=7)[09]|(?<=8)[03456789]|(?<=9)[0])|(?<=7)[078]((?<=0)[01234567]|(?<=7)[01]|(?<=8)[012])|(?<=8)[0123456789]((?<=0)[056789]|(?<=1)[03456789]|(?<=2)[01234568]|(?<=3)[0789]|(?<=4)[015678]|(?<=5)[0156789]|(?<=6)[0123456]|(?<=7)[01234]|(?<=8)[012345678]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[08]|(?<=3)[01789]|(?<=4)[089]|(?<=5)[09]|(?<=6)[0156789]|(?<=7)[089]|(?<=8)[012345]|(?<=9)[012345689]))|(?<=6)[102345678]((?<=1)[4012569]((?<=4)[901234567]|(?<=0)[0]|(?<=1)[13482]|(?<=2)[023]|(?<=5)[02]|(?<=6)[012]|(?<=9)[0123456])|(?<=0)[078]((?<=0)[1234]|(?<=7)[01]|(?<=8)[0])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012456]|(?<=2)[0]|(?<=3)[0456798]|(?<=4)[0]|(?<=5)[01]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=3)[012345679]((?<=0)[0]|(?<=1)[1235678]|(?<=2)[01]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0123]|(?<=9)[03])|(?<=4)[01234567]((?<=0)[0]|(?<=1)[0123457]|(?<=2)[0123]|(?<=3)[012345]|(?<=4)[0124]|(?<=5)[2]|(?<=6)[01345]|(?<=7)[0])|(?<=5)[012345]((?<=0)[0]|(?<=1)[02]|(?<=2)[012]|(?<=3)[1257]|(?<=4)[012]|(?<=5)[05])|(?<=6)[01234567]((?<=0)[0]|(?<=1)[012]|(?<=2)[0123]|(?<=3)[089]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=7)[01234678]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=6)[0]|(?<=7)[019]|(?<=8)[01])|(?<=8)[01345679]((?<=0)[0]|(?<=1)[23]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[01234567]|(?<=6)[0]|(?<=7)[089]|(?<=9)[0123]))|(?<=3)[01234567]((?<=0)[078]((?<=0)[12345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0789]|(?<=1)[0345678]|(?<=2)[089]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09]|(?<=9)[01234567])|(?<=2)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[06789]|(?<=3)[0123]|(?<=4)[012345]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[01])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0789]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[03]|(?<=8)[0]|(?<=9)[0])|(?<=5)[089]((?<=0)[0]|(?<=8)[0]|(?<=9)[012345678])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0])|(?<=7)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[08]|(?<=7)[09]))|(?<=9)[01234]((?<=0)[087]((?<=0)[012345]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[056789]|(?<=3)[0123459]|(?<=4)[012345]|(?<=5)[0123]|(?<=6)[0123]|(?<=7)[014]|(?<=8)[0245678]|(?<=9)[023678])|(?<=2)[0123456789]((?<=0)[089]|(?<=1)[09]|(?<=2)[02345679]|(?<=3)[0789]|(?<=4)[02345678]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[045678]|(?<=8)[013567]|(?<=9)[0245])|(?<=3)[01234569]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0345678]|(?<=3)[2346789]|(?<=4)[0123456]|(?<=5)[01234567]|(?<=6)[0123]|(?<=9)[012])|(?<=4)[01234569]((?<=0)[0]|(?<=1)[123]|(?<=2)[09]|(?<=3)[12]|(?<=4)[12345]|(?<=5)[089]|(?<=6)[0123]|(?<=9)[01235]))|(?<=7)[012345678]((?<=0)[078]((?<=0)[1234567]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[01345678]|(?<=2)[0134]|(?<=3)[0123467]|(?<=4)[01234]|(?<=5)[01234]|(?<=6)[012456]|(?<=7)[0123456789]|(?<=8)[012345]|(?<=9)[09])|(?<=2)[012345]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[012345689]|(?<=5)[01235678])|(?<=3)[012]((?<=0)[0]|(?<=1)[0]|(?<=2)[0])|(?<=4)[0123456789]((?<=0)[0123456]|(?<=1)[012]|(?<=2)[01]|(?<=3)[0]|(?<=4)[12345]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[023456]|(?<=8)[0123456789]|(?<=9)[01234567])|(?<=5)[0123]((?<=0)[0]|(?<=1)[02345]|(?<=2)[0789]|(?<=3)[0123456789])|(?<=6)[0]((?<=0)[0])|(?<=7)[012345678]((?<=0)[06789]|(?<=1)[0]|(?<=2)[0123]|(?<=3)[01234]|(?<=4)[01234567]|(?<=5)[012345]|(?<=6)[0123]|(?<=7)[0123]|(?<=8)[01])|(?<=8)[0123456]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[01234]|(?<=4)[03456]|(?<=5)[012345678]|(?<=6)[012346789]))|(?<=2)[0123456]((?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[089]|(?<=2)[01234567]|(?<=3)[012345]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0123456]|(?<=7)[09]|(?<=8)[0123456]|(?<=9)[01234])|(?<=2)[0123]((?<=0)[0]|(?<=1)[0]|(?<=2)[012345]|(?<=3)[012])|(?<=3)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[02345]|(?<=2)[089]|(?<=3)[01]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[09]|(?<=9)[09])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123]|(?<=2)[06789]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[089]|(?<=8)[09]|(?<=9)[0123456789])|(?<=6)[0]((?<=0)[09]))|(?<=1)[0123456]((?<=0)[01378]((?<=0)[0123456789]|(?<=1)[012]|(?<=3)[5]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0345678912]((?<=0)[0]|(?<=3)[089]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0]|(?<=7)[089]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=2)[0])|(?<=2)[078]((?<=0)[01234567]|(?<=7)[01]|(?<=8)[0])|(?<=3)[0123456798]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[09]|(?<=4)[09]|(?<=5)[01]|(?<=6)[089]|(?<=7)[09]|(?<=9)[0123]|(?<=8)[0])|(?<=4)[078]((?<=0)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=5)[0123456879]((?<=0)[0]|(?<=1)[089]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[049]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[012]|(?<=2)[0]|(?<=3)[089]|(?<=4)[089]|(?<=5)[09]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0789]|(?<=9)[0123]))|(?<=8)[012345678]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[012]|(?<=1)[0]|(?<=2)[056789]|(?<=3)[012]|(?<=4)[0]|(?<=5)[012]|(?<=6)[0]|(?<=7)[09]|(?<=8)[01234]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0135])|(?<=3)[012345678]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[01])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[089]|(?<=4)[089]|(?<=5)[012]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0124])|(?<=5)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[0])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[06789]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0789])|(?<=7)[01234567]((?<=0)[08]|(?<=1)[013]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[089]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01])))|(?<=3)[6823914705]((?<=6)[0123456789]((?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[12345690]((?<=1)[06789]|(?<=2)[01]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[012345678]|(?<=6)[01234]|(?<=9)[01234]|(?<=0)[0])|(?<=2)[0178]((?<=0)[912345678]|(?<=1)[6012345]|(?<=7)[01]|(?<=8)[012])|(?<=3)[0124567893]((?<=0)[0789]|(?<=1)[03682457]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0389]|(?<=8)[089]|(?<=9)[1302]|(?<=3)[019])|(?<=4)[012345679]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[05678]|(?<=4)[06789]|(?<=5)[056789]|(?<=6)[0]|(?<=7)[012345]|(?<=9)[01234])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012456789]|(?<=2)[0456789]|(?<=3)[0789]|(?<=4)[023456789]|(?<=5)[056789]|(?<=6)[0789]|(?<=7)[09]|(?<=8)[0123456789]|(?<=9)[06789])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[06789]|(?<=3)[03456789]|(?<=4)[056789]|(?<=5)[023456789]|(?<=6)[0789]|(?<=7)[056789]|(?<=8)[0123456789]|(?<=9)[0123])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[019]|(?<=3)[09]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[089]|(?<=9)[0124])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[06789]|(?<=3)[056789]|(?<=4)[0123456789]|(?<=5)[123456789]|(?<=6)[0123456789]|(?<=7)[023456789]|(?<=8)[03456789]|(?<=9)[01235])|(?<=9)[0134567892]((?<=0)[0]|(?<=1)[012345]|(?<=3)[0789]|(?<=4)[067895]|(?<=5)[045789]|(?<=6)[06789]|(?<=7)[09]|(?<=8)[089]|(?<=9)[012345]|(?<=2)[0]))|(?<=8)[7098123456]((?<=7)[012345678]((?<=0)[0]|(?<=1)[012345]|(?<=2)[06789]|(?<=3)[089]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0789]|(?<=7)[09]|(?<=8)[0789])|(?<=0)[40178]((?<=4)[8]|(?<=0)[123456789]|(?<=1)[01]|(?<=7)[01]|(?<=8)[0])|(?<=9)[01]((?<=0)[0]|(?<=1)[01234567])|(?<=8)[012345679]((?<=0)[01]|(?<=1)[0123]|(?<=2)[09]|(?<=3)[0]|(?<=4)[09]|(?<=5)[02]|(?<=6)[90]|(?<=7)[09]|(?<=9)[012])|(?<=1)[0123456789]((?<=0)[789]|(?<=1)[01]|(?<=2)[09]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=2)[0456789]((?<=0)[012345678]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234567])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[056789]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09]|(?<=9)[089])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[0456789]|(?<=4)[019]|(?<=5)[089]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09])|(?<=5)[0123456789]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[089]|(?<=9)[012345])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[06789]|(?<=3)[0129]|(?<=4)[09]|(?<=5)[02]|(?<=6)[0]|(?<=7)[0789]|(?<=8)[03456789]|(?<=9)[0]))|(?<=2)[0123456789]((?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234567]((?<=0)[0123]|(?<=1)[012]|(?<=2)[0]|(?<=3)[0456789]|(?<=4)[01]|(?<=5)[0123]|(?<=6)[01234]|(?<=7)[012])|(?<=2)[0123]((?<=0)[0]|(?<=1)[123]|(?<=2)[6789]|(?<=3)[01256])|(?<=3)[01234567]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[09]|(?<=3)[0456789]|(?<=4)[089]|(?<=5)[0678]|(?<=6)[056789]|(?<=7)[012345])|(?<=4)[0123459]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[056789]|(?<=3)[01234567]|(?<=4)[089]|(?<=5)[02345679]|(?<=9)[9])|(?<=5)[012345679]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0123456]|(?<=3)[0456789]|(?<=4)[056789]|(?<=5)[012456789]|(?<=6)[0123]|(?<=7)[023456789]|(?<=9)[13])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[012345678]|(?<=4)[01234568]|(?<=5)[012345]|(?<=6)[0456789]|(?<=7)[089]|(?<=8)[089]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[012345678]|(?<=1)[01]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[01]|(?<=6)[0456789]|(?<=7)[0489]|(?<=8)[0123456789]|(?<=9)[01234])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0123456789]|(?<=3)[089]|(?<=4)[056789]|(?<=5)[0789]|(?<=6)[089]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[01]|(?<=1)[015]|(?<=2)[0]|(?<=3)[0]|(?<=4)[01]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01]|(?<=8)[01]|(?<=9)[0]))|(?<=3)[0123456789]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[012456789]|(?<=2)[056789]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0456789]|(?<=6)[0123]|(?<=7)[01234]|(?<=8)[06789]|(?<=9)[01234569])|(?<=2)[019]((?<=0)[1234567890]|(?<=1)[0123]|(?<=9)[09])|(?<=3)[0123459]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0456789]|(?<=3)[0]|(?<=4)[01234567]|(?<=5)[0]|(?<=9)[01234])|(?<=4)[0123456789]((?<=0)[012345]|(?<=1)[0124678]|(?<=2)[023456789]|(?<=3)[089]|(?<=4)[089]|(?<=5)[06789]|(?<=6)[089]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=5)[0123456789]((?<=0)[0789]|(?<=1)[089]|(?<=2)[0789]|(?<=3)[0456789]|(?<=4)[06789]|(?<=5)[0456789]|(?<=6)[06789]|(?<=7)[06789]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0789]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0356789]|(?<=8)[012345678]|(?<=9)[01234567])|(?<=7)[0123456789]((?<=0)[078]|(?<=1)[06789]|(?<=2)[01456789]|(?<=3)[0123456789]|(?<=4)[06789]|(?<=5)[06789]|(?<=6)[089]|(?<=7)[0456789]|(?<=8)[023456789]|(?<=9)[012345689])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[056789]|(?<=3)[06789]|(?<=4)[01234567]|(?<=5)[0789]|(?<=6)[056789]|(?<=7)[03456789]|(?<=8)[056789]|(?<=9)[012])|(?<=9)[0123456789]((?<=0)[09]|(?<=1)[029]|(?<=2)[09]|(?<=3)[0456789]|(?<=4)[056789]|(?<=5)[0789]|(?<=6)[09]|(?<=7)[09]|(?<=8)[06789]|(?<=9)[01234567]))|(?<=9)[012345678]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[012]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234567])|(?<=2)[012359]((?<=0)[0]|(?<=1)[023]|(?<=2)[0]|(?<=3)[023]|(?<=5)[0]|(?<=9)[01234])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[0123456789]((?<=0)[0789]|(?<=1)[06789]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[01]|(?<=6)[0]|(?<=7)[0789]|(?<=8)[0]|(?<=9)[01])|(?<=5)[0123456789]((?<=0)[06789]|(?<=1)[0135678]|(?<=2)[056789]|(?<=3)[089]|(?<=4)[0789]|(?<=5)[013456789]|(?<=6)[09]|(?<=7)[012345789]|(?<=8)[02346789]|(?<=9)[012345])|(?<=6)[0123456789]((?<=0)[089]|(?<=1)[012389]|(?<=2)[06789]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[012356789]|(?<=9)[012346789])|(?<=7)[0123456789]((?<=0)[06789]|(?<=1)[056789]|(?<=2)[02345678]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[0]|(?<=6)[01234569]|(?<=7)[0678]|(?<=8)[06789]|(?<=9)[01234578])|(?<=8)[0124568]((?<=0)[056789]|(?<=1)[01235]|(?<=2)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[09]|(?<=8)[0]))|(?<=1)[501234678]((?<=5)[1023456789]((?<=1)[501234]|(?<=0)[0]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0789]|(?<=9)[0123])|(?<=0)[0178]((?<=0)[123456789]|(?<=1)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[013456789]((?<=0)[09]|(?<=1)[09]|(?<=3)[0123]|(?<=4)[0]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[0123456789]|(?<=8)[0]|(?<=9)[012345])|(?<=2)[0123456789]((?<=0)[08]|(?<=1)[09]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[01234]|(?<=6)[01234]|(?<=7)[012]|(?<=8)[01234]|(?<=9)[0123])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[023]|(?<=9)[012345678])|(?<=4)[0123456789]((?<=0)[09]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[089]|(?<=4)[089]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[0123]|(?<=8)[01234567]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[01]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01]|(?<=8)[09]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0456789]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[0123456789])|(?<=8)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[09]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[06789]|(?<=7)[06789]|(?<=8)[0]|(?<=9)[012]))|(?<=4)[240138]((?<=2)[4601235]((?<=4)[80679]|(?<=6)[01]|(?<=0)[089]|(?<=1)[089]|(?<=2)[0]|(?<=3)[09]|(?<=5)[079])|(?<=4)[8012345679]((?<=8)[90345678]|(?<=0)[056789]|(?<=1)[019]|(?<=2)[09]|(?<=3)[09]|(?<=4)[079]|(?<=5)[0]|(?<=6)[056789]|(?<=7)[035789]|(?<=9)[012])|(?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01235679]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[06789]|(?<=3)[1230]|(?<=5)[9]|(?<=6)[0]|(?<=7)[0]|(?<=9)[012])|(?<=3)[012345]((?<=0)[045679]|(?<=1)[0]|(?<=2)[0]|(?<=3)[78]|(?<=4)[0789]|(?<=5)[0])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[01345]|(?<=2)[089]|(?<=3)[09]|(?<=4)[023456789]|(?<=5)[089]|(?<=6)[9]|(?<=7)[089]|(?<=8)[026789]))|(?<=7)[0123456789]((?<=0)[078]((?<=0)[123456789]|(?<=7)[1]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[01456]|(?<=2)[09]|(?<=3)[09]|(?<=4)[0789]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0123456]|(?<=8)[0123456789]|(?<=9)[0123487])|(?<=2)[0123456789]((?<=0)[0789]|(?<=1)[03456789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0678]|(?<=5)[013456789]|(?<=6)[079]|(?<=7)[01]|(?<=8)[1]|(?<=9)[012])|(?<=3)[012345]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[09]|(?<=3)[06789]|(?<=4)[09]|(?<=5)[0])|(?<=4)[0123456789]((?<=0)[05689]|(?<=1)[089]|(?<=2)[06789]|(?<=3)[09]|(?<=4)[06789]|(?<=5)[01234568]|(?<=6)[056897]|(?<=7)[089]|(?<=8)[018]|(?<=9)[01345726])|(?<=5)[01234589]((?<=0)[0]|(?<=1)[056]|(?<=2)[01234]|(?<=3)[012]|(?<=4)[012]|(?<=5)[0123456]|(?<=8)[9]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[06789]|(?<=1)[0789]|(?<=2)[014]|(?<=3)[089]|(?<=4)[0]|(?<=5)[06789]|(?<=6)[0]|(?<=7)[01]|(?<=8)[0234]|(?<=9)[0])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012346785]|(?<=2)[047]|(?<=3)[0]|(?<=4)[089]|(?<=5)[01234569]|(?<=6)[02345678]|(?<=7)[03456789]|(?<=8)[0156789]|(?<=9)[0123456789])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[012345]|(?<=7)[0134]|(?<=8)[012]|(?<=9)[01234])|(?<=9)[0]((?<=0)[0]))|(?<=0)[013456782]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[012]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[089]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[06789]|(?<=8)[09]|(?<=9)[0123456])|(?<=3)[235680179]((?<=2)[09]|(?<=3)[1234580]|(?<=5)[103]|(?<=6)[0479568]|(?<=8)[0134592]|(?<=0)[0]|(?<=1)[09]|(?<=7)[0]|(?<=9)[0123456789])|(?<=4)[01234]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[089]|(?<=4)[012])|(?<=5)[0123456789]((?<=0)[06789]|(?<=1)[0]|(?<=2)[089]|(?<=3)[05]|(?<=4)[0]|(?<=5)[089]|(?<=6)[0123456]|(?<=7)[09]|(?<=8)[089]|(?<=9)[01234])|(?<=6)[0124]((?<=0)[09]|(?<=1)[0123]|(?<=2)[06789]|(?<=4)[089])|(?<=7)[01234]((?<=0)[089]|(?<=1)[0]|(?<=2)[09]|(?<=3)[09]|(?<=4)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[01234567]|(?<=4)[089]|(?<=5)[089]|(?<=6)[08]|(?<=7)[056789]|(?<=8)[09]|(?<=9)[0123])|(?<=2)[0]((?<=0)[012345]))|(?<=5)[6012345]((?<=6)[0123456]((?<=0)[0]|(?<=1)[0123]|(?<=2)[056789]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0])|(?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234]((?<=0)[06789]|(?<=1)[089]|(?<=2)[089]|(?<=3)[089]|(?<=4)[09])|(?<=2)[0124567893]((?<=0)[02]|(?<=1)[0123456789]|(?<=2)[09]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[09]|(?<=3)[0])|(?<=3)[0123456]((?<=0)[0789]|(?<=1)[09]|(?<=2)[089]|(?<=3)[0389]|(?<=4)[09]|(?<=5)[0]|(?<=6)[089])|(?<=4)[01235678]((?<=0)[0]|(?<=1)[1234568]|(?<=2)[0123]|(?<=3)[012]|(?<=5)[0789]|(?<=6)[0123456789]|(?<=7)[089]|(?<=8)[089])|(?<=5)[012345678]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[01234]|(?<=5)[089]|(?<=6)[01]|(?<=7)[012]|(?<=8)[0])))|(?<=4)[6420795381]((?<=6)[0123456789]((?<=0)[012378]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456]|(?<=3)[5]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123467895]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[07]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=6)[023456789]|(?<=7)[0123456789]|(?<=8)[0123457]|(?<=9)[0123456789]|(?<=5)[0])|(?<=2)[012345679]((?<=0)[0]|(?<=1)[0]|(?<=2)[059]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[06789]|(?<=7)[0]|(?<=9)[012345])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0123457]|(?<=2)[01]|(?<=3)[09]|(?<=4)[0]|(?<=5)[01234567]|(?<=6)[0789]|(?<=7)[0]|(?<=8)[089]|(?<=9)[01234])|(?<=4)[01234567]((?<=0)[089]|(?<=1)[0789]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0])|(?<=5)[01234569]((?<=0)[01]|(?<=1)[012345]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[012345])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[012345]|(?<=3)[05]|(?<=4)[0]|(?<=5)[09]|(?<=6)[06789]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[012])|(?<=7)[0123456789]((?<=0)[0123]|(?<=1)[01234567]|(?<=2)[0123456789]|(?<=3)[0]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[012345]|(?<=3)[0789]|(?<=4)[01234]|(?<=5)[0]|(?<=6)[089]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234])|(?<=9)[012345678]((?<=0)[019]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]))|(?<=4)[01234567]((?<=0)[078]((?<=0)[123]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456]|(?<=3)[01234]|(?<=4)[01234567]|(?<=5)[056789]|(?<=6)[0123456789]|(?<=9)[012345])|(?<=2)[0123]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0123]|(?<=3)[0123])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[01345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0789]|(?<=6)[06789]|(?<=7)[0]|(?<=8)[012]|(?<=9)[01234567])|(?<=4)[0123456789]((?<=0)[09]|(?<=1)[012345]|(?<=2)[01234]|(?<=3)[0123]|(?<=4)[01]|(?<=5)[09]|(?<=6)[0]|(?<=7)[7890]|(?<=8)[0]|(?<=9)[01234567])|(?<=5)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[056789]|(?<=6)[0123456]|(?<=7)[09]|(?<=8)[06789]|(?<=9)[01234567])|(?<=6)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[01234]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[0123]|(?<=6)[01])|(?<=7)[0123456789]((?<=0)[06789]|(?<=1)[012]|(?<=2)[01]|(?<=3)[0]|(?<=4)[012]|(?<=5)[0]|(?<=6)[09]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123]))|(?<=2)[2013]((?<=2)[60123459]((?<=6)[90]|(?<=0)[0]|(?<=1)[012345678]|(?<=2)[0235]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0789]|(?<=9)[0123456])|(?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[078]|(?<=1)[01234]|(?<=2)[056789]|(?<=3)[0124578]|(?<=4)[012356897]|(?<=5)[02367894]|(?<=6)[01245679]|(?<=7)[23456]|(?<=8)[0129]|(?<=9)[01235])|(?<=3)[01234569]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[089]|(?<=3)[09]|(?<=4)[01245]|(?<=5)[0123]|(?<=6)[056789]|(?<=9)[012]))|(?<=0)[012345]((?<=0)[078]((?<=0)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[023456789]((?<=0)[09]|(?<=2)[0123]|(?<=3)[03456]|(?<=4)[012456]|(?<=5)[01234]|(?<=6)[012345]|(?<=7)[0123456]|(?<=8)[012345]|(?<=9)[01234567])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[012]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456789])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[01234578]|(?<=2)[0]|(?<=3)[012]|(?<=4)[0]|(?<=5)[0123456789]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[01234567])|(?<=4)[0123456789]((?<=0)[068]|(?<=1)[09]|(?<=2)[01234]|(?<=3)[0]|(?<=4)[012345679]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456])|(?<=5)[01234569]((?<=0)[0]|(?<=1)[02345678]|(?<=2)[09]|(?<=3)[0123]|(?<=4)[012]|(?<=5)[0123456]|(?<=6)[0789]|(?<=9)[01234]))|(?<=7)[01234568]((?<=0)[0178]((?<=0)[123456789]|(?<=1)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[09]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[01235]|(?<=6)[0124569]|(?<=7)[01234567]|(?<=8)[0123456]|(?<=9)[01234567])|(?<=2)[0123456789]((?<=0)[09]|(?<=1)[09]|(?<=2)[0]|(?<=3)[012789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[01]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[089]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01234]|(?<=6)[012345]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234])|(?<=5)[0123]((?<=0)[09]|(?<=1)[0123]|(?<=2)[09]|(?<=3)[0])|(?<=6)[0123456789]((?<=0)[06789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[01]|(?<=5)[0]|(?<=6)[4]|(?<=7)[0123456]|(?<=8)[06789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[012]|(?<=4)[0]|(?<=5)[01]|(?<=6)[02]|(?<=7)[0]|(?<=8)[0123]))|(?<=9)[012345678]((?<=0)[012378]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0123456789]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[012345678]|(?<=7)[01234678]|(?<=8)[0123]|(?<=9)[012])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[012]|(?<=4)[0]|(?<=5)[012345]|(?<=6)[0]|(?<=7)[012]|(?<=8)[01]|(?<=9)[0])|(?<=3)[01234569]((?<=0)[0]|(?<=1)[0789]|(?<=2)[012345679]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[02789]|(?<=6)[012]|(?<=9)[0123456])|(?<=4)[012345]((?<=0)[0]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[012345]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[09]|(?<=6)[0123]|(?<=7)[01234]|(?<=8)[023]|(?<=9)[01234])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[089]|(?<=2)[0123456789]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456789])|(?<=7)[012345678]((?<=0)[06789]|(?<=1)[0456789]|(?<=2)[012]|(?<=3)[01]|(?<=4)[0123]|(?<=5)[01]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0123456]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01]|(?<=8)[021]))|(?<=5)[0123456789]((?<=0)[087]((?<=0)[012345678]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456789]((?<=0)[09]|(?<=1)[012349]|(?<=2)[012345678]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[012345]|(?<=7)[09]|(?<=8)[0123]|(?<=9)[01])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[01234]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=3)[014567]((?<=0)[0]|(?<=1)[01234]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234569]|(?<=3)[01234]|(?<=4)[12340]|(?<=5)[0345]|(?<=6)[0789]|(?<=7)[012345678]|(?<=8)[089]|(?<=9)[01234])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[012]|(?<=3)[012345678]|(?<=4)[0123456]|(?<=5)[01234]|(?<=6)[01234]|(?<=7)[012345678]|(?<=8)[01234567]|(?<=9)[012345])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=9)[0123456]((?<=0)[089]|(?<=1)[0789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]))|(?<=3)[01234578]((?<=0)[078]((?<=0)[12345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123457]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[01234]|(?<=5)[012345]|(?<=7)[8])|(?<=2)[04]((?<=0)[0123456]|(?<=4)[1])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012]|(?<=2)[01]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[012345]|(?<=7)[01234569]|(?<=8)[012]|(?<=9)[0123])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456789]|(?<=3)[09]|(?<=4)[089]|(?<=5)[09]|(?<=6)[01]|(?<=7)[09]|(?<=8)[01]|(?<=9)[01])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0789]|(?<=3)[0]|(?<=4)[098]|(?<=5)[089]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234567])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[09]|(?<=3)[06789]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[012345]|(?<=7)[01234567]|(?<=8)[01234567]|(?<=9)[012])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0789]|(?<=8)[01234567]|(?<=9)[01234567]))|(?<=8)[3427015689]((?<=3)[5012346789]((?<=5)[0]|(?<=0)[09]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123]|(?<=9)[012345])|(?<=4)[69158]((?<=6)[0]|(?<=9)[809]|(?<=1)[09]|(?<=5)[0]|(?<=8)[0])|(?<=2)[7012345689]((?<=7)[7068]|(?<=0)[0]|(?<=1)[01235]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[09]|(?<=8)[0789]|(?<=9)[1])|(?<=7)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[0178]((?<=0)[123456789]|(?<=1)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[012345]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012456])|(?<=5)[01235]((?<=0)[08]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0])|(?<=6)[012345]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[09]|(?<=8)[0]|(?<=9)[015])|(?<=9)[0123456789]((?<=0)[0123]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01238]))|(?<=1)[0123456789]((?<=0)[012897]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0]|(?<=8)[90]|(?<=9)[2]|(?<=7)[01])|(?<=1)[012345]((?<=0)[0]|(?<=1)[01]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[012345]((?<=0)[09]|(?<=1)[089]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=3)[0123456789]((?<=0)[09]|(?<=1)[089]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]|(?<=9)[0])|(?<=4)[01234567]((?<=0)[09]|(?<=1)[0]|(?<=2)[09]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[03456789]|(?<=7)[0]|(?<=8)[0]|(?<=9)[09])|(?<=6)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0789]|(?<=6)[01]|(?<=7)[0])|(?<=7)[012345678]((?<=0)[01234]|(?<=1)[09]|(?<=2)[078]|(?<=3)[01]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=8)[0123456789]((?<=0)[0456789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]|(?<=9)[0789])|(?<=9)[012345678]((?<=0)[0789]|(?<=1)[0]|(?<=2)[078]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09])))|(?<=5)[102]((?<=1)[0]((?<=0)[078]((?<=0)[12345]|(?<=7)[01]|(?<=8)[0]))|(?<=0)[012345678]((?<=0)[1250789]((?<=1)[6901234578]|(?<=2)[201]|(?<=5)[9]|(?<=0)[123456789]|(?<=7)[01]|(?<=8)[0]|(?<=9)[0])|(?<=1)[0345678912]((?<=0)[089]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[0123456]|(?<=6)[01234]|(?<=7)[012345786]|(?<=8)[0]|(?<=9)[056123478]|(?<=1)[0]|(?<=2)[0])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012345679]|(?<=2)[0789]|(?<=3)[06789]|(?<=4)[06789]|(?<=5)[0789]|(?<=6)[06789]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456789])|(?<=3)[01234679]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[023456]|(?<=3)[0123456]|(?<=4)[012345678]|(?<=6)[06789]|(?<=7)[0123456]|(?<=9)[01])|(?<=4)[0123456789]((?<=0)[089]|(?<=1)[01]|(?<=2)[0]|(?<=3)[0]|(?<=4)[01]|(?<=5)[0]|(?<=6)[01]|(?<=7)[0]|(?<=8)[012]|(?<=9)[01])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[09]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[012]|(?<=7)[0]|(?<=8)[01234]|(?<=9)[0126])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01245679]|(?<=2)[90]|(?<=3)[0789]|(?<=4)[01]|(?<=5)[0]|(?<=6)[089]|(?<=7)[089]|(?<=8)[023456789]|(?<=9)[0123456])|(?<=7)[0134567892]((?<=0)[09]|(?<=1)[0]|(?<=3)[0]|(?<=4)[01]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123456]|(?<=9)[02345]|(?<=2)[0])|(?<=8)[01234]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]))|(?<=2)[0]((?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])))))$"), + FR: new RegExp("^([5623401789]((?<=5)[0123456789]((?<=0)[356284170]((?<=3)[9420617358]((?<=9)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0])|(?<=5)[8742310659]((?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0])|(?<=6)[073684219]((?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0])|(?<=2)[562140973]((?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0])|(?<=8)[71059864]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=4)[0])|(?<=4)[1982546037]((?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0])|(?<=1)[1478956230]((?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0])|(?<=7)[07526413]((?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[127643580]((?<=1)[275634190]((?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0])|(?<=2)[596374210]((?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[98207365]((?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=3)[3092418675]((?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0])|(?<=5)[3012]((?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=2)[213476058]((?<=2)[310497625]((?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=1)[312549670]((?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=3)[0371246]((?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0])|(?<=4)[01]((?<=0)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=3)[2163459870]((?<=2)[139405672]((?<=1)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0])|(?<=1)[70264195]((?<=7)[0]|(?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0])|(?<=6)[04]((?<=0)[0]|(?<=4)[0])|(?<=3)[48605927]((?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=4)[148072]((?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0])|(?<=5)[04]((?<=0)[0]|(?<=4)[0])|(?<=9)[4756]((?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=4)[8173542690]((?<=8)[0973468125]((?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=1)[1529746380]((?<=1)[502364198]|(?<=5)[0]|(?<=2)[02913]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[4560]|(?<=8)[0]|(?<=0)[0])|(?<=7)[4180762395]((?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0])|(?<=3)[7608312459]((?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[50]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0])|(?<=5)[8725643109]((?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0])|(?<=4)[7519382460]((?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[50]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=2)[3069418725]((?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[3612054897]((?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=7)[0])|(?<=9)[239458761]((?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[143627085]((?<=1)[306259147]((?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[03]((?<=0)[0]|(?<=3)[0])|(?<=3)[021]((?<=0)[0]|(?<=2)[0]|(?<=1)[0])|(?<=6)[0]((?<=0)[0])|(?<=2)[675104293]((?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[04]((?<=0)[0]|(?<=4)[0])|(?<=5)[0]((?<=0)[0]))|(?<=6)[6321457980]((?<=6)[4920318675]((?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0])|(?<=3)[5982641037]((?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0])|(?<=2)[40625397]((?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0])|(?<=1)[432671950]((?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=0)[0])|(?<=4)[0326875941]((?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0])|(?<=5)[6058143927]((?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=7)[0687354]((?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0])|(?<=9)[2135]((?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[9850764]((?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[4731508269]((?<=4)[4851620379]((?<=4)[05]|(?<=8)[0]|(?<=5)[05]|(?<=1)[025]|(?<=6)[0]|(?<=2)[0]|(?<=0)[05]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[32401978]((?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0])|(?<=3)[6042837519]((?<=6)[05]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[05]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0])|(?<=1)[375460892]((?<=3)[0]|(?<=7)[05]|(?<=5)[50]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[05]|(?<=9)[0]|(?<=2)[0])|(?<=5)[9358617420]((?<=9)[0]|(?<=3)[05]|(?<=5)[0]|(?<=8)[0]|(?<=6)[50]|(?<=1)[05]|(?<=7)[0]|(?<=4)[0]|(?<=2)[05]|(?<=0)[0])|(?<=0)[570]((?<=5)[0]|(?<=7)[0]|(?<=0)[0])|(?<=8)[3018726549]((?<=3)[0]|(?<=0)[0]|(?<=1)[50]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[50]|(?<=5)[05]|(?<=4)[0]|(?<=9)[0])|(?<=2)[204698375]((?<=2)[0]|(?<=0)[0]|(?<=4)[50]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[05])|(?<=6)[306924758]((?<=3)[05]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[50]|(?<=7)[0]|(?<=5)[50]|(?<=8)[05])|(?<=9)[8732641905]((?<=8)[0]|(?<=7)[0]|(?<=3)[05]|(?<=2)[05]|(?<=6)[0]|(?<=4)[0]|(?<=1)[05]|(?<=9)[0]|(?<=0)[5]|(?<=5)[0]))|(?<=8)[713548260]((?<=7)[0]((?<=0)[0])|(?<=1)[791425836]((?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[0524183796]((?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0])|(?<=5)[03]((?<=0)[0]|(?<=3)[0])|(?<=4)[620174935]((?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=2)[210539746]((?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0])|(?<=6)[604]((?<=6)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[2467135980]((?<=2)[6842175390]((?<=6)[8691025374]|(?<=8)[085267431]|(?<=4)[475093216]|(?<=2)[503917264]|(?<=1)[6483709152]|(?<=7)[80973421]|(?<=5)[92183045]|(?<=3)[4091256738]|(?<=9)[36025794]|(?<=0)[0])|(?<=4)[1490738625]((?<=1)[0]|(?<=4)[0]|(?<=9)[0431562]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[0867932541]((?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0])|(?<=7)[1483579206]((?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[07]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0])|(?<=1)[3719254680]((?<=3)[4309816257]|(?<=7)[3806172594]|(?<=1)[2016495837]|(?<=9)[10985342]|(?<=2)[8273401965]|(?<=5)[7398145260]|(?<=4)[3149875602]|(?<=6)[4139725608]|(?<=8)[197248605]|(?<=0)[0])|(?<=3)[321769850]((?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0])|(?<=5)[7451360829]((?<=7)[0]|(?<=4)[0]|(?<=5)[20341]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=2)[0]|(?<=9)[0])|(?<=9)[894526731]((?<=8)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0])|(?<=8)[2473158690]((?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])))|(?<=6)[0123456789]((?<=0)[4631985270]((?<=4)[80923461]((?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0])|(?<=6)[08954621]((?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0])|(?<=3)[0958136427]((?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=1)[9243715680]((?<=9)[0]|(?<=2)[039687]|(?<=4)[109]|(?<=3)[048]|(?<=7)[035]|(?<=1)[09273]|(?<=5)[0753]|(?<=6)[20]|(?<=8)[0]|(?<=0)[0])|(?<=9)[3465]((?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0])|(?<=8)[270854619]((?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0])|(?<=5)[4108937256]((?<=4)[0]|(?<=1)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0])|(?<=2)[4291356870]((?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=0)[0])|(?<=7)[903514]((?<=9)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[521476038]((?<=5)[7065]((?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0])|(?<=2)[743205916]((?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0])|(?<=1)[210356794]((?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[71042359]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0])|(?<=7)[09]((?<=0)[0]|(?<=9)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=3)[2693851074]((?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0])|(?<=8)[0]((?<=0)[0]))|(?<=2)[3168254790]((?<=3)[2916438750]((?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0])|(?<=1)[4265783190]((?<=4)[40579321]|(?<=2)[071489362]|(?<=6)[4120]|(?<=5)[086523791]|(?<=7)[056932]|(?<=8)[0752]|(?<=3)[4061827]|(?<=1)[813906742]|(?<=9)[096]|(?<=0)[0])|(?<=6)[5197203486]((?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[5916743082]((?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=2)[0])|(?<=2)[1764253890]((?<=1)[08795]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[3041]|(?<=5)[0]|(?<=3)[210]|(?<=8)[0]|(?<=9)[0]|(?<=0)[0])|(?<=5)[6375908412]((?<=6)[0]|(?<=3)[0]|(?<=7)[05]|(?<=5)[0]|(?<=9)[0]|(?<=0)[0]|(?<=8)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0])|(?<=4)[5786019432]((?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0])|(?<=7)[8467209315]((?<=8)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=9)[659217384]((?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[4213657890]((?<=4)[2694581370]((?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0])|(?<=2)[136572094]((?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0])|(?<=1)[156492703]((?<=1)[4906215873]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[02]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[9152387460]((?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=6)[0817329645]((?<=0)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0])|(?<=5)[7089643215]((?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=7)[6025398147]((?<=6)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=8)[845230917]((?<=8)[0]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=7)[0])|(?<=9)[832571946]((?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0]))|(?<=4)[3245168790]((?<=3)[650739214]((?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0])|(?<=2)[253674910]((?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0])|(?<=4)[2056917483]((?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0])|(?<=5)[173206]((?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0])|(?<=1)[273149560]((?<=2)[012]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=0)[0])|(?<=6)[6480]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0])|(?<=8)[07]((?<=0)[0]|(?<=7)[0])|(?<=7)[80]((?<=8)[0]|(?<=0)[0])|(?<=9)[9]((?<=9)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[234165780]((?<=2)[40532769]((?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0])|(?<=3)[698507231]((?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0])|(?<=4)[4026193]((?<=4)[0]|(?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0])|(?<=1)[04375291]((?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0])|(?<=6)[6790]((?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0])|(?<=5)[9061]((?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0])|(?<=7)[10]((?<=1)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=6)[213657480]((?<=2)[1265830947]((?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=7)[0])|(?<=1)[1572893640]((?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0])|(?<=3)[0246975318]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[0])|(?<=6)[06952781]((?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0]|(?<=8)[0]|(?<=1)[0])|(?<=5)[0361574]((?<=0)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0])|(?<=7)[264035]((?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0])|(?<=4)[0851296374]((?<=0)[0]|(?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0])|(?<=8)[20]((?<=2)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[1638254790]((?<=1)[247319560]((?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[80473526]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=0)[0])|(?<=6)[0548693721]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0])|(?<=3)[2716489350]((?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0])|(?<=8)[01867524]((?<=0)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0])|(?<=2)[6792143508]((?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[01672453]|(?<=8)[0])|(?<=5)[7031526894]((?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[7380294516]((?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0])|(?<=7)[02579316]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=9)[398726]((?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[2853471960]((?<=2)[1234905687]((?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0])|(?<=8)[7052943]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=5)[6835017942]((?<=6)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0]|(?<=2)[0])|(?<=3)[2538906147]((?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[84297061]((?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0])|(?<=7)[283049765]((?<=2)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0])|(?<=1)[9413802756]((?<=9)[0]|(?<=4)[0]|(?<=1)[680]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=2)[7584016]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0])|(?<=9)[9761528]((?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=8)[0])|(?<=6)[163042985]((?<=1)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0])|(?<=0)[04]((?<=0)[0]|(?<=4)[0]))|(?<=9)[4265837190]((?<=4)[8790642315]((?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=2)[1269853407]((?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0])|(?<=6)[1294860537]((?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0])|(?<=5)[0513687924]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0])|(?<=8)[47562093]((?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0])|(?<=3)[8964312057]((?<=8)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=7)[09487326]((?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0])|(?<=1)[720546139]((?<=7)[0]|(?<=2)[0564]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[50]|(?<=3)[0]|(?<=9)[0])|(?<=9)[7316]((?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[892145637])))|(?<=2)[5678901234]((?<=5)[2137406859]((?<=2)[715429630]((?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0])|(?<=1)[15749623]((?<=1)[0315]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0])|(?<=3)[2186390745]((?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0])|(?<=7)[27905]((?<=2)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0])|(?<=4)[3214967085]((?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=6)[452869013]((?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=3)[0])|(?<=8)[7042]((?<=7)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0])|(?<=5)[65832017]((?<=6)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0])|(?<=9)[623]((?<=6)[0]|(?<=2)[0]|(?<=3)[0]))|(?<=6)[134265780]((?<=1)[546192730]((?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=0)[0])|(?<=3)[04153982]((?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0])|(?<=4)[072156]((?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0])|(?<=2)[034672159]((?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0])|(?<=6)[02]((?<=0)[0]|(?<=2)[0])|(?<=5)[136704]((?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0])|(?<=7)[48973650]((?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[4537621980]((?<=4)[0324765981]((?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0])|(?<=5)[0236741589]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=9)[0])|(?<=3)[8370259416]((?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0])|(?<=7)[0264395187]((?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=7)[0])|(?<=6)[0674389251]((?<=0)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0])|(?<=2)[267159340]((?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0])|(?<=1)[7689235401]((?<=7)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0])|(?<=9)[45312]((?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0])|(?<=8)[02395617]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[523176480]((?<=5)[0]((?<=0)[0])|(?<=2)[629714053]((?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0])|(?<=3)[36042185]((?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=5)[0])|(?<=1)[263974510]((?<=2)[0]|(?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=6)[30]((?<=3)[0]|(?<=0)[0])|(?<=4)[018]((?<=0)[0]|(?<=1)[0]|(?<=8)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[6148529730]((?<=6)[5921307468]((?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0])|(?<=1)[60892547]((?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[6041597238]((?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0])|(?<=8)[6140728395]((?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=8)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[961530724]((?<=9)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0])|(?<=2)[698475031]((?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=4)[162]|(?<=7)[0]|(?<=5)[0239]|(?<=0)[0]|(?<=3)[3]|(?<=1)[7])|(?<=9)[425970183]((?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0])|(?<=7)[1587936402]((?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0]|(?<=2)[0])|(?<=3)[05148697]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=0)[0126]((?<=0)[09]((?<=0)[0]|(?<=9)[0])|(?<=1)[261459307]((?<=2)[851734962]|(?<=6)[67093485]|(?<=1)[2178306495]|(?<=4)[078526413]|(?<=5)[13027]|(?<=9)[0]|(?<=3)[8145972603]|(?<=0)[0]|(?<=7)[0123])|(?<=2)[7102345968]((?<=7)[06295]|(?<=1)[2384579]|(?<=0)[0]|(?<=2)[695410287]|(?<=3)[7043589261]|(?<=4)[50264837]|(?<=5)[291036]|(?<=9)[0]|(?<=6)[0]|(?<=8)[7])|(?<=6)[20]((?<=2)[0]|(?<=0)[0]))|(?<=1)[1524367089]((?<=1)[21754396]((?<=2)[10]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=6)[0])|(?<=5)[1087432695]((?<=1)[0]|(?<=0)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=5)[0])|(?<=2)[309276154]((?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0])|(?<=4)[210954376]((?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=6)[0])|(?<=3)[1562397840]((?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=0)[0])|(?<=6)[94103]((?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0])|(?<=7)[06]((?<=0)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[025]((?<=0)[0]|(?<=2)[0]|(?<=5)[0])|(?<=9)[1]((?<=1)[0]))|(?<=2)[4182359760]((?<=4)[0358142976]((?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0])|(?<=1)[364017529]((?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0])|(?<=8)[710236]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0])|(?<=2)[519074263]((?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0]|(?<=3)[0])|(?<=3)[5321908467]((?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0]|(?<=8)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0])|(?<=5)[5741869320]((?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0])|(?<=9)[874536]((?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0])|(?<=7)[02378145]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=7)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0])|(?<=6)[192360458]((?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[327150468]((?<=3)[824065]((?<=8)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0])|(?<=2)[024165973]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0])|(?<=7)[0]((?<=0)[0])|(?<=1)[705931426]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[603852]((?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=2)[0])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=4)[321456870]((?<=3)[0321684795]((?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=7)[0]|(?<=9)[0]|(?<=5)[0])|(?<=2)[162543970]((?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0])|(?<=1)[547610932]((?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0])|(?<=4)[4017528369]((?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0])|(?<=5)[4562180973]((?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0])|(?<=6)[54201386]((?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[05]((?<=0)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])))|(?<=3)[0123456789]((?<=0)[7123546980]((?<=7)[0746532]((?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0])|(?<=1)[349125670]((?<=3)[3210]|(?<=4)[0]|(?<=9)[0]|(?<=1)[041]|(?<=2)[065427918]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=2)[165492037]((?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0])|(?<=3)[056293481]((?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0])|(?<=5)[80731462]((?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0])|(?<=4)[8519430762]((?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0])|(?<=6)[31502467]((?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0])|(?<=9)[60482]((?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0])|(?<=8)[4207]((?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[241537860]((?<=2)[8923160475]((?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0])|(?<=4)[6254937810]((?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=8)[0]|(?<=1)[0]|(?<=0)[0])|(?<=1)[6192358470]((?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0]|(?<=7)[0]|(?<=0)[0])|(?<=5)[1985476320]((?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0])|(?<=3)[8456137920]((?<=8)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0])|(?<=7)[70895]((?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0])|(?<=8)[705234168]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0])|(?<=6)[52067]((?<=5)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=2)[271364580]((?<=2)[74356920]((?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0])|(?<=7)[203]((?<=2)[0]|(?<=0)[0]|(?<=3)[0])|(?<=1)[173490562]((?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0])|(?<=3)[0875932146]((?<=0)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[801269354]((?<=8)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0])|(?<=5)[05]((?<=0)[0]|(?<=5)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[3178469052]((?<=3)[7564982031]((?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=1)[2983107654]((?<=2)[4653017]|(?<=9)[0]|(?<=8)[50]|(?<=3)[803]|(?<=1)[34205]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[10])|(?<=7)[3265914780]((?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0])|(?<=8)[8324961057]((?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=4)[3921647850]((?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0])|(?<=6)[492107568]((?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0])|(?<=9)[1258937]((?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=5)[5490786132]((?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=2)[341592076]((?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]))|(?<=4)[3462719508]((?<=3)[6328150974]((?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0])|(?<=4)[8603941275]((?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=6)[051863792]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0])|(?<=2)[2619378045]((?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0])|(?<=7)[012396574]((?<=0)[0]|(?<=1)[0]|(?<=2)[50]|(?<=3)[0]|(?<=9)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0])|(?<=1)[67913245]((?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0])|(?<=9)[8297]((?<=8)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0])|(?<=5)[674301952]((?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0])|(?<=0)[8907]((?<=8)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0])|(?<=8)[503128]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=8)[0]))|(?<=5)[2134586709]((?<=2)[569327401]((?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[05]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0])|(?<=1)[35124967]((?<=3)[70345216]|(?<=5)[0]|(?<=1)[314]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0])|(?<=3)[4372689051]((?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0])|(?<=4)[1657342908]((?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=0)[0]|(?<=8)[0])|(?<=5)[089524631]((?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0])|(?<=8)[95073]((?<=9)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0])|(?<=6)[853610429]((?<=8)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0])|(?<=7)[27564830]((?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=9)[6]((?<=6)[0]))|(?<=6)[123486750]((?<=1)[2650317489]((?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0])|(?<=2)[173042569]((?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0])|(?<=3)[35701426]((?<=3)[0]|(?<=5)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=4)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[152364870]((?<=1)[612453970]((?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0])|(?<=5)[021345]((?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[614237509]((?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0])|(?<=3)[4137986520]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[620]((?<=6)[0]|(?<=2)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[1253679480]((?<=1)[5496012387]((?<=5)[0]|(?<=4)[024]|(?<=9)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[209483]|(?<=2)[120]|(?<=3)[480]|(?<=8)[0]|(?<=7)[0])|(?<=2)[7698103254]((?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0])|(?<=5)[2914735086]((?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0])|(?<=3)[025983674]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0])|(?<=6)[9743568210]((?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0])|(?<=7)[431960785]((?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=6)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0])|(?<=9)[8736524]((?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0])|(?<=4)[7264983510]((?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0])|(?<=8)[79064583]((?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0])|(?<=0)[8097]((?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]))|(?<=9)[632185740]((?<=6)[0]((?<=0)[0])|(?<=3)[20516873]((?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0])|(?<=2)[471536920]((?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0])|(?<=1)[253140679]((?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0])|(?<=8)[0]((?<=0)[0])|(?<=5)[720]((?<=7)[0]|(?<=2)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[016]((?<=0)[0]|(?<=1)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0])))|(?<=4)[0123456789]((?<=0)[3910562874]((?<=3)[382095167]((?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0])|(?<=9)[9]((?<=9)[0])|(?<=1)[1270985463]((?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=5)[01563]((?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0])|(?<=6)[036]((?<=0)[0]|(?<=3)[0]|(?<=6)[0])|(?<=2)[1478569302]((?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=0)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[0163284]((?<=0)[0]|(?<=1)[0]|(?<=6)[50]|(?<=3)[0]|(?<=2)[0]|(?<=8)[0]|(?<=4)[0]))|(?<=1)[231865470]((?<=2)[459721036]((?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[3601752]((?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0])|(?<=1)[721596340]((?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=4)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=2)[5164293780]((?<=5)[5697821043]((?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=3)[0])|(?<=1)[342510796]((?<=3)[01]|(?<=4)[0]|(?<=2)[032]|(?<=5)[0352]|(?<=1)[041]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0])|(?<=6)[026417835]((?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0])|(?<=4)[6137049258]((?<=6)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0])|(?<=2)[4621937]((?<=4)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0])|(?<=9)[492]((?<=4)[0]|(?<=9)[0]|(?<=2)[0])|(?<=3)[0687312495]((?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=5)[0])|(?<=7)[52048]((?<=5)[0]|(?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=8)[0])|(?<=8)[403291]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[374215806]((?<=3)[083476529]((?<=0)[0]|(?<=8)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0])|(?<=7)[057]((?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=4)[1354902]((?<=1)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=2)[0])|(?<=2)[639021754]((?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[267054931]((?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0])|(?<=5)[0918325]((?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0])|(?<=6)[20]((?<=2)[0]|(?<=0)[0]))|(?<=4)[1645832709]((?<=1)[461972530]((?<=4)[0]|(?<=6)[0]|(?<=1)[095876]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=6)[8714390256]((?<=8)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[1647258309]((?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0])|(?<=5)[8239540617]((?<=8)[0]|(?<=2)[012]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=7)[0])|(?<=8)[3506841]((?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=1)[0])|(?<=3)[5127493608]((?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0])|(?<=2)[705629314]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0])|(?<=7)[815347260]((?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=9)[8]((?<=8)[0]))|(?<=5)[321546708]((?<=3)[091476823]((?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=8)[0]|(?<=2)[0]|(?<=3)[0])|(?<=2)[216907354]((?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[713590624]((?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=4)[0])|(?<=5)[70523619]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0])|(?<=4)[508912367]((?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0])|(?<=6)[204538]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0])|(?<=7)[0624357]((?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=6)[183742065]((?<=1)[204635197]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0])|(?<=8)[0]((?<=0)[0])|(?<=3)[3251460]((?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[0]((?<=0)[0])|(?<=2)[15637204]((?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0]))|(?<=7)[721453680]((?<=7)[0]((?<=0)[0])|(?<=2)[256917034]((?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0])|(?<=1)[247536819]((?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=9)[0])|(?<=4)[17203584]((?<=1)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0])|(?<=5)[0125]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=3)[6301527489]((?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[215367048]((?<=2)[03145627]((?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0])|(?<=1)[946025173]((?<=9)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0])|(?<=5)[0]((?<=0)[0])|(?<=3)[103427]((?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=9)[605123478]((?<=6)[5134267089]((?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0])|(?<=0)[078]((?<=0)[0]|(?<=7)[0]|(?<=8)[0])|(?<=5)[41362097]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0])|(?<=1)[576429130]((?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[03254]|(?<=9)[0]|(?<=1)[02]|(?<=3)[0]|(?<=0)[0])|(?<=2)[56728934]((?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0])|(?<=3)[2631580794]((?<=2)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[403925618]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0])|(?<=7)[073541]((?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])))|(?<=0)[123456789]((?<=1)[6351248079]((?<=6)[40386]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=3)[3048612579]((?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0])|(?<=5)[01567984]((?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=8)[0]|(?<=4)[0])|(?<=1)[195230674]((?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0])|(?<=2)[0653918427]((?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=1)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=4)[735216804]((?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=4)[0])|(?<=8)[05]((?<=0)[0]|(?<=5)[1])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=7)[051]((?<=0)[0]|(?<=5)[0]|(?<=1)[0])|(?<=9)[69]((?<=6)[0]|(?<=9)[0]))|(?<=2)[385421067]((?<=3)[0641538729]((?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=9)[0])|(?<=8)[061825743]((?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0])|(?<=5)[09824715]((?<=0)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0])|(?<=4)[8924015673]((?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0])|(?<=2)[972140563]((?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0])|(?<=1)[923016475]((?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=6)[807351429]((?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0])|(?<=7)[2069]((?<=2)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]))|(?<=3)[213074568]((?<=2)[051249763]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0])|(?<=1)[495327160]((?<=4)[0]|(?<=9)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0])|(?<=3)[0718364925]((?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[71523640]((?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0])|(?<=5)[01]((?<=0)[0]|(?<=1)[0])|(?<=6)[03]((?<=0)[0]|(?<=3)[0])|(?<=8)[0]((?<=0)[0]))|(?<=4)[524137086]((?<=5)[031]((?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[6785034192]((?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0])|(?<=4)[201]((?<=2)[0]|(?<=0)[0]|(?<=1)[0])|(?<=1)[5267149803]((?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[372408615]((?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[5670]((?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=6)[06]((?<=0)[0]|(?<=6)[0]))|(?<=5)[162735408]((?<=1)[194075362]((?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=6)[0]((?<=0)[0])|(?<=2)[6309254]((?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0])|(?<=7)[0]((?<=0)[0])|(?<=3)[5041382]((?<=5)[0]|(?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[0])|(?<=5)[06]((?<=0)[0]|(?<=6)[0])|(?<=4)[0867]((?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=6)[1463827950]((?<=1)[6340519]((?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0])|(?<=4)[207645381]((?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=1)[0])|(?<=6)[27604591]((?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0])|(?<=3)[194832670]((?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=8)[0531]((?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[16270543]((?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0])|(?<=7)[105943]((?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=9)[15]((?<=1)[0]|(?<=5)[0])|(?<=5)[6108345972]((?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=8)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[136250748]((?<=1)[904516237]((?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=7)[0])|(?<=3)[412078365]((?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[01936]((?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0])|(?<=2)[930764215]((?<=9)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=5)[87319206]((?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[09]((?<=0)[0]|(?<=9)[0])|(?<=4)[7106453]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0])|(?<=8)[0]((?<=0)[0]))|(?<=8)[432165087]((?<=4)[503641]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0])|(?<=3)[180957623]((?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0])|(?<=2)[149256703]((?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0])|(?<=1)[92165347]((?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0]))|(?<=9)[632841507]((?<=6)[0]((?<=0)[0])|(?<=3)[1205493]((?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0])|(?<=2)[45302971]((?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[026]((?<=0)[0]|(?<=2)[0]|(?<=6)[0])|(?<=1)[0623419]((?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])))|(?<=1)[0123456789]((?<=0)[231648570]((?<=2)[0249167835]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0])|(?<=3)[4382715960]((?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=0)[0])|(?<=1)[3791052468]((?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[012435]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=5)[01]((?<=0)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[351270486]((?<=3)[6490375182]((?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0])|(?<=5)[8160497]((?<=8)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0])|(?<=1)[724906153]((?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=2)[073425916]((?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[3012984]((?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=8)[0]|(?<=4)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[012]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]))|(?<=2)[521340786]((?<=5)[2546081]((?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=1)[0])|(?<=2)[230694157]((?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0])|(?<=1)[164325709]((?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=0)[0]|(?<=9)[0])|(?<=3)[5209638147]((?<=5)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[8062574319]((?<=8)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0482]((?<=0)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0])|(?<=8)[50]((?<=5)[0]|(?<=0)[0])|(?<=6)[4203]((?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]))|(?<=3)[1375248609]((?<=1)[9268103547]((?<=9)[0]|(?<=2)[10796243]|(?<=6)[0]|(?<=8)[0]|(?<=1)[7596430812]|(?<=0)[35904]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0])|(?<=3)[9236105784]((?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0])|(?<=7)[2498107563]((?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0])|(?<=5)[1803927645]((?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[7586321490]((?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0])|(?<=4)[2183607459]((?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0])|(?<=8)[5942317806]((?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=2)[10]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0]|(?<=6)[0])|(?<=6)[4203198567]((?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[0189]((?<=0)[689124537]|(?<=1)[3615024]|(?<=8)[0]|(?<=9)[0])|(?<=9)[54891326]((?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]))|(?<=4)[1526493780]((?<=1)[916304752]((?<=9)[0]|(?<=1)[230741]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[130])|(?<=5)[43970152]((?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0])|(?<=2)[4569217380]((?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0])|(?<=6)[120758943]((?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=4)[3980471625]((?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=9)[537924618]((?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0])|(?<=3)[534718296]((?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0])|(?<=7)[107549368]((?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0])|(?<=8)[4860513]((?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[702831456]((?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=2)[537246901]((?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])|(?<=3)[082154]((?<=0)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[941235076]((?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0])|(?<=4)[03]((?<=0)[0]|(?<=3)[0])|(?<=5)[90]((?<=9)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0]))|(?<=6)[154327608]((?<=1)[432157906]((?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0])|(?<=5)[06197]((?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0])|(?<=4)[6129703845]((?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=4)[0]|(?<=5)[0])|(?<=3)[0258349671]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0])|(?<=2)[154670239]((?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0])|(?<=7)[0123]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0])|(?<=6)[20]((?<=2)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=7)[5784231609]((?<=5)[2057914683]((?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=3)[0])|(?<=7)[703854]((?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0])|(?<=8)[017894]((?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[4387901625]((?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=2)[971346025]((?<=9)[0]|(?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0])|(?<=3)[3824651790]((?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0])|(?<=1)[5603741928]((?<=5)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[07892]|(?<=7)[0]|(?<=4)[0]|(?<=1)[310]|(?<=9)[0]|(?<=2)[30]|(?<=8)[0])|(?<=6)[10275934]((?<=1)[0]|(?<=0)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0])|(?<=9)[24]((?<=2)[0]|(?<=4)[0]))|(?<=8)[231546780]((?<=2)[261497503]((?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[4582097613]((?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0])|(?<=1)[435672109]((?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0])|(?<=5)[2701]((?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0])|(?<=4)[10]((?<=1)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[321546870]((?<=3)[8152436907]((?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0])|(?<=2)[529017364]((?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0])|(?<=1)[921045673]((?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0])|(?<=5)[02516]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0])|(?<=4)[3107965]((?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])))|(?<=7)[0123456789]((?<=0)[321045678]((?<=3)[0612]((?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0])|(?<=2)[807134592]((?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0])|(?<=1)[1049268735]((?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[04]((?<=0)[0]|(?<=4)[0])|(?<=5)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=1)[3451269708]((?<=3)[7321409658]((?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0]|(?<=5)[0]|(?<=8)[0])|(?<=4)[6843720915]((?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0])|(?<=5)[483721950]((?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=0)[0])|(?<=1)[237619045]((?<=2)[0]|(?<=3)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[08]|(?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[256794130]((?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=0)[0])|(?<=6)[27840]((?<=2)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=0)[0])|(?<=9)[69]((?<=6)[0]|(?<=9)[0])|(?<=7)[6104]((?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0758]((?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0]))|(?<=2)[684531270]((?<=6)[015]((?<=0)[0]|(?<=1)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[035467]((?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0])|(?<=5)[054163]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0])|(?<=3)[2049518367]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0])|(?<=1)[167354209]((?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0])|(?<=2)[142736905]((?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[623450187]((?<=6)[1306472]((?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0])|(?<=2)[610452739]((?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0])|(?<=3)[407915362]((?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=4)[176480295]((?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[0429357]((?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=1)[970136542]((?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0])|(?<=8)[07]((?<=0)[0]|(?<=7)[0])|(?<=7)[20931]((?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]))|(?<=4)[5231849670]((?<=5)[4062758]((?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0])|(?<=2)[901567342]((?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0])|(?<=3)[5068127394]((?<=5)[0]|(?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0])|(?<=1)[063451297]((?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0])|(?<=8)[09]((?<=0)[0]|(?<=9)[0])|(?<=4)[302741956]((?<=3)[0]|(?<=0)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0])|(?<=9)[1763542]((?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0])|(?<=6)[506]((?<=5)[0]|(?<=0)[0]|(?<=6)[0])|(?<=7)[04]((?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[012]((?<=0)[325814679]|(?<=1)[2516470389]|(?<=2)[0])|(?<=1)[1]((?<=1)[6]))|(?<=6)[5781462390]((?<=5)[6937514208]((?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=8)[0])|(?<=7)[6425389107]((?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0])|(?<=8)[95146807]((?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0])|(?<=1)[169734520]((?<=1)[067913]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[30]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=0)[0])|(?<=4)[9465083127]((?<=9)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0])|(?<=6)[893460125]((?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=2)[8372691405]((?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0])|(?<=3)[2934687501]((?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=1)[0])|(?<=9)[75431628]((?<=7)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=8)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[1793458260]((?<=1)[2765834910]((?<=2)[047236]|(?<=7)[1306847]|(?<=6)[0365974]|(?<=5)[4701]|(?<=8)[34561]|(?<=3)[9801354]|(?<=4)[40851]|(?<=9)[0]|(?<=1)[5841]|(?<=0)[0])|(?<=7)[6523018]((?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=8)[0])|(?<=9)[1427359]((?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0])|(?<=3)[9287534160]((?<=9)[0]|(?<=2)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0])|(?<=4)[786314052]((?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0])|(?<=5)[956214870]((?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[05]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=0)[0])|(?<=8)[392654817]((?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0])|(?<=2)[2398610745]((?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0])|(?<=6)[5183094267]((?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[09]((?<=0)[0]|(?<=9)[0]))|(?<=8)[6592871430]((?<=6)[6590432718]((?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0])|(?<=5)[8257319460]((?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=9)[138957426]((?<=1)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[05]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=2)[7053264891]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0])|(?<=8)[349271650]((?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0])|(?<=7)[2931764508]((?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[01]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0])|(?<=1)[5321760894]((?<=5)[0]|(?<=3)[0]|(?<=2)[50614]|(?<=1)[073421]|(?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[6947512803]((?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[1269853704]((?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[612843507]((?<=6)[0]((?<=0)[0])|(?<=1)[3579610248]((?<=3)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=8)[0])|(?<=2)[912053746]((?<=9)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[2015436]((?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[0654827931]((?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0])|(?<=5)[10]((?<=1)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])))|(?<=8)[0123456789]((?<=0)[1320758649]((?<=1)[013576924]((?<=0)[0]|(?<=1)[058]|(?<=3)[204651]|(?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[02]|(?<=4)[0])|(?<=3)[071462935]((?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0])|(?<=2)[706954132]((?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=0)[098]((?<=0)[0]|(?<=9)[0]|(?<=8)[0])|(?<=7)[054871]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=1)[0])|(?<=5)[60784215]((?<=6)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=8)[05627398]((?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0])|(?<=6)[024879153]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=4)[8705192346]((?<=8)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0])|(?<=9)[7618]((?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0]))|(?<=1)[1354269870]((?<=1)[473529106]((?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=6)[0])|(?<=3)[6430175829]((?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=2)[0]|(?<=9)[0])|(?<=5)[08743]((?<=0)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0])|(?<=4)[304795]((?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=9)[0]|(?<=5)[0])|(?<=2)[601254937]((?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0])|(?<=6)[0436]((?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0])|(?<=9)[9]((?<=9)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0]))|(?<=2)[218453760]((?<=2)[91430527]((?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0])|(?<=1)[297603541]((?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[041]((?<=0)[0]|(?<=4)[0]|(?<=1)[0])|(?<=5)[0]((?<=0)[0])|(?<=3)[7409365]((?<=7)[0]|(?<=4)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=7)[01]((?<=0)[0]|(?<=1)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[6813459270]((?<=6)[01743689]((?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0])|(?<=8)[439267]((?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0])|(?<=1)[732105946]((?<=7)[0]|(?<=3)[610]|(?<=2)[0]|(?<=1)[190]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[039]|(?<=6)[0])|(?<=3)[423915087]((?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=7)[0])|(?<=4)[40732689]((?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0])|(?<=5)[763109582]((?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=8)[0]|(?<=2)[0])|(?<=9)[8219]((?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0])|(?<=2)[03521674]((?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0])|(?<=7)[04982]((?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0])|(?<=0)[0]((?<=0)[0]))|(?<=4)[432168570]((?<=4)[0187463529]((?<=0)[0]|(?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0])|(?<=3)[4928630175]((?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0])|(?<=2)[429105367]((?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0])|(?<=1)[196270534]((?<=1)[0]|(?<=9)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0])|(?<=6)[06]((?<=0)[0]|(?<=6)[0])|(?<=8)[40517362]((?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=5)[8716305]((?<=8)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=5)[0])|(?<=7)[5460]((?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[416532780]((?<=4)[3815024769]((?<=3)[0]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0])|(?<=1)[7456913082]((?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=2)[0])|(?<=6)[027849163]((?<=0)[0]|(?<=2)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0])|(?<=5)[1972304568]((?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0])|(?<=3)[215749063]((?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[2485610379]((?<=2)[0]|(?<=4)[0]|(?<=8)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[07145]((?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=6)[431265780]((?<=4)[3957201648]((?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0])|(?<=3)[1308524976]((?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0])|(?<=1)[0926873145]((?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[0531296478]((?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[350814]((?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[1234986750]((?<=1)[675243910]((?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0])|(?<=2)[2173850964]((?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0])|(?<=3)[624380175]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0])|(?<=4)[60418273]((?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0])|(?<=9)[2]((?<=2)[0])|(?<=8)[09]((?<=0)[0]|(?<=9)[0])|(?<=6)[024]((?<=0)[0]|(?<=2)[0]|(?<=4)[0])|(?<=7)[02]((?<=0)[0]|(?<=2)[0])|(?<=5)[10927]((?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[763218450]((?<=7)[0]((?<=0)[0])|(?<=6)[5304]((?<=5)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0])|(?<=3)[0132954867]((?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0])|(?<=2)[674301259]((?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0])|(?<=1)[371245096]((?<=3)[0]|(?<=7)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[3659412708]((?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0])|(?<=5)[02156384]((?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[871426035]((?<=8)[0]((?<=0)[0])|(?<=7)[1704]((?<=1)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0])|(?<=1)[612934057]((?<=6)[0]|(?<=1)[360]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[40]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=4)[840253167]((?<=8)[0]|(?<=4)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0])|(?<=2)[075964123]((?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0])|(?<=6)[6039]((?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0])|(?<=0)[0]((?<=0)[0])|(?<=3)[620194358]((?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0])|(?<=5)[68270513]((?<=6)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0])))|(?<=9)[01234578]((?<=0)[401263857]((?<=4)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=1)[01537642]((?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0])|(?<=2)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=3)[4603587]((?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=7)[0])|(?<=8)[05]((?<=0)[0]|(?<=5)[0])|(?<=5)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0]))|(?<=1)[4568172039]((?<=4)[1943672508]((?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0])|(?<=5)[874532196]((?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=6)[0])|(?<=6)[3459270861]((?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0])|(?<=8)[0815726943]((?<=0)[0]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=1)[596803247]((?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0])|(?<=7)[2578039641]((?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0])|(?<=2)[1870639524]((?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0])|(?<=0)[8970]((?<=8)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0])|(?<=3)[1923807654]((?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0])|(?<=9)[413]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]))|(?<=2)[213475086]((?<=2)[792406513]((?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0])|(?<=1)[041927635]((?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0])|(?<=3)[5762148039]((?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0])|(?<=4)[2031]((?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0]))|(?<=3)[631452708]((?<=6)[0]((?<=0)[0])|(?<=3)[9763854012]((?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0])|(?<=1)[240697351]((?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0])|(?<=4)[52637401]((?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0])|(?<=5)[0]((?<=0)[0])|(?<=2)[345601279]((?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=4)[527148360]((?<=5)[0215]((?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=2)[651324079]((?<=6)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[0]((?<=0)[0])|(?<=1)[356720941]((?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0])|(?<=4)[4389167502]((?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=2)[0])|(?<=8)[08]((?<=0)[0]|(?<=8)[0])|(?<=3)[064712985]((?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[584276031]((?<=5)[1807629453]((?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0])|(?<=8)[18734052]((?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0])|(?<=4)[3275061489]((?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0])|(?<=2)[5471830296]((?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0])|(?<=7)[14725086]((?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0])|(?<=6)[4197862530]((?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=3)[7521493086]((?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0])|(?<=1)[6357904281]((?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[0]|(?<=1)[0]))|(?<=7)[123456]((?<=1)[4321968075]((?<=4)[201]|(?<=3)[0473916]|(?<=2)[891250736]|(?<=1)[6492108735]|(?<=9)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0])|(?<=2)[1209354786]((?<=1)[73528641]|(?<=2)[4258317960]|(?<=0)[0]|(?<=9)[0]|(?<=3)[10342]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0])|(?<=3)[9150627483]((?<=9)[0]|(?<=1)[8342760195]|(?<=5)[2310546]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0])|(?<=4)[2140836795]((?<=2)[503697412]|(?<=1)[910873426]|(?<=4)[021]|(?<=0)[0]|(?<=8)[0]|(?<=3)[6245870931]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[0]((?<=0)[0])|(?<=6)[572136084]((?<=5)[0]|(?<=7)[0]|(?<=2)[05]|(?<=1)[5]|(?<=3)[0]|(?<=6)[0]|(?<=0)[05]|(?<=8)[0]|(?<=4)[0]))|(?<=8)[7860]((?<=7)[8063945127]((?<=8)[6142578093]|(?<=0)[14973568]|(?<=6)[1209567348]|(?<=3)[012345]|(?<=9)[0236945]|(?<=4)[0135649278]|(?<=5)[502341]|(?<=1)[0294681]|(?<=2)[8904153627]|(?<=7)[3512964708])|(?<=8)[3521704869]((?<=3)[0346217958]|(?<=5)[90]|(?<=2)[0382945617]|(?<=1)[9372501648]|(?<=7)[468057]|(?<=0)[09]|(?<=4)[0]|(?<=8)[9105234]|(?<=6)[0]|(?<=9)[0])|(?<=6)[021]((?<=0)[0]|(?<=2)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0])))))$"), + IS: new RegExp("^([123456789]((?<=1)[0123679]((?<=0)[12345789]|(?<=1)[01236]|(?<=2)[1345789]|(?<=3)[02]|(?<=6)[12]|(?<=7)[02]|(?<=9)[01])|(?<=2)[01234567]((?<=0)[01236]|(?<=1)[02]|(?<=2)[0125]|(?<=3)[0235]|(?<=4)[0156]|(?<=5)[01]|(?<=6)[02]|(?<=7)[016])|(?<=3)[01245678]((?<=0)[012]|(?<=1)[01]|(?<=2)[0]|(?<=4)[0125]|(?<=5)[0156]|(?<=6)[0]|(?<=7)[01]|(?<=8)[01])|(?<=4)[0123567]((?<=0)[01]|(?<=1)[056]|(?<=2)[0156]|(?<=3)[01]|(?<=5)[01]|(?<=6)[0156]|(?<=7)[01])|(?<=5)[012345678]((?<=0)[0]|(?<=1)[012]|(?<=2)[04]|(?<=3)[01]|(?<=4)[0156]|(?<=5)[01]|(?<=6)[0156]|(?<=7)[0]|(?<=8)[01])|(?<=6)[0123456789]((?<=0)[01234567]|(?<=1)[016]|(?<=2)[0156]|(?<=3)[0]|(?<=4)[015]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0156]|(?<=8)[0156]|(?<=9)[01])|(?<=7)[01234568]((?<=0)[01]|(?<=1)[015]|(?<=2)[01]|(?<=3)[0156]|(?<=4)[01]|(?<=5)[0156]|(?<=6)[0156]|(?<=8)[015])|(?<=8)[01245678]((?<=0)[0123456]|(?<=1)[056]|(?<=2)[05]|(?<=4)[056]|(?<=5)[01]|(?<=6)[01]|(?<=7)[01]|(?<=8)[01])|(?<=9)[0]((?<=0)[02])))$"), + LU: new RegExp("^([978643521]((?<=9)[7856193042]((?<=7)[56481307]((?<=5)[579324186]|(?<=6)[4389527610]|(?<=4)[528709643]|(?<=8)[0]|(?<=1)[103452]|(?<=3)[78]|(?<=0)[9876]|(?<=7)[59321406])|(?<=8)[3401]((?<=3)[710839546]|(?<=4)[10]|(?<=0)[79586]|(?<=1)[0])|(?<=5)[5471362]((?<=5)[4805926137]|(?<=4)[132504]|(?<=7)[7341286905]|(?<=1)[2689014753]|(?<=3)[7801596342]|(?<=6)[05]|(?<=2)[1320])|(?<=6)[4793865]((?<=4)[7381504]|(?<=7)[6482301]|(?<=9)[60]|(?<=3)[39187256]|(?<=8)[79241]|(?<=6)[0523896]|(?<=5)[41365079])|(?<=1)[825493761]((?<=8)[986504312]|(?<=2)[7524893601]|(?<=5)[41087356]|(?<=4)[02657849]|(?<=9)[10]|(?<=3)[70254136]|(?<=7)[926075318]|(?<=6)[107439586]|(?<=1)[76859])|(?<=9)[18549706]((?<=1)[0123]|(?<=8)[02]|(?<=5)[4620]|(?<=4)[840326]|(?<=9)[301294]|(?<=7)[0246]|(?<=0)[9758623]|(?<=6)[48026])|(?<=3)[579684]((?<=5)[931502746]|(?<=7)[3186570294]|(?<=9)[0125]|(?<=6)[6058419]|(?<=8)[120]|(?<=4)[0])|(?<=0)[821493576]((?<=8)[8904312576]|(?<=2)[3560472198]|(?<=1)[9871320645]|(?<=4)[570483612]|(?<=9)[90241]|(?<=3)[3102]|(?<=5)[34201756]|(?<=7)[1902]|(?<=6)[540689231])|(?<=4)[150624]((?<=1)[562749108]|(?<=5)[261473589]|(?<=0)[58967]|(?<=6)[543612]|(?<=2)[2054316]|(?<=4)[0])|(?<=2)[0931427568]((?<=0)[59867]|(?<=9)[41230]|(?<=3)[3714260985]|(?<=1)[671382054]|(?<=4)[405321]|(?<=2)[7049165]|(?<=7)[738956]|(?<=5)[1703524968]|(?<=6)[143270568]|(?<=8)[563894270]))|(?<=7)[246357]((?<=2)[43521670]((?<=4)[6015479382]|(?<=3)[1283074596]|(?<=5)[0798563412]|(?<=2)[7032461598]|(?<=1)[7306891425]|(?<=6)[805613429]|(?<=7)[04]|(?<=0)[9])|(?<=4)[817642350]((?<=8)[012]|(?<=1)[768905124]|(?<=7)[3501]|(?<=6)[23054]|(?<=4)[1865370942]|(?<=2)[30514]|(?<=3)[32015]|(?<=5)[250178346]|(?<=0)[9])|(?<=6)[47568213]((?<=4)[019]|(?<=7)[03]|(?<=5)[3102]|(?<=6)[20314]|(?<=8)[01]|(?<=2)[51624037]|(?<=1)[539082]|(?<=3)[46593])|(?<=3)[2934786510]((?<=2)[9057423186]|(?<=9)[751206]|(?<=3)[3405769821]|(?<=4)[7608913452]|(?<=7)[0529374186]|(?<=8)[34012]|(?<=6)[31402]|(?<=5)[3086195427]|(?<=1)[3819562740]|(?<=0)[47539286])|(?<=5)[92541673]((?<=9)[3674058219]|(?<=2)[60751243]|(?<=5)[8456937]|(?<=4)[06375124]|(?<=1)[791683542]|(?<=6)[5027986341]|(?<=7)[0213]|(?<=3)[971235486])|(?<=7)[498763152]((?<=4)[01]|(?<=9)[6531402]|(?<=8)[4806529317]|(?<=7)[34827190]|(?<=6)[8940617523]|(?<=3)[802319574]|(?<=1)[362154]|(?<=5)[98]|(?<=2)[3740612]))|(?<=8)[723845610]((?<=7)[012]((?<=0)[7685]|(?<=1)[501]|(?<=2)[0])|(?<=2)[8729136540]((?<=8)[7693521408]|(?<=7)[98407123]|(?<=2)[0528791463]|(?<=9)[768513402]|(?<=1)[0132869457]|(?<=3)[7265019348]|(?<=6)[4563180972]|(?<=5)[82905431]|(?<=4)[1926054783]|(?<=0)[9])|(?<=3)[9487561320]((?<=9)[015396248]|(?<=4)[086241375]|(?<=8)[786914530]|(?<=7)[362941508]|(?<=5)[0523468179]|(?<=6)[9852106743]|(?<=1)[1704596238]|(?<=3)[0389214675]|(?<=2)[3817205964]|(?<=0)[89])|(?<=8)[3021]((?<=3)[835421]|(?<=0)[9586]|(?<=2)[6104532]|(?<=1)[49163872])|(?<=4)[67314285]((?<=6)[5193672048]|(?<=7)[9267403851]|(?<=3)[7695]|(?<=1)[0635412]|(?<=4)[053178294]|(?<=2)[540132]|(?<=8)[0]|(?<=5)[0321])|(?<=5)[6534012]((?<=6)[102]|(?<=5)[27180]|(?<=3)[017389]|(?<=4)[0346251]|(?<=0)[8679]|(?<=1)[021]|(?<=2)[87623159])|(?<=6)[012]((?<=0)[69]|(?<=1)[143520]|(?<=2)[0])|(?<=1)[59381264]((?<=5)[801364792]|(?<=9)[9018]|(?<=3)[249531780]|(?<=8)[6192573804]|(?<=1)[98701256]|(?<=2)[381745096]|(?<=6)[51067]|(?<=4)[02913675])|(?<=0)[6832741059]((?<=6)[274693185]|(?<=8)[4125097638]|(?<=3)[0851394627]|(?<=2)[0718635249]|(?<=7)[472196085]|(?<=4)[9310248765]|(?<=1)[9180435726]|(?<=0)[89]|(?<=5)[5324869170]|(?<=9)[3780291456]))|(?<=6)[126897435]((?<=1)[718349526]((?<=7)[051]|(?<=1)[643781259]|(?<=8)[1032576498]|(?<=3)[6980743125]|(?<=4)[2581360794]|(?<=9)[7605]|(?<=5)[50]|(?<=2)[9250143]|(?<=6)[5621039])|(?<=2)[45231]((?<=4)[0635]|(?<=5)[1052]|(?<=2)[5]|(?<=3)[08195]|(?<=1)[410325])|(?<=6)[736281954]((?<=7)[9314528067]|(?<=3)[570346128]|(?<=6)[016953]|(?<=2)[41320]|(?<=8)[8945106327]|(?<=1)[1682793450]|(?<=9)[02153]|(?<=5)[105]|(?<=4)[56789])|(?<=8)[536478]((?<=5)[0812]|(?<=3)[1097243568]|(?<=6)[89]|(?<=4)[120]|(?<=7)[01]|(?<=8)[0])|(?<=9)[912368754]((?<=9)[6187052]|(?<=1)[234609715]|(?<=2)[35162]|(?<=3)[310495]|(?<=6)[2091]|(?<=8)[87210695]|(?<=7)[0673592814]|(?<=5)[6051]|(?<=4)[420156378])|(?<=7)[139652748]((?<=1)[276389415]|(?<=3)[3046152987]|(?<=9)[2136405]|(?<=6)[023541]|(?<=5)[2367098154]|(?<=2)[054236]|(?<=7)[7613824059]|(?<=4)[134205]|(?<=8)[2160435])|(?<=4)[4519683720]((?<=4)[879651023]|(?<=5)[214053]|(?<=1)[1240893657]|(?<=9)[027395614]|(?<=6)[9860413725]|(?<=8)[12548306]|(?<=3)[1248709635]|(?<=7)[0576189423]|(?<=2)[012]|(?<=0)[9])|(?<=3)[165748]((?<=1)[1235640]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0])|(?<=5)[67598]((?<=6)[20]|(?<=7)[2019]|(?<=5)[10257839]|(?<=9)[0]|(?<=8)[2103567]))|(?<=4)[0659132487]((?<=0)[27583146]((?<=2)[6321759408]|(?<=7)[4120]|(?<=5)[103459278]|(?<=8)[81624503]|(?<=3)[1578230694]|(?<=1)[3109625874]|(?<=4)[0132796854]|(?<=6)[5128390746])|(?<=6)[8247605319]((?<=8)[2835479106]|(?<=2)[5041873926]|(?<=4)[0159826473]|(?<=7)[701968]|(?<=6)[5926034817]|(?<=0)[624917853]|(?<=5)[7843106]|(?<=3)[4297036581]|(?<=1)[0213]|(?<=9)[46781320])|(?<=5)[7013256489]((?<=7)[751340986]|(?<=0)[837659]|(?<=1)[9043856217]|(?<=3)[8132074596]|(?<=2)[2385016497]|(?<=5)[0629183547]|(?<=6)[256903741]|(?<=4)[0376859241]|(?<=8)[0132]|(?<=9)[9105487632])|(?<=9)[7968415302]((?<=7)[0234576198]|(?<=9)[4876950231]|(?<=6)[8743652019]|(?<=8)[17502698]|(?<=4)[5260731948]|(?<=1)[6431078925]|(?<=5)[0518793426]|(?<=3)[9502763148]|(?<=0)[57896]|(?<=2)[4351906827])|(?<=1)[237416508]((?<=2)[065123]|(?<=3)[8290731654]|(?<=7)[7312048569]|(?<=4)[90132]|(?<=1)[683205149]|(?<=6)[947586]|(?<=5)[1025643]|(?<=0)[75381692]|(?<=8)[0])|(?<=3)[0286534179]((?<=0)[356492871]|(?<=2)[605321748]|(?<=8)[201435]|(?<=6)[2184309765]|(?<=5)[153024]|(?<=3)[03645271]|(?<=4)[7083514692]|(?<=1)[0896547]|(?<=7)[04153]|(?<=9)[801236457])|(?<=2)[102865743]((?<=1)[160374]|(?<=0)[865471923]|(?<=2)[210]|(?<=8)[01923]|(?<=6)[17504368]|(?<=5)[5462013]|(?<=7)[18690752]|(?<=4)[5304867921]|(?<=3)[6405183792])|(?<=4)[4852697013]((?<=4)[6314907258]|(?<=8)[0187453269]|(?<=5)[67109324]|(?<=2)[8765903412]|(?<=6)[7916504382]|(?<=9)[1049238]|(?<=7)[65790814]|(?<=0)[76859]|(?<=1)[108573692]|(?<=3)[9872530416])|(?<=8)[340128795]((?<=3)[91238407]|(?<=4)[534782690]|(?<=0)[9872546]|(?<=1)[05328194]|(?<=2)[9064532]|(?<=8)[3285769104]|(?<=7)[4367918025]|(?<=9)[201345]|(?<=5)[30])|(?<=7)[8497513206]((?<=8)[4052631]|(?<=4)[134205]|(?<=9)[8576]|(?<=7)[2374061895]|(?<=5)[1078942635]|(?<=1)[9012374856]|(?<=3)[6495210837]|(?<=2)[021]|(?<=0)[9827]|(?<=6)[2031]))|(?<=3)[65483927]((?<=6)[57314628]((?<=5)[321064758]|(?<=7)[0132694857]|(?<=3)[785610]|(?<=1)[621547]|(?<=4)[04132]|(?<=6)[0]|(?<=2)[210]|(?<=8)[012])|(?<=5)[0645127983]((?<=0)[549832167]|(?<=6)[7362498051]|(?<=4)[0836492715]|(?<=5)[02345]|(?<=1)[75643012]|(?<=2)[06542913]|(?<=7)[4251036]|(?<=9)[061582347]|(?<=8)[32489]|(?<=3)[1290])|(?<=4)[4892135670]((?<=4)[2436970815]|(?<=8)[1975820436]|(?<=9)[0231]|(?<=2)[3542709816]|(?<=1)[5261048793]|(?<=3)[203965417]|(?<=5)[43021]|(?<=6)[8051672943]|(?<=7)[2031465]|(?<=0)[9])|(?<=8)[693548217]((?<=6)[01342]|(?<=9)[98567]|(?<=3)[9064237581]|(?<=5)[7658140392]|(?<=4)[14302]|(?<=8)[320145]|(?<=2)[5034261]|(?<=1)[3067421985]|(?<=7)[4081293567])|(?<=3)[819432576]((?<=8)[50243916]|(?<=1)[4563178]|(?<=9)[318764520]|(?<=4)[0718569]|(?<=3)[3624570]|(?<=2)[9204173685]|(?<=5)[257401386]|(?<=7)[845723601]|(?<=6)[2094681735])|(?<=9)[3148620]((?<=3)[2698134057]|(?<=1)[0863912574]|(?<=4)[31054]|(?<=8)[05]|(?<=6)[01]|(?<=2)[201567948]|(?<=0)[9])|(?<=2)[2573481960]((?<=2)[5102439]|(?<=5)[1480792365]|(?<=7)[4309215678]|(?<=3)[3108257964]|(?<=4)[91023]|(?<=8)[405726381]|(?<=1)[0815346972]|(?<=9)[0]|(?<=6)[095617]|(?<=0)[9])|(?<=7)[218763945]((?<=2)[7541089623]|(?<=1)[4138250796]|(?<=8)[74601892]|(?<=7)[5410362]|(?<=6)[24137865]|(?<=3)[7096154832]|(?<=9)[0]|(?<=4)[23014]|(?<=5)[315042]))|(?<=5)[46378952]((?<=4)[0143625897]((?<=0)[2518734]|(?<=1)[6083291457]|(?<=4)[41502736]|(?<=3)[5342019]|(?<=6)[506]|(?<=2)[962741503]|(?<=5)[10]|(?<=8)[5021983]|(?<=9)[95]|(?<=7)[10])|(?<=6)[89571324]((?<=8)[20147653]|(?<=9)[803125]|(?<=5)[1329704586]|(?<=7)[015]|(?<=1)[9738215406]|(?<=3)[8749163502]|(?<=2)[70689]|(?<=4)[0])|(?<=3)[76135248]((?<=7)[416705328]|(?<=6)[5462780931]|(?<=1)[36420587]|(?<=3)[540231976]|(?<=5)[31529]|(?<=2)[80624]|(?<=4)[120]|(?<=8)[01])|(?<=7)[4317625]((?<=4)[10]|(?<=3)[0]|(?<=1)[706149823]|(?<=7)[5062134]|(?<=6)[201]|(?<=2)[2031]|(?<=5)[2630145])|(?<=8)[9231740685]((?<=9)[895210346]|(?<=2)[340965128]|(?<=3)[2387069145]|(?<=1)[1746092385]|(?<=7)[51234086]|(?<=4)[362104]|(?<=0)[89]|(?<=6)[4579280361]|(?<=8)[7906485]|(?<=5)[3490526])|(?<=9)[7564]((?<=7)[125387640]|(?<=5)[0645972318]|(?<=6)[92034]|(?<=4)[023])|(?<=5)[7542316]((?<=7)[27461503]|(?<=5)[3214058796]|(?<=4)[9804]|(?<=2)[1302]|(?<=3)[3106824795]|(?<=1)[738195462]|(?<=6)[01])|(?<=2)[8351492]((?<=8)[0]|(?<=3)[369801472]|(?<=5)[2561403]|(?<=1)[479638125]|(?<=4)[1034]|(?<=9)[109]|(?<=2)[012]))|(?<=2)[5124637]((?<=5)[625143]((?<=6)[016475382]|(?<=2)[0174938256]|(?<=5)[9247015638]|(?<=1)[3812476590]|(?<=4)[2305468179]|(?<=3)[517963084])|(?<=1)[45126738]((?<=4)[932561804]|(?<=5)[5632498170]|(?<=1)[894372615]|(?<=2)[574192038]|(?<=6)[7824630591]|(?<=7)[0425967813]|(?<=3)[593427180]|(?<=8)[1204])|(?<=2)[231746]((?<=2)[1206785394]|(?<=3)[3102]|(?<=1)[521430]|(?<=7)[0231]|(?<=4)[1203]|(?<=6)[28935671])|(?<=4)[314520]((?<=3)[142053]|(?<=1)[031627498]|(?<=4)[6309814527]|(?<=5)[3120]|(?<=2)[238956704]|(?<=0)[9])|(?<=6)[23016758]((?<=2)[5843610927]|(?<=3)[32046715]|(?<=0)[79]|(?<=1)[294061375]|(?<=6)[21347856]|(?<=7)[4021]|(?<=5)[21]|(?<=8)[01])|(?<=3)[352104876]((?<=3)[6897135402]|(?<=5)[7619850234]|(?<=2)[3802476]|(?<=1)[13796024]|(?<=0)[98]|(?<=4)[2309468157]|(?<=8)[01]|(?<=7)[0]|(?<=6)[10])|(?<=7)[12364]((?<=1)[123965874]|(?<=2)[8163759024]|(?<=3)[723918406]|(?<=6)[1324]|(?<=4)[10]))|(?<=1)[835624179]((?<=8)[817653294]((?<=8)[021]|(?<=1)[21387546]|(?<=7)[0123]|(?<=6)[372540618]|(?<=5)[5873216409]|(?<=3)[713469258]|(?<=2)[102]|(?<=9)[9867]|(?<=4)[5021])|(?<=3)[23456170]((?<=2)[1329860754]|(?<=3)[167482053]|(?<=4)[4732598601]|(?<=5)[4986530127]|(?<=6)[625318497]|(?<=1)[8639714205]|(?<=7)[015342]|(?<=0)[9])|(?<=5)[314250]((?<=3)[425103679]|(?<=1)[013852479]|(?<=4)[3705214698]|(?<=2)[8960175234]|(?<=5)[02]|(?<=0)[89])|(?<=6)[1352764]((?<=1)[76508139]|(?<=3)[5862470193]|(?<=5)[520134]|(?<=2)[2647518390]|(?<=7)[0]|(?<=6)[01]|(?<=4)[6478025913])|(?<=2)[124738065]((?<=1)[5872063914]|(?<=2)[1057369428]|(?<=4)[4250861379]|(?<=7)[0258964371]|(?<=3)[9823157064]|(?<=8)[1032]|(?<=0)[98]|(?<=6)[2073581469]|(?<=5)[0165984732])|(?<=4)[2765194830]((?<=2)[083964751]|(?<=7)[7614302589]|(?<=6)[1280749635]|(?<=5)[7013582649]|(?<=1)[182536749]|(?<=9)[09]|(?<=4)[859]|(?<=8)[02143]|(?<=3)[03421]|(?<=0)[9])|(?<=1)[432516]((?<=4)[5126378409]|(?<=3)[8319467025]|(?<=2)[9148760235]|(?<=5)[2019]|(?<=1)[582763491]|(?<=6)[10])|(?<=7)[304152]((?<=3)[6407285931]|(?<=0)[9]|(?<=4)[7091425863]|(?<=1)[931804267]|(?<=5)[04231]|(?<=2)[657841309])|(?<=9)[24135]((?<=2)[234567890]|(?<=4)[017895463]|(?<=1)[5802719436]|(?<=3)[842790153]|(?<=5)[503142]))))$") }; switch (sanitizedCountyInput) { case "AT": @@ -49,6 +54,16 @@ function valZip(zipCode, countryCode) { return reg["US"].test(sanitizedZipCode); case "IT": return reg["IT"].test(sanitizedZipCode); + case "EE": + return reg["EE"].test(sanitizedZipCode); + case "FR": + return reg["FR"].test(sanitizedZipCode); + case "IS": + return reg["IS"].test(sanitizedZipCode); + case "ES": + return reg["ES"].test(sanitizedZipCode); + case "LU": + return reg["LU"].test(sanitizedZipCode); default: console.error("Sorry :( \nCurrently there is no support for the country you want: " + sanitizeCountyInput.toString()); } diff --git a/dist/val-zip.umd.js b/dist/val-zip.umd.js index 772cb20..428bc98 100644 --- a/dist/val-zip.umd.js +++ b/dist/val-zip.umd.js @@ -45,7 +45,12 @@ FI: new RegExp("^([7890156342]((?<=7)[9042785136]((?<=9)[712659834]((?<=7)[0]((?<=0)[014])|(?<=1)[9504863]((?<=9)[0]|(?<=5)[0]|(?<=0)[104]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[653]((?<=6)[5]|(?<=5)[5]|(?<=3)[0])|(?<=6)[620938]((?<=6)[0]|(?<=2)[0]|(?<=0)[104]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0])|(?<=5)[2]((?<=2)[0])|(?<=9)[41]((?<=4)[0]|(?<=1)[0])|(?<=8)[3916825]((?<=3)[0]|(?<=9)[5]|(?<=1)[0]|(?<=6)[0]|(?<=8)[5]|(?<=2)[0]|(?<=5)[0])|(?<=3)[53]((?<=5)[0]|(?<=3)[0])|(?<=4)[81]((?<=8)[04]|(?<=1)[0]))|(?<=0)[1584962370]((?<=1)[051]((?<=0)[1054]|(?<=5)[014]|(?<=1)[1054])|(?<=5)[0]((?<=0)[014])|(?<=8)[7024]((?<=7)[01]|(?<=0)[0154]|(?<=2)[1054]|(?<=4)[04])|(?<=4)[026]((?<=0)[10]|(?<=2)[1054]|(?<=6)[104])|(?<=9)[140]((?<=1)[014]|(?<=4)[0]|(?<=0)[01])|(?<=6)[20]((?<=2)[1054]|(?<=0)[014])|(?<=2)[81064]((?<=8)[04]|(?<=1)[104]|(?<=0)[014]|(?<=6)[0]|(?<=4)[0])|(?<=3)[04]((?<=0)[104]|(?<=4)[04])|(?<=7)[80]((?<=8)[1054]|(?<=0)[1054])|(?<=0)[0124938]((?<=0)[6]|(?<=1)[0]|(?<=2)[9]|(?<=4)[9]|(?<=9)[0]|(?<=3)[2]|(?<=8)[6]))|(?<=4)[263751498]((?<=2)[50473]((?<=5)[0]|(?<=0)[04]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0])|(?<=6)[73184]((?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[0]|(?<=4)[0])|(?<=3)[08649]((?<=0)[104]|(?<=8)[0]|(?<=6)[0]|(?<=4)[05]|(?<=9)[0])|(?<=7)[0427]((?<=0)[1054]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=5)[49152]((?<=4)[0]|(?<=9)[05]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0])|(?<=1)[2306745]((?<=2)[0154]|(?<=3)[054]|(?<=0)[1054]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0])|(?<=4)[729]((?<=7)[0]|(?<=2)[0]|(?<=9)[0])|(?<=9)[84]((?<=8)[0]|(?<=4)[0])|(?<=8)[4]((?<=4)[0]))|(?<=2)[325491687]((?<=3)[165830]((?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[04])|(?<=2)[21]((?<=2)[0]|(?<=1)[10])|(?<=5)[5317]((?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0])|(?<=4)[903]((?<=9)[0]|(?<=0)[014]|(?<=3)[0])|(?<=9)[538]((?<=5)[0]|(?<=3)[0]|(?<=8)[0])|(?<=1)[40]((?<=4)[0]|(?<=0)[104])|(?<=6)[03]((?<=0)[104]|(?<=3)[0])|(?<=8)[14]((?<=1)[0]|(?<=4)[0])|(?<=7)[41]((?<=4)[0]|(?<=1)[0]))|(?<=7)[453169278]((?<=4)[863]((?<=8)[0]|(?<=6)[0]|(?<=3)[04])|(?<=5)[872]((?<=8)[0]|(?<=7)[0]|(?<=2)[0])|(?<=3)[8253]((?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[421]((?<=4)[0]|(?<=2)[0]|(?<=1)[0])|(?<=6)[309]((?<=3)[0]|(?<=0)[014]|(?<=9)[0])|(?<=9)[631]((?<=6)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[42]((?<=4)[0]|(?<=2)[0])|(?<=7)[07]((?<=0)[04]|(?<=7)[0])|(?<=8)[0]((?<=0)[0]))|(?<=8)[24398576]((?<=2)[105]((?<=1)[04]|(?<=0)[1054]|(?<=5)[04])|(?<=4)[08]((?<=0)[0]|(?<=8)[0])|(?<=3)[01]((?<=0)[074]|(?<=1)[0])|(?<=9)[0]((?<=0)[0])|(?<=8)[587]((?<=5)[0]|(?<=8)[0]|(?<=7)[0])|(?<=5)[0]((?<=0)[0])|(?<=7)[1]((?<=1)[0])|(?<=6)[1]((?<=1)[0]))|(?<=5)[59786]((?<=5)[03]((?<=0)[1054]|(?<=3)[1054])|(?<=9)[9473]((?<=9)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0])|(?<=7)[91704]((?<=9)[0]|(?<=1)[0]|(?<=7)[0]|(?<=0)[104]|(?<=4)[0])|(?<=8)[94]((?<=9)[0]|(?<=4)[0])|(?<=6)[85]((?<=8)[0]|(?<=5)[0]))|(?<=1)[4738261590]((?<=4)[6987]((?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=7)[04])|(?<=7)[624753]((?<=6)[0]|(?<=2)[0]|(?<=4)[50]|(?<=7)[5]|(?<=5)[04]|(?<=3)[0])|(?<=3)[3186]((?<=3)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[094275]((?<=0)[0154]|(?<=9)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=2)[06481]((?<=0)[104]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0])|(?<=6)[8517496]((?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0])|(?<=1)[7536]((?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[04])|(?<=5)[72]((?<=7)[0]|(?<=2)[0])|(?<=9)[2651]((?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[6]))|(?<=3)[382716594]((?<=3)[50612]((?<=5)[0]|(?<=0)[104]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0])|(?<=8)[531]((?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[503]((?<=5)[0]|(?<=0)[014]|(?<=3)[0])|(?<=7)[731]((?<=7)[0]|(?<=3)[0]|(?<=1)[0])|(?<=1)[0213]((?<=0)[1054]|(?<=2)[0]|(?<=1)[0]|(?<=3)[4])|(?<=6)[0472]((?<=0)[104]|(?<=4)[05]|(?<=7)[0]|(?<=2)[0])|(?<=5)[0]((?<=0)[014])|(?<=9)[097]((?<=0)[104]|(?<=9)[0]|(?<=7)[0])|(?<=4)[176]((?<=1)[0]|(?<=7)[0]|(?<=6)[04]))|(?<=6)[197682]((?<=1)[0352]((?<=0)[1054]|(?<=3)[0]|(?<=5)[04]|(?<=2)[0])|(?<=9)[4]((?<=4)[0])|(?<=7)[8]((?<=8)[0])|(?<=6)[2]((?<=2)[0])|(?<=8)[5]((?<=5)[04])|(?<=2)[8]((?<=8)[0])))|(?<=8)[6039251874]((?<=6)[259674813]((?<=2)[4132]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=5)[531]((?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=9)[80]((?<=8)[0]|(?<=0)[0])|(?<=6)[8095]((?<=8)[0]|(?<=0)[104]|(?<=9)[0]|(?<=5)[0])|(?<=7)[91]((?<=9)[0]|(?<=1)[04])|(?<=4)[87604]((?<=8)[0]|(?<=7)[0]|(?<=6)[0]|(?<=0)[104]|(?<=4)[0])|(?<=8)[5107]((?<=5)[0]|(?<=1)[0]|(?<=0)[104]|(?<=7)[0])|(?<=1)[1706]((?<=1)[0]|(?<=7)[0]|(?<=0)[104]|(?<=6)[0])|(?<=3)[605]((?<=6)[0]|(?<=0)[104]|(?<=5)[0]))|(?<=0)[178324590]((?<=1)[306471]((?<=3)[0]|(?<=0)[1054]|(?<=6)[1054]|(?<=4)[1054]|(?<=7)[05]|(?<=1)[04])|(?<=7)[7918]((?<=7)[04]|(?<=9)[01]|(?<=1)[04]|(?<=8)[0])|(?<=8)[5]((?<=5)[0])|(?<=3)[3]((?<=3)[04])|(?<=2)[30216]((?<=3)[04]|(?<=0)[0]|(?<=2)[054]|(?<=1)[0]|(?<=6)[04])|(?<=4)[0]((?<=0)[1054])|(?<=5)[1]((?<=1)[01])|(?<=9)[1]((?<=1)[0])|(?<=0)[2]((?<=2)[0]))|(?<=3)[94738516]((?<=9)[406158]((?<=4)[0]|(?<=0)[014]|(?<=6)[0]|(?<=1)[50]|(?<=5)[0]|(?<=8)[5])|(?<=4)[53860]((?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0])|(?<=7)[50826]((?<=5)[0]|(?<=0)[014]|(?<=8)[0]|(?<=2)[0]|(?<=6)[0])|(?<=3)[324]((?<=3)[0]|(?<=2)[0]|(?<=4)[0])|(?<=8)[738425]((?<=7)[0]|(?<=3)[05]|(?<=8)[0]|(?<=4)[0]|(?<=2)[5]|(?<=5)[5])|(?<=5)[50]((?<=5)[0]|(?<=0)[1504])|(?<=1)[36504]((?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[10]|(?<=4)[0])|(?<=6)[63]((?<=6)[0]|(?<=3)[0]))|(?<=9)[156287439]((?<=1)[14]((?<=1)[0]|(?<=4)[0])|(?<=5)[46]((?<=4)[0]|(?<=6)[0])|(?<=6)[084176]((?<=0)[1054]|(?<=8)[0]|(?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0])|(?<=2)[10]((?<=1)[0]|(?<=0)[014])|(?<=8)[043]((?<=0)[0]|(?<=4)[0]|(?<=3)[0])|(?<=7)[64837]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0])|(?<=4)[403]((?<=4)[0]|(?<=0)[104]|(?<=3)[0])|(?<=3)[32]((?<=3)[0]|(?<=2)[0])|(?<=9)[2]((?<=2)[0]))|(?<=2)[258693147]((?<=2)[2091]((?<=2)[0]|(?<=0)[014]|(?<=9)[0]|(?<=1)[0])|(?<=5)[0891]((?<=0)[104]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0])|(?<=8)[46183725]((?<=4)[0]|(?<=6)[5]|(?<=1)[5]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[07586]((?<=0)[104]|(?<=7)[50]|(?<=5)[5]|(?<=8)[5]|(?<=6)[0])|(?<=9)[0681]((?<=0)[014]|(?<=6)[07]|(?<=8)[0]|(?<=1)[5])|(?<=3)[0865391]((?<=0)[01]|(?<=8)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[5]|(?<=9)[5]|(?<=1)[0])|(?<=1)[268174]((?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0])|(?<=4)[639]((?<=6)[0]|(?<=3)[0]|(?<=9)[0])|(?<=7)[63157]((?<=6)[0]|(?<=3)[04]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]))|(?<=5)[152864937]((?<=1)[504826]((?<=5)[0]|(?<=0)[0154]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[4086]((?<=4)[0]|(?<=0)[0154]|(?<=8)[0]|(?<=6)[0])|(?<=2)[301]((?<=3)[0]|(?<=0)[014]|(?<=1)[0])|(?<=8)[024]((?<=0)[014]|(?<=2)[0]|(?<=4)[0])|(?<=6)[6243]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0])|(?<=4)[3751]((?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0])|(?<=9)[4308]((?<=4)[0]|(?<=3)[0]|(?<=0)[04]|(?<=8)[0])|(?<=3)[421]((?<=4)[0]|(?<=2)[0]|(?<=1)[0])|(?<=7)[31]((?<=3)[0]|(?<=1)[0]))|(?<=1)[243695817]((?<=2)[93076281]((?<=9)[05]|(?<=3)[05]|(?<=0)[104]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=8)[104]|(?<=1)[0])|(?<=4)[53627]((?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0])|(?<=3)[93265]((?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[65]((?<=6)[0]|(?<=5)[0])|(?<=9)[75]((?<=7)[0]|(?<=5)[0])|(?<=5)[769]((?<=7)[0]|(?<=6)[0]|(?<=9)[0])|(?<=8)[6125]((?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=1)[026]((?<=0)[014]|(?<=2)[0]|(?<=6)[0])|(?<=7)[025]((?<=0)[1054]|(?<=2)[0]|(?<=5)[0]))|(?<=8)[6293874150]((?<=6)[409217]((?<=4)[0]|(?<=0)[104]|(?<=9)[0]|(?<=2)[0]|(?<=1)[04]|(?<=7)[0])|(?<=2)[07]((?<=0)[01]|(?<=7)[04])|(?<=9)[403]((?<=4)[0]|(?<=0)[0154]|(?<=3)[0])|(?<=3)[81540]((?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[04])|(?<=8)[2]((?<=2)[0])|(?<=7)[436]((?<=4)[0]|(?<=3)[0]|(?<=6)[0])|(?<=4)[49706]((?<=4)[0]|(?<=9)[0]|(?<=7)[04]|(?<=0)[10]|(?<=6)[0])|(?<=1)[2]((?<=2)[0])|(?<=5)[3]((?<=3)[0])|(?<=0)[8]((?<=8)[6]))|(?<=7)[1492857360]((?<=1)[05]((?<=0)[0154]|(?<=5)[0])|(?<=4)[0]((?<=0)[014])|(?<=9)[15370]((?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0])|(?<=2)[05]((?<=0)[04]|(?<=5)[04])|(?<=8)[530]((?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=5)[0]((?<=0)[04])|(?<=7)[08]((?<=0)[054]|(?<=8)[8])|(?<=3)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[1])|(?<=0)[7]((?<=7)[0]))|(?<=4)[618574]((?<=6)[5]((?<=5)[0])|(?<=1)[0]((?<=0)[0154])|(?<=8)[8]((?<=8)[0])|(?<=5)[4]((?<=4)[0])|(?<=7)[7]((?<=7)[0])|(?<=4)[6]((?<=6)[0])))|(?<=9)[7915284063]((?<=7)[386792514]((?<=3)[9724318]((?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[50]|(?<=1)[0]|(?<=8)[0])|(?<=8)[4189275]((?<=4)[0]|(?<=1)[05]|(?<=8)[0]|(?<=9)[50]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=6)[581349627]((?<=5)[05]|(?<=8)[05]|(?<=1)[50]|(?<=3)[05]|(?<=4)[5]|(?<=9)[0]|(?<=6)[5]|(?<=2)[50]|(?<=7)[50])|(?<=7)[06281]((?<=0)[014]|(?<=6)[50]|(?<=2)[0]|(?<=8)[50]|(?<=1)[5])|(?<=9)[0572648]((?<=0)[014]|(?<=5)[0]|(?<=7)[0]|(?<=2)[05]|(?<=6)[507]|(?<=4)[0]|(?<=8)[0])|(?<=2)[24895]((?<=2)[04]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[382194]((?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0])|(?<=1)[14763]((?<=1)[0]|(?<=4)[504]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0])|(?<=4)[732]((?<=7)[0]|(?<=3)[0]|(?<=2)[0]))|(?<=9)[468921357]((?<=4)[592017463]((?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[01]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0])|(?<=6)[79542061]((?<=7)[0]|(?<=9)[50]|(?<=5)[50]|(?<=4)[05]|(?<=2)[0]|(?<=0)[104]|(?<=6)[50]|(?<=1)[0])|(?<=8)[0673]((?<=0)[014]|(?<=6)[0]|(?<=7)[104]|(?<=3)[104])|(?<=9)[9473185]((?<=9)[094]|(?<=4)[04]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[10]|(?<=5)[04])|(?<=2)[395487]((?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0])|(?<=1)[9703486251]((?<=9)[05]|(?<=7)[0]|(?<=0)[014]|(?<=3)[0514]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0])|(?<=3)[140326]((?<=1)[0]|(?<=4)[0]|(?<=0)[104]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[624513]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[50]|(?<=1)[0]|(?<=3)[0])|(?<=7)[267514]((?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]))|(?<=1)[7216953480]((?<=7)[592018463]((?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[014]|(?<=1)[0]|(?<=8)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[1064]((?<=1)[0]|(?<=0)[04]|(?<=6)[0]|(?<=4)[0])|(?<=1)[0154]((?<=0)[014]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0])|(?<=6)[047326]((?<=0)[104]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0])|(?<=9)[50381]((?<=5)[0]|(?<=0)[104]|(?<=3)[0]|(?<=8)[0]|(?<=1)[054])|(?<=5)[106]((?<=1)[0]|(?<=0)[1054]|(?<=6)[0])|(?<=3)[10]((?<=1)[0]|(?<=0)[04])|(?<=4)[31]((?<=3)[0]|(?<=1)[04])|(?<=8)[0]((?<=0)[04])|(?<=0)[0]((?<=0)[6]))|(?<=5)[468391527]((?<=4)[130924765]((?<=1)[0]|(?<=3)[0]|(?<=0)[10754]|(?<=9)[0]|(?<=2)[1054]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[4621753098]((?<=4)[05]|(?<=6)[0]|(?<=2)[0]|(?<=1)[50]|(?<=7)[50]|(?<=5)[5]|(?<=3)[50]|(?<=0)[104]|(?<=9)[0]|(?<=8)[0])|(?<=8)[40635]((?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0])|(?<=3)[01573642]((?<=0)[04]|(?<=1)[50]|(?<=5)[05]|(?<=7)[05]|(?<=3)[0]|(?<=6)[5]|(?<=4)[0]|(?<=2)[5])|(?<=9)[20439785]((?<=2)[0]|(?<=0)[014]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[04]|(?<=8)[0]|(?<=5)[0])|(?<=1)[6310]((?<=6)[04]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0])|(?<=5)[932640]((?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0])|(?<=2)[3150276]((?<=3)[0]|(?<=1)[0]|(?<=5)[5]|(?<=0)[014]|(?<=2)[50]|(?<=7)[0]|(?<=6)[0])|(?<=7)[51790682]((?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[014]|(?<=6)[0]|(?<=8)[0]|(?<=2)[0]))|(?<=2)[162854397]((?<=1)[8403625]((?<=8)[0]|(?<=4)[04]|(?<=0)[1054]|(?<=3)[04]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[15420]((?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0])|(?<=2)[63241]((?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0])|(?<=8)[13]((?<=1)[0]|(?<=3)[0])|(?<=5)[302]((?<=3)[0]|(?<=0)[01]|(?<=2)[0])|(?<=4)[50473]((?<=5)[0]|(?<=0)[104]|(?<=4)[0]|(?<=7)[0]|(?<=3)[04])|(?<=3)[325]((?<=3)[0]|(?<=2)[0]|(?<=5)[0])|(?<=9)[132]((?<=1)[0]|(?<=3)[04]|(?<=2)[0])|(?<=7)[0]((?<=0)[04]))|(?<=8)[819354762]((?<=8)[521403]((?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=3)[0])|(?<=1)[02]((?<=0)[104]|(?<=2)[0])|(?<=9)[62508739]((?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[1054]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[5])|(?<=3)[651]((?<=6)[0]|(?<=5)[0]|(?<=1)[0])|(?<=5)[7163085]((?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[04]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0])|(?<=4)[4250]((?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[0])|(?<=7)[986271]((?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[04])|(?<=6)[0632]((?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[0])|(?<=2)[3]((?<=3)[0]))|(?<=4)[986471352]((?<=9)[0]((?<=0)[0])|(?<=8)[03]((?<=0)[0]|(?<=3)[04])|(?<=6)[0]((?<=0)[054])|(?<=4)[0536]((?<=0)[01]|(?<=5)[05]|(?<=3)[0]|(?<=6)[0])|(?<=7)[20]((?<=2)[0]|(?<=0)[04])|(?<=1)[0]((?<=0)[1054])|(?<=3)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=2)[0]((?<=0)[0]))|(?<=0)[845216930]((?<=8)[4365201]((?<=4)[04]|(?<=3)[1054]|(?<=6)[0]|(?<=5)[0]|(?<=2)[04]|(?<=0)[054]|(?<=1)[0])|(?<=4)[07456821]((?<=0)[0154]|(?<=7)[0]|(?<=4)[014]|(?<=5)[1054]|(?<=6)[104]|(?<=8)[0]|(?<=2)[054]|(?<=1)[054])|(?<=5)[6027453819]((?<=6)[0]|(?<=0)[1054]|(?<=2)[054]|(?<=7)[1054]|(?<=4)[054]|(?<=5)[054]|(?<=3)[04]|(?<=8)[04]|(?<=1)[04]|(?<=9)[04])|(?<=2)[4253]((?<=4)[054]|(?<=2)[0]|(?<=5)[04]|(?<=3)[054])|(?<=1)[40523]((?<=4)[04]|(?<=0)[1054]|(?<=5)[054]|(?<=2)[04]|(?<=3)[054])|(?<=6)[503267]((?<=5)[014]|(?<=0)[014]|(?<=3)[054]|(?<=2)[054]|(?<=6)[0]|(?<=7)[04])|(?<=9)[104]((?<=1)[0]|(?<=0)[104]|(?<=4)[04])|(?<=3)[1]((?<=1)[01])|(?<=0)[1204538]((?<=1)[54]|(?<=2)[9]|(?<=0)[6]|(?<=4)[9]|(?<=5)[0]|(?<=3)[2]|(?<=8)[6]))|(?<=6)[4397125680]((?<=4)[406]((?<=4)[04]|(?<=0)[04]|(?<=6)[04])|(?<=3)[02]((?<=0)[104]|(?<=2)[054])|(?<=9)[1063]((?<=1)[04]|(?<=0)[054]|(?<=6)[01]|(?<=3)[0])|(?<=7)[0]((?<=0)[0])|(?<=1)[09]((?<=0)[1054]|(?<=9)[0])|(?<=2)[0]((?<=0)[0154])|(?<=5)[0]((?<=0)[014])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[8]((?<=8)[6]))|(?<=3)[154263789]((?<=1)[978604]((?<=9)[05]|(?<=7)[0]|(?<=8)[70]|(?<=6)[0]|(?<=0)[014]|(?<=4)[04])|(?<=5)[94]((?<=9)[0]|(?<=4)[0])|(?<=4)[4027]((?<=4)[0]|(?<=0)[01]|(?<=2)[0]|(?<=7)[0])|(?<=2)[582794]((?<=5)[0]|(?<=8)[0]|(?<=2)[05]|(?<=7)[70]|(?<=9)[0]|(?<=4)[0])|(?<=6)[0]((?<=0)[1054])|(?<=3)[95]((?<=9)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[03]((?<=0)[0]|(?<=3)[04])|(?<=9)[0]((?<=0)[0])))|(?<=0)[0273845169]((?<=0)[9356078124]((?<=9)[0247158369]((?<=0)[05]|(?<=2)[0154]|(?<=4)[0154]|(?<=7)[1054]|(?<=1)[05]|(?<=5)[05]|(?<=8)[1054]|(?<=3)[1504]|(?<=6)[054]|(?<=9)[054])|(?<=3)[3529701648]((?<=3)[104]|(?<=5)[0154]|(?<=2)[014]|(?<=9)[0154]|(?<=7)[104]|(?<=0)[0154]|(?<=1)[04]|(?<=6)[0]|(?<=4)[10]|(?<=8)[1054])|(?<=5)[1207836549]((?<=1)[1054]|(?<=2)[1054]|(?<=0)[014]|(?<=7)[04]|(?<=8)[104]|(?<=3)[1054]|(?<=6)[0154]|(?<=5)[104]|(?<=4)[04]|(?<=9)[04])|(?<=6)[5731286094]((?<=5)[04]|(?<=7)[015]|(?<=3)[054]|(?<=1)[04]|(?<=2)[105]|(?<=8)[04]|(?<=6)[1054]|(?<=0)[105]|(?<=9)[04]|(?<=4)[1054])|(?<=0)[2839154067]((?<=2)[2635094187]|(?<=8)[190874652]|(?<=3)[316098472]|(?<=9)[8095716]|(?<=1)[825741693]|(?<=5)[3021487956]|(?<=4)[180359627]|(?<=0)[362]|(?<=6)[501362487]|(?<=7)[5967014])|(?<=7)[6728103459]((?<=6)[0154]|(?<=7)[1054]|(?<=2)[0154]|(?<=8)[105]|(?<=1)[1054]|(?<=0)[1054]|(?<=3)[04]|(?<=4)[104]|(?<=5)[104]|(?<=9)[0154])|(?<=8)[0618247359]((?<=0)[04]|(?<=6)[10]|(?<=1)[0154]|(?<=8)[04]|(?<=2)[054]|(?<=4)[054]|(?<=7)[04]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0])|(?<=1)[094378562]((?<=0)[214057]|(?<=9)[10]|(?<=4)[104]|(?<=3)[0154]|(?<=7)[014]|(?<=8)[01574]|(?<=5)[1054]|(?<=6)[104]|(?<=2)[1054])|(?<=2)[1648039572]((?<=1)[0154]|(?<=6)[04]|(?<=4)[1054]|(?<=8)[014]|(?<=0)[104]|(?<=3)[01254]|(?<=9)[0]|(?<=5)[1054]|(?<=7)[104]|(?<=2)[0514])|(?<=4)[12430]((?<=1)[014]|(?<=2)[1054]|(?<=4)[104]|(?<=3)[104]|(?<=0)[0154]))|(?<=2)[7130524698]((?<=7)[670183524]((?<=6)[0154]|(?<=7)[1054]|(?<=0)[0154]|(?<=1)[105]|(?<=8)[104]|(?<=3)[04]|(?<=5)[054]|(?<=2)[05]|(?<=4)[04])|(?<=1)[435207861]((?<=4)[0]|(?<=3)[0154]|(?<=5)[1054]|(?<=2)[04]|(?<=0)[1054]|(?<=7)[0154]|(?<=8)[04]|(?<=6)[04]|(?<=1)[0])|(?<=3)[2864039]((?<=2)[0154]|(?<=8)[0]|(?<=6)[1054]|(?<=4)[04]|(?<=0)[04]|(?<=3)[054]|(?<=9)[04])|(?<=0)[1276403]((?<=1)[04]|(?<=2)[02]|(?<=7)[0]|(?<=6)[6]|(?<=4)[4]|(?<=0)[8]|(?<=3)[3])|(?<=5)[5148927]((?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[04]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=2)[841706395]((?<=8)[054]|(?<=4)[014]|(?<=1)[1054]|(?<=7)[0154]|(?<=0)[0174]|(?<=6)[04]|(?<=3)[1054]|(?<=9)[0]|(?<=5)[04])|(?<=4)[3270694185]((?<=3)[1054]|(?<=2)[01]|(?<=7)[01]|(?<=0)[1054]|(?<=6)[04]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[04]|(?<=5)[04])|(?<=6)[62015387]((?<=6)[0154]|(?<=2)[104]|(?<=0)[0154]|(?<=1)[0154]|(?<=5)[04]|(?<=3)[1054]|(?<=8)[04]|(?<=7)[7])|(?<=9)[2748]((?<=2)[1054]|(?<=7)[0]|(?<=4)[1054]|(?<=8)[0])|(?<=8)[2186]((?<=2)[0]|(?<=1)[0]|(?<=8)[054]|(?<=6)[0]))|(?<=7)[592617384]((?<=5)[9615083]((?<=9)[0]|(?<=6)[054]|(?<=1)[0]|(?<=5)[0]|(?<=0)[04]|(?<=8)[0]|(?<=3)[0])|(?<=9)[1485370296]((?<=1)[0]|(?<=4)[05]|(?<=8)[0]|(?<=5)[5]|(?<=3)[0]|(?<=7)[0]|(?<=0)[1054]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0])|(?<=2)[382]((?<=3)[01]|(?<=8)[0]|(?<=2)[0])|(?<=6)[809]((?<=8)[0]|(?<=0)[10]|(?<=9)[0])|(?<=1)[95371]((?<=9)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[104]|(?<=1)[04])|(?<=7)[50428]((?<=5)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[0])|(?<=3)[726915]((?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0])|(?<=8)[137902584]((?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[04]|(?<=2)[0]|(?<=5)[0]|(?<=8)[04]|(?<=4)[0])|(?<=4)[15]((?<=1)[0]|(?<=5)[0]))|(?<=3)[2738164]((?<=2)[25]((?<=2)[0]|(?<=5)[04])|(?<=7)[91]((?<=9)[0]|(?<=1)[0])|(?<=3)[02]((?<=0)[04]|(?<=2)[0])|(?<=8)[751]((?<=7)[0]|(?<=5)[04]|(?<=1)[0])|(?<=1)[05]((?<=0)[0154]|(?<=5)[0])|(?<=6)[20]((?<=2)[0]|(?<=0)[0154])|(?<=4)[03]((?<=0)[054]|(?<=3)[0]))|(?<=8)[54713286]((?<=5)[0]((?<=0)[104])|(?<=4)[85]((?<=8)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[10])|(?<=1)[50]((?<=5)[104]|(?<=0)[0154])|(?<=3)[56]((?<=5)[04]|(?<=6)[0])|(?<=2)[0]((?<=0)[1054])|(?<=8)[0]((?<=0)[0])|(?<=6)[8]((?<=8)[0]))|(?<=4)[362174598]((?<=3)[8072569341]((?<=8)[0]|(?<=0)[1054]|(?<=7)[0]|(?<=2)[105]|(?<=5)[0]|(?<=6)[04]|(?<=9)[0]|(?<=3)[04]|(?<=4)[04]|(?<=1)[0])|(?<=6)[08632]((?<=0)[1054]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[04])|(?<=2)[645203]((?<=6)[014]|(?<=4)[0]|(?<=5)[104]|(?<=2)[04]|(?<=0)[1054]|(?<=3)[04])|(?<=1)[375]((?<=3)[104]|(?<=7)[0]|(?<=5)[0])|(?<=7)[74]((?<=7)[0]|(?<=4)[0])|(?<=4)[8420361]((?<=8)[0]|(?<=4)[04]|(?<=2)[04]|(?<=0)[0154]|(?<=3)[1054]|(?<=6)[0]|(?<=1)[054])|(?<=5)[30]((?<=3)[0]|(?<=0)[104])|(?<=9)[24]((?<=2)[0]|(?<=4)[0])|(?<=8)[42]((?<=4)[0]|(?<=2)[0]))|(?<=5)[84521976]((?<=8)[03582641]((?<=0)[0154]|(?<=3)[104]|(?<=5)[0]|(?<=8)[0]|(?<=2)[04]|(?<=6)[0]|(?<=4)[04]|(?<=1)[04])|(?<=4)[067534]((?<=0)[1054]|(?<=6)[054]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0])|(?<=5)[1]((?<=1)[0])|(?<=2)[50]((?<=5)[0]|(?<=0)[1054])|(?<=1)[0]((?<=0)[0])|(?<=9)[50]((?<=5)[0]|(?<=0)[104])|(?<=7)[2]((?<=2)[0])|(?<=6)[2]((?<=2)[0]))|(?<=1)[3567814290]((?<=3)[0795684]((?<=0)[0514]|(?<=7)[041]|(?<=9)[104]|(?<=5)[104]|(?<=6)[1054]|(?<=8)[0]|(?<=4)[04])|(?<=5)[312]((?<=3)[0412]|(?<=1)[0154]|(?<=2)[0541])|(?<=6)[8632507419]((?<=8)[04]|(?<=6)[1054]|(?<=3)[051]|(?<=2)[0154]|(?<=5)[014]|(?<=0)[1054]|(?<=7)[104]|(?<=4)[104]|(?<=1)[1504]|(?<=9)[041])|(?<=7)[21537046]((?<=2)[104]|(?<=1)[014]|(?<=5)[0]|(?<=3)[104]|(?<=7)[0]|(?<=0)[0541]|(?<=4)[104]|(?<=6)[01])|(?<=8)[130624]((?<=1)[0]|(?<=3)[0]|(?<=0)[1054]|(?<=6)[0]|(?<=2)[0]|(?<=4)[04])|(?<=1)[8529]((?<=8)[0]|(?<=5)[1054]|(?<=2)[0]|(?<=9)[0])|(?<=4)[25908]((?<=2)[05]|(?<=5)[1054]|(?<=9)[054]|(?<=0)[1054]|(?<=8)[014])|(?<=2)[6083]((?<=6)[10]|(?<=0)[1054]|(?<=8)[041]|(?<=3)[04])|(?<=9)[04]((?<=0)[0154]|(?<=4)[0])|(?<=0)[05432]((?<=0)[96]|(?<=5)[531]|(?<=4)[4]|(?<=3)[0]|(?<=2)[2]))|(?<=6)[15498276]((?<=1)[05]((?<=0)[10584]|(?<=5)[104])|(?<=5)[30]((?<=3)[0]|(?<=0)[0])|(?<=4)[05]((?<=0)[0154]|(?<=5)[04])|(?<=9)[5]((?<=5)[0])|(?<=8)[385]((?<=3)[0]|(?<=8)[0]|(?<=5)[0])|(?<=2)[0]((?<=0)[0])|(?<=7)[5]((?<=5)[0])|(?<=6)[5]((?<=5)[0]))|(?<=9)[8154629]((?<=8)[1]((?<=1)[0])|(?<=1)[2]((?<=2)[04])|(?<=5)[2]((?<=2)[0])|(?<=4)[3]((?<=3)[04])|(?<=6)[3]((?<=3)[0])|(?<=2)[2]((?<=2)[04])|(?<=9)[3]((?<=3)[0])))|(?<=1)[3459162708]((?<=3)[7231984560]((?<=7)[20]((?<=2)[0154]|(?<=0)[014])|(?<=2)[15207]((?<=1)[0154]|(?<=5)[0]|(?<=2)[0]|(?<=0)[104]|(?<=7)[0])|(?<=3)[30]((?<=3)[0]|(?<=0)[04])|(?<=1)[013]((?<=0)[1054]|(?<=1)[01]|(?<=3)[0154])|(?<=9)[0]((?<=0)[0])|(?<=8)[08]((?<=0)[0]|(?<=8)[0])|(?<=4)[3]((?<=3)[0])|(?<=5)[03]((?<=0)[1504]|(?<=3)[0])|(?<=6)[0]((?<=0)[04])|(?<=0)[3]((?<=3)[5]))|(?<=4)[629845713]((?<=6)[1982]((?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0])|(?<=2)[04]((?<=0)[0154]|(?<=4)[0])|(?<=9)[863]((?<=8)[0]|(?<=6)[0]|(?<=3)[0])|(?<=8)[7142]((?<=7)[0]|(?<=1)[04]|(?<=4)[0]|(?<=2)[0])|(?<=4)[53]((?<=5)[0]|(?<=3)[0])|(?<=5)[03]((?<=0)[04]|(?<=3)[0])|(?<=7)[70]((?<=7)[0]|(?<=0)[04])|(?<=1)[4]((?<=4)[0])|(?<=3)[0]((?<=0)[04]))|(?<=5)[1589723640]((?<=1)[417056]((?<=4)[1054]|(?<=1)[1054]|(?<=7)[05]|(?<=0)[014]|(?<=5)[104]|(?<=6)[054])|(?<=5)[065284]((?<=0)[0154]|(?<=6)[1054]|(?<=5)[0154]|(?<=2)[0]|(?<=8)[0]|(?<=4)[04])|(?<=8)[764103852]((?<=7)[1054]|(?<=6)[04]|(?<=4)[0]|(?<=1)[054]|(?<=0)[10]|(?<=3)[05]|(?<=8)[04]|(?<=5)[0]|(?<=2)[0])|(?<=9)[580]((?<=5)[04]|(?<=8)[0]|(?<=0)[10])|(?<=7)[0]((?<=0)[1054])|(?<=2)[40173]((?<=4)[0154]|(?<=0)[074]|(?<=1)[054]|(?<=7)[0]|(?<=3)[0])|(?<=3)[204]((?<=2)[0]|(?<=0)[04]|(?<=4)[0])|(?<=6)[18]((?<=1)[0]|(?<=8)[05])|(?<=4)[6]((?<=6)[0])|(?<=0)[8]((?<=8)[6]))|(?<=9)[671492358]((?<=6)[507132]((?<=5)[014]|(?<=0)[01]|(?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=7)[0374]((?<=0)[014]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0])|(?<=1)[612]((?<=6)[0]|(?<=1)[04]|(?<=2)[0])|(?<=4)[832716]((?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[04]|(?<=6)[0])|(?<=9)[215]((?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=2)[5316]((?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=3)[217]((?<=2)[0]|(?<=1)[0]|(?<=7)[0])|(?<=5)[41]((?<=4)[0]|(?<=1)[0])|(?<=8)[5]((?<=5)[0]))|(?<=1)[1397]((?<=1)[1032]((?<=1)[14]|(?<=0)[0154]|(?<=3)[054]|(?<=2)[054])|(?<=3)[1]((?<=1)[01])|(?<=9)[1]((?<=1)[0])|(?<=7)[1]((?<=1)[054]))|(?<=6)[279356418]((?<=2)[70683]((?<=7)[0]|(?<=0)[104]|(?<=6)[0]|(?<=8)[0]|(?<=3)[0])|(?<=7)[931]((?<=9)[0]|(?<=3)[0]|(?<=1)[04])|(?<=9)[607]((?<=6)[0]|(?<=0)[0154]|(?<=7)[0])|(?<=3)[051932]((?<=0)[1054]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0])|(?<=5)[410]((?<=4)[0]|(?<=1)[0]|(?<=0)[0])|(?<=6)[7031]((?<=7)[0]|(?<=0)[104]|(?<=3)[0]|(?<=1)[0])|(?<=4)[5]((?<=5)[0])|(?<=1)[06]((?<=0)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[104]))|(?<=2)[672413958]((?<=6)[043]((?<=0)[04]|(?<=4)[0]|(?<=3)[0])|(?<=7)[50]((?<=5)[0]|(?<=0)[014])|(?<=2)[41]((?<=4)[04]|(?<=1)[0])|(?<=4)[50]((?<=5)[0]|(?<=0)[104])|(?<=1)[307]((?<=3)[0]|(?<=0)[104]|(?<=7)[0])|(?<=3)[851]((?<=8)[0]|(?<=5)[0]|(?<=1)[04])|(?<=9)[25]((?<=2)[0]|(?<=5)[0])|(?<=5)[42]((?<=4)[04]|(?<=2)[04])|(?<=8)[2]((?<=2)[0]))|(?<=7)[453817926]((?<=4)[47351]((?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0])|(?<=5)[103]((?<=1)[0]|(?<=0)[014]|(?<=3)[0])|(?<=3)[2]((?<=2)[0])|(?<=8)[0754]((?<=0)[104]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[2513]((?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[04])|(?<=7)[418]((?<=4)[0]|(?<=1)[0]|(?<=8)[0])|(?<=9)[753]((?<=7)[0]|(?<=5)[0]|(?<=3)[0])|(?<=2)[402]((?<=4)[0]|(?<=0)[1054]|(?<=2)[0])|(?<=6)[13]((?<=1)[0]|(?<=3)[0]))|(?<=0)[426937158]((?<=4)[71428]((?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[104]|(?<=8)[0])|(?<=2)[3175]((?<=3)[0]|(?<=1)[104]|(?<=7)[0]|(?<=5)[0])|(?<=6)[0482561]((?<=0)[1054]|(?<=4)[014]|(?<=8)[0]|(?<=2)[0]|(?<=5)[04]|(?<=6)[0]|(?<=1)[1])|(?<=9)[064]((?<=0)[1054]|(?<=6)[04]|(?<=4)[0])|(?<=3)[523806]((?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[1054]|(?<=6)[04])|(?<=7)[1]((?<=1)[0])|(?<=1)[426]((?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[27]((?<=2)[04]|(?<=7)[0])|(?<=8)[2]((?<=2)[0]))|(?<=8)[1263]((?<=1)[3025]((?<=3)[0]|(?<=0)[1054]|(?<=2)[0]|(?<=5)[04])|(?<=2)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=3)[0]((?<=0)[04])))|(?<=5)[0562391874]((?<=0)[361975280]((?<=3)[50]((?<=5)[0]|(?<=0)[0])|(?<=6)[07]((?<=0)[04]|(?<=7)[04])|(?<=1)[05739628]((?<=0)[1054]|(?<=5)[0]|(?<=7)[04]|(?<=3)[04]|(?<=9)[054]|(?<=6)[0]|(?<=2)[04]|(?<=8)[0])|(?<=9)[7]((?<=7)[04])|(?<=7)[70]((?<=7)[0]|(?<=0)[0])|(?<=5)[20]((?<=2)[0]|(?<=0)[04])|(?<=2)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[4]((?<=4)[9]))|(?<=5)[79513846]((?<=7)[0]((?<=0)[0])|(?<=9)[1]((?<=1)[0])|(?<=5)[1]((?<=1)[0])|(?<=1)[02]((?<=0)[1054]|(?<=2)[1054])|(?<=3)[320]((?<=3)[0]|(?<=2)[0]|(?<=0)[04])|(?<=8)[0]((?<=0)[104])|(?<=4)[20]((?<=2)[04]|(?<=0)[0])|(?<=6)[1]((?<=1)[05]))|(?<=6)[86431572]((?<=8)[0]((?<=0)[014])|(?<=6)[41]((?<=4)[0]|(?<=1)[0])|(?<=4)[14]((?<=1)[0]|(?<=4)[0])|(?<=3)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[402]((?<=4)[0]|(?<=0)[104]|(?<=2)[0])|(?<=5)[15]((?<=1)[0]|(?<=5)[0])|(?<=7)[31]((?<=3)[0]|(?<=1)[0])|(?<=2)[1]((?<=1)[0]))|(?<=2)[9357186240]((?<=9)[8276]((?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0])|(?<=3)[62043]((?<=6)[0]|(?<=2)[0]|(?<=0)[014]|(?<=4)[0]|(?<=3)[0])|(?<=5)[512]((?<=5)[10]|(?<=1)[0]|(?<=2)[0])|(?<=7)[206438]((?<=2)[0]|(?<=0)[015]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0])|(?<=1)[501]((?<=5)[0]|(?<=0)[04]|(?<=1)[0])|(?<=8)[539]((?<=5)[0]|(?<=3)[0]|(?<=9)[0])|(?<=6)[21]((?<=2)[0]|(?<=1)[0])|(?<=2)[073]((?<=0)[104]|(?<=7)[0]|(?<=3)[0])|(?<=4)[2]((?<=2)[0])|(?<=0)[2]((?<=2)[0]))|(?<=3)[918542630]((?<=9)[052]((?<=0)[04]|(?<=5)[04]|(?<=2)[0])|(?<=1)[03]((?<=0)[0145]|(?<=3)[0])|(?<=8)[315]((?<=3)[0]|(?<=1)[04]|(?<=5)[1054])|(?<=5)[05]((?<=0)[1054]|(?<=5)[04])|(?<=4)[02]((?<=0)[0]|(?<=2)[0])|(?<=2)[0]((?<=0)[054])|(?<=6)[50]((?<=5)[0]|(?<=0)[054])|(?<=3)[0]((?<=0)[1054])|(?<=0)[08]((?<=0)[6]|(?<=8)[6]))|(?<=9)[57482361]((?<=5)[213]((?<=2)[0]|(?<=1)[10]|(?<=3)[0])|(?<=7)[321]((?<=3)[0]|(?<=2)[0]|(?<=1)[0])|(?<=4)[1]((?<=1)[0])|(?<=8)[201]((?<=2)[0]|(?<=0)[0]|(?<=1)[0])|(?<=2)[1]((?<=1)[0])|(?<=3)[21]((?<=2)[0]|(?<=1)[0])|(?<=6)[1]((?<=1)[0])|(?<=1)[03]((?<=0)[10]|(?<=3)[0]))|(?<=1)[849637251]((?<=8)[821659]((?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0])|(?<=4)[64235]((?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0])|(?<=9)[8043]((?<=8)[0]|(?<=0)[1054]|(?<=4)[0]|(?<=3)[0])|(?<=6)[702]((?<=7)[0]|(?<=0)[01]|(?<=2)[0])|(?<=3)[41836]((?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[5]|(?<=6)[0])|(?<=7)[6482]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0])|(?<=2)[076]((?<=0)[1054]|(?<=7)[0]|(?<=6)[0])|(?<=5)[42]((?<=4)[0]|(?<=2)[0])|(?<=1)[3]((?<=3)[0]))|(?<=8)[324817596]((?<=3)[06592]((?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0])|(?<=2)[062]((?<=0)[10]|(?<=6)[0]|(?<=2)[0])|(?<=4)[2135]((?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[475386]((?<=4)[0]|(?<=7)[50]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=7)[072]((?<=0)[01]|(?<=7)[0]|(?<=2)[0])|(?<=5)[50287]((?<=5)[0]|(?<=0)[014]|(?<=2)[0]|(?<=8)[0]|(?<=7)[0])|(?<=9)[1402]((?<=1)[0]|(?<=4)[0]|(?<=0)[104]|(?<=2)[0])|(?<=6)[15982]((?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]))|(?<=7)[75216380]((?<=7)[1]((?<=1)[04])|(?<=5)[1]((?<=1)[04])|(?<=2)[1302]((?<=1)[054]|(?<=3)[0]|(?<=0)[104]|(?<=2)[0])|(?<=1)[7302]((?<=7)[04]|(?<=3)[04]|(?<=0)[1054]|(?<=2)[0])|(?<=6)[0]((?<=0)[0])|(?<=3)[1]((?<=1)[0])|(?<=8)[1]((?<=1)[0])|(?<=0)[9]((?<=9)[0]))|(?<=4)[19487523]((?<=1)[2019]((?<=2)[0]|(?<=0)[0154]|(?<=1)[0]|(?<=9)[0])|(?<=9)[542631]((?<=5)[0]|(?<=4)[0]|(?<=2)[04]|(?<=6)[0]|(?<=3)[0]|(?<=1)[5])|(?<=4)[3961]((?<=3)[0]|(?<=9)[0]|(?<=6)[0]|(?<=1)[0])|(?<=8)[502]((?<=5)[0]|(?<=0)[014]|(?<=2)[0])|(?<=7)[1275]((?<=1)[04]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=5)[519038]((?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[1054]|(?<=3)[0]|(?<=8)[0])|(?<=2)[3756]((?<=3)[05]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0])|(?<=3)[3190]((?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0])))|(?<=6)[4382016579]((?<=4)[276495318]((?<=2)[6304251]((?<=6)[04]|(?<=3)[0]|(?<=0)[104]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0])|(?<=7)[04762]((?<=0)[105]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0])|(?<=6)[1]((?<=1)[0])|(?<=4)[49685]((?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=8)[0]|(?<=5)[0])|(?<=9)[03]((?<=0)[01]|(?<=3)[0])|(?<=5)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=3)[7025]((?<=7)[0]|(?<=0)[04]|(?<=2)[0]|(?<=5)[0])|(?<=1)[04]((?<=0)[014]|(?<=4)[0])|(?<=8)[32541]((?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]))|(?<=3)[914583762]((?<=9)[2150]((?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0])|(?<=1)[06352]((?<=0)[104]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0])|(?<=4)[5031]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=5)[1403]((?<=1)[0]|(?<=4)[0]|(?<=0)[10]|(?<=3)[0])|(?<=8)[9830]((?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[04])|(?<=3)[4063527]((?<=4)[0]|(?<=0)[1054]|(?<=6)[0]|(?<=3)[0]|(?<=5)[50]|(?<=2)[0]|(?<=7)[0])|(?<=7)[087]((?<=0)[1054]|(?<=8)[0]|(?<=7)[0])|(?<=6)[60481]((?<=6)[0]|(?<=0)[04]|(?<=4)[0]|(?<=8)[0]|(?<=1)[04])|(?<=2)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0]))|(?<=8)[936582471]((?<=9)[27431]((?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[04])|(?<=3)[87092]((?<=8)[0]|(?<=7)[04]|(?<=0)[04]|(?<=9)[0]|(?<=2)[0])|(?<=6)[06392]((?<=0)[1054]|(?<=6)[04]|(?<=3)[0]|(?<=9)[0]|(?<=2)[04])|(?<=5)[507386]((?<=5)[504]|(?<=0)[104]|(?<=7)[04]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[703214]((?<=7)[04]|(?<=0)[0]|(?<=3)[0]|(?<=2)[04]|(?<=1)[0]|(?<=4)[0])|(?<=2)[2134]((?<=2)[0]|(?<=1)[0]|(?<=3)[04]|(?<=4)[0])|(?<=4)[1]((?<=1)[04])|(?<=7)[50]((?<=5)[0]|(?<=0)[04])|(?<=1)[05]((?<=0)[04]|(?<=5)[0]))|(?<=2)[723968514]((?<=7)[254163]((?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[4980362]((?<=4)[0]|(?<=9)[50]|(?<=8)[0]|(?<=0)[1054]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=3)[1704985]((?<=1)[0]|(?<=7)[504]|(?<=0)[104]|(?<=4)[0]|(?<=9)[5]|(?<=8)[0]|(?<=5)[0])|(?<=9)[50429]((?<=5)[0]|(?<=0)[104]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0])|(?<=6)[024136]((?<=0)[014]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[04])|(?<=8)[7401368]((?<=7)[0]|(?<=4)[0]|(?<=0)[04]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0])|(?<=5)[41702]((?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=0)[10]|(?<=2)[0])|(?<=1)[7365908]((?<=7)[50]|(?<=3)[0]|(?<=6)[05]|(?<=5)[0]|(?<=9)[0]|(?<=0)[1054]|(?<=8)[5])|(?<=4)[32714]((?<=3)[50]|(?<=2)[014]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]))|(?<=0)[254718306]((?<=2)[802]((?<=8)[0]|(?<=0)[04]|(?<=2)[04])|(?<=5)[516]((?<=5)[04]|(?<=1)[1054]|(?<=6)[0])|(?<=4)[52]((?<=5)[0]|(?<=2)[0])|(?<=7)[62]((?<=6)[0]|(?<=2)[0])|(?<=1)[1502]((?<=1)[01]|(?<=5)[074]|(?<=0)[1054]|(?<=2)[054])|(?<=8)[0]((?<=0)[104])|(?<=3)[2]((?<=2)[054])|(?<=0)[06]((?<=0)[6]|(?<=6)[01])|(?<=6)[4]((?<=4)[0]))|(?<=1)[194723658]((?<=1)[80275164]((?<=8)[0]|(?<=0)[04]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0])|(?<=9)[581462]((?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0])|(?<=4)[1740365]((?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[104]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=7)[2613]((?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0])|(?<=2)[578392]((?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0])|(?<=3)[85304176]((?<=8)[0]|(?<=5)[0]|(?<=3)[04]|(?<=0)[1054]|(?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0])|(?<=6)[30584]((?<=3)[0]|(?<=0)[0154]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0])|(?<=5)[5062]((?<=5)[0]|(?<=0)[104]|(?<=6)[0]|(?<=2)[0])|(?<=8)[6402851]((?<=6)[0]|(?<=4)[0]|(?<=0)[1054]|(?<=2)[0]|(?<=8)[0]|(?<=5)[0]|(?<=1)[0]))|(?<=6)[479821635]((?<=4)[7042653]((?<=7)[0]|(?<=0)[0154]|(?<=4)[104]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0])|(?<=7)[13]((?<=1)[0]|(?<=3)[0])|(?<=9)[503871]((?<=5)[0]|(?<=0)[014]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=1)[0])|(?<=8)[201435]((?<=2)[0]|(?<=0)[014]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[04])|(?<=2)[836092471]((?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[104]|(?<=9)[50]|(?<=2)[0]|(?<=4)[0]|(?<=7)[04]|(?<=1)[0])|(?<=1)[406]((?<=4)[104]|(?<=0)[04]|(?<=6)[0])|(?<=6)[0468]((?<=0)[04]|(?<=4)[04]|(?<=6)[0]|(?<=8)[0])|(?<=3)[2574063]((?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[104]|(?<=6)[0]|(?<=3)[0])|(?<=5)[361095842]((?<=3)[104]|(?<=6)[0]|(?<=1)[04]|(?<=0)[014]|(?<=9)[0]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]))|(?<=5)[1426937580]((?<=1)[703]((?<=7)[0]|(?<=0)[1054]|(?<=3)[01])|(?<=4)[17568]((?<=1)[04]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0])|(?<=2)[308]((?<=3)[104]|(?<=0)[104]|(?<=8)[054])|(?<=6)[135]((?<=1)[014]|(?<=3)[0]|(?<=5)[0])|(?<=9)[327]((?<=3)[0]|(?<=2)[0]|(?<=7)[0])|(?<=3)[07258]((?<=0)[1054]|(?<=7)[045]|(?<=2)[04]|(?<=5)[04]|(?<=8)[04])|(?<=7)[316]((?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=5)[2]((?<=2)[0])|(?<=8)[07]((?<=0)[0]|(?<=7)[0])|(?<=0)[8]((?<=8)[6]))|(?<=7)[197342865]((?<=1)[0]((?<=0)[1054])|(?<=9)[0]((?<=0)[04])|(?<=7)[0]((?<=0)[1054])|(?<=3)[0]((?<=0)[04])|(?<=4)[10]((?<=1)[0]|(?<=0)[04])|(?<=2)[0]((?<=0)[04])|(?<=8)[0]((?<=0)[05])|(?<=6)[0]((?<=0)[504])|(?<=5)[0]((?<=0)[0]))|(?<=9)[65384917]((?<=6)[06]((?<=0)[1054]|(?<=6)[0])|(?<=5)[517]((?<=5)[0]|(?<=1)[0]|(?<=7)[0])|(?<=3)[1043]((?<=1)[0]|(?<=0)[104]|(?<=4)[0]|(?<=3)[0])|(?<=8)[532]((?<=5)[0]|(?<=3)[0]|(?<=2)[0])|(?<=4)[1542]((?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0])|(?<=9)[58271]((?<=5)[014]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0])|(?<=1)[075]((?<=0)[104]|(?<=7)[0]|(?<=5)[04])|(?<=7)[053]((?<=0)[104]|(?<=5)[0]|(?<=3)[0])))|(?<=3)[2590614837]((?<=2)[571824963]((?<=5)[602]((?<=6)[0]|(?<=0)[04]|(?<=2)[0])|(?<=7)[704631]((?<=7)[0]|(?<=0)[1054]|(?<=4)[01]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0])|(?<=1)[40]((?<=4)[0]|(?<=0)[0])|(?<=8)[3061]((?<=3)[0]|(?<=0)[1054]|(?<=6)[0]|(?<=1)[0])|(?<=2)[850761]((?<=8)[0]|(?<=5)[0]|(?<=0)[1054]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0])|(?<=4)[4531]((?<=4)[014]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=9)[21]((?<=2)[0]|(?<=1)[0])|(?<=6)[12]((?<=1)[0]|(?<=2)[0])|(?<=3)[0]((?<=0)[0]))|(?<=5)[732568491]((?<=7)[504]((?<=5)[0]|(?<=0)[014]|(?<=4)[0])|(?<=3)[02]((?<=0)[1054]|(?<=2)[0])|(?<=2)[6247]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0])|(?<=5)[20435]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0])|(?<=6)[031]((?<=0)[104]|(?<=3)[0]|(?<=1)[0])|(?<=8)[02]((?<=0)[1054]|(?<=2)[0])|(?<=4)[082]((?<=0)[04]|(?<=8)[0]|(?<=2)[0])|(?<=9)[9]((?<=9)[0])|(?<=1)[0]((?<=0)[0]))|(?<=9)[591476238]((?<=5)[0938]((?<=0)[1054]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0])|(?<=9)[639284]((?<=6)[50]|(?<=3)[04]|(?<=9)[0]|(?<=2)[0]|(?<=8)[0]|(?<=4)[0])|(?<=1)[08153796]((?<=0)[014]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[5]|(?<=6)[04])|(?<=4)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=7)[0875]((?<=0)[1054]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0])|(?<=6)[216]((?<=2)[0]|(?<=1)[0]|(?<=6)[0])|(?<=2)[903]((?<=9)[0]|(?<=0)[04]|(?<=3)[0])|(?<=3)[6481]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0])|(?<=8)[821]((?<=8)[0]|(?<=2)[04]|(?<=1)[0]))|(?<=0)[413]((?<=4)[2]((?<=2)[014])|(?<=1)[0]((?<=0)[017854])|(?<=3)[0]((?<=0)[04]))|(?<=6)[452896173]((?<=4)[325]((?<=3)[0]|(?<=2)[0]|(?<=5)[0])|(?<=5)[72]((?<=7)[0]|(?<=2)[0])|(?<=2)[80472]((?<=8)[04]|(?<=0)[1054]|(?<=4)[04]|(?<=7)[0]|(?<=2)[054])|(?<=8)[184]((?<=1)[0]|(?<=8)[0]|(?<=4)[0])|(?<=9)[13]((?<=1)[04]|(?<=3)[0])|(?<=6)[064]((?<=0)[104]|(?<=6)[0]|(?<=4)[0])|(?<=1)[120]((?<=1)[04]|(?<=2)[0]|(?<=0)[0])|(?<=7)[62]((?<=6)[0]|(?<=2)[0])|(?<=3)[4]((?<=4)[0]))|(?<=1)[3647815290]((?<=3)[854710]((?<=8)[04]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=0)[04])|(?<=6)[420153]((?<=4)[104]|(?<=2)[0]|(?<=0)[014]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=4)[650719]((?<=6)[0]|(?<=5)[0]|(?<=0)[1054]|(?<=7)[0]|(?<=1)[0]|(?<=9)[0])|(?<=7)[20536]((?<=2)[0]|(?<=0)[04]|(?<=5)[0]|(?<=3)[0]|(?<=6)[104])|(?<=8)[6153]((?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=1)[74613]((?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0])|(?<=5)[032]((?<=0)[104]|(?<=3)[0]|(?<=2)[0])|(?<=2)[53]((?<=5)[0]|(?<=3)[0])|(?<=9)[57036]((?<=5)[0]|(?<=7)[0]|(?<=0)[10]|(?<=3)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[6]))|(?<=4)[564839127]((?<=5)[153]((?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=6)[40]((?<=4)[0]|(?<=0)[014])|(?<=4)[5132]((?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=8)[70]((?<=7)[04]|(?<=0)[0154])|(?<=3)[032]((?<=0)[014]|(?<=3)[0]|(?<=2)[0])|(?<=9)[53817]((?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0])|(?<=1)[14853]((?<=1)[01]|(?<=4)[0]|(?<=8)[0]|(?<=5)[04]|(?<=3)[0])|(?<=2)[476]((?<=4)[04]|(?<=7)[0]|(?<=6)[04])|(?<=7)[3174]((?<=3)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]))|(?<=8)[732416985]((?<=7)[2605741]((?<=2)[0]|(?<=6)[0]|(?<=0)[1054]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[04])|(?<=3)[670]((?<=6)[0]|(?<=7)[0]|(?<=0)[04])|(?<=2)[082715]((?<=0)[1054]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[10]|(?<=5)[0])|(?<=4)[9276]((?<=9)[0]|(?<=2)[04]|(?<=7)[0]|(?<=6)[04])|(?<=1)[3240]((?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[04])|(?<=6)[0857]((?<=0)[014]|(?<=8)[0]|(?<=5)[0]|(?<=7)[0])|(?<=9)[1752]((?<=1)[0]|(?<=7)[0]|(?<=5)[014]|(?<=2)[0])|(?<=8)[064]((?<=0)[04]|(?<=6)[0]|(?<=4)[01])|(?<=5)[1]((?<=1)[0]))|(?<=3)[2473589016]((?<=2)[531074]((?<=5)[104]|(?<=3)[104]|(?<=1)[0154]|(?<=0)[104]|(?<=7)[1054]|(?<=4)[0])|(?<=4)[7138205]((?<=7)[0154]|(?<=1)[014]|(?<=3)[0]|(?<=8)[054]|(?<=2)[0]|(?<=0)[1054]|(?<=5)[0])|(?<=7)[1302]((?<=1)[1054]|(?<=3)[014]|(?<=0)[10]|(?<=2)[1054])|(?<=3)[30814]((?<=3)[01]|(?<=0)[054]|(?<=8)[0]|(?<=1)[1054]|(?<=4)[104])|(?<=5)[328406]((?<=3)[104]|(?<=2)[01]|(?<=8)[01574]|(?<=4)[1054]|(?<=0)[104]|(?<=6)[104])|(?<=8)[408257]((?<=4)[014]|(?<=0)[1054]|(?<=8)[104]|(?<=2)[1054]|(?<=5)[014]|(?<=7)[054])|(?<=9)[68502]((?<=6)[0154]|(?<=8)[0]|(?<=5)[054]|(?<=0)[1054]|(?<=2)[0])|(?<=0)[0138]((?<=0)[6]|(?<=1)[43]|(?<=3)[2]|(?<=8)[6])|(?<=1)[80]((?<=8)[04]|(?<=0)[105874])|(?<=6)[18]((?<=1)[04]|(?<=8)[04]))|(?<=7)[483715692]((?<=4)[72]((?<=7)[04]|(?<=2)[0])|(?<=8)[0635]((?<=0)[0154]|(?<=6)[0]|(?<=3)[054]|(?<=5)[0])|(?<=3)[7581]((?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0])|(?<=7)[4270]((?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0])|(?<=1)[208453]((?<=2)[0154]|(?<=0)[0514]|(?<=8)[0]|(?<=4)[04]|(?<=5)[05]|(?<=3)[05])|(?<=5)[63507]((?<=6)[05]|(?<=3)[0]|(?<=5)[104]|(?<=0)[1054]|(?<=7)[054])|(?<=6)[30]((?<=3)[04]|(?<=0)[1054])|(?<=9)[610]((?<=6)[0]|(?<=1)[051]|(?<=0)[0])|(?<=2)[041]((?<=0)[0]|(?<=4)[10]|(?<=1)[0])))|(?<=4)[3804512679]((?<=3)[516492378]((?<=5)[2604]((?<=2)[0]|(?<=6)[0]|(?<=0)[104]|(?<=4)[0])|(?<=1)[037]((?<=0)[0154]|(?<=3)[0]|(?<=7)[0])|(?<=6)[164]((?<=1)[0]|(?<=6)[0]|(?<=4)[0])|(?<=4)[93824]((?<=9)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=4)[0])|(?<=9)[604]((?<=6)[0]|(?<=0)[014]|(?<=4)[0])|(?<=2)[2574]((?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0])|(?<=3)[409]((?<=4)[0]|(?<=0)[0]|(?<=9)[0])|(?<=7)[20]((?<=2)[0]|(?<=0)[104])|(?<=8)[40]((?<=4)[0]|(?<=0)[0]))|(?<=8)[73614289]((?<=7)[17520]((?<=1)[0]|(?<=7)[01]|(?<=5)[0]|(?<=2)[0]|(?<=0)[04])|(?<=3)[150]((?<=1)[04]|(?<=5)[04]|(?<=0)[0])|(?<=6)[0]((?<=0)[1054])|(?<=1)[03]((?<=0)[0154]|(?<=3)[0])|(?<=4)[01]((?<=0)[1054]|(?<=1)[0])|(?<=2)[1230]((?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=9)[103]((?<=1)[04]|(?<=0)[0]|(?<=3)[0]))|(?<=0)[4593268710]((?<=4)[02]((?<=0)[0]|(?<=2)[0])|(?<=5)[023]((?<=0)[054]|(?<=2)[1054]|(?<=3)[104])|(?<=9)[305]((?<=3)[04]|(?<=0)[05]|(?<=5)[0154])|(?<=3)[425]((?<=4)[1054]|(?<=2)[0154]|(?<=5)[10])|(?<=2)[705]((?<=7)[0154]|(?<=0)[041]|(?<=5)[04])|(?<=6)[63042]((?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[04]|(?<=2)[0])|(?<=8)[02]((?<=0)[1054]|(?<=2)[0])|(?<=7)[204]((?<=2)[0]|(?<=0)[1054]|(?<=4)[04])|(?<=1)[0]((?<=0)[1054])|(?<=0)[0145]((?<=0)[6]|(?<=1)[41]|(?<=4)[9]|(?<=5)[6]))|(?<=4)[129473568]((?<=1)[750269]((?<=7)[0]|(?<=5)[0]|(?<=0)[0154]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0])|(?<=2)[05826]((?<=0)[104]|(?<=5)[04]|(?<=8)[04]|(?<=2)[0]|(?<=6)[0])|(?<=9)[7152]((?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0])|(?<=4)[06428]((?<=0)[10]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[0])|(?<=7)[94736]((?<=9)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[50372]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0])|(?<=5)[0398]((?<=0)[1054]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0])|(?<=6)[38714]((?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0])|(?<=8)[086]((?<=0)[104]|(?<=8)[04]|(?<=6)[0]))|(?<=5)[93127468]((?<=9)[14]((?<=1)[104]|(?<=4)[0])|(?<=3)[367]((?<=3)[0]|(?<=6)[05]|(?<=7)[104])|(?<=1)[30652]((?<=3)[05]|(?<=0)[1054]|(?<=6)[054]|(?<=5)[04]|(?<=2)[0])|(?<=2)[0]((?<=0)[014])|(?<=7)[0542]((?<=0)[1054]|(?<=5)[0]|(?<=4)[04]|(?<=2)[054])|(?<=4)[16]((?<=1)[01]|(?<=6)[0])|(?<=6)[1]((?<=1)[0154])|(?<=8)[1]((?<=1)[0]))|(?<=1)[9283547610]((?<=9)[072483]((?<=0)[014]|(?<=7)[0]|(?<=2)[50]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0])|(?<=2)[3176924]((?<=3)[104]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0])|(?<=8)[604872]((?<=6)[0]|(?<=0)[104]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0])|(?<=3)[25913746]((?<=2)[5]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[104]|(?<=7)[0]|(?<=4)[104]|(?<=6)[0])|(?<=5)[4036258]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[014]|(?<=5)[0]|(?<=8)[0])|(?<=4)[19504]((?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=0)[104]|(?<=4)[0])|(?<=7)[5317]((?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0])|(?<=6)[36]((?<=3)[0]|(?<=6)[104])|(?<=1)[2684]((?<=2)[0]|(?<=6)[014]|(?<=8)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[6]))|(?<=2)[647189352]((?<=6)[06]((?<=0)[014]|(?<=6)[0])|(?<=4)[4]((?<=4)[0])|(?<=7)[20]((?<=2)[01]|(?<=0)[0154])|(?<=1)[40]((?<=4)[0]|(?<=0)[1504])|(?<=8)[524730]((?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=0)[0])|(?<=9)[13]((?<=1)[0]|(?<=3)[0])|(?<=3)[03]((?<=0)[014]|(?<=3)[0])|(?<=5)[62]((?<=6)[0]|(?<=2)[0])|(?<=2)[2]((?<=2)[04]))|(?<=6)[9815472]((?<=9)[05136]((?<=0)[014]|(?<=5)[0]|(?<=1)[04]|(?<=3)[0]|(?<=6)[0])|(?<=8)[106]((?<=1)[0]|(?<=0)[1054]|(?<=6)[0])|(?<=1)[41]((?<=4)[04]|(?<=1)[0])|(?<=5)[73]((?<=7)[0]|(?<=3)[0])|(?<=4)[530]((?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=7)[531]((?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[3]((?<=3)[0]))|(?<=7)[476283519]((?<=4)[94065]((?<=9)[0]|(?<=4)[0]|(?<=0)[0154]|(?<=6)[0]|(?<=5)[0])|(?<=7)[61]((?<=6)[0]|(?<=1)[04])|(?<=6)[15]((?<=1)[0]|(?<=5)[0])|(?<=2)[60]((?<=6)[0]|(?<=0)[015])|(?<=8)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=3)[51]((?<=5)[0]|(?<=1)[0])|(?<=5)[42]((?<=4)[0]|(?<=2)[0])|(?<=1)[51]((?<=5)[0]|(?<=1)[0])|(?<=9)[01]((?<=0)[0]|(?<=1)[0]))|(?<=9)[49872653]((?<=4)[061982]((?<=0)[1054]|(?<=6)[01]|(?<=1)[104]|(?<=9)[0]|(?<=8)[0]|(?<=2)[04])|(?<=9)[0368]((?<=0)[014]|(?<=3)[04]|(?<=6)[0]|(?<=8)[0])|(?<=8)[46]((?<=4)[0]|(?<=6)[0])|(?<=7)[7306258]((?<=7)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0])|(?<=2)[402971]((?<=4)[0]|(?<=0)[0]|(?<=2)[04]|(?<=9)[0]|(?<=7)[05]|(?<=1)[0])|(?<=6)[3164]((?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0])|(?<=5)[4172]((?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=2)[0])|(?<=3)[04]((?<=0)[0]|(?<=4)[0])))|(?<=2)[1675940238]((?<=1)[6927148350]((?<=6)[68201753]((?<=6)[01]|(?<=8)[0]|(?<=2)[04]|(?<=0)[0154]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0])|(?<=9)[30]((?<=3)[0]|(?<=0)[10])|(?<=2)[3751906824]((?<=3)[04]|(?<=7)[0]|(?<=5)[0154]|(?<=1)[04]|(?<=9)[10]|(?<=0)[0154]|(?<=6)[0]|(?<=8)[054]|(?<=2)[0]|(?<=4)[04])|(?<=7)[274615]((?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0])|(?<=1)[064913582]((?<=0)[1054]|(?<=6)[0]|(?<=4)[04]|(?<=9)[5]|(?<=1)[04]|(?<=3)[0]|(?<=5)[0]|(?<=8)[04]|(?<=2)[0])|(?<=4)[952831]((?<=9)[04]|(?<=5)[0]|(?<=2)[01542]|(?<=8)[0]|(?<=3)[0]|(?<=1)[04])|(?<=8)[9278604]((?<=9)[0]|(?<=2)[0]|(?<=7)[014]|(?<=8)[0]|(?<=6)[0]|(?<=0)[10]|(?<=4)[0])|(?<=3)[4836517]((?<=4)[0]|(?<=8)[104]|(?<=3)[05]|(?<=6)[0]|(?<=5)[04]|(?<=1)[0]|(?<=7)[0])|(?<=5)[427093615]((?<=4)[0]|(?<=2)[0]|(?<=7)[01]|(?<=0)[014]|(?<=9)[0]|(?<=3)[1054]|(?<=6)[0]|(?<=1)[0]|(?<=5)[5])|(?<=0)[08]((?<=0)[6]|(?<=8)[6]))|(?<=6)[91826754]((?<=9)[315]((?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=1)[0]((?<=0)[0154])|(?<=8)[24]((?<=2)[0]|(?<=4)[05])|(?<=2)[0]((?<=0)[04])|(?<=6)[6]((?<=6)[104])|(?<=7)[42]((?<=4)[0]|(?<=2)[0])|(?<=5)[16]((?<=1)[0]|(?<=6)[0])|(?<=4)[1]((?<=1)[0]))|(?<=7)[415278369]((?<=4)[5032]((?<=5)[0]|(?<=0)[104]|(?<=3)[04]|(?<=2)[0])|(?<=1)[301657]((?<=3)[0]|(?<=0)[014]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0])|(?<=5)[10]((?<=1)[0154]|(?<=0)[104])|(?<=2)[6352]((?<=6)[0]|(?<=3)[014]|(?<=5)[0]|(?<=2)[0])|(?<=7)[5413]((?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0])|(?<=8)[0264]((?<=0)[104]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0])|(?<=3)[241]((?<=2)[04]|(?<=4)[0]|(?<=1)[0])|(?<=6)[0547]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0])|(?<=9)[21]((?<=2)[0]|(?<=1)[0]))|(?<=5)[536192847]((?<=5)[604257]((?<=6)[0]|(?<=0)[104]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0])|(?<=3)[7392684]((?<=7)[0]|(?<=3)[04]|(?<=9)[04]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0])|(?<=6)[63514]((?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=1)[196387]((?<=1)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0])|(?<=9)[514306]((?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0])|(?<=2)[63514]((?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=8)[372641]((?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0])|(?<=4)[26713]((?<=2)[0]|(?<=6)[04]|(?<=7)[0]|(?<=1)[04]|(?<=3)[0])|(?<=7)[6031]((?<=6)[0]|(?<=0)[104]|(?<=3)[0]|(?<=1)[0]))|(?<=9)[38267195]((?<=3)[2514]((?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=8)[6183]((?<=6)[0]|(?<=1)[104]|(?<=8)[0]|(?<=3)[0])|(?<=2)[7058]((?<=7)[0]|(?<=0)[1054]|(?<=5)[104]|(?<=8)[0])|(?<=6)[0348]((?<=0)[104]|(?<=3)[10]|(?<=4)[0]|(?<=8)[0])|(?<=7)[265049]((?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0])|(?<=1)[80]((?<=8)[0]|(?<=0)[015])|(?<=9)[04]((?<=0)[104]|(?<=4)[0])|(?<=5)[7]((?<=7)[0]))|(?<=4)[2189]((?<=2)[846]((?<=8)[05]|(?<=4)[05]|(?<=6)[04])|(?<=1)[30]((?<=3)[0]|(?<=0)[1054])|(?<=8)[0]((?<=0)[1054])|(?<=9)[1]((?<=1)[0]))|(?<=0)[1257380694]((?<=1)[0]((?<=0)[0514])|(?<=2)[1504]((?<=1)[054]|(?<=5)[0154]|(?<=0)[104]|(?<=4)[104])|(?<=5)[204]((?<=2)[0154]|(?<=0)[015]|(?<=4)[0154])|(?<=7)[8540623]((?<=8)[0154]|(?<=5)[104]|(?<=4)[0154]|(?<=0)[1054]|(?<=6)[1054]|(?<=2)[04]|(?<=3)[054])|(?<=3)[8620]((?<=8)[104]|(?<=6)[0154]|(?<=2)[1054]|(?<=0)[054])|(?<=8)[810]((?<=8)[04]|(?<=1)[1054]|(?<=0)[01])|(?<=0)[0213]((?<=0)[6]|(?<=2)[5]|(?<=1)[4]|(?<=3)[2])|(?<=6)[61]((?<=6)[04]|(?<=1)[1054])|(?<=9)[06]((?<=0)[054]|(?<=6)[0])|(?<=4)[60]((?<=6)[04]|(?<=0)[04]))|(?<=2)[914827356]((?<=9)[35241]((?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0])|(?<=1)[5043621]((?<=5)[015]|(?<=0)[015]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[015])|(?<=4)[13]((?<=1)[105]|(?<=3)[0])|(?<=8)[1432]((?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0])|(?<=2)[247]((?<=2)[0]|(?<=4)[0]|(?<=7)[0])|(?<=7)[132]((?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=3)[3214]((?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0])|(?<=5)[253]((?<=2)[0]|(?<=5)[0]|(?<=3)[0])|(?<=6)[31]((?<=3)[0]|(?<=1)[0]))|(?<=3)[18632594]((?<=1)[402]((?<=4)[04]|(?<=0)[104]|(?<=2)[0])|(?<=8)[804]((?<=8)[0]|(?<=0)[0154]|(?<=4)[0])|(?<=6)[06]((?<=0)[01]|(?<=6)[0])|(?<=3)[196]((?<=1)[014]|(?<=9)[0]|(?<=6)[0])|(?<=2)[061]((?<=0)[10]|(?<=6)[04]|(?<=1)[0])|(?<=5)[0]((?<=0)[1054])|(?<=9)[365]((?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=4)[5]((?<=5)[0]))|(?<=8)[382754169]((?<=3)[6730]((?<=6)[0154]|(?<=7)[04]|(?<=3)[0]|(?<=0)[04])|(?<=8)[480]((?<=4)[04]|(?<=8)[0]|(?<=0)[04])|(?<=2)[6240]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[04])|(?<=7)[6]((?<=6)[0])|(?<=5)[4806]((?<=4)[0]|(?<=8)[0]|(?<=0)[04]|(?<=6)[0])|(?<=4)[053]((?<=0)[10574]|(?<=5)[04]|(?<=3)[04])|(?<=1)[0923]((?<=0)[0154]|(?<=9)[0]|(?<=2)[04]|(?<=3)[1054])|(?<=6)[016]((?<=0)[014]|(?<=1)[054]|(?<=6)[0])|(?<=9)[0]((?<=0)[04])))))$"), IT: new RegExp("^([6784230195]((?<=6)[67540321]((?<=6)[01]((?<=0)[41352]((?<=4)[04123567]|(?<=1)[012456789]|(?<=3)[01234687]|(?<=5)[0124]|(?<=2)[12360])|(?<=1)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[243516]((?<=2)[0123456789]|(?<=4)[134056789]|(?<=3)[0123456789]|(?<=5)[1203456789]|(?<=1)[0234579]|(?<=6)[012346789])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[21]((?<=2)[023467589]|(?<=1)[01234579])|(?<=1)[2]((?<=2)[123456789]))|(?<=4)[01]((?<=0)[1324]((?<=1)[10234568]|(?<=3)[120345679]|(?<=2)[01345678]|(?<=4)[120345679])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[2134]((?<=2)[0124567]|(?<=1)[1035892]|(?<=3)[013457689]|(?<=4)[34018])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[1]))|(?<=3)[0189]((?<=0)[9786]((?<=9)[564231]|(?<=7)[529763148]|(?<=8)[32174658]|(?<=6)[374618925])|(?<=1)[0]((?<=0)[0])|(?<=8)[25314]((?<=2)[48356721]|(?<=5)[72583146]|(?<=3)[872456319]|(?<=1)[653214]|(?<=4)[42671385])|(?<=9)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[213]((?<=2)[102456789]|(?<=1)[01245789]|(?<=3)[5296481])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[4231]((?<=4)[1203495678]|(?<=2)[613405892]|(?<=3)[06234798]|(?<=1)[1230])|(?<=1)[2]((?<=2)[12])))|(?<=7)[5062134]((?<=5)[01]((?<=0)[12]((?<=1)[1023456789]|(?<=2)[1234056789])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[21354]((?<=2)[1203456789]|(?<=1)[013456789]|(?<=3)[2378]|(?<=5)[46]|(?<=4)[234])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12]))|(?<=6)[10]((?<=1)[2]((?<=2)[315])|(?<=0)[1]((?<=1)[1263745]))|(?<=2)[10]((?<=1)[0]((?<=0)[0])|(?<=0)[12]((?<=1)[2345789]|(?<=2)[0123456789]))|(?<=1)[01]((?<=0)[23145]((?<=2)[1023456789]|(?<=3)[1203456789]|(?<=1)[1023456789]|(?<=4)[1230578]|(?<=5)[1])|(?<=1)[2]((?<=2)[12]))|(?<=3)[01]((?<=0)[31425]((?<=3)[1203456789]|(?<=1)[1023456789]|(?<=4)[0123456789]|(?<=2)[0123456789]|(?<=5)[1234506789])|(?<=1)[0]((?<=0)[0]))|(?<=4)[01]((?<=0)[21]((?<=2)[01234678]|(?<=1)[1234567890])|(?<=1)[2]((?<=2)[123])))|(?<=8)[5879321046]((?<=5)[01]((?<=0)[12534]((?<=1)[012345678]|(?<=2)[0123456789]|(?<=5)[0123456789]|(?<=3)[0123456789]|(?<=4)[02346789])|(?<=1)[0]((?<=0)[0]))|(?<=8)[0189]((?<=0)[54627]((?<=5)[50146]|(?<=4)[01256479]|(?<=6)[0274589]|(?<=2)[10245]|(?<=7)[01])|(?<=1)[0]((?<=0)[0])|(?<=8)[2314]((?<=2)[42153]|(?<=3)[34687512]|(?<=1)[73124869]|(?<=4)[21])|(?<=9)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[1243756]((?<=1)[0123456789]|(?<=2)[012346789]|(?<=4)[102345678]|(?<=3)[123045678]|(?<=7)[0123456]|(?<=5)[109345678]|(?<=6)[012469])|(?<=1)[0]((?<=0)[0]))|(?<=9)[0189]((?<=0)[342615]((?<=3)[012354689]|(?<=4)[0123456789]|(?<=2)[0123456789]|(?<=6)[03459]|(?<=1)[123045678]|(?<=5)[024678])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12345])|(?<=8)[312645]((?<=3)[2314]|(?<=1)[78645923]|(?<=2)[2341]|(?<=6)[2316478]|(?<=4)[1342]|(?<=5)[123])|(?<=9)[0]((?<=0)[0]))|(?<=3)[01]((?<=0)[21435]((?<=2)[012345789]|(?<=1)[102345678]|(?<=4)[0123456789]|(?<=3)[124056789]|(?<=5)[1023456789])|(?<=1)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[132]((?<=1)[103845679]|(?<=3)[10723468]|(?<=2)[1072435689])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[12345]((?<=1)[0123467]|(?<=2)[10234578]|(?<=3)[1023546789]|(?<=4)[12304679]|(?<=5)[9012345678])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[12574368]((?<=1)[123467890]|(?<=2)[1234506789]|(?<=5)[103645789]|(?<=7)[1023457689]|(?<=4)[120456789]|(?<=3)[102345689]|(?<=6)[123579]|(?<=8)[1])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[1234567]))|(?<=4)[01]((?<=0)[412389567]((?<=4)[234056798]|(?<=1)[1203456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=8)[120345678]|(?<=9)[1205689]|(?<=5)[91230567]|(?<=6)[01256897]|(?<=7)[03456789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12345]))|(?<=6)[01]((?<=0)[3124897]((?<=3)[0145236789]|(?<=1)[1023456789]|(?<=2)[1023456789]|(?<=4)[1023456879]|(?<=8)[0123456789]|(?<=9)[12307456]|(?<=7)[123045789])|(?<=1)[07]((?<=0)[0]|(?<=7)[0])))|(?<=4)[047138265]((?<=0)[01]((?<=0)[415236]((?<=4)[61238]|(?<=1)[1023456789]|(?<=5)[02457193]|(?<=2)[10234567]|(?<=3)[23405678]|(?<=6)[012345689])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[1]))|(?<=4)[01]((?<=0)[1423]((?<=1)[1259]|(?<=4)[279]|(?<=2)[1270368]|(?<=3)[4739])|(?<=1)[2]((?<=2)[1234]))|(?<=7)[05189]((?<=0)[2314]((?<=2)[10578]|(?<=3)[20459]|(?<=1)[1230456789]|(?<=4)[23])|(?<=5)[2]((?<=2)[12])|(?<=1)[2]((?<=2)[12])|(?<=8)[164532]((?<=1)[4]|(?<=6)[128345697]|(?<=4)[132]|(?<=5)[354]|(?<=3)[6473852]|(?<=2)[426])|(?<=9)[2]((?<=2)[1234]))|(?<=1)[01]((?<=0)[31524]((?<=3)[012346789]|(?<=1)[123456789]|(?<=5)[123456789]|(?<=2)[123567089]|(?<=4)[23456089])|(?<=1)[2]((?<=2)[123456]))|(?<=3)[01]((?<=0)[53412]((?<=5)[1238960]|(?<=3)[2056789]|(?<=4)[123457609]|(?<=1)[1203456789]|(?<=2)[124589])|(?<=1)[2]((?<=2)[123456]))|(?<=8)[01]((?<=0)[132]((?<=1)[1234578]|(?<=3)[1234]|(?<=2)[245607])|(?<=1)[2]((?<=2)[12345]))|(?<=2)[01]((?<=0)[2134]((?<=2)[012364578]|(?<=1)[1234567089]|(?<=3)[134520]|(?<=4)[1023456789])|(?<=1)[2]((?<=2)[1234]))|(?<=6)[01]((?<=0)[14325]((?<=1)[12340789]|(?<=4)[1023456789]|(?<=3)[164320579]|(?<=2)[130456789]|(?<=5)[1])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[132]((?<=1)[12057849]|(?<=3)[1230456789]|(?<=2)[12034567])|(?<=1)[0]((?<=0)[0])))|(?<=2)[9452630718]((?<=9)[01]((?<=0)[132]((?<=1)[0123546789]|(?<=3)[1]|(?<=2)[1203456789])|(?<=1)[2]((?<=2)[12]))|(?<=4)[01]((?<=0)[621354]((?<=6)[0139245678]|(?<=2)[1206345789]|(?<=1)[0173456289]|(?<=3)[0173456892]|(?<=5)[1203458679]|(?<=4)[0123456789])|(?<=1)[2]((?<=2)[123456789]))|(?<=5)[01]((?<=0)[13724865]((?<=1)[0123456789]|(?<=3)[0123456789]|(?<=7)[1023456879]|(?<=2)[0123456789]|(?<=4)[023456789]|(?<=8)[1203456789]|(?<=6)[10234589]|(?<=5)[1034256789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[123456]))|(?<=2)[01]((?<=0)[374216]((?<=3)[1230456789]|(?<=7)[0123456789]|(?<=4)[0145623]|(?<=2)[410835679]|(?<=1)[023451786]|(?<=6)[01369])|(?<=1)[0]((?<=0)[0]))|(?<=6)[0189]((?<=0)[2143]((?<=2)[0123456789]|(?<=1)[0142375689]|(?<=4)[0124536789]|(?<=3)[0123456789])|(?<=1)[0]((?<=0)[0])|(?<=8)[321546]((?<=3)[412356789]|(?<=2)[12345678]|(?<=1)[12345678]|(?<=5)[123457689]|(?<=4)[124356789]|(?<=6)[6123457])|(?<=9)[0]((?<=0)[0]))|(?<=3)[8901]((?<=8)[2841903765]((?<=2)[123457689]|(?<=8)[135046879]|(?<=4)[125386794]|(?<=1)[16734589]|(?<=9)[0123485967]|(?<=0)[125748]|(?<=3)[1237456]|(?<=7)[01346579]|(?<=6)[124578]|(?<=5)[12457])|(?<=9)[0]((?<=0)[0])|(?<=0)[10324]((?<=1)[0126345789]|(?<=0)[9]|(?<=3)[102345678]|(?<=2)[102345679]|(?<=4)[1])|(?<=1)[0]((?<=0)[0]))|(?<=0)[0189]((?<=0)[8240567193]((?<=8)[1023845679]|(?<=2)[0123456789]|(?<=4)[4106758293]|(?<=0)[483712569]|(?<=5)[7916034258]|(?<=6)[0123456789]|(?<=7)[9405673281]|(?<=1)[0123456789]|(?<=9)[1023456789]|(?<=3)[8912674035])|(?<=1)[23456]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[12])|(?<=8)[68425137]((?<=6)[4217635]|(?<=8)[621354]|(?<=4)[7216543]|(?<=2)[543162]|(?<=5)[3765142]|(?<=1)[361524]|(?<=3)[62354817]|(?<=7)[5432671])|(?<=9)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[241536]((?<=2)[0123456789]|(?<=4)[0123457689]|(?<=1)[0123456789]|(?<=5)[0162345789]|(?<=3)[102456789]|(?<=6)[1])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[142536]((?<=1)[0123456789]|(?<=4)[1023456789]|(?<=2)[1203456789]|(?<=5)[1023456789]|(?<=3)[0912345678]|(?<=6)[21])|(?<=1)[0]((?<=0)[0]))|(?<=8)[0189]((?<=0)[146725]((?<=1)[012345679]|(?<=4)[130567]|(?<=6)[12405689]|(?<=7)[1230456789]|(?<=2)[148]|(?<=5)[30])|(?<=1)[0]((?<=0)[0])|(?<=8)[4719635280]((?<=4)[126534]|(?<=7)[713569]|(?<=1)[123456789]|(?<=9)[91345867]|(?<=6)[1523468]|(?<=3)[12368]|(?<=5)[123456789]|(?<=2)[1238467]|(?<=8)[173456]|(?<=0)[12345])|(?<=9)[2]((?<=2)[12345])))|(?<=3)[4398251076]((?<=4)[01]((?<=0)[71]((?<=7)[0123647859]|(?<=1)[16580])|(?<=1)[72345]((?<=7)[0]|(?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[1]))|(?<=3)[01]((?<=0)[897425136]((?<=8)[01234567]|(?<=9)[0245879]|(?<=7)[02546789]|(?<=4)[1028345679]|(?<=2)[0123495678]|(?<=5)[1029345678]|(?<=1)[1035627849]|(?<=3)[1203456789]|(?<=6)[1])|(?<=1)[70]((?<=7)[0]|(?<=0)[0]))|(?<=9)[01]((?<=0)[41532]((?<=4)[0123456789]|(?<=1)[0123457896]|(?<=5)[712305648]|(?<=3)[6012345789]|(?<=2)[0712345689])|(?<=1)[0]((?<=0)[0]))|(?<=8)[01]((?<=0)[649157823]((?<=6)[1023475968]|(?<=4)[192350678]|(?<=9)[234875169]|(?<=1)[103567829]|(?<=5)[012935674]|(?<=7)[193745680]|(?<=8)[03265789]|(?<=2)[023758649]|(?<=3)[120345768])|(?<=1)[2]((?<=2)[123]))|(?<=2)[01]((?<=0)[2314]((?<=2)[126037]|(?<=3)[102348567]|(?<=1)[60342]|(?<=4)[1023465])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[3241]((?<=3)[12045678]|(?<=2)[1023456789]|(?<=4)[016234578]|(?<=1)[0123456789])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123]))|(?<=1)[01]((?<=0)[31452]((?<=3)[0123456789]|(?<=1)[120345687]|(?<=4)[013456789]|(?<=5)[1203456789]|(?<=2)[1420356789])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[213]((?<=2)[0123546789]|(?<=1)[03456]|(?<=3)[1204536789])|(?<=1)[234567]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[123456789]|(?<=7)[123456]))|(?<=7)[01]((?<=0)[145326]((?<=1)[0123467895]|(?<=4)[102345679]|(?<=5)[0123456789]|(?<=3)[0125689]|(?<=2)[10234689]|(?<=6)[0346789])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[12]))|(?<=6)[01]((?<=0)[2475163]((?<=2)[0234567891]|(?<=4)[58203674]|(?<=7)[70123568]|(?<=5)[70123456]|(?<=1)[1203456]|(?<=6)[143506]|(?<=3)[0123456])|(?<=1)[0]((?<=0)[0])))|(?<=0)[3420198765]((?<=3)[01]((?<=0)[4123]((?<=4)[0123456789]|(?<=1)[012346789]|(?<=2)[1023456789]|(?<=3)[1230456789])|(?<=1)[0]((?<=0)[0]))|(?<=4)[01]((?<=0)[123]((?<=1)[1024567389]|(?<=2)[012345679]|(?<=3)[1])|(?<=1)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[1243]((?<=1)[123045689]|(?<=2)[0123456]|(?<=4)[0123456789]|(?<=3)[012345789])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[2456731]((?<=2)[1023456789]|(?<=4)[1203456789]|(?<=5)[1234589]|(?<=6)[123056789]|(?<=7)[235678419]|(?<=3)[1023456789]|(?<=1)[0325789])|(?<=1)[123456789]((?<=1)[89]|(?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[123456789]|(?<=7)[123456789]|(?<=8)[123456789]|(?<=9)[123456789]))|(?<=1)[01]((?<=0)[213]((?<=2)[12304578]|(?<=1)[012456789]|(?<=3)[023456789])|(?<=1)[0]((?<=0)[0]))|(?<=9)[01]((?<=0)[316452798]((?<=3)[2315607894]|(?<=1)[2801345679]|(?<=6)[7908123456]|(?<=4)[254780139]|(?<=5)[0123456789]|(?<=2)[8102346579]|(?<=7)[1023458679]|(?<=9)[0123457689]|(?<=8)[019238564])|(?<=1)[237]((?<=2)[123456789]|(?<=3)[1234]|(?<=7)[0]))|(?<=8)[01]((?<=0)[3412]((?<=3)[102689]|(?<=4)[02456789]|(?<=1)[0162578]|(?<=2)[1230456789])|(?<=1)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[24135]((?<=2)[0123456789]|(?<=4)[103456789]|(?<=1)[0123456789]|(?<=3)[0123456789]|(?<=5)[12])|(?<=1)[0]((?<=0)[0]))|(?<=6)[01]((?<=0)[83461572]((?<=8)[1349]|(?<=3)[13405689]|(?<=4)[234156079]|(?<=6)[12034569]|(?<=1)[02469]|(?<=5)[0345679]|(?<=7)[3]|(?<=2)[123456789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[12345]))|(?<=5)[01]((?<=0)[213]((?<=2)[102345689]|(?<=1)[123456078]|(?<=3)[124059])|(?<=1)[0]((?<=0)[0])))|(?<=1)[6897254301]((?<=6)[01]((?<=0)[1324]((?<=1)[1234560789]|(?<=3)[612034589]|(?<=2)[1203456789]|(?<=4)[1234056789])|(?<=1)[23456]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[1234567]))|(?<=8)[01]((?<=0)[321]((?<=3)[0513427689]|(?<=2)[061273584]|(?<=1)[0217345689])|(?<=1)[0]((?<=0)[0]))|(?<=9)[01]((?<=0)[321]((?<=3)[132478]|(?<=2)[1058]|(?<=1)[123450678])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[1234567]))|(?<=7)[01]((?<=0)[23145]((?<=2)[108234756]|(?<=3)[123045789]|(?<=1)[12457039]|(?<=4)[153027648]|(?<=5)[17426835])|(?<=1)[0]((?<=0)[0]))|(?<=2)[01]((?<=0)[72153468]((?<=7)[1042356789]|(?<=2)[1023456789]|(?<=1)[0123456789]|(?<=5)[10345628]|(?<=3)[1203456789]|(?<=4)[0123456789]|(?<=6)[012345689]|(?<=8)[10234789])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[1624537]((?<=1)[102356789]|(?<=6)[0123456789]|(?<=2)[1206345789]|(?<=4)[7120345689]|(?<=5)[0123649578]|(?<=3)[1203456789]|(?<=7)[0123456789])|(?<=1)[2]((?<=2)[12]))|(?<=4)[01]((?<=0)[42135]((?<=4)[1062435789]|(?<=2)[2015364]|(?<=1)[0143285679]|(?<=3)[012345679]|(?<=5)[123045789])|(?<=1)[0]((?<=0)[0]))|(?<=3)[8901]((?<=8)[617429583]((?<=6)[12463578]|(?<=1)[1264578]|(?<=7)[12843567]|(?<=4)[134578]|(?<=2)[134]|(?<=9)[13456789]|(?<=5)[13456]|(?<=8)[12783456]|(?<=3)[6135])|(?<=9)[0]((?<=0)[0])|(?<=0)[23416]((?<=2)[1902364578]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=1)[210789]|(?<=6)[0])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[167489253]((?<=1)[1023456789]|(?<=6)[0123456789]|(?<=7)[0123495678]|(?<=4)[01623458]|(?<=8)[0123456978]|(?<=9)[12034589]|(?<=2)[02345689]|(?<=5)[1203459678]|(?<=3)[124056798])|(?<=1)[2345]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456]))|(?<=1)[01]((?<=0)[12]((?<=1)[012345678]|(?<=2)[023456789])|(?<=1)[0]((?<=0)[0])))|(?<=9)[235480761]((?<=2)[10]((?<=1)[0]((?<=0)[0])|(?<=0)[123]((?<=1)[0123456789]|(?<=2)[1023456789]|(?<=3)[1]))|(?<=3)[01]((?<=0)[1]((?<=1)[0123456789])|(?<=1)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[2314]((?<=2)[01254789]|(?<=3)[1234056789]|(?<=1)[1234560789]|(?<=4)[1023456789])|(?<=1)[23]((?<=2)[123456789]|(?<=3)[1]))|(?<=4)[01]((?<=0)[1]((?<=1)[1023456789])|(?<=1)[0]((?<=0)[0]))|(?<=8)[01]((?<=0)[723564]((?<=7)[0123456789]|(?<=2)[012356789]|(?<=3)[0123456789]|(?<=5)[130456789]|(?<=6)[0123456789]|(?<=4)[0123456789])|(?<=1)[23456]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[123456789]|(?<=6)[12345678]))|(?<=0)[01]((?<=0)[21345]((?<=2)[1023456789]|(?<=1)[0123456789]|(?<=3)[0123456789]|(?<=4)[1230456789]|(?<=5)[1])|(?<=1)[2345]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[123456789]|(?<=5)[1]))|(?<=7)[01]((?<=0)[1]((?<=1)[1230456789])|(?<=1)[0]((?<=0)[0]))|(?<=6)[01]((?<=0)[1]((?<=1)[1203456789])|(?<=1)[0]((?<=0)[0]))|(?<=1)[01]((?<=0)[123]((?<=1)[1234567809]|(?<=2)[1234567809]|(?<=3)[1])|(?<=1)[0]((?<=0)[0])))|(?<=5)[2087546193]((?<=2)[01]((?<=0)[3124]((?<=3)[1235678]|(?<=1)[1068945]|(?<=2)[16924578]|(?<=4)[3145678])|(?<=1)[0]((?<=0)[0]))|(?<=0)[01]((?<=0)[132456]((?<=1)[23489]|(?<=3)[12345869]|(?<=2)[82356]|(?<=4)[1]|(?<=5)[012345689]|(?<=6)[2305678])|(?<=1)[234]((?<=2)[123456789]|(?<=3)[123456789]|(?<=4)[12345]))|(?<=8)[01]((?<=0)[34125]((?<=3)[134678]|(?<=4)[2345]|(?<=1)[1249570]|(?<=2)[234560]|(?<=5)[1345])|(?<=1)[0]((?<=0)[0]))|(?<=7)[01]((?<=0)[231]((?<=2)[0123578]|(?<=3)[41203678]|(?<=1)[46])|(?<=1)[2]((?<=2)[12345678]))|(?<=5)[01]((?<=0)[125436]((?<=1)[12569]|(?<=2)[235107]|(?<=5)[14]|(?<=4)[125709]|(?<=3)[102345689]|(?<=6)[4])|(?<=1)[0]((?<=0)[0]))|(?<=4)[01]((?<=0)[123]((?<=1)[1453602]|(?<=2)[136789]|(?<=3)[358])|(?<=1)[0]((?<=0)[0]))|(?<=6)[01]((?<=0)[3142]((?<=3)[123540678]|(?<=1)[12790]|(?<=4)[0123568]|(?<=2)[120589])|(?<=1)[2]((?<=2)[12345678]))|(?<=1)[01]((?<=0)[231]((?<=2)[408]|(?<=3)[156794]|(?<=1)[13056789])|(?<=1)[0]((?<=0)[0]))|(?<=9)[01]((?<=0)[21]((?<=2)[514]|(?<=1)[536])|(?<=1)[0]((?<=0)[0]))|(?<=3)[01]((?<=0)[2431]((?<=2)[12345670]|(?<=4)[10235789]|(?<=3)[145607]|(?<=1)[192345678])|(?<=1)[0]((?<=0)[0])))))$"), NO: new RegExp("^([0123456789]((?<=0)[0123456789]((?<=0)[01234568]((?<=0)[1]|(?<=1)[058]|(?<=2)[1468]|(?<=3)[012347]|(?<=4)[05678]|(?<=5)[05]|(?<=6)[0]|(?<=8)[1])|(?<=1)[0123456789]((?<=0)[12345679]|(?<=1)[0123456789]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[0]|(?<=5)[012345789]|(?<=6)[012456789]|(?<=7)[0123456789]|(?<=8)[012345678]|(?<=9)[01234568])|(?<=2)[01345678]((?<=0)[123478]|(?<=1)[12345678]|(?<=3)[0]|(?<=4)[047]|(?<=5)[0123456789]|(?<=6)[02345678]|(?<=7)[0123456789]|(?<=8)[0123467])|(?<=3)[012345678]((?<=0)[123456789]|(?<=1)[13456789]|(?<=2)[3]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123])|(?<=4)[012456789]((?<=0)[1234569]|(?<=1)[01235]|(?<=2)[1234]|(?<=4)[0125]|(?<=5)[012456789]|(?<=6)[012345789]|(?<=7)[023456789]|(?<=8)[0123456789]|(?<=9)[0123456])|(?<=5)[012456789]((?<=0)[123456789]|(?<=1)[01235678]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345678])|(?<=6)[01256789]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[012346]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[01234])|(?<=7)[0156789]((?<=0)[125]|(?<=1)[02]|(?<=5)[012345678]|(?<=6)[0345678]|(?<=7)[0123456789]|(?<=8)[123456789]|(?<=9)[01])|(?<=8)[0456789]((?<=0)[1567]|(?<=4)[0]|(?<=5)[012345678]|(?<=6)[01234]|(?<=7)[01234567]|(?<=8)[01234]|(?<=9)[01])|(?<=9)[015678]((?<=0)[1234578]|(?<=1)[345]|(?<=5)[0123456789]|(?<=6)[023489]|(?<=7)[012356789]|(?<=8)[012345678]))|(?<=1)[0123456789]((?<=0)[015678]((?<=0)[1356789]|(?<=1)[1]|(?<=5)[123456]|(?<=6)[12345789]|(?<=7)[1]|(?<=8)[1346789])|(?<=1)[015678]((?<=0)[1289]|(?<=1)[2]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[026789]|(?<=8)[1245789])|(?<=2)[0156789]((?<=0)[13457]|(?<=1)[45]|(?<=5)[0123456789]|(?<=6)[236]|(?<=7)[01234589]|(?<=8)[13456]|(?<=9)[0145])|(?<=3)[0123456789]((?<=0)[0123456789]|(?<=1)[12346789]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[0124689]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[12356789]|(?<=8)[013456789]|(?<=9)[012345679])|(?<=4)[012345678]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0123459]|(?<=3)[012345]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[123456789]|(?<=7)[0123456789]|(?<=8)[012345678])|(?<=5)[0123456789]((?<=0)[1234689]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345]|(?<=5)[056]|(?<=6)[01]|(?<=7)[0]|(?<=8)[01]|(?<=9)[012346789])|(?<=6)[0123456789]((?<=0)[12456789]|(?<=1)[023456789]|(?<=2)[012345689]|(?<=3)[02346789]|(?<=4)[0123]|(?<=5)[01345789]|(?<=6)[1234567]|(?<=7)[01235689]|(?<=8)[0234]|(?<=9)[02])|(?<=7)[0123456789]((?<=0)[123456789]|(?<=1)[01234589]|(?<=2)[01234567]|(?<=3)[034589]|(?<=4)[023567]|(?<=5)[123479]|(?<=6)[0123456789]|(?<=7)[126789]|(?<=8)[123456789]|(?<=9)[01234689])|(?<=8)[012356789]((?<=0)[123456789]|(?<=1)[123456]|(?<=2)[013578]|(?<=3)[0123]|(?<=5)[0129]|(?<=6)[0167]|(?<=7)[0158]|(?<=8)[0]|(?<=9)[01234])|(?<=9)[01234567]((?<=0)[013]|(?<=1)[012467]|(?<=2)[013456789]|(?<=3)[01]|(?<=4)[01]|(?<=5)[014]|(?<=6)[013]|(?<=7)[01]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[013456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456]|(?<=4)[01]|(?<=5)[012345678]|(?<=6)[01236789]|(?<=7)[012346]|(?<=8)[01]|(?<=9)[01234])|(?<=1)[0123567]((?<=0)[01]|(?<=1)[046]|(?<=2)[013]|(?<=3)[0234]|(?<=5)[01]|(?<=6)[01234567]|(?<=7)[0])|(?<=2)[012345678]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[034567]|(?<=3)[01235]|(?<=4)[01]|(?<=5)[16]|(?<=6)[01456]|(?<=7)[01]|(?<=8)[03])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[01456]|(?<=5)[0135]|(?<=6)[0145]|(?<=7)[23]|(?<=8)[0123456789]|(?<=9)[01])|(?<=4)[012345678]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0245678]|(?<=4)[01234678]|(?<=5)[01]|(?<=6)[01]|(?<=7)[678]|(?<=8)[0145678])|(?<=5)[014568]((?<=0)[01]|(?<=1)[023]|(?<=4)[0124]|(?<=5)[0125]|(?<=6)[01]|(?<=8)[0124])|(?<=6)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[12346789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[012345678]|(?<=9)[0345])|(?<=7)[1234567]((?<=1)[12345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[023]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[01257]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[013478]|(?<=6)[0123467]|(?<=7)[09]|(?<=8)[012]|(?<=9)[03])|(?<=9)[012345678]((?<=0)[0179]|(?<=1)[078]|(?<=2)[039]|(?<=3)[03679]|(?<=4)[03]|(?<=5)[02349]|(?<=6)[0567]|(?<=7)[23457]|(?<=8)[5]))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[012345678]|(?<=5)[01345678]|(?<=6)[013456]|(?<=7)[01234567]|(?<=8)[0123456789]|(?<=9)[0125])|(?<=1)[0123456789]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[12345789]|(?<=4)[0123458]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[12345679])|(?<=2)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[123456789]|(?<=6)[012345789]|(?<=7)[014567]|(?<=8)[01245]|(?<=9)[0124567])|(?<=3)[0234567]((?<=0)[0123]|(?<=2)[012]|(?<=3)[01]|(?<=4)[012]|(?<=5)[015789]|(?<=6)[01]|(?<=7)[01])|(?<=4)[01234789]((?<=0)[123456789]|(?<=1)[01234]|(?<=2)[015678]|(?<=3)[01]|(?<=4)[012]|(?<=7)[012456789]|(?<=8)[012345]|(?<=9)[0])|(?<=5)[0123456789]((?<=0)[12347]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456]|(?<=5)[01]|(?<=6)[01]|(?<=7)[015679]|(?<=8)[018]|(?<=9)[35])|(?<=6)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0124]|(?<=4)[678]|(?<=5)[0268]|(?<=6)[0156]|(?<=7)[123456789]|(?<=8)[0134]|(?<=9)[0127])|(?<=7)[0123456789]((?<=0)[123457]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012346789]|(?<=5)[03]|(?<=6)[06]|(?<=7)[02]|(?<=8)[0135789]|(?<=9)[012345689])|(?<=8)[0123456789]((?<=0)[012345]|(?<=1)[012]|(?<=2)[05]|(?<=3)[0123456]|(?<=4)[01489]|(?<=5)[02345]|(?<=6)[4]|(?<=7)[0]|(?<=8)[02345678]|(?<=9)[0135])|(?<=9)[012345679]((?<=0)[123456]|(?<=1)[0123456789]|(?<=2)[0124589]|(?<=3)[013679]|(?<=4)[012346789]|(?<=5)[0]|(?<=6)[012567]|(?<=7)[0]|(?<=9)[13456789]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[123456]|(?<=4)[123456789]|(?<=5)[0123456789]|(?<=6)[38]|(?<=7)[01236789]|(?<=8)[123456789]|(?<=9)[0123456789])|(?<=1)[0123456789]((?<=0)[02345]|(?<=1)[09]|(?<=2)[01346789]|(?<=3)[0479]|(?<=4)[68]|(?<=5)[0234689]|(?<=6)[0134789]|(?<=7)[034]|(?<=8)[0127]|(?<=9)[8])|(?<=2)[03456789]((?<=0)[0189]|(?<=3)[034579]|(?<=4)[04]|(?<=5)[0]|(?<=6)[0245]|(?<=7)[02456]|(?<=8)[0]|(?<=9)[1456789])|(?<=3)[0123456789]((?<=0)[126789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345678]|(?<=6)[012345789]|(?<=7)[012345689]|(?<=8)[014579]|(?<=9)[0123456789])|(?<=4)[02346789]((?<=0)[01234567]|(?<=2)[0]|(?<=3)[24689]|(?<=4)[013]|(?<=6)[0235]|(?<=7)[3]|(?<=8)[0456]|(?<=9)[012])|(?<=5)[0123456789]((?<=0)[1234789]|(?<=1)[345679]|(?<=2)[012345689]|(?<=3)[2456]|(?<=4)[014]|(?<=5)[0123478]|(?<=6)[03]|(?<=7)[5679]|(?<=8)[068]|(?<=9)[0567])|(?<=6)[0123456789]((?<=0)[45689]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[678]|(?<=6)[123456]|(?<=7)[0123456789]|(?<=8)[123456789]|(?<=9)[13456789])|(?<=7)[0123456789]((?<=0)[01235678]|(?<=1)[5]|(?<=2)[0145]|(?<=3)[03457]|(?<=4)[12456789]|(?<=5)[456]|(?<=6)[068]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012345])|(?<=8)[0123456789]((?<=0)[123489]|(?<=1)[025678]|(?<=2)[01234578]|(?<=3)[024689]|(?<=4)[12346789]|(?<=5)[123456789]|(?<=6)[234589]|(?<=7)[06789]|(?<=8)[456789]|(?<=9)[123468])|(?<=9)[01235789]((?<=0)[0123459]|(?<=1)[0256]|(?<=2)[01]|(?<=3)[4]|(?<=5)[0123567]|(?<=7)[1234]|(?<=8)[05]|(?<=9)[034]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[3456789]|(?<=1)[0123456789]|(?<=2)[012]|(?<=3)[123456789]|(?<=4)[1235]|(?<=5)[23456789]|(?<=6)[378]|(?<=7)[235]|(?<=8)[129]|(?<=9)[346789])|(?<=1)[012345678]((?<=0)[1456789]|(?<=1)[13456789]|(?<=2)[124]|(?<=3)[0124567]|(?<=4)[12345678]|(?<=5)[12345]|(?<=6)[012345]|(?<=7)[012346789]|(?<=8)[34])|(?<=2)[012345689]((?<=0)[01236789]|(?<=1)[012345678]|(?<=2)[123456789]|(?<=3)[01256789]|(?<=4)[34]|(?<=5)[1234789]|(?<=6)[01234578]|(?<=8)[123456]|(?<=9)[139])|(?<=3)[0123456789]((?<=0)[0123456789]|(?<=1)[014589]|(?<=2)[1235679]|(?<=3)[134567]|(?<=4)[123567]|(?<=5)[034578]|(?<=6)[0356]|(?<=7)[1489]|(?<=8)[0124578]|(?<=9)[2346789])|(?<=4)[0123456789]((?<=0)[12346789]|(?<=1)[0123456789]|(?<=2)[0378]|(?<=3)[07]|(?<=4)[034579]|(?<=5)[012345789]|(?<=6)[02345]|(?<=7)[023456]|(?<=8)[046]|(?<=9)[89])|(?<=5)[0123456789]((?<=0)[123456789]|(?<=1)[12456789]|(?<=2)[1235789]|(?<=3)[12345678]|(?<=4)[12456789]|(?<=5)[014569]|(?<=6)[012356789]|(?<=7)[04568]|(?<=8)[02345689]|(?<=9)[0134568])|(?<=6)[01234589]((?<=0)[01245]|(?<=1)[024]|(?<=2)[06789]|(?<=3)[0123567]|(?<=4)[0123456789]|(?<=5)[0123]|(?<=8)[0357]|(?<=9)[03456])|(?<=7)[012345678]((?<=0)[0123456789]|(?<=1)[01234589]|(?<=2)[0123456789]|(?<=3)[012346]|(?<=4)[1235679]|(?<=5)[012]|(?<=6)[03]|(?<=7)[0356789]|(?<=8)[012345678])|(?<=8)[0123456789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012345679]|(?<=3)[012345678]|(?<=4)[1345789]|(?<=5)[12345789]|(?<=6)[123456789]|(?<=7)[236789]|(?<=8)[146789]|(?<=9)[23569])|(?<=9)[013456789]((?<=0)[234678]|(?<=1)[123456789]|(?<=3)[156789]|(?<=4)[1378]|(?<=5)[1234567]|(?<=6)[01234567]|(?<=7)[0789]|(?<=8)[1234567]|(?<=9)[134]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[01234568]|(?<=3)[045679]|(?<=4)[045678]|(?<=5)[0245789]|(?<=6)[02345789]|(?<=7)[05689]|(?<=8)[023456789]|(?<=9)[01245689])|(?<=1)[0123456789]((?<=0)[0123456]|(?<=1)[0]|(?<=2)[01]|(?<=3)[3489]|(?<=4)[01234679]|(?<=5)[0123456]|(?<=6)[0156]|(?<=7)[014]|(?<=8)[34]|(?<=9)[06])|(?<=2)[0123456789]((?<=0)[01]|(?<=1)[0123456789]|(?<=2)[0234]|(?<=3)[089]|(?<=4)[09]|(?<=5)[059]|(?<=6)[0345]|(?<=7)[02]|(?<=8)[0123567]|(?<=9)[012345678])|(?<=3)[01235689]((?<=0)[01]|(?<=1)[05]|(?<=2)[0]|(?<=3)[019]|(?<=5)[0]|(?<=6)[01345]|(?<=8)[56789]|(?<=9)[0123456789])|(?<=4)[0123456789]((?<=0)[12345789]|(?<=1)[012345689]|(?<=2)[012359]|(?<=3)[013456]|(?<=4)[034567]|(?<=5)[02345678]|(?<=6)[012]|(?<=7)[01256]|(?<=8)[01]|(?<=9)[0349])|(?<=5)[0123479]((?<=0)[12346789]|(?<=1)[01245678]|(?<=2)[012345789]|(?<=3)[012389]|(?<=4)[6789]|(?<=7)[01]|(?<=9)[01])|(?<=6)[012345789]((?<=0)[01]|(?<=1)[01234]|(?<=2)[023789]|(?<=3)[01236789]|(?<=4)[012345]|(?<=5)[02356789]|(?<=7)[0145]|(?<=8)[036789]|(?<=9)[034789])|(?<=7)[0123456789]((?<=0)[0123478]|(?<=1)[013456789]|(?<=2)[136789]|(?<=3)[047]|(?<=4)[01]|(?<=5)[01]|(?<=6)[13]|(?<=7)[012346789]|(?<=8)[123489]|(?<=9)[0123456789])|(?<=8)[0123456789]((?<=0)[0123456789]|(?<=1)[012345789]|(?<=2)[01236789]|(?<=3)[01]|(?<=4)[1345789]|(?<=5)[123456789]|(?<=6)[136789]|(?<=7)[0123456789]|(?<=8)[1245678]|(?<=9)[1345689])|(?<=9)[012456789]((?<=0)[012356789]|(?<=1)[023456789]|(?<=2)[146789]|(?<=4)[012467]|(?<=5)[13789]|(?<=6)[1346789]|(?<=7)[135678]|(?<=8)[02345678]|(?<=9)[134567]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[3456]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[6789]|(?<=7)[0124589]|(?<=8)[012389]|(?<=9)[123789])|(?<=1)[0123456789]((?<=0)[015]|(?<=1)[01234569]|(?<=2)[015679]|(?<=3)[0]|(?<=4)[02]|(?<=5)[012369]|(?<=6)[0456789]|(?<=7)[045678]|(?<=8)[01]|(?<=9)[04])|(?<=2)[0123456789]((?<=0)[01367]|(?<=1)[123]|(?<=2)[13478]|(?<=3)[1245689]|(?<=4)[01234567]|(?<=5)[025679]|(?<=6)[0134678]|(?<=7)[034]|(?<=8)[02456789]|(?<=9)[0158])|(?<=3)[0123456789]((?<=0)[0123]|(?<=1)[05689]|(?<=2)[0179]|(?<=3)[1234568]|(?<=4)[01235]|(?<=5)[01345678]|(?<=6)[1]|(?<=7)[0245]|(?<=8)[034678]|(?<=9)[123789])|(?<=4)[0123456789]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[23456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345678])|(?<=5)[0123456789]((?<=0)[0123456789]|(?<=1)[0123479]|(?<=2)[059]|(?<=3)[013]|(?<=4)[019]|(?<=5)[01]|(?<=6)[0236]|(?<=7)[0]|(?<=8)[0134]|(?<=9)[016])|(?<=6)[01235679]((?<=0)[0123456789]|(?<=1)[09]|(?<=2)[02349]|(?<=3)[01234]|(?<=5)[012345678]|(?<=6)[01]|(?<=7)[012]|(?<=9)[01])|(?<=7)[012345679]((?<=0)[12345789]|(?<=1)[012345678]|(?<=2)[4569]|(?<=3)[023456789]|(?<=4)[0124568]|(?<=5)[01]|(?<=6)[01]|(?<=7)[017]|(?<=9)[01567])|(?<=8)[01256789]((?<=0)[0123458]|(?<=1)[0789]|(?<=2)[0123]|(?<=5)[6]|(?<=6)[0349]|(?<=7)[0134678]|(?<=8)[1245]|(?<=9)[0123678])|(?<=9)[02456789]((?<=0)[012]|(?<=2)[4]|(?<=4)[014]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0139]|(?<=8)[012356]|(?<=9)[0345]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[01234569]|(?<=2)[012356789]|(?<=3)[0178]|(?<=4)[1789]|(?<=5)[0678]|(?<=6)[2345]|(?<=7)[01234569]|(?<=8)[456789]|(?<=9)[123456789])|(?<=1)[0123456789]((?<=0)[0238]|(?<=1)[048]|(?<=2)[08]|(?<=3)[04568]|(?<=4)[0569]|(?<=5)[01789]|(?<=6)[018]|(?<=7)[089]|(?<=8)[123456789]|(?<=9)[0235678])|(?<=2)[012356789]((?<=0)[012356789]|(?<=1)[014589]|(?<=2)[06]|(?<=3)[0123]|(?<=5)[012356]|(?<=6)[0146]|(?<=7)[0134568]|(?<=8)[1356789]|(?<=9)[0478])|(?<=3)[012456789]((?<=0)[0159]|(?<=1)[01234567]|(?<=2)[0234568]|(?<=4)[0]|(?<=5)[27]|(?<=6)[01]|(?<=7)[0234678]|(?<=8)[024578]|(?<=9)[0238])|(?<=4)[0123456789]((?<=0)[0123456789]|(?<=1)[01234569]|(?<=2)[68]|(?<=3)[0289]|(?<=4)[57]|(?<=5)[059]|(?<=6)[59]|(?<=7)[05]|(?<=8)[0134589]|(?<=9)[3])|(?<=5)[012349]((?<=0)[123456789]|(?<=1)[023456789]|(?<=2)[0123]|(?<=3)[0134569]|(?<=4)[036]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[1234789]|(?<=1)[013456789]|(?<=2)[246]|(?<=3)[08]|(?<=4)[01234678]|(?<=5)[12456789]|(?<=6)[013456]|(?<=7)[2]|(?<=8)[12345]|(?<=9)[123456])|(?<=7)[0234567]((?<=0)[01]|(?<=2)[0345]|(?<=3)[0235]|(?<=4)[023]|(?<=5)[0234]|(?<=6)[246]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[0123459]|(?<=1)[3]|(?<=2)[07]|(?<=3)[0]|(?<=4)[24]|(?<=5)[0124]|(?<=6)[015]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0127])|(?<=9)[012678]((?<=0)[012456789]|(?<=1)[0]|(?<=2)[012]|(?<=6)[01]|(?<=7)[67]|(?<=8)[123456]))|(?<=9)[0123456789]((?<=0)[0123456]((?<=0)[6789]|(?<=1)[0123456789]|(?<=2)[0123479]|(?<=3)[0478]|(?<=4)[023569]|(?<=5)[05679]|(?<=6)[02489])|(?<=1)[0123456789]((?<=0)[0123456789]|(?<=1)[089]|(?<=2)[08]|(?<=3)[01245678]|(?<=4)[0123456789]|(?<=5)[123456789]|(?<=6)[1239]|(?<=7)[0134568]|(?<=8)[01245679]|(?<=9)[023457])|(?<=2)[456789]((?<=4)[0]|(?<=5)[123456789]|(?<=6)[012356789]|(?<=7)[0123456789]|(?<=8)[012345678]|(?<=9)[01234689])|(?<=3)[012356789]((?<=0)[023456789]|(?<=1)[0156]|(?<=2)[12569]|(?<=3)[456]|(?<=5)[0578]|(?<=6)[05]|(?<=7)[02369]|(?<=8)[012456789]|(?<=9)[1235])|(?<=4)[012345789]((?<=0)[23456789]|(?<=1)[14569]|(?<=2)[034567]|(?<=3)[069]|(?<=4)[012345678]|(?<=5)[013456]|(?<=7)[01569]|(?<=8)[0123456789]|(?<=9)[678])|(?<=5)[01234589]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[123678]|(?<=4)[015]|(?<=5)[02]|(?<=8)[0234567]|(?<=9)[0135])|(?<=6)[0125679]((?<=0)[01239]|(?<=1)[01256]|(?<=2)[014]|(?<=5)[017]|(?<=6)[4]|(?<=7)[02]|(?<=9)[012])|(?<=7)[0123456789]((?<=0)[09]|(?<=1)[01234567]|(?<=2)[2]|(?<=3)[01234567]|(?<=4)[02]|(?<=5)[01]|(?<=6)[0234568]|(?<=7)[01235]|(?<=8)[2]|(?<=9)[0])|(?<=8)[0124]((?<=0)[01234]|(?<=1)[015]|(?<=2)[06]|(?<=4)[0123456])|(?<=9)[01235689]((?<=0)[01]|(?<=1)[0124567]|(?<=2)[56]|(?<=3)[05]|(?<=5)[01]|(?<=6)[0]|(?<=8)[012]|(?<=9)[01]))))$"), - US: new RegExp("^([0123456789]((?<=0)[012345678]((?<=0)[6789]((?<=6)[0123456789]((?<=0)[1236]|(?<=1)[01267]|(?<=2)[2347]|(?<=3)[1678]|(?<=4)[167]|(?<=5)[02369]|(?<=6)[02479]|(?<=7)[04678]|(?<=8)[023578]|(?<=9)[02348])|(?<=7)[0123456789]((?<=0)[3457]|(?<=1)[456789]|(?<=2)[035789]|(?<=3)[015689]|(?<=4)[015]|(?<=5)[147]|(?<=6)[5679]|(?<=7)[123578]|(?<=8)[02346]|(?<=9)[145])|(?<=8)[02345]((?<=0)[2]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01])|(?<=9)[012345678]((?<=0)[1679]|(?<=1)[123578]|(?<=2)[0134567]|(?<=3)[4]|(?<=4)[9]|(?<=5)[0123679]|(?<=6)[0125689]|(?<=7)[169]|(?<=8)[2357]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[0123]|(?<=2)[026789]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[03467]|(?<=6)[023689]|(?<=7)[01234579]|(?<=8)[01234589]|(?<=9)[2345678])|(?<=1)[01245]((?<=0)[3456789]|(?<=1)[89]|(?<=2)[89]|(?<=4)[4]|(?<=5)[1])|(?<=2)[0234567]((?<=0)[1]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[023457]|(?<=5)[3456789]|(?<=6)[02467]|(?<=7)[0])|(?<=3)[0345678]((?<=0)[1]|(?<=3)[01789]|(?<=4)[01234679]|(?<=5)[0145]|(?<=6)[04678]|(?<=7)[035689]|(?<=8)[0])|(?<=4)[234567]((?<=2)[0]|(?<=3)[012468]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[023489]|(?<=7)[345])|(?<=5)[0123456789]((?<=0)[134567]|(?<=1)[05689]|(?<=2)[01234579]|(?<=3)[124567]|(?<=4)[01235]|(?<=5)[0]|(?<=6)[0124689]|(?<=7)[01]|(?<=8)[1358]|(?<=9)[0])|(?<=6)[01]((?<=0)[23456789]|(?<=1)[012])|(?<=7)[01234567]((?<=0)[12]|(?<=1)[89]|(?<=2)[01]|(?<=3)[01]|(?<=4)[01256789]|(?<=5)[2467]|(?<=6)[0]|(?<=7)[023568])|(?<=8)[0123456789]((?<=0)[13]|(?<=1)[0]|(?<=2)[1467]|(?<=3)[02345]|(?<=4)[01345]|(?<=5)[0124]|(?<=6)[02347]|(?<=7)[69]|(?<=8)[067]|(?<=9)[0])|(?<=9)[012345678]((?<=0)[1245678]|(?<=1)[35]|(?<=2)[1239]|(?<=3)[078]|(?<=4)[0459]|(?<=5)[012]|(?<=6)[0569]|(?<=7)[0]|(?<=8)[2345]))|(?<=2)[0123456789]((?<=0)[123456789]((?<=1)[9]|(?<=2)[156]|(?<=3)[0258]|(?<=4)[3578]|(?<=5)[02346]|(?<=6)[1267]|(?<=7)[12]|(?<=8)[1]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[89]|(?<=1)[01345689]|(?<=2)[012456789]|(?<=3)[012345689]|(?<=4)[01234589]|(?<=5)[0125]|(?<=6)[39]|(?<=7)[016]|(?<=8)[04689]|(?<=9)[019])|(?<=2)[01]((?<=0)[35]|(?<=1)[05])|(?<=3)[02345678]((?<=0)[12]|(?<=2)[245]|(?<=3)[02389]|(?<=4)[1367]|(?<=5)[01679]|(?<=6)[04678]|(?<=7)[059]|(?<=8)[2])|(?<=4)[2456789]((?<=2)[01]|(?<=4)[56]|(?<=5)[123789]|(?<=6)[01245678]|(?<=7)[2468]|(?<=8)[12]|(?<=9)[234])|(?<=5)[345678]((?<=3)[2456789]|(?<=4)[023]|(?<=5)[346789]|(?<=6)[12348]|(?<=7)[156]|(?<=8)[4])|(?<=6)[034567]((?<=0)[1]|(?<=3)[01235789]|(?<=4)[123456789]|(?<=5)[023579]|(?<=6)[034678]|(?<=7)[01235])|(?<=7)[012346789]((?<=0)[23]|(?<=1)[35789]|(?<=2)[013456]|(?<=3)[89]|(?<=4)[0345678]|(?<=6)[0234679]|(?<=7)[0179]|(?<=8)[0]|(?<=9)[01])|(?<=8)[0123456789]((?<=0)[246789]|(?<=1)[2345678]|(?<=2)[23456789]|(?<=3)[012356789]|(?<=4)[012]|(?<=5)[2789]|(?<=6)[01345]|(?<=7)[12345689]|(?<=8)[125689]|(?<=9)[1234568])|(?<=9)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[01]))|(?<=3)[0123456789]((?<=0)[345678]((?<=3)[1234678]|(?<=4)[23456789]|(?<=5)[123457]|(?<=6)[0234]|(?<=7)[01679]|(?<=8)[2467])|(?<=1)[01]((?<=0)[123469]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[5678]|(?<=2)[012345679]|(?<=3)[0134578]|(?<=4)[01234569]|(?<=5)[13456789]|(?<=6)[01234689]|(?<=7)[35689]|(?<=8)[012457]|(?<=9)[013])|(?<=3)[0]((?<=0)[1347])|(?<=4)[34567]((?<=3)[1]|(?<=4)[0123456789]|(?<=5)[0125678]|(?<=6)[124567]|(?<=7)[0])|(?<=5)[6789]((?<=6)[1]|(?<=7)[04569]|(?<=8)[01234568]|(?<=9)[023578])|(?<=6)[0]((?<=0)[12345789])|(?<=7)[45678]((?<=4)[01358]|(?<=5)[01235]|(?<=6)[568]|(?<=7)[013479]|(?<=8)[01245])|(?<=8)[0123456789]((?<=0)[19]|(?<=1)[012346789]|(?<=2)[034567]|(?<=3)[02356789]|(?<=4)[012456789]|(?<=5)[012345678]|(?<=6)[01245789]|(?<=7)[0123458]|(?<=8)[234567]|(?<=9)[047])|(?<=9)[01]((?<=0)[123456789]|(?<=1)[01]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[1235689]|(?<=1)[01579]|(?<=2)[012479]|(?<=3)[02789]|(?<=4)[01236789]|(?<=5)[01567]|(?<=6)[1234689]|(?<=7)[123469]|(?<=8)[345678]|(?<=9)[0123567])|(?<=1)[01]((?<=0)[12356789]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[0679]|(?<=2)[012467]|(?<=3)[146789]|(?<=4)[0]|(?<=5)[023456789]|(?<=6)[013578]|(?<=7)[01456]|(?<=8)[01245679]|(?<=9)[024])|(?<=3)[3456]((?<=3)[0]|(?<=4)[12456789]|(?<=5)[012345789]|(?<=6)[034])|(?<=4)[0123456789]((?<=0)[168]|(?<=1)[0123456789]|(?<=2)[1246789]|(?<=3)[01458]|(?<=4)[123489]|(?<=5)[01345679]|(?<=6)[0123489]|(?<=7)[12345689]|(?<=8)[15789]|(?<=9)[0123567])|(?<=5)[34567]((?<=3)[05789]|(?<=4)[13478]|(?<=5)[134568]|(?<=6)[2348]|(?<=7)[012345689])|(?<=6)[0123456789]((?<=0)[5679]|(?<=1)[1234679]|(?<=2)[2345678]|(?<=3)[0145]|(?<=4)[0235689]|(?<=5)[0234578]|(?<=6)[0246789]|(?<=7)[1345679]|(?<=8)[013456]|(?<=9)[134])|(?<=7)[345678]((?<=3)[02345679]|(?<=4)[023567]|(?<=5)[0678]|(?<=6)[012345689]|(?<=7)[234679]|(?<=8)[013567])|(?<=8)[456]((?<=4)[13789]|(?<=5)[12345689]|(?<=6)[01234])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[012578]|(?<=2)[0123456789]|(?<=3)[026789]|(?<=4)[01234579]|(?<=5)[01235678]|(?<=6)[1345679]|(?<=7)[01345689]|(?<=8)[123456789]|(?<=9)[2]))|(?<=5)[012346789]((?<=0)[03456789]((?<=0)[19]|(?<=3)[0123456789]|(?<=4)[0123568]|(?<=5)[01235689]|(?<=6)[0125789]|(?<=7)[01235679]|(?<=8)[134689]|(?<=9)[1])|(?<=1)[0456]((?<=0)[1]|(?<=4)[123689]|(?<=5)[01234568]|(?<=6)[1])|(?<=2)[056]((?<=0)[1]|(?<=5)[0123457]|(?<=6)[012])|(?<=3)[0456]((?<=0)[1]|(?<=4)[0123456]|(?<=5)[012345689]|(?<=6)[0123])|(?<=4)[03456789]((?<=0)[13458]|(?<=3)[9]|(?<=4)[012345678]|(?<=5)[02456789]|(?<=6)[123458]|(?<=7)[1234678]|(?<=8)[12356789]|(?<=9)[1245])|(?<=6)[045678]((?<=0)[2]|(?<=4)[01789]|(?<=5)[01234568]|(?<=6)[0134679]|(?<=7)[023456789]|(?<=8)[012])|(?<=7)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[234678]|(?<=5)[13789]|(?<=6)[0123456789]|(?<=7)[02345678])|(?<=8)[1234567]((?<=1)[9]|(?<=2)[012456789]|(?<=3)[023679]|(?<=4)[0123567]|(?<=5)[0135789]|(?<=6)[02678]|(?<=7)[12345])|(?<=9)[0]((?<=0)[1234567]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[12]|(?<=1)[03689]|(?<=2)[01234679]|(?<=3)[123579]|(?<=4)[023]|(?<=5)[123789]|(?<=6)[012356789]|(?<=7)[01234689]|(?<=8)[0124589]|(?<=9)[0123568])|(?<=1)[012]((?<=0)[356789]|(?<=1)[0124789]|(?<=2)[0])|(?<=2)[2345678]((?<=2)[6]|(?<=3)[1245789]|(?<=4)[123789]|(?<=5)[045689]|(?<=6)[0234689]|(?<=7)[789]|(?<=8)[012])|(?<=3)[23456789]((?<=2)[0]|(?<=3)[012345689]|(?<=4)[0]|(?<=5)[0134579]|(?<=6)[05]|(?<=7)[013456789]|(?<=8)[024579]|(?<=9)[0])|(?<=4)[0123456789]((?<=0)[1359]|(?<=1)[023456789]|(?<=2)[02346]|(?<=3)[789]|(?<=4)[12347]|(?<=5)[015679]|(?<=6)[01789]|(?<=7)[01235789]|(?<=8)[0123489]|(?<=9)[28])|(?<=5)[12]((?<=1)[0123456789]|(?<=2)[45])|(?<=6)[01]((?<=0)[45678]|(?<=1)[01245])|(?<=7)[0156789]((?<=0)[24568]|(?<=1)[026]|(?<=5)[0123456789]|(?<=6)[23]|(?<=7)[06789]|(?<=8)[234567]|(?<=9)[0134568])|(?<=8)[012345789]((?<=0)[147]|(?<=1)[012]|(?<=2)[045]|(?<=3)[01]|(?<=4)[0]|(?<=5)[01345]|(?<=7)[078]|(?<=8)[03]|(?<=9)[067])|(?<=9)[0]((?<=0)[123567]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[12345689]|(?<=1)[01234678]|(?<=2)[012346789]|(?<=3)[01234569]|(?<=4)[01234567]|(?<=5)[0245789]|(?<=6)[023456789]|(?<=7)[0123456789]|(?<=8)[0123678]|(?<=9)[02345])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0124])|(?<=2)[0]((?<=0)[1234568])|(?<=3)[01]((?<=0)[24567]|(?<=1)[01])|(?<=4)[012345678]((?<=0)[1357]|(?<=1)[06789]|(?<=2)[01234]|(?<=3)[025689]|(?<=4)[0246]|(?<=5)[02678]|(?<=6)[01235]|(?<=7)[0]|(?<=8)[01])|(?<=5)[012]((?<=0)[1234568]|(?<=1)[234]|(?<=2)[24])|(?<=6)[0234567]((?<=0)[1345678]|(?<=2)[014678]|(?<=3)[012]|(?<=4)[0123456789]|(?<=5)[0267]|(?<=6)[01236]|(?<=7)[0567])|(?<=7)[0123456]((?<=0)[1234]|(?<=1)[126789]|(?<=2)[01234678]|(?<=3)[012345789]|(?<=4)[0678]|(?<=5)[0135678]|(?<=6)[024])|(?<=8)[02345678]((?<=0)[13]|(?<=2)[01235678]|(?<=3)[0123468]|(?<=4)[02346789]|(?<=5)[012367]|(?<=6)[03569]|(?<=7)[01468]|(?<=8)[0125])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[0124678]|(?<=3)[01234569]|(?<=4)[056]|(?<=5)[0]|(?<=6)[01]|(?<=7)[04679]|(?<=8)[01]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0124569]|(?<=2)[01236789]|(?<=3)[0123456789]|(?<=4)[1235689]|(?<=5)[012345679]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[013456789]|(?<=9)[012345678])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=2)[01234567]((?<=0)[12345]|(?<=1)[0257]|(?<=2)[13456]|(?<=3)[024]|(?<=4)[012345678]|(?<=5)[1]|(?<=6)[0]|(?<=7)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01246789]|(?<=2)[012346789]|(?<=3)[02]|(?<=4)[01345689]|(?<=5)[023]|(?<=6)[01])|(?<=4)[0]((?<=0)[1236])|(?<=5)[0123456]((?<=0)[125]|(?<=1)[012458]|(?<=2)[0578]|(?<=3)[03456]|(?<=4)[024]|(?<=5)[0134589]|(?<=6)[012])|(?<=6)[012349]((?<=0)[89]|(?<=1)[0189]|(?<=2)[089]|(?<=3)[8]|(?<=4)[018]|(?<=9)[01])|(?<=7)[02345]((?<=0)[1]|(?<=2)[01234]|(?<=3)[01234568]|(?<=4)[012]|(?<=5)[01235789])|(?<=8)[0123456789]((?<=0)[124579]|(?<=1)[0267]|(?<=2)[0123456789]|(?<=3)[0123567]|(?<=4)[0468]|(?<=5)[0234789]|(?<=6)[13579]|(?<=7)[2369]|(?<=8)[024679]|(?<=9)[0])|(?<=9)[0]((?<=0)[124])))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[0123467]((?<=0)[12345679]|(?<=1)[012346789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[04]|(?<=6)[59]|(?<=7)[5])|(?<=1)[0125679]((?<=0)[3]|(?<=1)[01259]|(?<=2)[8]|(?<=5)[234]|(?<=6)[25789]|(?<=7)[012347]|(?<=9)[9])|(?<=2)[78]((?<=7)[189]|(?<=8)[02])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[0124])|(?<=4)[567]((?<=5)[123456789]|(?<=6)[0123456789]|(?<=7)[012345])|(?<=5)[0123456789]((?<=0)[12345679]|(?<=1)[01246789]|(?<=2)[0234678]|(?<=3)[0235678]|(?<=4)[012356789]|(?<=5)[023]|(?<=6)[0267]|(?<=7)[036789]|(?<=8)[0389]|(?<=9)[0145678])|(?<=6)[0]((?<=0)[134567])|(?<=7)[01]((?<=0)[13456789]|(?<=1)[0])|(?<=8)[0]((?<=0)[1345])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[012345678]|(?<=3)[0123]|(?<=4)[01]|(?<=5)[023468]|(?<=6)[0234589]|(?<=7)[0345679]|(?<=8)[03456789]|(?<=9)[023468]))|(?<=1)[0123456789]((?<=0)[0123459]((?<=0)[1345]|(?<=1)[0]|(?<=2)[0134]|(?<=3)[0]|(?<=4)[02]|(?<=5)[0]|(?<=9)[6])|(?<=1)[0]((?<=0)[1234569])|(?<=2)[01234]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[9])|(?<=3)[5678]((?<=5)[456789]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[5])|(?<=4)[1235]((?<=1)[123456789]|(?<=2)[012346789]|(?<=3)[0234569]|(?<=5)[1])|(?<=5)[0123456789]((?<=0)[179]|(?<=1)[0468]|(?<=2)[0]|(?<=3)[0]|(?<=4)[25789]|(?<=5)[02346789]|(?<=6)[0135689]|(?<=7)[025679]|(?<=8)[01]|(?<=9)[068])|(?<=6)[9]((?<=9)[12347])|(?<=7)[0123456789]((?<=0)[1234569]|(?<=1)[03456789]|(?<=2)[01245679]|(?<=3)[0123589]|(?<=4)[0123679]|(?<=5)[12345678]|(?<=6)[23456789]|(?<=7)[0126789]|(?<=8)[02346789]|(?<=9)[012345678])|(?<=8)[0]((?<=0)[134])|(?<=9)[0345678]((?<=0)[1]|(?<=3)[01234579]|(?<=4)[01246789]|(?<=5)[0123456789]|(?<=6)[01234578]|(?<=7)[01235678]|(?<=8)[0]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[789]|(?<=1)[05789]|(?<=2)[02345789]|(?<=3)[123567]|(?<=4)[0123567]|(?<=5)[12346789]|(?<=6)[0123456789]|(?<=7)[01245678]|(?<=8)[234567]|(?<=9)[02345])|(?<=1)[0123456789]((?<=0)[68]|(?<=1)[05678]|(?<=2)[012345]|(?<=3)[01246789]|(?<=4)[034789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[0234567]|(?<=8)[023456789]|(?<=9)[02345678])|(?<=2)[012]((?<=0)[23456789]|(?<=1)[01]|(?<=2)[26])|(?<=3)[0]((?<=0)[23456789])|(?<=4)[0123456789]((?<=0)[145679]|(?<=1)[012346789]|(?<=2)[01234789]|(?<=3)[012345689]|(?<=4)[01234689]|(?<=5)[0123456789]|(?<=6)[01345689]|(?<=7)[0123457]|(?<=8)[012345679]|(?<=9)[01234568])|(?<=5)[0123456789]((?<=0)[123478]|(?<=1)[2345678]|(?<=2)[0123456789]|(?<=3)[01348]|(?<=4)[023456789]|(?<=5)[03]|(?<=6)[1345679]|(?<=7)[0124578]|(?<=8)[0123569]|(?<=9)[024])|(?<=6)[0]((?<=0)[134])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[9]|(?<=2)[01234569]|(?<=3)[234678]|(?<=4)[012356789]|(?<=5)[012489]|(?<=6)[023456789]|(?<=7)[0156789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13489]|(?<=1)[01245679]|(?<=2)[0123478]|(?<=3)[123456789]|(?<=4)[12345679]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012348]|(?<=8)[34567])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[0123456789]|(?<=2)[012346789]|(?<=3)[02345679]|(?<=4)[123456]|(?<=5)[02356789]|(?<=6)[01245679]|(?<=7)[023456789]|(?<=8)[0135679]|(?<=9)[23678]))|(?<=3)[0123456789]((?<=0)[23456789]((?<=2)[0146789]|(?<=3)[012345679]|(?<=4)[01245]|(?<=5)[12347]|(?<=6)[01235689]|(?<=7)[1234678]|(?<=8)[0123478]|(?<=9)[02])|(?<=1)[0123456]((?<=0)[12348]|(?<=1)[0123456789]|(?<=2)[012346]|(?<=3)[124568]|(?<=4)[012345678]|(?<=5)[23456789]|(?<=6)[0234567])|(?<=2)[01249]((?<=0)[23456789]|(?<=1)[012459]|(?<=2)[4]|(?<=4)[4]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[1234589]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[12345789]|(?<=4)[023568]|(?<=5)[023457]|(?<=6)[0134578])|(?<=4)[0123456789]((?<=0)[2346789]|(?<=1)[0135678]|(?<=2)[01458]|(?<=3)[1356789]|(?<=4)[01]|(?<=5)[0245679]|(?<=6)[01489]|(?<=7)[01235678]|(?<=8)[02345689]|(?<=9)[012345])|(?<=5)[0]((?<=0)[12])|(?<=6)[0123456789]((?<=0)[1235678]|(?<=1)[123456789]|(?<=2)[01234568]|(?<=3)[023456789]|(?<=4)[012356789]|(?<=5)[01245689]|(?<=6)[012456789]|(?<=7)[02345689]|(?<=8)[0123457]|(?<=9)[012345679])|(?<=7)[3456789]((?<=3)[01234689]|(?<=4)[034678]|(?<=5)[01234567]|(?<=6)[0]|(?<=7)[45678]|(?<=8)[0234678]|(?<=9)[0567])|(?<=8)[0123456]((?<=0)[12346789]|(?<=1)[012345]|(?<=2)[0567]|(?<=3)[0234589]|(?<=4)[1234679]|(?<=5)[069]|(?<=6)[012345])|(?<=9)[0]((?<=0)[12345]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[145689]|(?<=1)[123]|(?<=2)[0456789]|(?<=3)[012345679]|(?<=4)[012378]|(?<=5)[12456789]|(?<=6)[012356789]|(?<=7)[025]|(?<=8)[012356]|(?<=9)[1248])|(?<=1)[01234567]((?<=0)[123589]|(?<=1)[123]|(?<=2)[05679]|(?<=3)[01245689]|(?<=4)[135]|(?<=5)[0]|(?<=6)[6789]|(?<=7)[01234])|(?<=2)[0126]((?<=0)[12346789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=6)[01])|(?<=3)[0]((?<=0)[12345])|(?<=4)[12345678]((?<=1)[134568]|(?<=2)[0234578]|(?<=3)[2357]|(?<=4)[15]|(?<=5)[0346]|(?<=6)[2346789]|(?<=7)[01256789]|(?<=8)[0125679])|(?<=5)[0123456789]((?<=0)[24567]|(?<=1)[012345679]|(?<=2)[125679]|(?<=3)[0234679]|(?<=4)[12345689]|(?<=5)[015679]|(?<=6)[01489]|(?<=7)[12]|(?<=8)[05689]|(?<=9)[012])|(?<=6)[0124]((?<=0)[456789]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=4)[2])|(?<=7)[012345678]((?<=0)[16789]|(?<=1)[012456789]|(?<=2)[012346789]|(?<=3)[12356789]|(?<=4)[0123478]|(?<=5)[0234567]|(?<=6)[079]|(?<=7)[0245789]|(?<=8)[1234578])|(?<=8)[0123456789]((?<=0)[123456789]|(?<=1)[023456789]|(?<=2)[01234567]|(?<=3)[06789]|(?<=4)[0123567]|(?<=5)[0345689]|(?<=6)[014579]|(?<=7)[01234789]|(?<=8)[01234569]|(?<=9)[1234578])|(?<=9)[0]((?<=0)[1345]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[1345679]|(?<=1)[0245789]|(?<=2)[01245678]|(?<=3)[0134578]|(?<=4)[2345679]|(?<=5)[012345679]|(?<=6)[012345678]|(?<=7)[1245678]|(?<=8)[123456789]|(?<=9)[0])|(?<=1)[01234]((?<=0)[12468]|(?<=1)[026]|(?<=2)[02369]|(?<=3)[1235679]|(?<=4)[02345678])|(?<=2)[012346789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[23456789]|(?<=4)[13]|(?<=6)[0]|(?<=7)[5]|(?<=8)[2]|(?<=9)[0])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[01234567]|(?<=2)[01234579]|(?<=3)[0123478]|(?<=4)[012456789]|(?<=5)[0123789]|(?<=6)[012345678]|(?<=7)[06789]|(?<=8)[0])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0123679]|(?<=2)[012345789]|(?<=3)[012345678]|(?<=4)[023456789]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[023456789]|(?<=8)[0234689]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[12]|(?<=1)[0]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[0124567]|(?<=5)[01245789]|(?<=6)[012345])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[012356789]|(?<=2)[023456789]|(?<=3)[123456789]|(?<=4)[012467]|(?<=5)[0568]|(?<=6)[0123568]|(?<=7)[0123456789]|(?<=8)[012346789]|(?<=9)[01235678])|(?<=7)[012345678]((?<=0)[15]|(?<=1)[01234567]|(?<=2)[012345789]|(?<=3)[012346789]|(?<=4)[1245678]|(?<=5)[0234679]|(?<=6)[0123457]|(?<=7)[0123456789]|(?<=8)[0134])|(?<=8)[0234567]((?<=0)[1]|(?<=2)[1345789]|(?<=3)[124]|(?<=4)[0156789]|(?<=5)[1367]|(?<=6)[0134568]|(?<=7)[0])|(?<=9)[023456]((?<=0)[124569]|(?<=2)[0123456789]|(?<=3)[0145678]|(?<=4)[02345689]|(?<=5)[12345678]|(?<=6)[0123]))|(?<=6)[0123456789]((?<=0)[023456]((?<=0)[12]|(?<=2)[02345789]|(?<=3)[0345678]|(?<=4)[015689]|(?<=5)[012345679]|(?<=6)[136])|(?<=1)[01234567]((?<=0)[125]|(?<=1)[01234567]|(?<=2)[013457]|(?<=3)[0123467]|(?<=4)[0123568]|(?<=5)[01345679]|(?<=6)[01]|(?<=7)[2])|(?<=2)[0123456]((?<=0)[1]|(?<=1)[0123478]|(?<=2)[0234689]|(?<=3)[0235689]|(?<=4)[0245689]|(?<=5)[0345689]|(?<=6)[023])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[1234679]|(?<=2)[1236789]|(?<=3)[12345]|(?<=4)[01234567]|(?<=5)[01234]|(?<=6)[01245]|(?<=7)[01234])|(?<=4)[012347]((?<=0)[1234567]|(?<=1)[012567]|(?<=2)[01234678]|(?<=3)[034568]|(?<=4)[01234]|(?<=7)[5])|(?<=5)[01456]((?<=0)[123456789]|(?<=1)[01]|(?<=4)[6]|(?<=5)[0]|(?<=6)[3])|(?<=6)[0123456789]((?<=0)[12]|(?<=1)[13679]|(?<=2)[0123457]|(?<=3)[013456789]|(?<=4)[015678]|(?<=5)[01245679]|(?<=6)[12456789]|(?<=7)[012345789]|(?<=8)[0234569]|(?<=9)[123459])|(?<=7)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[0123458]|(?<=4)[0345689]|(?<=5)[0])|(?<=8)[02345678]((?<=0)[123]|(?<=2)[012356789]|(?<=3)[023456789]|(?<=4)[01345789]|(?<=5)[12345689]|(?<=6)[0134568]|(?<=7)[012456789]|(?<=8)[12])|(?<=9)[012345]((?<=0)[1]|(?<=1)[012457]|(?<=2)[012356789]|(?<=3)[02356789]|(?<=4)[0123678]|(?<=5)[0]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[2345679]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[01345678]|(?<=8)[0124678]|(?<=9)[034789])|(?<=1)[012]((?<=0)[12349]|(?<=1)[0123]|(?<=2)[0])|(?<=2)[01234567]((?<=0)[12]|(?<=1)[01234579]|(?<=2)[01234589]|(?<=3)[2356789]|(?<=4)[0134679]|(?<=5)[0123457]|(?<=6)[012345678]|(?<=7)[1])|(?<=3)[01234567]((?<=0)[1234679]|(?<=1)[13456789]|(?<=2)[01234579]|(?<=3)[19]|(?<=4)[0234579]|(?<=5)[02356]|(?<=6)[01234568]|(?<=7)[012])|(?<=4)[0]((?<=0)[1234678])|(?<=5)[012345678]((?<=0)[12456789]|(?<=1)[26789]|(?<=2)[0279]|(?<=3)[24568]|(?<=4)[0357]|(?<=5)[012457]|(?<=6)[0235689]|(?<=7)[02689]|(?<=8)[124])|(?<=6)[0]((?<=0)[1236])|(?<=7)[0234567]((?<=0)[12]|(?<=2)[0134789]|(?<=3)[0179]|(?<=4)[0245789]|(?<=5)[012468]|(?<=6)[0234589]|(?<=7)[1246789])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[02345]|(?<=2)[0123479]|(?<=3)[024567]|(?<=4)[0124567]|(?<=5)[01356789]|(?<=6)[01245678]|(?<=7)[0268]|(?<=8)[01456789])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[012359]|(?<=3)[0134568]|(?<=4)[1345689]|(?<=5)[123479]|(?<=6)[0134578]|(?<=7)[024689]|(?<=8)[01235]))|(?<=8)[0123456789]((?<=0)[123456789]((?<=1)[1234578]|(?<=2)[0]|(?<=3)[01245678]|(?<=4)[012569]|(?<=5)[12345689]|(?<=6)[2345679]|(?<=7)[012346789]|(?<=8)[0135678]|(?<=9)[12])|(?<=1)[09]((?<=0)[123469]|(?<=9)[5])|(?<=2)[012345]((?<=0)[12]|(?<=1)[0124689]|(?<=2)[0123459]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[02456])|(?<=3)[0234567]((?<=0)[12]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0234679]|(?<=5)[0134567]|(?<=6)[0]|(?<=7)[012])|(?<=4)[01234567]((?<=0)[357]|(?<=1)[134579]|(?<=2)[014568]|(?<=3)[013456789]|(?<=4)[0134567]|(?<=5)[12345678]|(?<=6)[01234569]|(?<=7)[0123])|(?<=5)[01]((?<=0)[345789]|(?<=1)[02789])|(?<=6)[0123456]((?<=0)[23]|(?<=1)[02456789]|(?<=2)[123456789]|(?<=3)[012456]|(?<=4)[01234]|(?<=5)[1567]|(?<=6)[01])|(?<=7)[0]((?<=0)[12456789])|(?<=8)[012345]((?<=0)[1]|(?<=1)[024678]|(?<=2)[012345689]|(?<=3)[012347]|(?<=4)[02345678]|(?<=5)[0134])|(?<=9)[012345678]((?<=0)[12]|(?<=1)[23457]|(?<=2)[013579]|(?<=3)[023568]|(?<=4)[02467]|(?<=5)[0145]|(?<=6)[02469]|(?<=7)[02467]|(?<=8)[0]))|(?<=9)[013456789]((?<=0)[0123456789]((?<=0)[12346789]|(?<=1)[0234578]|(?<=2)[01235679]|(?<=3)[01234568]|(?<=4)[013467]|(?<=5)[0234567]|(?<=6)[013467]|(?<=7)[02345689]|(?<=8)[123567]|(?<=9)[0456])|(?<=1)[012345]((?<=0)[2346789]|(?<=1)[12345689]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[01234])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[012679]|(?<=2)[0]|(?<=3)[035]|(?<=4)[123458]|(?<=5)[0258]|(?<=6)[23579]|(?<=7)[2345]|(?<=8)[023]|(?<=9)[0])|(?<=4)[02345679]((?<=0)[1356]|(?<=2)[2568]|(?<=3)[5678]|(?<=4)[0246]|(?<=5)[3467]|(?<=6)[02458]|(?<=7)[23457]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[1345678]|(?<=1)[01268]|(?<=2)[023569]|(?<=3)[0345689]|(?<=4)[0134579]|(?<=5)[01459]|(?<=6)[02457])|(?<=6)[01]((?<=0)[12456789]|(?<=1)[01])|(?<=7)[0123]((?<=0)[123679]|(?<=1)[01367]|(?<=2)[0]|(?<=3)[0123456])|(?<=8)[01]((?<=0)[123456789]|(?<=1)[0])|(?<=9)[0345678]((?<=0)[124]|(?<=3)[0134689]|(?<=4)[0134567]|(?<=5)[01234568]|(?<=6)[0234678]|(?<=7)[013579]|(?<=8)[0])))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[04]|(?<=3)[267]|(?<=4)[5]|(?<=5)[279]|(?<=6)[4])|(?<=1)[0123456789]((?<=0)[569]|(?<=1)[012579]|(?<=2)[0149]|(?<=3)[02567]|(?<=4)[13478]|(?<=5)[1258]|(?<=6)[4569]|(?<=7)[0156]|(?<=8)[01467]|(?<=9)[01478])|(?<=2)[023456]((?<=0)[4]|(?<=2)[0]|(?<=3)[0]|(?<=4)[05]|(?<=5)[0]|(?<=6)[0])|(?<=3)[1789]((?<=1)[79]|(?<=7)[3]|(?<=8)[8]|(?<=9)[0])|(?<=4)[0123]((?<=0)[8]|(?<=1)[58]|(?<=2)[27]|(?<=3)[1])|(?<=5)[1234569]((?<=1)[05]|(?<=2)[0]|(?<=3)[05]|(?<=4)[02]|(?<=5)[1]|(?<=6)[056]|(?<=9)[1])|(?<=6)[0123456789]((?<=0)[1236789]|(?<=1)[12356789]|(?<=2)[012345689]|(?<=3)[024679]|(?<=4)[056]|(?<=5)[036789]|(?<=6)[01247]|(?<=7)[045678]|(?<=8)[0456789]|(?<=9)[0235])|(?<=7)[0123456789]((?<=0)[15678]|(?<=1)[012456]|(?<=2)[01234]|(?<=3)[23567]|(?<=4)[02345678]|(?<=5)[14589]|(?<=6)[23459]|(?<=7)[01246789]|(?<=8)[12345]|(?<=9)[4])|(?<=8)[13456789]((?<=1)[245678]|(?<=3)[23789]|(?<=4)[12]|(?<=5)[012345]|(?<=6)[01268]|(?<=7)[1246789]|(?<=8)[0269]|(?<=9)[24569])|(?<=9)[01]((?<=0)[123456]|(?<=1)[02]))|(?<=1)[012456789]((?<=0)[0123456789]((?<=0)[159]|(?<=1)[023457]|(?<=2)[389]|(?<=3)[0124567]|(?<=4)[02345678]|(?<=5)[0123467]|(?<=6)[01]|(?<=7)[145678]|(?<=8)[2457]|(?<=9)[03])|(?<=1)[0123456]((?<=0)[2458]|(?<=1)[1347]|(?<=2)[028]|(?<=3)[01236]|(?<=4)[046]|(?<=5)[2345678]|(?<=6)[0123])|(?<=2)[0123458]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0134679]|(?<=4)[04]|(?<=5)[012]|(?<=8)[567])|(?<=4)[0]((?<=0)[12359])|(?<=5)[023456]((?<=0)[2]|(?<=2)[01349]|(?<=3)[012689]|(?<=4)[01235]|(?<=5)[057]|(?<=6)[012])|(?<=6)[01234567]((?<=0)[17]|(?<=1)[02379]|(?<=2)[023456789]|(?<=3)[1245689]|(?<=4)[01345789]|(?<=5)[012345789]|(?<=6)[0123456789]|(?<=7)[12356789])|(?<=7)[0123456789]((?<=0)[12345]|(?<=1)[013456789]|(?<=2)[237]|(?<=3)[3478]|(?<=4)[026]|(?<=5)[045678]|(?<=6)[2679]|(?<=7)[01346789]|(?<=8)[0123478]|(?<=9)[0134578])|(?<=8)[012345679]((?<=0)[14]|(?<=1)[01347]|(?<=2)[12469]|(?<=3)[0578]|(?<=4)[0129]|(?<=5)[0136]|(?<=6)[12345679]|(?<=7)[1245]|(?<=9)[0])|(?<=9)[0123]((?<=0)[1234]|(?<=1)[12345789]|(?<=2)[01]|(?<=3)[0]))|(?<=2)[0123456789]((?<=0)[0123467]((?<=0)[3]|(?<=1)[5]|(?<=2)[567]|(?<=3)[012359]|(?<=4)[12346]|(?<=6)[06]|(?<=7)[9])|(?<=1)[0235789]((?<=0)[12]|(?<=2)[45]|(?<=3)[4]|(?<=5)[0123]|(?<=7)[2]|(?<=8)[012]|(?<=9)[123])|(?<=2)[01]((?<=0)[12345679]|(?<=1)[134])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[01245])|(?<=4)[02345678]((?<=0)[15678]|(?<=2)[7]|(?<=3)[235678]|(?<=4)[38]|(?<=5)[4]|(?<=6)[09]|(?<=7)[236]|(?<=8)[0258])|(?<=5)[012345678]((?<=0)[3489]|(?<=1)[14]|(?<=2)[09]|(?<=3)[4589]|(?<=4)[268]|(?<=5)[1346]|(?<=6)[07]|(?<=7)[268]|(?<=8)[0])|(?<=6)[0123456]((?<=0)[123]|(?<=1)[01]|(?<=2)[03457]|(?<=3)[079]|(?<=4)[0123456]|(?<=5)[024567]|(?<=6)[034])|(?<=7)[01234]((?<=0)[19]|(?<=1)[12345689]|(?<=2)[023456789]|(?<=3)[012345678]|(?<=4)[0123679])|(?<=8)[012345]((?<=0)[127]|(?<=1)[0125]|(?<=2)[0147]|(?<=3)[01245]|(?<=4)[012345679]|(?<=5)[013])|(?<=9)[012345678]((?<=0)[12348]|(?<=1)[1]|(?<=2)[023]|(?<=3)[1256789]|(?<=4)[0236789]|(?<=5)[2789]|(?<=6)[034789]|(?<=7)[12346]|(?<=8)[09]))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[2459]|(?<=1)[15]|(?<=2)[123457]|(?<=3)[02589]|(?<=4)[0357]|(?<=5)[0569]|(?<=6)[01235689]|(?<=7)[012569]|(?<=8)[134569]|(?<=9)[123])|(?<=1)[0123456789]((?<=0)[23689]|(?<=1)[01234679]|(?<=2)[034689]|(?<=3)[089]|(?<=4)[016789]|(?<=5)[036]|(?<=6)[01389]|(?<=7)[3567]|(?<=8)[0158]|(?<=9)[2])|(?<=2)[123589]((?<=1)[9]|(?<=2)[0123456789]|(?<=3)[01345678]|(?<=5)[0]|(?<=8)[4]|(?<=9)[48])|(?<=3)[01234589]((?<=0)[1234678]|(?<=1)[0456]|(?<=2)[012345]|(?<=3)[67]|(?<=4)[7]|(?<=5)[046789]|(?<=8)[9]|(?<=9)[58])|(?<=4)[01234568]((?<=0)[15789]|(?<=1)[0345678]|(?<=2)[012367]|(?<=3)[02345678]|(?<=4)[012]|(?<=5)[12345679]|(?<=6)[0124]|(?<=8)[0678])|(?<=5)[0125]((?<=0)[2345789]|(?<=1)[01378]|(?<=2)[3]|(?<=5)[1])|(?<=6)[05689]((?<=0)[12345678]|(?<=5)[1]|(?<=6)[123456789]|(?<=8)[1]|(?<=9)[01236])|(?<=7)[0]((?<=0)[1234789])|(?<=8)[023456789]((?<=0)[135]|(?<=2)[14789]|(?<=3)[012346789]|(?<=4)[01234567]|(?<=5)[0167]|(?<=6)[0678]|(?<=7)[0245689]|(?<=8)[12345789]|(?<=9)[0134789])|(?<=9)[01234567]((?<=0)[19]|(?<=1)[579]|(?<=2)[012347]|(?<=3)[04678]|(?<=4)[2347]|(?<=5)[024589]|(?<=6)[0234678]|(?<=7)[046]))|(?<=4)[0123456789]((?<=0)[1256789]((?<=1)[123456789]|(?<=2)[02]|(?<=5)[34589]|(?<=6)[0145679]|(?<=7)[0236789]|(?<=8)[23456789]|(?<=9)[01235])|(?<=1)[012345678]((?<=0)[1245]|(?<=1)[2]|(?<=2)[0124789]|(?<=3)[12346789]|(?<=4)[12789]|(?<=5)[013]|(?<=6)[12578]|(?<=7)[14569]|(?<=8)[45])|(?<=2)[0123456789]((?<=0)[12]|(?<=1)[01679]|(?<=2)[014568]|(?<=3)[0679]|(?<=4)[34568]|(?<=5)[0168]|(?<=6)[03569]|(?<=7)[012379]|(?<=8)[0123]|(?<=9)[023])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[2345678]|(?<=3)[03]|(?<=4)[0378]|(?<=5)[0124]|(?<=6)[01368]|(?<=7)[04578]|(?<=8)[012])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[12356]|(?<=2)[126]|(?<=3)[0123579]|(?<=4)[01258]|(?<=5)[0789]|(?<=6)[04579]|(?<=7)[1234679]|(?<=8)[234567])|(?<=5)[0123456789]((?<=0)[1234]|(?<=1)[57]|(?<=2)[01236789]|(?<=3)[014689]|(?<=4)[019]|(?<=5)[01345678]|(?<=6)[23569]|(?<=7)[0124789]|(?<=8)[01689]|(?<=9)[02345789])|(?<=6)[012345]((?<=0)[12345679]|(?<=1)[234]|(?<=2)[02]|(?<=3)[014579]|(?<=4)[169]|(?<=5)[167])|(?<=7)[01234]((?<=0)[1]|(?<=1)[24569]|(?<=2)[469]|(?<=3)[136789]|(?<=4)[07])|(?<=8)[0123456789]((?<=0)[18]|(?<=1)[135678]|(?<=2)[23678]|(?<=3)[01469]|(?<=4)[3456789]|(?<=5)[013457]|(?<=6)[0126789]|(?<=7)[0123489]|(?<=8)[012478]|(?<=9)[2458])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[0568]|(?<=2)[0457]|(?<=3)[1458]|(?<=4)[13456]|(?<=5)[147]|(?<=6)[236]|(?<=7)[0467]|(?<=8)[13456]|(?<=9)[13]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[235789]|(?<=1)[159]|(?<=2)[12458]|(?<=3)[013569]|(?<=4)[0345789]|(?<=5)[13479]|(?<=6)[012347]|(?<=7)[0156]|(?<=8)[123568]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[236789]|(?<=1)[01234589]|(?<=2)[13456]|(?<=3)[023469]|(?<=4)[012389]|(?<=5)[2469]|(?<=6)[0124589]|(?<=7)[347]|(?<=8)[013567]|(?<=9)[3])|(?<=2)[01345678]((?<=0)[12345689]|(?<=1)[134]|(?<=3)[1459]|(?<=4)[134578]|(?<=5)[1239]|(?<=6)[01245678]|(?<=7)[0156]|(?<=8)[567])|(?<=3)[0128]((?<=0)[1234569]|(?<=1)[12345]|(?<=2)[0]|(?<=8)[7])|(?<=4)[01234]((?<=0)[1345]|(?<=1)[1349]|(?<=2)[012578]|(?<=3)[012478]|(?<=4)[2346])|(?<=5)[01234567]((?<=0)[12345678]|(?<=1)[012457]|(?<=2)[013469]|(?<=3)[0457]|(?<=4)[01457]|(?<=5)[0579]|(?<=6)[0457]|(?<=7)[013])|(?<=6)[0123456789]((?<=0)[1678]|(?<=1)[127]|(?<=2)[1458]|(?<=3)[0245789]|(?<=4)[4679]|(?<=5)[01234]|(?<=6)[1679]|(?<=7)[012468]|(?<=8)[58]|(?<=9)[0269])|(?<=7)[05]((?<=0)[12345]|(?<=5)[5])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[012378]|(?<=2)[03567]|(?<=3)[12679]|(?<=4)[01345689]|(?<=5)[13457]|(?<=6)[24568]|(?<=7)[0135689]|(?<=8)[02])|(?<=9)[012345678]((?<=0)[124789]|(?<=1)[135678]|(?<=2)[0128]|(?<=3)[268]|(?<=4)[23]|(?<=5)[18]|(?<=6)[269]|(?<=7)[126789]|(?<=8)[14569]))|(?<=6)[012345678]((?<=0)[034567]((?<=0)[3]|(?<=3)[0123456789]|(?<=4)[017]|(?<=5)[05689]|(?<=6)[02]|(?<=7)[045])|(?<=1)[0345678]((?<=0)[145]|(?<=3)[34678]|(?<=4)[1236789]|(?<=5)[01259]|(?<=6)[012479]|(?<=7)[058]|(?<=8)[0147])|(?<=2)[0123456789]((?<=0)[1235689]|(?<=1)[0578]|(?<=2)[248]|(?<=3)[04678]|(?<=4)[1]|(?<=5)[03479]|(?<=6)[01346789]|(?<=7)[013568]|(?<=8)[0235789]|(?<=9)[123468])|(?<=3)[02345678]((?<=0)[1]|(?<=2)[01357]|(?<=3)[05789]|(?<=4)[236789]|(?<=5)[14]|(?<=6)[1269]|(?<=7)[24678]|(?<=8)[456])|(?<=4)[0123456]((?<=0)[458]|(?<=1)[012569]|(?<=2)[12456]|(?<=3)[015678]|(?<=4)[03478]|(?<=5)[126]|(?<=6)[3])|(?<=5)[0123456789]((?<=0)[1568]|(?<=1)[9]|(?<=2)[0145]|(?<=3)[47]|(?<=4)[123467]|(?<=5)[49]|(?<=6)[0238]|(?<=7)[012456]|(?<=8)[125678]|(?<=9)[01])|(?<=6)[012356789]((?<=0)[1]|(?<=1)[01579]|(?<=2)[13479]|(?<=3)[168]|(?<=5)[16]|(?<=6)[027]|(?<=7)[1689]|(?<=8)[014]|(?<=9)[01])|(?<=7)[0123456]((?<=0)[457]|(?<=1)[014679]|(?<=2)[026]|(?<=3)[19]|(?<=4)[3]|(?<=5)[0357]|(?<=6)[1347])|(?<=8)[01234568]((?<=0)[12478]|(?<=1)[024578]|(?<=2)[3]|(?<=3)[368]|(?<=4)[57]|(?<=5)[125]|(?<=6)[56]|(?<=8)[46]))|(?<=7)[0123456789]((?<=0)[012345]((?<=0)[679]|(?<=1)[12346789]|(?<=2)[01234578]|(?<=3)[0]|(?<=4)[01235678]|(?<=5)[012345])|(?<=1)[012]((?<=0)[1345679]|(?<=1)[0]|(?<=2)[7])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[23457]|(?<=2)[9]|(?<=3)[1359]|(?<=4)[234789]|(?<=5)[23689]|(?<=6)[02358]|(?<=7)[8]|(?<=8)[12348]|(?<=9)[12589])|(?<=3)[01234567]((?<=0)[1256]|(?<=1)[01234567]|(?<=2)[056]|(?<=3)[02]|(?<=4)[012349]|(?<=5)[015678]|(?<=6)[0]|(?<=7)[014679])|(?<=4)[015]((?<=0)[1356789]|(?<=1)[012]|(?<=5)[5])|(?<=5)[0123456789]((?<=0)[123456789]|(?<=1)[01346789]|(?<=2)[012345679]|(?<=3)[0134679]|(?<=4)[0124569]|(?<=5)[135679]|(?<=6)[023589]|(?<=7)[0123467]|(?<=8)[123479]|(?<=9)[1234679])|(?<=6)[019]((?<=0)[13456789]|(?<=1)[0234567]|(?<=9)[57])|(?<=7)[01]((?<=0)[1345789]|(?<=1)[23])|(?<=8)[0123456789]((?<=0)[13456789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[012479]|(?<=4)[012345679]|(?<=5)[01235678]|(?<=6)[01234569]|(?<=7)[0123456789]|(?<=8)[012345689]|(?<=9)[012367])|(?<=9)[012345678]((?<=0)[9]|(?<=1)[05679]|(?<=2)[0123456789]|(?<=3)[256789]|(?<=4)[12346789]|(?<=5)[0346789]|(?<=6)[02456789]|(?<=7)[0234689]|(?<=8)[012356]))|(?<=8)[0123456789]((?<=0)[012345789]((?<=0)[1679]|(?<=1)[26789]|(?<=2)[013457]|(?<=3)[1234679]|(?<=4)[0123]|(?<=5)[246]|(?<=7)[123456789]|(?<=8)[013689]|(?<=9)[01278])|(?<=1)[01234567]((?<=0)[12345789]|(?<=1)[024579]|(?<=2)[045789]|(?<=3)[3456789]|(?<=4)[467]|(?<=5)[029]|(?<=6)[0346789]|(?<=7)[034])|(?<=2)[0124678]((?<=0)[23456789]|(?<=1)[01234567]|(?<=2)[367]|(?<=4)[4]|(?<=6)[29]|(?<=7)[03478]|(?<=8)[02])|(?<=3)[0123456789]((?<=0)[1345678]|(?<=1)[012458]|(?<=2)[035678]|(?<=3)[01234789]|(?<=4)[012345789]|(?<=5)[01256789]|(?<=6)[023456789]|(?<=7)[123456789]|(?<=8)[234567]|(?<=9)[012345689])|(?<=4)[012345678]((?<=0)[1359]|(?<=1)[12]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[12345789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0289]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[1489]|(?<=1)[01235689]|(?<=2)[013456789]|(?<=3)[0123789]|(?<=4)[023467]|(?<=5)[1234567]|(?<=6)[02]|(?<=7)[012345789]|(?<=8)[01245679]|(?<=9)[04])|(?<=6)[0123456789]((?<=0)[1245679]|(?<=1)[012356789]|(?<=2)[123456789]|(?<=3)[0145678]|(?<=4)[01234569]|(?<=5)[012345789]|(?<=6)[023456789]|(?<=7)[012356789]|(?<=8)[123459]|(?<=9)[023478])|(?<=7)[0123456789]((?<=0)[1245789]|(?<=1)[0123456789]|(?<=2)[0123569]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[123456789]|(?<=6)[12368]|(?<=7)[012345789]|(?<=8)[12356789]|(?<=9)[012])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0]((?<=0)[124569]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[1369]|(?<=1)[04568]|(?<=2)[0]|(?<=3)[01236789]|(?<=4)[0245678]|(?<=5)[12345689]|(?<=6)[123579]|(?<=7)[0234589]|(?<=8)[012])|(?<=1)[012345678]((?<=0)[124578]|(?<=1)[1234578]|(?<=2)[2356789]|(?<=3)[03578]|(?<=4)[2568]|(?<=5)[0234]|(?<=6)[01234689]|(?<=7)[02578]|(?<=8)[0])|(?<=2)[012]((?<=0)[13456789]|(?<=1)[02]|(?<=2)[359])|(?<=3)[012345678]((?<=0)[12367]|(?<=1)[6]|(?<=2)[0123459]|(?<=3)[0123458]|(?<=4)[0169]|(?<=5)[1356]|(?<=6)[04589]|(?<=7)[023456789]|(?<=8)[458])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[0248]|(?<=2)[04569]|(?<=3)[12456789]|(?<=4)[05689]|(?<=5)[0123568]|(?<=6)[14689]|(?<=7)[0124579]|(?<=8)[1235678]|(?<=9)[23])|(?<=5)[0123456789]((?<=0)[156]|(?<=1)[012689]|(?<=2)[0567]|(?<=3)[026]|(?<=4)[0134567]|(?<=5)[0456]|(?<=6)[03456789]|(?<=7)[01245679]|(?<=8)[01234589]|(?<=9)[012346])|(?<=6)[0123456789]((?<=0)[1579]|(?<=1)[13457]|(?<=2)[0145678]|(?<=3)[014589]|(?<=4)[0234569]|(?<=5)[01345789]|(?<=6)[1245679]|(?<=7)[012368]|(?<=8)[012345679]|(?<=9)[012367])|(?<=7)[01234]((?<=0)[246789]|(?<=1)[024578]|(?<=2)[046789]|(?<=3)[023]|(?<=4)[1235])|(?<=8)[01234569]((?<=0)[1359]|(?<=1)[02679]|(?<=2)[146789]|(?<=3)[124568]|(?<=4)[012345789]|(?<=5)[136]|(?<=6)[0]|(?<=9)[9])|(?<=9)[01234]((?<=0)[245679]|(?<=1)[012568]|(?<=2)[012346789]|(?<=3)[24569]|(?<=4)[01345])))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24589]|(?<=1)[12346789]|(?<=2)[12458]|(?<=3)[0234589]|(?<=4)[0134567]|(?<=5)[24568]|(?<=6)[024678]|(?<=7)[0125689]|(?<=8)[023478]|(?<=9)[023467])|(?<=1)[012345678]((?<=0)[12345678]|(?<=1)[01345678]|(?<=2)[0124567]|(?<=3)[24579]|(?<=4)[1345789]|(?<=5)[237]|(?<=6)[158]|(?<=7)[01356789]|(?<=8)[02345789])|(?<=2)[0123456789]((?<=0)[456]|(?<=1)[345678]|(?<=2)[023489]|(?<=3)[03468]|(?<=4)[018]|(?<=5)[01236789]|(?<=6)[03589]|(?<=7)[234567]|(?<=8)[145689]|(?<=9)[01234567])|(?<=3)[0123456]((?<=0)[356789]|(?<=1)[0123456789]|(?<=2)[246789]|(?<=3)[1246789]|(?<=4)[0124569]|(?<=5)[04]|(?<=6)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123457]|(?<=2)[01356789]|(?<=3)[469]|(?<=4)[125689]|(?<=5)[012345678]|(?<=6)[0147]|(?<=7)[01347])|(?<=5)[0123456789]((?<=0)[1467]|(?<=1)[01236789]|(?<=2)[01235789]|(?<=3)[013456789]|(?<=4)[012356789]|(?<=5)[2345789]|(?<=6)[02345678]|(?<=7)[123567]|(?<=8)[12]|(?<=9)[78])|(?<=6)[012345678]((?<=0)[125679]|(?<=1)[9]|(?<=2)[012345789]|(?<=3)[013459]|(?<=4)[12368]|(?<=5)[056]|(?<=6)[023456789]|(?<=7)[378]|(?<=8)[03])|(?<=7)[012345]((?<=0)[1578]|(?<=1)[01]|(?<=2)[014568]|(?<=3)[01345689]|(?<=4)[01267]|(?<=5)[0123567])|(?<=8)[0123]((?<=0)[235789]|(?<=1)[02345678]|(?<=2)[012348]|(?<=3)[03])|(?<=9)[01]((?<=0)[145679]|(?<=1)[2]))|(?<=1)[023456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[12456789]|(?<=2)[012345789]|(?<=3)[0123456789]|(?<=4)[1245679]|(?<=5)[0124578]|(?<=6)[0123456789]|(?<=7)[01256789]|(?<=8)[12345789]|(?<=9)[01234678])|(?<=2)[012]((?<=0)[1467]|(?<=1)[01367]|(?<=2)[0])|(?<=3)[0123]((?<=0)[1235789]|(?<=1)[234568]|(?<=2)[012346789]|(?<=3)[13])|(?<=4)[012]((?<=0)[1456789]|(?<=1)[0159]|(?<=2)[1])|(?<=5)[01234569]((?<=0)[13]|(?<=1)[023689]|(?<=2)[023457]|(?<=3)[23579]|(?<=4)[23456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=9)[9])|(?<=6)[023459]((?<=0)[1256]|(?<=2)[02345679]|(?<=3)[012456789]|(?<=4)[1235789]|(?<=5)[0]|(?<=9)[89])|(?<=7)[0123456789]((?<=0)[14579]|(?<=1)[12469]|(?<=2)[0127]|(?<=3)[0358]|(?<=4)[3479]|(?<=5)[0367]|(?<=6)[3458]|(?<=7)[1234589]|(?<=8)[0134789]|(?<=9)[01234568])|(?<=8)[0123]((?<=0)[1345678]|(?<=1)[012456]|(?<=2)[012345679]|(?<=3)[01236])|(?<=9)[0]((?<=0)[1345679]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[389]|(?<=1)[13]|(?<=2)[456]|(?<=3)[348]|(?<=4)[0346]|(?<=5)[234589]|(?<=6)[01234568]|(?<=7)[1239]|(?<=8)[0123467]|(?<=9)[124567])|(?<=1)[0123456789]((?<=0)[2]|(?<=1)[0234789]|(?<=2)[4789]|(?<=3)[01234679]|(?<=4)[01578]|(?<=5)[79]|(?<=6)[23489]|(?<=7)[4679]|(?<=8)[01279]|(?<=9)[0235])|(?<=2)[01234567]((?<=0)[23456789]|(?<=1)[01246789]|(?<=2)[012345678]|(?<=3)[34]|(?<=4)[46]|(?<=5)[046789]|(?<=6)[6]|(?<=7)[7])|(?<=3)[01234569]((?<=0)[13456789]|(?<=1)[01237]|(?<=2)[0123478]|(?<=3)[0123467]|(?<=4)[034678]|(?<=5)[0125689]|(?<=6)[01]|(?<=9)[9])|(?<=4)[0123456]((?<=0)[1345789]|(?<=1)[03]|(?<=2)[01345678]|(?<=3)[01235789]|(?<=4)[02345689]|(?<=5)[569]|(?<=6)[0123456])|(?<=5)[012345678]((?<=0)[123456789]|(?<=1)[124]|(?<=2)[6]|(?<=3)[0134569]|(?<=4)[12478]|(?<=5)[0]|(?<=6)[13456789]|(?<=7)[01789]|(?<=8)[03])|(?<=6)[012345689]((?<=0)[1356789]|(?<=1)[0256789]|(?<=2)[12568]|(?<=3)[149]|(?<=4)[0138]|(?<=5)[368]|(?<=6)[46789]|(?<=8)[0136]|(?<=9)[23467])|(?<=7)[0123456789]((?<=0)[123789]|(?<=1)[234]|(?<=2)[03456]|(?<=3)[02568]|(?<=4)[46]|(?<=5)[01479]|(?<=6)[345678]|(?<=7)[135689]|(?<=8)[049]|(?<=9)[268])|(?<=8)[01239]((?<=0)[13456789]|(?<=1)[01246789]|(?<=2)[012456789]|(?<=3)[01235679]|(?<=9)[9])|(?<=9)[0234567]((?<=0)[1345789]|(?<=2)[02567]|(?<=3)[1457]|(?<=4)[089]|(?<=5)[0123589]|(?<=6)[023678]|(?<=7)[06]))|(?<=3)[013456789]((?<=0)[01234567]((?<=0)[149]|(?<=1)[02345689]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[023]|(?<=5)[01456]|(?<=6)[023456789]|(?<=7)[0136])|(?<=1)[023456789]((?<=0)[19]|(?<=2)[256789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[045678]|(?<=6)[01256789]|(?<=7)[023456789]|(?<=8)[012345679]|(?<=9)[0346])|(?<=3)[012358]((?<=0)[145689]|(?<=1)[12345679]|(?<=2)[12345678]|(?<=3)[0124]|(?<=5)[1]|(?<=8)[8])|(?<=4)[0123456789]((?<=0)[13456789]|(?<=1)[01234578]|(?<=2)[68]|(?<=3)[012345678]|(?<=4)[0124569]|(?<=5)[58]|(?<=6)[012379]|(?<=7)[0123678]|(?<=8)[03467]|(?<=9)[368])|(?<=5)[0123456789]((?<=0)[3]|(?<=1)[0134]|(?<=2)[1357]|(?<=3)[048]|(?<=4)[012345789]|(?<=5)[0689]|(?<=6)[35679]|(?<=7)[0234689]|(?<=8)[45]|(?<=9)[24678])|(?<=6)[01234]((?<=0)[2345679]|(?<=1)[0123456789]|(?<=2)[014569]|(?<=3)[457]|(?<=4)[7])|(?<=7)[0145678]((?<=0)[123456789]|(?<=1)[0123456]|(?<=4)[4]|(?<=5)[569]|(?<=6)[0123457]|(?<=7)[01234678]|(?<=8)[1256])|(?<=8)[0123456789]((?<=0)[1359]|(?<=1)[01235]|(?<=2)[357]|(?<=3)[045789]|(?<=4)[0134789]|(?<=5)[0123456789]|(?<=6)[0578]|(?<=7)[023567]|(?<=8)[014]|(?<=9)[0678])|(?<=9)[0123456789]((?<=0)[1345789]|(?<=1)[234679]|(?<=2)[01248]|(?<=3)[0156]|(?<=4)[4678]|(?<=5)[0234567]|(?<=6)[0567]|(?<=7)[12346]|(?<=8)[0123]|(?<=9)[013]))|(?<=4)[124679]((?<=1)[01234]((?<=0)[1234589]|(?<=1)[0234679]|(?<=2)[0]|(?<=3)[45789]|(?<=4)[0125])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[0125679]|(?<=2)[123489]|(?<=3)[123456789]|(?<=4)[0123]|(?<=5)[01]|(?<=6)[6789]|(?<=7)[5]|(?<=8)[56789]|(?<=9)[123])|(?<=4)[23456789]((?<=2)[089]|(?<=3)[12346]|(?<=4)[25689]|(?<=5)[023]|(?<=6)[15]|(?<=7)[01234569]|(?<=8)[012478]|(?<=9)[18])|(?<=6)[01356789]((?<=0)[1246789]|(?<=1)[034]|(?<=3)[789]|(?<=5)[2345]|(?<=6)[1789]|(?<=7)[79]|(?<=8)[134589]|(?<=9)[0158])|(?<=7)[0123456789]((?<=0)[5]|(?<=1)[145]|(?<=2)[9]|(?<=3)[14679]|(?<=4)[134678]|(?<=5)[3689]|(?<=6)[0129]|(?<=7)[123]|(?<=8)[5678]|(?<=9)[7])|(?<=9)[45789]((?<=4)[5679]|(?<=5)[012367]|(?<=7)[24]|(?<=8)[123467]|(?<=9)[0467]))|(?<=5)[012456789]((?<=0)[0123456789]((?<=0)[4567]|(?<=1)[03469]|(?<=2)[023]|(?<=3)[123456]|(?<=4)[0234569]|(?<=5)[1234578]|(?<=6)[012348]|(?<=7)[01234789]|(?<=8)[023579]|(?<=9)[14678])|(?<=1)[12345678]((?<=1)[12456789]|(?<=2)[0145678]|(?<=3)[01356]|(?<=4)[36789]|(?<=5)[01]|(?<=6)[0]|(?<=7)[1235689]|(?<=8)[0134568])|(?<=2)[012345]((?<=0)[3456789]|(?<=1)[012345678]|(?<=2)[1234689]|(?<=3)[345]|(?<=4)[2349]|(?<=5)[4])|(?<=4)[0456789]((?<=0)[1456]|(?<=4)[123467]|(?<=5)[236789]|(?<=6)[0123469]|(?<=7)[034567]|(?<=8)[017]|(?<=9)[01])|(?<=5)[0456789]((?<=0)[134]|(?<=4)[012345689]|(?<=5)[023459]|(?<=6)[345]|(?<=7)[0123456789]|(?<=8)[0124567]|(?<=9)[234])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[01345689]|(?<=2)[012]|(?<=3)[0234]|(?<=4)[0356789]|(?<=5)[01234]|(?<=6)[01]|(?<=7)[012347])|(?<=7)[34567]((?<=3)[9]|(?<=4)[01456789]|(?<=5)[012456789]|(?<=6)[01345689]|(?<=7)[123456])|(?<=8)[0129]((?<=0)[123568]|(?<=1)[016]|(?<=2)[4]|(?<=9)[6])|(?<=9)[056789]((?<=0)[134567]|(?<=5)[012346789]|(?<=6)[0123678]|(?<=7)[12345689]|(?<=8)[01346789]|(?<=9)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[35689]|(?<=1)[0367]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[01236789]|(?<=5)[12347]|(?<=6)[4679]|(?<=7)[1589]|(?<=8)[012389]|(?<=9)[123])|(?<=1)[013]((?<=0)[1456789]|(?<=1)[01234567]|(?<=3)[0])|(?<=2)[05678]((?<=0)[13567]|(?<=5)[01568]|(?<=6)[023456789]|(?<=7)[12346789]|(?<=8)[0])|(?<=3)[01234567]((?<=0)[135]|(?<=1)[012346789]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[03456]|(?<=5)[0123]|(?<=6)[02]|(?<=7)[013456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0156]|(?<=3)[2569]|(?<=4)[12456]|(?<=5)[13456]|(?<=6)[07]|(?<=7)[0134567]|(?<=8)[0123])|(?<=5)[012345678]((?<=0)[23579]|(?<=1)[1238]|(?<=2)[123456789]|(?<=3)[02589]|(?<=4)[012345789]|(?<=5)[0135689]|(?<=6)[0124789]|(?<=7)[1245689]|(?<=8)[0123457])|(?<=6)[015689]((?<=0)[23456789]|(?<=1)[01235789]|(?<=5)[2]|(?<=6)[3]|(?<=8)[8]|(?<=9)[35])|(?<=7)[023456789]((?<=0)[13]|(?<=2)[023678]|(?<=3)[268]|(?<=4)[012489]|(?<=5)[01234689]|(?<=6)[13456789]|(?<=7)[356]|(?<=8)[23456]|(?<=9)[023])|(?<=8)[034567]((?<=0)[14]|(?<=3)[02]|(?<=4)[9]|(?<=5)[01234568]|(?<=6)[01235679]|(?<=7)[014579])|(?<=9)[012]((?<=0)[1478]|(?<=1)[023569]|(?<=2)[125]))|(?<=7)[012346789]((?<=0)[123456789]((?<=1)[02345689]|(?<=2)[02356789]|(?<=3)[01234567]|(?<=4)[0236789]|(?<=5)[0125789]|(?<=6)[0124679]|(?<=7)[2345689]|(?<=8)[023567]|(?<=9)[015678])|(?<=1)[0123456789]((?<=0)[1]|(?<=1)[058]|(?<=2)[2789]|(?<=3)[024578]|(?<=4)[012345689]|(?<=5)[013]|(?<=6)[0567]|(?<=7)[124589]|(?<=8)[013456789]|(?<=9)[01])|(?<=2)[0123]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[018]|(?<=3)[28])|(?<=3)[0123456789]((?<=0)[12356789]|(?<=1)[01235678]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[0123578]|(?<=5)[012345679]|(?<=6)[01235679]|(?<=7)[0345679]|(?<=8)[013578]|(?<=9)[14678])|(?<=4)[0125]((?<=0)[23456789]|(?<=1)[012569]|(?<=2)[1]|(?<=5)[0])|(?<=6)[01245689]((?<=0)[14]|(?<=1)[45678]|(?<=2)[0]|(?<=4)[01235]|(?<=5)[06789]|(?<=6)[0345]|(?<=8)[0123678]|(?<=9)[0124])|(?<=7)[01234567]((?<=0)[1589]|(?<=1)[0134569]|(?<=2)[12345679]|(?<=3)[012378]|(?<=4)[2358]|(?<=5)[234567]|(?<=6)[0234569]|(?<=7)[012479])|(?<=8)[0123456789]((?<=0)[134679]|(?<=1)[013489]|(?<=2)[015689]|(?<=3)[0]|(?<=4)[01356789]|(?<=5)[12347]|(?<=6)[0123569]|(?<=7)[012346789]|(?<=8)[0125678]|(?<=9)[012])|(?<=9)[0123]((?<=0)[29]|(?<=1)[2456789]|(?<=2)[012349]|(?<=3)[1248]))|(?<=8)[0123456789]((?<=0)[012345678]((?<=0)[124678]|(?<=1)[1256789]|(?<=2)[13489]|(?<=3)[04679]|(?<=4)[0124679]|(?<=5)[0234789]|(?<=6)[0136789]|(?<=7)[05679]|(?<=8)[0])|(?<=1)[012345]((?<=0)[3456789]|(?<=1)[123456789]|(?<=2)[025678]|(?<=3)[1234589]|(?<=4)[1]|(?<=5)[2])|(?<=2)[023456]((?<=0)[1]|(?<=2)[0124569]|(?<=3)[0123567]|(?<=4)[012]|(?<=5)[13456789]|(?<=6)[01])|(?<=3)[0123456789]((?<=0)[15]|(?<=1)[0135678]|(?<=2)[016789]|(?<=3)[0234789]|(?<=4)[01234578]|(?<=5)[1256789]|(?<=6)[12356789]|(?<=7)[0124569]|(?<=8)[012789]|(?<=9)[012])|(?<=4)[0245678]((?<=0)[1]|(?<=2)[5]|(?<=4)[9]|(?<=5)[012345679]|(?<=6)[0123489]|(?<=7)[12345678]|(?<=8)[1235678])|(?<=5)[045678]((?<=0)[13456]|(?<=4)[12345789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[012345789]|(?<=8)[01235789])|(?<=6)[012345678]((?<=0)[136]|(?<=1)[014789]|(?<=2)[01235679]|(?<=3)[123579]|(?<=4)[1234567]|(?<=5)[0124589]|(?<=6)[134568]|(?<=7)[0123467]|(?<=8)[035])|(?<=7)[02345678]((?<=0)[13]|(?<=2)[012356]|(?<=3)[0123678]|(?<=4)[04568]|(?<=5)[13469]|(?<=6)[01245789]|(?<=7)[123468]|(?<=8)[1])|(?<=8)[0234567]((?<=0)[14]|(?<=2)[146789]|(?<=3)[3489]|(?<=4)[1346789]|(?<=5)[01256789]|(?<=6)[02345689]|(?<=7)[013689])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[34567]|(?<=2)[012345789]|(?<=3)[0]|(?<=4)[01346789]|(?<=5)[012347]|(?<=6)[1234567]))|(?<=9)[012345678]((?<=0)[3456789]((?<=3)[89]|(?<=4)[0124567]|(?<=5)[146789]|(?<=6)[123679]|(?<=7)[13489]|(?<=8)[2368]|(?<=9)[024567])|(?<=1)[012456789]((?<=0)[8]|(?<=1)[01345679]|(?<=2)[0]|(?<=4)[045689]|(?<=5)[0234679]|(?<=6)[026789]|(?<=7)[0345679]|(?<=8)[039]|(?<=9)[1234])|(?<=2)[01367]((?<=0)[1234689]|(?<=1)[0123678]|(?<=3)[2]|(?<=6)[9]|(?<=7)[2])|(?<=3)[023456]((?<=0)[1579]|(?<=2)[02345678]|(?<=3)[0256789]|(?<=4)[125678]|(?<=5)[0245689]|(?<=6)[01234567])|(?<=4)[02345678]((?<=0)[126]|(?<=2)[12356789]|(?<=3)[79]|(?<=4)[03]|(?<=5)[12569]|(?<=6)[12456]|(?<=7)[0456789]|(?<=8)[0123])|(?<=5)[023456789]((?<=0)[137]|(?<=2)[059]|(?<=3)[0124]|(?<=4)[0]|(?<=5)[36]|(?<=6)[0123457]|(?<=7)[123467]|(?<=8)[1]|(?<=9)[5])|(?<=6)[023456]((?<=0)[1]|(?<=2)[9]|(?<=3)[01358]|(?<=4)[13578]|(?<=5)[23467]|(?<=6)[123456789])|(?<=7)[034567]((?<=0)[125]|(?<=3)[05679]|(?<=4)[0134567]|(?<=5)[0123569]|(?<=6)[2679]|(?<=7)[1236])|(?<=8)[123456789]((?<=1)[3579]|(?<=2)[345678]|(?<=3)[2467]|(?<=4)[01256]|(?<=5)[149]|(?<=6)[1267]|(?<=7)[07]|(?<=8)[56]|(?<=9)[7])))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[01234567]((?<=0)[346789]|(?<=1)[012349]|(?<=2)[02356]|(?<=3)[1367]|(?<=4)[015679]|(?<=5)[01256789]|(?<=6)[01235789]|(?<=7)[015678])|(?<=1)[0124567]((?<=0)[4789]|(?<=1)[015789]|(?<=2)[1]|(?<=4)[023456]|(?<=5)[0257]|(?<=6)[0125]|(?<=7)[015678])|(?<=2)[012345789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012389]|(?<=3)[1]|(?<=4)[1235]|(?<=5)[8]|(?<=7)[2]|(?<=8)[0]|(?<=9)[19])|(?<=3)[123456789]((?<=1)[01236]|(?<=2)[248]|(?<=3)[04679]|(?<=4)[2678]|(?<=5)[01356789]|(?<=6)[013]|(?<=7)[012469]|(?<=8)[0357]|(?<=9)[01])|(?<=4)[012345678]((?<=0)[2349]|(?<=1)[9]|(?<=2)[2]|(?<=3)[47]|(?<=4)[024578]|(?<=5)[6]|(?<=6)[0148]|(?<=7)[25]|(?<=8)[1469])|(?<=5)[0123]((?<=0)[2345789]|(?<=1)[0134567]|(?<=2)[6]|(?<=3)[6])|(?<=6)[0]((?<=0)[1])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[9]|(?<=3)[47]|(?<=4)[014]|(?<=5)[9]|(?<=6)[39]|(?<=7)[1])|(?<=8)[01234567]((?<=0)[13678]|(?<=1)[035689]|(?<=2)[0346789]|(?<=3)[01]|(?<=4)[034579]|(?<=5)[4568]|(?<=6)[2358]|(?<=7)[034])|(?<=9)[0123456789]((?<=0)[236]|(?<=1)[345]|(?<=2)[137]|(?<=3)[59]|(?<=4)[01369]|(?<=5)[38]|(?<=6)[245]|(?<=7)[279]|(?<=8)[1238]|(?<=9)[57]))|(?<=1)[012345678]((?<=0)[013456789]((?<=0)[12345678]|(?<=1)[0145678]|(?<=3)[013459]|(?<=4)[012345689]|(?<=5)[12569]|(?<=6)[34]|(?<=7)[13456]|(?<=8)[0356]|(?<=9)[1234578])|(?<=1)[02345678]((?<=0)[12]|(?<=2)[149]|(?<=3)[259]|(?<=4)[123469]|(?<=5)[9]|(?<=6)[4689]|(?<=7)[1459]|(?<=8)[0139])|(?<=2)[01234567]((?<=0)[134]|(?<=1)[469]|(?<=2)[246]|(?<=3)[01248]|(?<=4)[0]|(?<=5)[04567]|(?<=6)[0234578]|(?<=7)[14])|(?<=3)[01345689]((?<=0)[1]|(?<=1)[0147]|(?<=3)[29]|(?<=4)[8]|(?<=5)[12]|(?<=6)[04567]|(?<=8)[56]|(?<=9)[07])|(?<=4)[0267]((?<=0)[8]|(?<=2)[15]|(?<=6)[45]|(?<=7)[2])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[23479]|(?<=2)[24678]|(?<=3)[145789]|(?<=4)[03478]|(?<=5)[345789]|(?<=6)[0234678]|(?<=7)[12])|(?<=6)[0123456]((?<=0)[1234567]|(?<=1)[2569]|(?<=2)[12]|(?<=3)[01256]|(?<=4)[023579]|(?<=5)[01359]|(?<=6)[03679])|(?<=7)[01234567]((?<=0)[1]|(?<=1)[2349]|(?<=2)[123579]|(?<=3)[159]|(?<=4)[0569]|(?<=5)[149]|(?<=6)[02346]|(?<=7)[2345678])|(?<=8)[0123456]((?<=0)[4]|(?<=1)[02579]|(?<=2)[124568]|(?<=3)[123456789]|(?<=4)[0345789]|(?<=5)[589]|(?<=6)[12]))|(?<=2)[01234567]((?<=0)[02345678]((?<=0)[13]|(?<=2)[012345789]|(?<=3)[1256789]|(?<=4)[0145789]|(?<=5)[0134568]|(?<=6)[01469]|(?<=7)[1689]|(?<=8)[1235678])|(?<=1)[0234567]((?<=0)[134]|(?<=2)[023479]|(?<=3)[0134]|(?<=4)[01]|(?<=5)[134679]|(?<=6)[03467]|(?<=7)[01])|(?<=2)[012345678]((?<=0)[2467]|(?<=1)[01457]|(?<=2)[03]|(?<=3)[246]|(?<=4)[0]|(?<=5)[2469]|(?<=6)[1256]|(?<=7)[3456]|(?<=8)[056])|(?<=3)[0234567]((?<=0)[13]|(?<=2)[012345678]|(?<=3)[023789]|(?<=4)[345789]|(?<=5)[012456]|(?<=6)[16789]|(?<=7)[012468])|(?<=4)[0123456]((?<=0)[4689]|(?<=1)[013]|(?<=2)[0]|(?<=3)[167]|(?<=4)[01245]|(?<=5)[01235689]|(?<=6)[1234])|(?<=5)[0123456]((?<=0)[13]|(?<=1)[689]|(?<=2)[8]|(?<=3)[39]|(?<=4)[14]|(?<=5)[3]|(?<=6)[567])|(?<=6)[02345]((?<=0)[23]|(?<=2)[9]|(?<=3)[13458]|(?<=4)[279]|(?<=5)[3])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[235678]|(?<=2)[124689]|(?<=3)[23]|(?<=4)[0123689]|(?<=5)[34789]|(?<=6)[245]|(?<=7)[6]|(?<=8)[248]))|(?<=3)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[12356789]|(?<=3)[0123567]|(?<=4)[04567]|(?<=5)[0456]|(?<=6)[01245678]|(?<=7)[0124678]|(?<=8)[01245])|(?<=1)[0123456]((?<=0)[1235679]|(?<=1)[01235679]|(?<=2)[35678]|(?<=3)[05678]|(?<=4)[023456789]|(?<=5)[012345678]|(?<=6)[024])|(?<=2)[01234]((?<=0)[12345679]|(?<=1)[012345789]|(?<=2)[01234789]|(?<=3)[0125]|(?<=4)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01456789]|(?<=2)[0123456]|(?<=3)[01234678]|(?<=4)[012345678]|(?<=5)[016789]|(?<=6)[0])|(?<=4)[0123456]((?<=0)[23678]|(?<=1)[02346]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[0235679]|(?<=5)[012678]|(?<=6)[023456789])|(?<=5)[01234567]((?<=0)[12456]|(?<=1)[01256789]|(?<=2)[0123456789]|(?<=3)[01234567]|(?<=4)[01235789]|(?<=5)[1345678]|(?<=6)[05679]|(?<=7)[01])|(?<=6)[012]((?<=0)[456789]|(?<=1)[012345679]|(?<=2)[03])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[136789]|(?<=2)[01234578]|(?<=3)[012345689]|(?<=4)[06789]|(?<=5)[045689]|(?<=6)[0124678]|(?<=7)[123789]|(?<=8)[023678]|(?<=9)[13])|(?<=8)[01234]((?<=0)[245]|(?<=1)[12]|(?<=2)[124]|(?<=3)[0267]|(?<=4)[02345])|(?<=9)[012345678]((?<=0)[12356789]|(?<=1)[023457]|(?<=2)[0568]|(?<=3)[01234589]|(?<=4)[02345678]|(?<=5)[0123]|(?<=6)[123478]|(?<=7)[123467]|(?<=8)[13568]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[134]|(?<=1)[0127]|(?<=2)[123468]|(?<=3)[0259]|(?<=4)[01456789]|(?<=5)[0234567]|(?<=6)[024578]|(?<=7)[02467]|(?<=8)[01245679]|(?<=9)[023459])|(?<=1)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345679])|(?<=2)[012345678]((?<=0)[123]|(?<=1)[24567]|(?<=2)[134]|(?<=3)[0123456]|(?<=4)[013]|(?<=5)[013456]|(?<=6)[0246]|(?<=7)[0234568]|(?<=8)[015678])|(?<=3)[0123]((?<=0)[12345678]|(?<=1)[012349]|(?<=2)[015]|(?<=3)[3])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[0123578]|(?<=2)[0345789]|(?<=3)[0126789]|(?<=4)[01234569]|(?<=5)[01245]|(?<=6)[0]|(?<=7)[013]|(?<=8)[1345]|(?<=9)[013])|(?<=5)[015]((?<=0)[2345679]|(?<=1)[01245]|(?<=5)[5])|(?<=6)[0123456789]((?<=0)[16789]|(?<=1)[01234589]|(?<=2)[012456789]|(?<=3)[0234789]|(?<=4)[0134567]|(?<=5)[1234679]|(?<=6)[01235679]|(?<=7)[0125678]|(?<=8)[01235789]|(?<=9)[013579])|(?<=7)[0123]((?<=0)[23456789]|(?<=1)[048]|(?<=2)[01]|(?<=3)[0])|(?<=8)[0123456789]((?<=0)[24579]|(?<=1)[134578]|(?<=2)[0245678]|(?<=3)[036789]|(?<=4)[01234679]|(?<=5)[01345679]|(?<=6)[14567]|(?<=7)[0458]|(?<=8)[012379]|(?<=9)[0])|(?<=9)[0]((?<=0)[1234567]))|(?<=5)[012345678]((?<=0)[0134567]((?<=0)[1235]|(?<=1)[1345]|(?<=3)[023469]|(?<=4)[0124]|(?<=5)[0123456]|(?<=6)[2456789]|(?<=7)[0])|(?<=1)[01234567]((?<=0)[123567]|(?<=1)[123589]|(?<=2)[0123]|(?<=3)[01235]|(?<=4)[024678]|(?<=5)[023456789]|(?<=6)[0246789]|(?<=7)[12467])|(?<=2)[0123456]((?<=0)[23456789]|(?<=1)[123456789]|(?<=2)[0345679]|(?<=3)[01236789]|(?<=4)[0123456789]|(?<=5)[125]|(?<=6)[7])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[012456789]|(?<=5)[01234689]|(?<=6)[0123589]|(?<=7)[012378]|(?<=8)[012345789]|(?<=9)[0])|(?<=4)[0123456]((?<=0)[234569]|(?<=1)[045679]|(?<=2)[034689]|(?<=3)[0123459]|(?<=4)[09]|(?<=5)[89]|(?<=6)[9])|(?<=5)[0]((?<=0)[123456])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0123489]|(?<=3)[01468]|(?<=4)[0245678]|(?<=5)[012346789]|(?<=6)[01239]|(?<=7)[1234789]|(?<=8)[0124568]|(?<=9)[023456789])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[014569]|(?<=2)[013479]|(?<=3)[2459]|(?<=4)[0123456]|(?<=5)[0]|(?<=6)[0146789]|(?<=7)[01235689]|(?<=8)[0234689])|(?<=8)[0123456789]((?<=0)[1456789]|(?<=1)[02345679]|(?<=2)[012678]|(?<=3)[0123568]|(?<=4)[01345689]|(?<=5)[01345689]|(?<=6)[0123456789]|(?<=7)[012345679]|(?<=8)[0123456789]|(?<=9)[013456789]))|(?<=6)[0123456789]((?<=0)[0134567]((?<=0)[1]|(?<=1)[12367]|(?<=3)[0123456789]|(?<=4)[0145789]|(?<=5)[0125678]|(?<=6)[0234589]|(?<=7)[0124567])|(?<=1)[012345678]((?<=0)[234567]|(?<=1)[0123578]|(?<=2)[012345678]|(?<=3)[0135]|(?<=4)[02346789]|(?<=5)[0145678]|(?<=6)[012345678]|(?<=7)[012356]|(?<=8)[012346])|(?<=2)[0123456789]((?<=0)[1234568]|(?<=1)[46789]|(?<=2)[012456789]|(?<=3)[145679]|(?<=4)[01]|(?<=5)[0469]|(?<=6)[08]|(?<=7)[8]|(?<=8)[0]|(?<=9)[0])|(?<=3)[012456789]((?<=0)[12347]|(?<=1)[0129]|(?<=2)[012347]|(?<=4)[01256789]|(?<=5)[06]|(?<=6)[0568]|(?<=7)[1345679]|(?<=8)[1235]|(?<=9)[01234])|(?<=4)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=5)[0123456789]((?<=0)[124678]|(?<=1)[013467]|(?<=2)[468]|(?<=3)[01246789]|(?<=4)[02345]|(?<=5)[023456]|(?<=6)[12357]|(?<=7)[01234]|(?<=8)[02]|(?<=9)[05])|(?<=6)[0123]((?<=0)[1]|(?<=1)[345679]|(?<=2)[48]|(?<=3)[57])|(?<=7)[0123456789]((?<=0)[123456]|(?<=1)[014]|(?<=2)[135]|(?<=3)[012378]|(?<=4)[01235678]|(?<=5)[059]|(?<=6)[0134567]|(?<=7)[012346789]|(?<=8)[13456789]|(?<=9)[123456789])|(?<=8)[01234]((?<=0)[23456789]|(?<=1)[45689]|(?<=2)[5]|(?<=3)[5]|(?<=4)[5])|(?<=9)[0123456789]((?<=0)[12]|(?<=1)[0134579]|(?<=2)[023689]|(?<=3)[01236789]|(?<=4)[013567]|(?<=5)[0123789]|(?<=6)[012578]|(?<=7)[014589]|(?<=8)[02456789]|(?<=9)[012468]))|(?<=7)[0123456789]((?<=0)[012346]((?<=0)[136]|(?<=1)[012678]|(?<=2)[012345]|(?<=3)[012345678]|(?<=4)[0123]|(?<=6)[0])|(?<=1)[01234567]((?<=0)[2468]|(?<=1)[012456789]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[012357]|(?<=5)[0]|(?<=6)[01234567]|(?<=7)[02457])|(?<=2)[02345678]((?<=0)[13]|(?<=2)[0345679]|(?<=3)[012456]|(?<=4)[03467]|(?<=5)[0]|(?<=6)[0345]|(?<=7)[0234]|(?<=8)[0123])|(?<=3)[023456789]((?<=0)[23456]|(?<=2)[04567]|(?<=3)[01456789]|(?<=4)[0124568]|(?<=5)[123456789]|(?<=6)[0126789]|(?<=7)[0134]|(?<=8)[012345678]|(?<=9)[02346])|(?<=4)[0234567]((?<=0)[134568]|(?<=2)[01479]|(?<=3)[12345678]|(?<=4)[135689]|(?<=5)[123456789]|(?<=6)[0245789]|(?<=7)[01])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[234569]|(?<=2)[012345789]|(?<=3)[1257]|(?<=4)[126]|(?<=5)[012378]|(?<=6)[12478]|(?<=7)[3456789]|(?<=8)[014568]|(?<=9)[01678])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[0123569]|(?<=2)[0]|(?<=3)[01345789]|(?<=4)[089]|(?<=5)[4]|(?<=6)[056]|(?<=7)[0]|(?<=8)[3])|(?<=7)[012]((?<=0)[8]|(?<=1)[012345]|(?<=2)[05])|(?<=8)[0345678]((?<=0)[234579]|(?<=3)[1234678]|(?<=4)[01256789]|(?<=5)[01345789]|(?<=6)[01235689]|(?<=7)[0124569]|(?<=8)[01245])|(?<=9)[0123456789]((?<=0)[145679]|(?<=1)[678]|(?<=2)[012345689]|(?<=3)[023]|(?<=4)[01234689]|(?<=5)[01245789]|(?<=6)[03456789]|(?<=7)[014578]|(?<=8)[0123679]|(?<=9)[0123457]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123569]|(?<=1)[457]|(?<=2)[1235678]|(?<=3)[02345689]|(?<=4)[012345789]|(?<=5)[0149]|(?<=6)[02345679]|(?<=7)[01234569]|(?<=8)[01234589]|(?<=9)[12345678])|(?<=1)[0123456789]((?<=0)[134589]|(?<=1)[14678]|(?<=2)[0245678]|(?<=3)[01345789]|(?<=4)[013456]|(?<=5)[024789]|(?<=6)[012456789]|(?<=7)[0346789]|(?<=8)[023456789]|(?<=9)[0123578])|(?<=2)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[013456789]|(?<=3)[03456789]|(?<=4)[023])|(?<=3)[0123456789]((?<=0)[124679]|(?<=1)[0234567]|(?<=2)[02346789]|(?<=3)[1456]|(?<=4)[01268]|(?<=5)[03679]|(?<=6)[0237]|(?<=7)[01457]|(?<=8)[01236]|(?<=9)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[0124569]|(?<=5)[01345678]|(?<=6)[0123456789]|(?<=7)[012356])|(?<=5)[0123]((?<=0)[2345679]|(?<=1)[9]|(?<=2)[9]|(?<=3)[2])|(?<=6)[0123456]((?<=0)[123479]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[0279]|(?<=5)[0123456789]|(?<=6)[12])|(?<=7)[01234567]((?<=0)[13568]|(?<=1)[0]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0123456789]|(?<=5)[045679]|(?<=6)[01235678]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[16789]|(?<=1)[1356789]|(?<=2)[01234579]|(?<=3)[1245678]|(?<=4)[012356789]|(?<=5)[0123456789]|(?<=6)[0124567]|(?<=7)[0123456789]|(?<=8)[01345689]|(?<=9)[01234567])|(?<=9)[013]((?<=0)[6]|(?<=1)[01257]|(?<=3)[3]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1246789]|(?<=1)[0123457]|(?<=2)[1246789]|(?<=3)[01234678]|(?<=4)[0235678]|(?<=5)[01235678]|(?<=6)[01345678]|(?<=7)[012345689]|(?<=8)[02345789]|(?<=9)[0123456789])|(?<=1)[0123]((?<=0)[123467]|(?<=1)[1235679]|(?<=2)[056789]|(?<=3)[0])|(?<=2)[02345678]((?<=0)[123]|(?<=2)[014789]|(?<=3)[02345678]|(?<=4)[01256789]|(?<=5)[012345689]|(?<=6)[123456789]|(?<=7)[0124679]|(?<=8)[23456789])|(?<=3)[01234]((?<=0)[12345679]|(?<=1)[025689]|(?<=2)[012356789]|(?<=3)[012356789]|(?<=4)[0123456789])|(?<=4)[0123456]((?<=0)[12345689]|(?<=1)[0125789]|(?<=2)[0134568]|(?<=3)[014567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[014])|(?<=5)[01234]((?<=0)[3456789]|(?<=1)[29]|(?<=2)[5]|(?<=3)[4]|(?<=4)[468])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[012356789]|(?<=3)[0123456789]|(?<=4)[02345689]|(?<=5)[01345679]|(?<=6)[034578]|(?<=7)[045679]|(?<=8)[02345689]|(?<=9)[06])|(?<=7)[0123456789]((?<=0)[15679]|(?<=1)[02356789]|(?<=2)[012456789]|(?<=3)[03568]|(?<=4)[03456789]|(?<=5)[1235679]|(?<=6)[0245689]|(?<=7)[045679]|(?<=8)[012348]|(?<=9)[13569])|(?<=8)[0123456789]((?<=0)[125678]|(?<=1)[245678]|(?<=2)[0125679]|(?<=3)[13456789]|(?<=4)[01789]|(?<=5)[23458]|(?<=6)[123468]|(?<=7)[012346789]|(?<=8)[0134567]|(?<=9)[123456])|(?<=9)[01234567]((?<=0)[12358]|(?<=1)[012356789]|(?<=2)[012579]|(?<=3)[01458]|(?<=4)[25678]|(?<=5)[023589]|(?<=6)[01235789]|(?<=7)[01])))|(?<=5)[0123456789]((?<=0)[012345678]((?<=0)[01234567]((?<=0)[12356789]|(?<=1)[0234]|(?<=2)[012356789]|(?<=3)[12345689]|(?<=4)[01246789]|(?<=5)[01245678]|(?<=6)[0123456789]|(?<=7)[01234568])|(?<=1)[01234567]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0134])|(?<=2)[01234567]((?<=0)[1678]|(?<=1)[012346789]|(?<=2)[02356789]|(?<=3)[0123456789]|(?<=4)[012346789]|(?<=5)[01245678]|(?<=6)[12345689]|(?<=7)[12345678])|(?<=3)[012]((?<=0)[9]|(?<=1)[012345679]|(?<=2)[0123457])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0134678]|(?<=3)[012345689]|(?<=4)[0146789]|(?<=5)[0123456789]|(?<=6)[01456789]|(?<=7)[012356789]|(?<=8)[0234])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[01235689]|(?<=4)[01234568]|(?<=5)[1246789]|(?<=6)[012356789]|(?<=7)[013456789]|(?<=8)[123568]|(?<=9)[012345789])|(?<=6)[012345678]((?<=0)[123456789]|(?<=1)[12369]|(?<=2)[0123456789]|(?<=3)[01234568]|(?<=4)[12345789]|(?<=5)[012345789]|(?<=6)[02456789]|(?<=7)[01234567]|(?<=8)[012])|(?<=7)[0]((?<=0)[1237])|(?<=8)[03456]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[012356789]|(?<=5)[134789]|(?<=6)[01234]))|(?<=1)[0123456]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01245689]|(?<=2)[023456789]|(?<=3)[013456789]|(?<=4)[01456789]|(?<=5)[01234568]|(?<=6)[0123])|(?<=1)[01]((?<=0)[1345689]|(?<=1)[1])|(?<=2)[0345]((?<=0)[1]|(?<=3)[01245789]|(?<=4)[0123456789]|(?<=5)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1348]|(?<=4)[0123567]|(?<=5)[014578]|(?<=6)[03456])|(?<=4)[03456]((?<=0)[1]|(?<=3)[012369]|(?<=4)[0123456789]|(?<=5)[01234589]|(?<=6)[0123567])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[0]|(?<=2)[01356789]|(?<=3)[01234567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012356789])|(?<=6)[0345]((?<=0)[1]|(?<=3)[0126789]|(?<=4)[056789]|(?<=5)[012346]))|(?<=2)[012345678]((?<=0)[034567]((?<=0)[123]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[023467]|(?<=6)[045689]|(?<=7)[0123456789])|(?<=1)[034567]((?<=0)[1]|(?<=3)[23456]|(?<=4)[012467]|(?<=5)[1456789]|(?<=6)[012345689]|(?<=7)[0125])|(?<=2)[012345]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[123567]|(?<=4)[01256789]|(?<=5)[123457])|(?<=3)[0123456]((?<=0)[1256789]|(?<=1)[02345678]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[012456789]|(?<=5)[12345689]|(?<=6)[12])|(?<=4)[01]((?<=0)[12345]|(?<=1)[1])|(?<=5)[03456789]((?<=0)[1]|(?<=3)[0134567]|(?<=4)[023489]|(?<=5)[01234567]|(?<=6)[012356789]|(?<=7)[0123467]|(?<=8)[0134568]|(?<=9)[01345])|(?<=6)[0123456]((?<=0)[1]|(?<=1)[9]|(?<=2)[0134567]|(?<=3)[0125789]|(?<=4)[0145679]|(?<=5)[0123456789]|(?<=6)[0])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0126789]|(?<=3)[012789]|(?<=4)[256789]|(?<=5)[0123456789]|(?<=6)[0156789]|(?<=7)[1234678])|(?<=8)[0]((?<=0)[123467]))|(?<=3)[01245789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[0123456789]|(?<=2)[0123479]|(?<=3)[123456789]|(?<=4)[02456789]|(?<=5)[01789]|(?<=6)[13569]|(?<=7)[02345689]|(?<=8)[0135689]|(?<=9)[012345789])|(?<=1)[0123456789]((?<=0)[3458]|(?<=1)[04589]|(?<=2)[01256789]|(?<=3)[0279]|(?<=4)[0234679]|(?<=5)[0134678]|(?<=6)[78]|(?<=7)[026789]|(?<=8)[12345689]|(?<=9)[0125])|(?<=2)[01239]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[35]|(?<=9)[5])|(?<=4)[0]((?<=0)[23456])|(?<=5)[0123456789]((?<=0)[12345678]|(?<=1)[015678]|(?<=2)[012356789]|(?<=3)[01234678]|(?<=4)[01345689]|(?<=5)[013456789]|(?<=6)[0123569]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[034789])|(?<=7)[0129]((?<=0)[3456]|(?<=1)[13456789]|(?<=2)[6]|(?<=9)[2])|(?<=8)[012]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[01567])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[01369]|(?<=2)[02345689]|(?<=3)[012345679]|(?<=4)[012346789]|(?<=5)[01234569]|(?<=6)[01234589]))|(?<=4)[0123456789]((?<=0)[0128]((?<=0)[12345679]|(?<=1)[134567]|(?<=2)[012345678]|(?<=8)[2])|(?<=1)[012345678]((?<=0)[123467]|(?<=1)[0123459]|(?<=2)[013456789]|(?<=3)[056789]|(?<=4)[0139]|(?<=5)[012345679]|(?<=6)[012569]|(?<=7)[013457]|(?<=8)[0])|(?<=2)[01234]((?<=0)[1245789]|(?<=1)[01234567]|(?<=2)[0789]|(?<=3)[0245]|(?<=4)[1567])|(?<=3)[01]((?<=0)[12347]|(?<=1)[13])|(?<=4)[0123456789]((?<=0)[1356789]|(?<=1)[01234678]|(?<=2)[012345678]|(?<=3)[03567]|(?<=4)[01236789]|(?<=5)[012456789]|(?<=6)[02345679]|(?<=7)[0134569]|(?<=8)[012456789]|(?<=9)[0134589])|(?<=5)[0123456]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[0145679]|(?<=3)[0146789]|(?<=4)[0125678]|(?<=5)[02456789]|(?<=6)[01234568])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[012345689]|(?<=2)[123456789]|(?<=3)[012456789]|(?<=4)[234568]|(?<=5)[0123456789]|(?<=6)[0145679]|(?<=7)[0])|(?<=7)[0234567]((?<=0)[13]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[01256789]|(?<=5)[01456789]|(?<=6)[01236789]|(?<=7)[0123])|(?<=8)[0123456789]((?<=0)[156]|(?<=1)[023479]|(?<=2)[01246789]|(?<=3)[0256789]|(?<=4)[0123456789]|(?<=5)[03456789]|(?<=6)[124578]|(?<=7)[0123456]|(?<=8)[089]|(?<=9)[1356])|(?<=9)[012345678]((?<=0)[1249]|(?<=1)[1345]|(?<=2)[1236789]|(?<=3)[012357]|(?<=4)[0123456789]|(?<=5)[026]|(?<=6)[012345678]|(?<=7)[014789]|(?<=8)[0123456]))|(?<=5)[01346789]((?<=0)[0123456789]((?<=0)[1356789]|(?<=1)[12346789]|(?<=2)[0145679]|(?<=3)[0123678]|(?<=4)[012345679]|(?<=5)[1234567]|(?<=6)[035689]|(?<=7)[012345679]|(?<=8)[0245789]|(?<=9)[02])|(?<=1)[01235]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0]|(?<=5)[05])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[01245789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[023456789]|(?<=6)[02346789]|(?<=7)[012345689]|(?<=8)[12456789]|(?<=9)[015678])|(?<=4)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[123456789]|(?<=5)[045])|(?<=6)[01]((?<=0)[12345679]|(?<=1)[23456])|(?<=7)[0123456789]((?<=0)[23456789]|(?<=1)[01236789]|(?<=2)[0123456]|(?<=3)[1234568]|(?<=4)[124689]|(?<=5)[0123678]|(?<=6)[0345789]|(?<=7)[1259]|(?<=8)[01234567]|(?<=9)[0235678])|(?<=8)[01]((?<=0)[2345678]|(?<=1)[0124])|(?<=9)[0123456789]((?<=0)[1234569]|(?<=1)[02789]|(?<=2)[012345679]|(?<=3)[1234569]|(?<=4)[01345679]|(?<=5)[012345679]|(?<=6)[012345789]|(?<=7)[012345679]|(?<=8)[12357]|(?<=9)[012]))|(?<=6)[01234567]((?<=0)[0123456789]((?<=0)[1379]|(?<=1)[0134679]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[1234568]|(?<=5)[01245678]|(?<=6)[023589]|(?<=7)[123458]|(?<=8)[01235789]|(?<=9)[013678])|(?<=1)[012345678]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[01235789]|(?<=3)[1246789]|(?<=4)[012345679]|(?<=5)[012356789]|(?<=6)[012456789]|(?<=7)[01234568]|(?<=8)[013567])|(?<=2)[0123456789]((?<=0)[1789]|(?<=1)[01245689]|(?<=2)[0123456789]|(?<=3)[0125679]|(?<=4)[0134589]|(?<=5)[1235678]|(?<=6)[0234567]|(?<=7)[01346789]|(?<=8)[012345789]|(?<=9)[1234567])|(?<=3)[012345678]((?<=0)[134789]|(?<=1)[012345689]|(?<=2)[013456789]|(?<=3)[01245689]|(?<=4)[023579]|(?<=5)[023456789]|(?<=6)[01234789]|(?<=7)[13456789]|(?<=8)[1245679])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[5]|(?<=3)[134578]|(?<=4)[012346789]|(?<=5)[02358]|(?<=6)[1456789]|(?<=7)[0234579]|(?<=8)[124])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[134567]|(?<=4)[0123456789]|(?<=5)[0123467]|(?<=6)[02356789]|(?<=7)[012345689]|(?<=8)[013456789]|(?<=9)[0124])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[136789]|(?<=3)[034679]|(?<=4)[14679]|(?<=5)[012345789]|(?<=6)[01236789]|(?<=7)[012368]|(?<=8)[0134568])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[013456]|(?<=2)[0123456789]|(?<=3)[12345678]|(?<=4)[248]|(?<=5)[01456789]|(?<=6)[0123]))|(?<=7)[01234567]((?<=0)[01234567]((?<=0)[1234567]|(?<=1)[02345678]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[012356789]|(?<=5)[012345789]|(?<=6)[123456789]|(?<=7)[01235678])|(?<=1)[019]((?<=0)[345678]|(?<=1)[07]|(?<=9)[7])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0134567]|(?<=3)[123456789]|(?<=4)[12356789]|(?<=5)[1256789]|(?<=6)[012345689]|(?<=7)[01234689])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[1234589]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[0345689]|(?<=6)[123456789]|(?<=7)[0134569]|(?<=8)[0123456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[01246789]|(?<=3)[023456789]|(?<=4)[0125689]|(?<=5)[0124567]|(?<=6)[0156789]|(?<=7)[012345679]|(?<=8)[1])|(?<=5)[02345678]((?<=0)[1]|(?<=2)[012389]|(?<=3)[1234678]|(?<=4)[013478]|(?<=5)[12359]|(?<=6)[02346789]|(?<=7)[0124679]|(?<=8)[045])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012356]|(?<=3)[01234689]|(?<=4)[01245689]|(?<=5)[0126789]|(?<=6)[01])|(?<=7)[0123456789]((?<=0)[1236]|(?<=1)[46789]|(?<=2)[0245]|(?<=3)[02578]|(?<=4)[14578]|(?<=5)[01245689]|(?<=6)[01234679]|(?<=7)[023569]|(?<=8)[023578]|(?<=9)[012349]))|(?<=8)[012345678]((?<=0)[012345678]((?<=0)[12456789]|(?<=1)[1235678]|(?<=2)[179]|(?<=3)[0123568]|(?<=4)[012356789]|(?<=5)[12346789]|(?<=6)[012345789]|(?<=7)[12456789]|(?<=8)[1])|(?<=1)[0]((?<=0)[2345])|(?<=2)[012345678]((?<=0)[12345]|(?<=1)[024689]|(?<=2)[02345789]|(?<=3)[01356789]|(?<=4)[01349]|(?<=5)[01456789]|(?<=6)[0125679]|(?<=7)[012345678]|(?<=8)[12])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[013678]|(?<=2)[134579]|(?<=3)[012589]|(?<=4)[134568]|(?<=5)[123567]|(?<=6)[12356789]|(?<=7)[02479]|(?<=8)[012456])|(?<=4)[0123456789]((?<=0)[125]|(?<=1)[3568]|(?<=2)[012345689]|(?<=3)[013689]|(?<=4)[0123458]|(?<=5)[124568]|(?<=6)[013467]|(?<=7)[2456789]|(?<=8)[01234678]|(?<=9)[024567])|(?<=5)[02345678]((?<=0)[1345]|(?<=2)[013489]|(?<=3)[012358]|(?<=4)[012459]|(?<=5)[2489]|(?<=6)[012345689]|(?<=7)[01235679]|(?<=8)[01])|(?<=6)[02345]((?<=0)[1]|(?<=2)[0123567]|(?<=3)[0124689]|(?<=4)[012345679]|(?<=5)[0123456])|(?<=7)[0123456789]((?<=0)[13457]|(?<=1)[012368]|(?<=2)[12357]|(?<=3)[0134567]|(?<=4)[01468]|(?<=5)[0256789]|(?<=6)[0123589]|(?<=7)[01235689]|(?<=8)[12345789]|(?<=9)[02345])|(?<=8)[0345]((?<=0)[1]|(?<=3)[01358]|(?<=4)[34579]|(?<=5)[2346]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[123678]|(?<=1)[012345689]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[13467]|(?<=5)[02345789]|(?<=6)[123456789]|(?<=7)[012456789]|(?<=8)[12356789])|(?<=1)[0]((?<=0)[1256])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[12345789]|(?<=2)[12356]|(?<=3)[01]|(?<=4)[0123478]|(?<=5)[023456789]|(?<=6)[0123]|(?<=7)[03456])|(?<=3)[012345]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[23467]|(?<=3)[0236789]|(?<=4)[34579]|(?<=5)[134])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[01246789]|(?<=2)[012457]|(?<=3)[023456]|(?<=4)[01234678]|(?<=5)[0123467]|(?<=6)[0123456789]|(?<=7)[12479]|(?<=8)[02345679])|(?<=5)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[012578]|(?<=4)[024567])|(?<=6)[0234]((?<=0)[12]|(?<=2)[35]|(?<=3)[12345689]|(?<=4)[0234578])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[0134568]|(?<=2)[01245789]|(?<=3)[0123569]|(?<=4)[01356789]|(?<=5)[01245689]|(?<=6)[012])|(?<=8)[01234567]((?<=0)[12348]|(?<=1)[2]|(?<=2)[013456789]|(?<=3)[012347]|(?<=4)[012345678]|(?<=5)[1345689]|(?<=6)[0345678]|(?<=7)[012345])|(?<=9)[0123]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[02356789]|(?<=3)[01234567])))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24578]|(?<=1)[0234568]|(?<=2)[012569]|(?<=3)[01345]|(?<=4)[012345678]|(?<=5)[0136]|(?<=6)[0124789]|(?<=7)[01234567]|(?<=8)[1345789]|(?<=9)[0136789])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[0123589]|(?<=2)[03469]|(?<=3)[01345679]|(?<=4)[01234568]|(?<=5)[01234567]|(?<=6)[023459]|(?<=7)[12345678]|(?<=8)[01345789]|(?<=9)[012345])|(?<=2)[0]((?<=0)[1238])|(?<=3)[0]((?<=0)[1245])|(?<=4)[0123456789]((?<=0)[12346789]|(?<=1)[0156789]|(?<=2)[012345689]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[012356789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[01247]|(?<=9)[01])|(?<=5)[01234568]((?<=0)[123456]|(?<=1)[0123456789]|(?<=2)[013567]|(?<=3)[01246789]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[01345]|(?<=8)[56])|(?<=6)[0123456]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[012346789]|(?<=4)[012345679]|(?<=5)[12345679]|(?<=6)[01])|(?<=7)[01]((?<=0)[67]|(?<=1)[24])|(?<=8)[02]((?<=0)[345]|(?<=2)[7])|(?<=9)[01234567]((?<=0)[1]|(?<=1)[012345789]|(?<=2)[01246789]|(?<=3)[012345689]|(?<=4)[0125689]|(?<=5)[0123456789]|(?<=6)[012346789]|(?<=7)[034]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1678]|(?<=1)[012345689]|(?<=2)[014578]|(?<=3)[0126789]|(?<=4)[12346789]|(?<=5)[0123479]|(?<=6)[01234578]|(?<=7)[012345789]|(?<=8)[0145789]|(?<=9)[1])|(?<=1)[01]((?<=0)[1234789]|(?<=1)[1245])|(?<=2)[0345678]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[01246789]|(?<=6)[012345]|(?<=7)[023456789]|(?<=8)[12345])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[01245689]|(?<=5)[034689]|(?<=6)[01234789]|(?<=7)[0123456789])|(?<=4)[0123456789]((?<=0)[12]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[0123789]|(?<=5)[01234589]|(?<=6)[0256789]|(?<=7)[0123456789]|(?<=8)[02345689]|(?<=9)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[679]|(?<=2)[0345689]|(?<=3)[012345679]|(?<=4)[012345678]|(?<=5)[02349]|(?<=6)[012345789]|(?<=7)[012])|(?<=6)[012]((?<=0)[234567]|(?<=1)[01456]|(?<=2)[5])|(?<=7)[0234567]((?<=0)[145]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345789]|(?<=5)[01234569]|(?<=6)[0149]|(?<=7)[012345678])|(?<=8)[012345678]((?<=0)[12]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[012349]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[23456]|(?<=7)[012345678]|(?<=8)[0234])|(?<=9)[12345]((?<=1)[0123479]|(?<=2)[04589]|(?<=3)[0123678]|(?<=4)[012349]|(?<=5)[13567]))|(?<=2)[023456789]((?<=0)[0123456789]((?<=0)[1269]|(?<=1)[0123456789]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0456789]|(?<=5)[01234689]|(?<=6)[012379]|(?<=7)[456789]|(?<=8)[0123456789]|(?<=9)[01234578])|(?<=2)[0123456789]((?<=0)[1345678]|(?<=1)[456789]|(?<=2)[01356]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[0345678]|(?<=6)[012345689]|(?<=7)[12345789]|(?<=8)[01245689]|(?<=9)[234578])|(?<=3)[012345678]((?<=0)[15]|(?<=1)[123469]|(?<=2)[013456]|(?<=3)[04689]|(?<=4)[013456789]|(?<=5)[123456789]|(?<=6)[0123567]|(?<=7)[0345689]|(?<=8)[0])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[0134789]|(?<=2)[012345678]|(?<=3)[1234689]|(?<=4)[0123456789]|(?<=5)[012489]|(?<=6)[0123456789]|(?<=7)[13456789]|(?<=8)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[01236]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[01345678]|(?<=6)[013578]|(?<=7)[0123])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[0123578]|(?<=2)[12456789]|(?<=3)[0134589]|(?<=4)[02349]|(?<=5)[056]|(?<=6)[1345678]|(?<=7)[0123457]|(?<=8)[124589]|(?<=9)[012345])|(?<=7)[01]((?<=0)[123467]|(?<=1)[12])|(?<=8)[0123456789]((?<=0)[136789]|(?<=1)[012456789]|(?<=2)[012345789]|(?<=3)[012356789]|(?<=4)[1234689]|(?<=5)[01234689]|(?<=6)[012345789]|(?<=7)[012456789]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[1235678]|(?<=1)[02456789]|(?<=2)[01234678]|(?<=3)[01234589]|(?<=4)[01236789]|(?<=5)[012346789]|(?<=6)[012345679]|(?<=7)[0245679]|(?<=8)[234578]|(?<=9)[02456789]))|(?<=3)[013456789]((?<=0)[0123456789]((?<=0)[5]|(?<=1)[012345679]|(?<=2)[013568]|(?<=3)[01346789]|(?<=4)[012345789]|(?<=5)[012356]|(?<=6)[0189]|(?<=7)[0123479]|(?<=8)[04789]|(?<=9)[01])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[013467]|(?<=5)[5])|(?<=3)[03456789]((?<=0)[134]|(?<=3)[023469]|(?<=4)[1345789]|(?<=5)[012379]|(?<=6)[12356789]|(?<=7)[3679]|(?<=8)[0123456789]|(?<=9)[0])|(?<=4)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[0135678]|(?<=5)[012346789]|(?<=6)[012356789]|(?<=7)[1234])|(?<=5)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[1256789]|(?<=6)[013567])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[013678]|(?<=4)[058]|(?<=5)[03456]|(?<=6)[02345]|(?<=7)[0345])|(?<=7)[0345678]((?<=0)[13]|(?<=3)[025689]|(?<=4)[02345678]|(?<=5)[0158]|(?<=6)[034679]|(?<=7)[0145]|(?<=8)[0123457])|(?<=8)[02345678]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[03479]|(?<=4)[0156789]|(?<=5)[012357]|(?<=6)[0236789]|(?<=7)[0346789]|(?<=8)[02])|(?<=9)[03456]((?<=0)[1]|(?<=3)[2345679]|(?<=4)[012345]|(?<=5)[01234567]|(?<=6)[0124567]))|(?<=4)[0145678]((?<=0)[0123456789]((?<=0)[1]|(?<=1)[12456789]|(?<=2)[012489]|(?<=3)[04567]|(?<=4)[08]|(?<=5)[02345678]|(?<=6)[012345678]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[023678])|(?<=1)[0123456]((?<=0)[125689]|(?<=1)[012346789]|(?<=2)[03456789]|(?<=3)[012346789]|(?<=4)[5679]|(?<=5)[012345678]|(?<=6)[134567])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[13456789]|(?<=6)[1356789]|(?<=7)[01345679]|(?<=8)[012345679]|(?<=9)[012346789])|(?<=5)[0]((?<=0)[134567])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[023458]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[01478]|(?<=7)[0123469]|(?<=8)[123689])|(?<=7)[023456789]((?<=0)[1]|(?<=2)[0234568]|(?<=3)[034589]|(?<=4)[012345678]|(?<=5)[02569]|(?<=6)[123579]|(?<=7)[012689]|(?<=8)[01348]|(?<=9)[0])|(?<=8)[034567]((?<=0)[14]|(?<=3)[0123456]|(?<=4)[01234789]|(?<=5)[0456789]|(?<=6)[1235678]|(?<=7)[034]))|(?<=5)[012345678]((?<=0)[012345678]((?<=0)[1]|(?<=1)[0134678]|(?<=2)[03456]|(?<=3)[24579]|(?<=4)[0136789]|(?<=5)[0123489]|(?<=6)[123456789]|(?<=7)[2456789]|(?<=8)[012345])|(?<=1)[0]((?<=0)[19])|(?<=2)[01345678]((?<=0)[123]|(?<=1)[56]|(?<=3)[0123679]|(?<=4)[034678]|(?<=5)[01456789]|(?<=6)[012345]|(?<=7)[045689]|(?<=8)[01234567])|(?<=3)[023456]((?<=0)[15]|(?<=2)[012345679]|(?<=3)[023456789]|(?<=4)[045789]|(?<=5)[0145]|(?<=6)[0])|(?<=4)[0345678]((?<=0)[19]|(?<=3)[689]|(?<=4)[013469]|(?<=5)[23679]|(?<=6)[123468]|(?<=7)[039]|(?<=8)[346])|(?<=5)[023456789]((?<=0)[1]|(?<=2)[9]|(?<=3)[456]|(?<=4)[1238]|(?<=5)[025679]|(?<=6)[04567]|(?<=7)[01]|(?<=8)[0234689]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[1345689]|(?<=1)[012346789]|(?<=2)[02345679]|(?<=3)[01234578]|(?<=4)[0146789]|(?<=5)[02345678]|(?<=6)[012346789]|(?<=7)[24569]|(?<=8)[0125689]|(?<=9)[02])|(?<=7)[0123456789]((?<=0)[245678]|(?<=1)[0123457]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0124567]|(?<=5)[2345679]|(?<=6)[01246789]|(?<=7)[012345789]|(?<=8)[13456789]|(?<=9)[013])|(?<=8)[019]((?<=0)[1234679]|(?<=1)[0]|(?<=9)[7]))|(?<=6)[012456789]((?<=0)[0123456789]((?<=0)[2678]|(?<=1)[02345678]|(?<=2)[0134567]|(?<=3)[012359]|(?<=4)[0123456789]|(?<=5)[023468]|(?<=6)[012467]|(?<=7)[01235689]|(?<=8)[035678]|(?<=9)[0123457])|(?<=1)[016]((?<=0)[1234569]|(?<=1)[1258]|(?<=6)[0])|(?<=2)[0125]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013467]|(?<=5)[1])|(?<=4)[012345]((?<=0)[12346789]|(?<=1)[123456789]|(?<=2)[2345789]|(?<=3)[124689]|(?<=4)[0129]|(?<=5)[1])|(?<=5)[012345]((?<=0)[1236789]|(?<=1)[0245678]|(?<=2)[01234678]|(?<=3)[123456789]|(?<=4)[012346789]|(?<=5)[024])|(?<=6)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[12])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[0123467]|(?<=2)[045]|(?<=3)[2345689]|(?<=4)[0123689]|(?<=5)[1345678]|(?<=6)[012379]|(?<=7)[012356789]|(?<=8)[0123])|(?<=8)[034567]((?<=0)[1]|(?<=3)[034589]|(?<=4)[023569]|(?<=5)[012346789]|(?<=6)[012345689]|(?<=7)[0123])|(?<=9)[034567]((?<=0)[1]|(?<=3)[02356789]|(?<=4)[012345689]|(?<=5)[1235689]|(?<=6)[01234678]|(?<=7)[0]))|(?<=7)[0123456789]((?<=0)[01234567]((?<=0)[1234589]|(?<=1)[0236789]|(?<=2)[012345689]|(?<=3)[0156789]|(?<=4)[12579]|(?<=5)[0123456789]|(?<=6)[01235678]|(?<=7)[01234])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0124789]|(?<=2)[02347]|(?<=3)[1234578]|(?<=4)[0234679]|(?<=5)[0124569])|(?<=2)[01236]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013678]|(?<=3)[025]|(?<=6)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[0234567]|(?<=4)[01245679]|(?<=5)[1234567]|(?<=6)[0134])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0678]|(?<=2)[023578]|(?<=3)[0126789]|(?<=4)[123456789]|(?<=5)[012456789]|(?<=6)[04678]|(?<=7)[034568]|(?<=8)[0123457]|(?<=9)[012])|(?<=5)[012345678]((?<=0)[125]|(?<=1)[012345689]|(?<=2)[01234569]|(?<=3)[0]|(?<=4)[345678]|(?<=5)[0234679]|(?<=6)[01345678]|(?<=7)[02345689]|(?<=8)[134])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[12356789]|(?<=3)[1245789]|(?<=4)[023456789]|(?<=5)[01346789]|(?<=6)[0134579]|(?<=7)[12345])|(?<=7)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[123678]|(?<=6)[124])|(?<=8)[0345678]((?<=0)[1]|(?<=3)[1456789]|(?<=4)[0123469]|(?<=5)[0134579]|(?<=6)[012345789]|(?<=7)[016789]|(?<=8)[02])|(?<=9)[05]((?<=0)[1]|(?<=5)[01234]))|(?<=8)[013456789]((?<=0)[01234567]((?<=0)[1234578]|(?<=1)[0456789]|(?<=2)[023589]|(?<=3)[01346789]|(?<=4)[01245678]|(?<=5)[056789]|(?<=6)[123456789]|(?<=7)[0123])|(?<=1)[012345678]((?<=0)[245678]|(?<=1)[01234678]|(?<=2)[23478]|(?<=3)[012345678]|(?<=4)[247]|(?<=5)[247]|(?<=6)[4]|(?<=7)[8]|(?<=8)[23])|(?<=3)[012345678]((?<=0)[134579]|(?<=1)[03456789]|(?<=2)[0123456789]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[01245789]|(?<=6)[01245678]|(?<=7)[01256789]|(?<=8)[012])|(?<=4)[0123456]((?<=0)[12345679]|(?<=1)[03456789]|(?<=2)[0123489]|(?<=3)[01346789]|(?<=4)[012345678]|(?<=5)[02345678]|(?<=6)[01234567])|(?<=5)[01238]((?<=0)[2345678]|(?<=1)[02467]|(?<=2)[01234678]|(?<=3)[12]|(?<=8)[8])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[12345678]|(?<=4)[01234789]|(?<=5)[1234589]|(?<=6)[012345679])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[023456789]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[12356789]|(?<=6)[013456789]|(?<=7)[01346789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13]|(?<=1)[02345678]|(?<=2)[012345678]|(?<=3)[12345678]|(?<=4)[012345679]|(?<=5)[02345689]|(?<=6)[01234569]|(?<=7)[012345689]|(?<=8)[123])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[023456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[02456789]|(?<=6)[01467]|(?<=7)[0123456789]|(?<=8)[012]))|(?<=9)[0123]((?<=0)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[02346789]|(?<=4)[0123456])|(?<=1)[0234567]((?<=0)[1]|(?<=2)[01235789]|(?<=3)[0123458]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[12356789]|(?<=7)[01])|(?<=2)[012]((?<=0)[1]|(?<=1)[01246789]|(?<=2)[01])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1345679]|(?<=4)[0135678]|(?<=5)[012345678]|(?<=6)[01567])))|(?<=7)[0123456789]((?<=0)[01345678]((?<=0)[03456789]((?<=0)[12356]|(?<=3)[0126789]|(?<=4)[01379]|(?<=5)[0123678]|(?<=6)[2578]|(?<=7)[012569]|(?<=8)[0234567]|(?<=9)[0124])|(?<=1)[12346]((?<=1)[23456789]|(?<=2)[123456789]|(?<=3)[019]|(?<=4)[8]|(?<=6)[3])|(?<=3)[013456789]((?<=0)[1]|(?<=1)[0]|(?<=3)[9]|(?<=4)[0123456]|(?<=5)[23456789]|(?<=6)[034]|(?<=7)[23457]|(?<=8)[0]|(?<=9)[0123457])|(?<=4)[0234567]((?<=0)[123]|(?<=2)[0267]|(?<=3)[135678]|(?<=4)[123456789]|(?<=5)[012345678]|(?<=6)[0123456]|(?<=7)[1])|(?<=5)[0123456789]((?<=0)[13678]|(?<=1)[023456789]|(?<=2)[02345689]|(?<=3)[1234578]|(?<=4)[1234689]|(?<=5)[01245689]|(?<=6)[03]|(?<=7)[05678]|(?<=8)[01234569]|(?<=9)[12])|(?<=6)[0123456]((?<=0)[1579]|(?<=1)[15]|(?<=2)[9]|(?<=3)[01234789]|(?<=4)[0345678]|(?<=5)[0123456789]|(?<=6)[0123589])|(?<=7)[0123456789]((?<=0)[6]|(?<=1)[012459]|(?<=2)[123569]|(?<=3)[0234679]|(?<=4)[034789]|(?<=5)[02345679]|(?<=6)[0123479]|(?<=7)[02345678]|(?<=8)[02356789]|(?<=9)[1])|(?<=8)[0123]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[05]|(?<=3)[6]))|(?<=1)[012346789]((?<=0)[012345678]((?<=0)[12346789]|(?<=1)[689]|(?<=2)[134789]|(?<=3)[01234789]|(?<=4)[03456789]|(?<=5)[125]|(?<=6)[013456789]|(?<=7)[0123589]|(?<=8)[2])|(?<=1)[012]((?<=0)[13456789]|(?<=1)[012589]|(?<=2)[9])|(?<=2)[0123456789]((?<=0)[1239]|(?<=1)[289]|(?<=2)[0235679]|(?<=3)[0234578]|(?<=4)[12357]|(?<=5)[013469]|(?<=6)[0134689]|(?<=7)[025679]|(?<=8)[026]|(?<=9)[125])|(?<=3)[01234567]((?<=0)[123]|(?<=1)[6]|(?<=2)[0235678]|(?<=3)[013469]|(?<=4)[012356]|(?<=5)[013456789]|(?<=6)[026789]|(?<=7)[1358])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[01456789]|(?<=2)[23456789]|(?<=3)[0234589]|(?<=4)[1679]|(?<=5)[0245679]|(?<=6)[12356789]|(?<=7)[23459]|(?<=8)[0356]|(?<=9)[7])|(?<=6)[034567]((?<=0)[123]|(?<=3)[01589]|(?<=4)[023467]|(?<=5)[1234589]|(?<=6)[0123567]|(?<=7)[0145678])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0124568]|(?<=3)[0]|(?<=4)[02345789]|(?<=5)[12389]|(?<=6)[23456]|(?<=7)[02])|(?<=8)[023456]((?<=0)[1]|(?<=2)[023567]|(?<=3)[123456789]|(?<=4)[12567]|(?<=5)[12345789]|(?<=6)[012456])|(?<=9)[012345679]((?<=0)[19]|(?<=1)[3]|(?<=2)[1239]|(?<=3)[357]|(?<=4)[0123459]|(?<=5)[0236789]|(?<=6)[0124589]|(?<=7)[0123]|(?<=9)[89]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[012345679]|(?<=2)[0123456789]|(?<=3)[01245689]|(?<=4)[01245678]|(?<=5)[1235789]|(?<=6)[013456789]|(?<=7)[0234569]|(?<=8)[012345678]|(?<=9)[9])|(?<=1)[0123456789]((?<=0)[1234678]|(?<=1)[012346789]|(?<=2)[012356789]|(?<=3)[012345679]|(?<=4)[0123]|(?<=5)[02367]|(?<=6)[056789]|(?<=7)[035689]|(?<=8)[0123]|(?<=9)[9])|(?<=2)[012]((?<=0)[1245679]|(?<=1)[012]|(?<=2)[37])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[135]|(?<=2)[02456789]|(?<=3)[0123589]|(?<=4)[012678]|(?<=5)[01234589]|(?<=6)[0456789]|(?<=7)[0234679]|(?<=8)[34679]|(?<=9)[012456])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[012345679]|(?<=2)[12456789]|(?<=3)[012345678]|(?<=4)[01234579]|(?<=5)[03456789]|(?<=6)[0124679]|(?<=7)[0123689]|(?<=8)[2])|(?<=5)[012345678]((?<=0)[1]|(?<=1)[23579]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[02346]|(?<=5)[03456]|(?<=6)[012456789]|(?<=7)[1236789]|(?<=8)[13457])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[15679]|(?<=2)[34689]|(?<=3)[012345689]|(?<=4)[012458]|(?<=5)[01358]|(?<=6)[0123689]|(?<=7)[02579]|(?<=8)[023567])|(?<=7)[01234567]((?<=0)[134]|(?<=1)[2345789]|(?<=2)[1279]|(?<=3)[024689]|(?<=4)[024579]|(?<=5)[12368]|(?<=6)[012489]|(?<=7)[346])|(?<=8)[023456]((?<=0)[12]|(?<=2)[1346789]|(?<=3)[02345789]|(?<=4)[0123567]|(?<=5)[12345678]|(?<=6)[035])|(?<=9)[012345]((?<=0)[13458]|(?<=1)[6]|(?<=2)[13678]|(?<=3)[02345678]|(?<=4)[013456789]|(?<=5)[0125689]))|(?<=3)[01456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123468]|(?<=4)[012345789]|(?<=5)[0123456789]|(?<=6)[123456789]|(?<=7)[012345789]|(?<=8)[02469]|(?<=9)[02356789])|(?<=1)[01234567]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[012789]|(?<=3)[012459]|(?<=4)[1259]|(?<=5)[019]|(?<=6)[0259]|(?<=7)[039])|(?<=4)[02345689]((?<=0)[1]|(?<=2)[5]|(?<=3)[023456789]|(?<=4)[012346789]|(?<=5)[035689]|(?<=6)[013]|(?<=8)[178]|(?<=9)[1])|(?<=5)[0234567]((?<=0)[1357]|(?<=2)[0136789]|(?<=3)[0123789]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[02456789]|(?<=7)[0123])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0245678]|(?<=3)[289]|(?<=4)[124567]|(?<=5)[014589]|(?<=6)[012346789]|(?<=7)[3])|(?<=7)[01234567]((?<=0)[135]|(?<=1)[6789]|(?<=2)[0246789]|(?<=3)[013456789]|(?<=4)[1234679]|(?<=5)[03456789]|(?<=6)[0123468]|(?<=7)[0123])|(?<=8)[03456]((?<=0)[1]|(?<=3)[2458]|(?<=4)[012348]|(?<=5)[1235789]|(?<=6)[0])|(?<=9)[03456]((?<=0)[1]|(?<=3)[123789]|(?<=4)[245679]|(?<=5)[01]|(?<=6)[0]))|(?<=4)[013456789]((?<=0)[012345678]((?<=0)[12368]|(?<=1)[01245679]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[1245678]|(?<=5)[012345689]|(?<=6)[012368]|(?<=7)[012345789]|(?<=8)[012345])|(?<=1)[012347]((?<=0)[345678]|(?<=1)[0245679]|(?<=2)[06789]|(?<=3)[01234567]|(?<=4)[56]|(?<=7)[1])|(?<=3)[034567]((?<=0)[1]|(?<=3)[0123789]|(?<=4)[0234679]|(?<=5)[02489]|(?<=6)[013456789]|(?<=7)[0])|(?<=4)[0234567]((?<=0)[13]|(?<=2)[12356789]|(?<=3)[01245678]|(?<=4)[12567]|(?<=5)[012456789]|(?<=6)[0234789]|(?<=7)[0127])|(?<=5)[0234567]((?<=0)[1]|(?<=2)[12358]|(?<=3)[0134568]|(?<=4)[03679]|(?<=5)[2345678]|(?<=6)[0123579]|(?<=7)[0124678])|(?<=6)[0345]((?<=0)[14]|(?<=3)[012367]|(?<=4)[013467]|(?<=5)[0123])|(?<=7)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[01345678]|(?<=4)[013578]|(?<=5)[034569]|(?<=6)[0146])|(?<=8)[02345678]((?<=0)[14]|(?<=2)[045679]|(?<=3)[01234679]|(?<=4)[0234589]|(?<=5)[01245679]|(?<=6)[0456789]|(?<=7)[12358]|(?<=8)[0134])|(?<=9)[03456]((?<=0)[12]|(?<=3)[0125679]|(?<=4)[0123456789]|(?<=5)[1345679]|(?<=6)[023456]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[12679]|(?<=1)[039]|(?<=2)[0123458]|(?<=3)[2345689]|(?<=4)[012348]|(?<=5)[0124678]|(?<=6)[01235789]|(?<=7)[01245678]|(?<=8)[012789]|(?<=9)[02348])|(?<=1)[012345678]((?<=0)[123459]|(?<=1)[045679]|(?<=2)[4567]|(?<=3)[2457]|(?<=4)[012346789]|(?<=5)[023456789]|(?<=6)[01345679]|(?<=7)[23]|(?<=8)[0129])|(?<=2)[012345678]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[03456789]|(?<=3)[012345678]|(?<=4)[01346789]|(?<=5)[1234]|(?<=6)[1]|(?<=7)[0]|(?<=8)[7])|(?<=3)[9]((?<=9)[0])|(?<=4)[0123456789]((?<=0)[1279]|(?<=1)[012345678]|(?<=2)[01234689]|(?<=3)[123456789]|(?<=4)[0126789]|(?<=5)[01234579]|(?<=6)[0289]|(?<=7)[0123456789]|(?<=8)[0126789]|(?<=9)[01234567])|(?<=5)[0567]((?<=0)[13]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[01234])|(?<=6)[03456789]((?<=0)[12345]|(?<=3)[01389]|(?<=4)[0123457]|(?<=5)[01246789]|(?<=6)[12789]|(?<=7)[012]|(?<=8)[01234679]|(?<=9)[1234])|(?<=7)[0156789]((?<=0)[123456789]|(?<=1)[1]|(?<=5)[012456789]|(?<=6)[023456]|(?<=7)[01389]|(?<=8)[0234589]|(?<=9)[012])|(?<=8)[034568]((?<=0)[13]|(?<=3)[13589]|(?<=4)[0456789]|(?<=5)[01235689]|(?<=6)[0125]|(?<=8)[46])|(?<=9)[02345678]((?<=0)[134]|(?<=2)[5689]|(?<=3)[0123456789]|(?<=4)[1234689]|(?<=5)[1469]|(?<=6)[01245689]|(?<=7)[2345679]|(?<=8)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[125689]|(?<=1)[012345678]|(?<=2)[01238]|(?<=3)[134569]|(?<=4)[013489]|(?<=5)[01234589]|(?<=6)[0134567]|(?<=7)[01378]|(?<=8)[245678]|(?<=9)[23])|(?<=1)[012345678]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[03679]|(?<=3)[123457]|(?<=4)[08]|(?<=5)[5]|(?<=6)[4]|(?<=7)[79]|(?<=8)[02])|(?<=2)[01234567]((?<=0)[135789]|(?<=1)[0]|(?<=2)[5678]|(?<=3)[03489]|(?<=4)[0145789]|(?<=5)[0123589]|(?<=6)[12345678]|(?<=7)[0123])|(?<=3)[015678]((?<=0)[125689]|(?<=1)[01]|(?<=5)[147]|(?<=6)[034567]|(?<=7)[0123479]|(?<=8)[0489])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[4679]|(?<=3)[01235679]|(?<=4)[2345689]|(?<=5)[02345789]|(?<=6)[023469]|(?<=7)[012456]|(?<=8)[13467]|(?<=9)[01])|(?<=5)[012345679]((?<=0)[124]|(?<=1)[1389]|(?<=2)[0234578]|(?<=3)[014789]|(?<=4)[123489]|(?<=5)[04679]|(?<=6)[15679]|(?<=7)[0134789]|(?<=9)[6789])|(?<=6)[23456789]((?<=2)[12346789]|(?<=3)[0123456789]|(?<=4)[0123589]|(?<=5)[01234567]|(?<=6)[014567]|(?<=7)[013689]|(?<=8)[0125679]|(?<=9)[0123])|(?<=7)[019]((?<=0)[145678]|(?<=1)[012]|(?<=9)[8])|(?<=8)[023456789]((?<=0)[12]|(?<=2)[0134578]|(?<=3)[12467]|(?<=4)[124589]|(?<=5)[2346789]|(?<=6)[124569]|(?<=7)[01234578]|(?<=8)[024578]|(?<=9)[0])|(?<=9)[0345]((?<=0)[1234589]|(?<=3)[02345679]|(?<=4)[0135]|(?<=5)[013578]))|(?<=7)[023456789]((?<=0)[0123456789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345689])|(?<=2)[0]((?<=0)[4])|(?<=3)[0123456789]((?<=0)[12346]|(?<=1)[68]|(?<=2)[0678]|(?<=3)[145689]|(?<=4)[01256]|(?<=5)[01456789]|(?<=6)[02345789]|(?<=7)[123456789]|(?<=8)[01245689]|(?<=9)[6])|(?<=4)[0123456789]((?<=0)[167]|(?<=1)[245789]|(?<=2)[023689]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[013456789]|(?<=8)[012345689]|(?<=9)[348])|(?<=5)[0123456789]((?<=0)[234567]|(?<=1)[0145789]|(?<=2)[013]|(?<=3)[012345689]|(?<=4)[1567]|(?<=5)[0145]|(?<=6)[01234568]|(?<=7)[13578]|(?<=8)[01234567]|(?<=9)[0178])|(?<=6)[123456]((?<=1)[12345679]|(?<=2)[234579]|(?<=3)[02]|(?<=4)[02]|(?<=5)[015679]|(?<=6)[012345])|(?<=7)[01]((?<=0)[1235678]|(?<=1)[3])|(?<=8)[0345678]((?<=0)[12378]|(?<=3)[013567]|(?<=4)[035]|(?<=5)[235679]|(?<=6)[1345678]|(?<=7)[1235689]|(?<=8)[02])|(?<=9)[056789]((?<=0)[145]|(?<=5)[0147]|(?<=6)[0123489]|(?<=7)[013456789]|(?<=8)[234678]|(?<=9)[01345]))|(?<=8)[0123456789]((?<=0)[01234567]((?<=0)[123456789]|(?<=1)[012345679]|(?<=2)[123456789]|(?<=3)[9]|(?<=4)[013456]|(?<=5)[0256789]|(?<=6)[12345679]|(?<=7)[0123456])|(?<=1)[0123456]((?<=0)[124789]|(?<=1)[12346789]|(?<=2)[12345]|(?<=3)[023]|(?<=4)[012345678]|(?<=5)[012459]|(?<=6)[01234])|(?<=2)[0123456]((?<=0)[12345789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[02345789]|(?<=5)[0123456789]|(?<=6)[01346])|(?<=3)[3456789]((?<=3)[02689]|(?<=4)[0123479]|(?<=5)[1235789]|(?<=6)[012389]|(?<=7)[012345679]|(?<=8)[0234579]|(?<=9)[013])|(?<=4)[01]((?<=0)[12456789]|(?<=1)[0123456789])|(?<=5)[0123456789]((?<=0)[134]|(?<=1)[6]|(?<=2)[016]|(?<=3)[56789]|(?<=4)[01235789]|(?<=5)[02789]|(?<=6)[012345679]|(?<=7)[023456789]|(?<=8)[02345689]|(?<=9)[0123456789])|(?<=6)[012345678]((?<=0)[256789]|(?<=1)[0123456789]|(?<=2)[01234689]|(?<=3)[12345689]|(?<=4)[0123458]|(?<=5)[023456789]|(?<=6)[01234569]|(?<=7)[0124567]|(?<=8)[1])|(?<=7)[012345]((?<=0)[12345]|(?<=1)[279]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[12456789]|(?<=5)[012346789])|(?<=8)[02345678]((?<=0)[12]|(?<=2)[789]|(?<=3)[02346789]|(?<=4)[0123]|(?<=5)[012]|(?<=6)[01]|(?<=7)[012379]|(?<=8)[013456])|(?<=9)[3456]((?<=3)[123458]|(?<=4)[0123456789]|(?<=5)[0134679]|(?<=6)[23]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[012345689]|(?<=2)[124579]|(?<=3)[1234569]|(?<=4)[0123456]|(?<=5)[12346789]|(?<=6)[1234568]|(?<=7)[02389]|(?<=8)[012345678]|(?<=9)[12345678])|(?<=1)[012]((?<=0)[12346789]|(?<=1)[0189]|(?<=2)[14])|(?<=2)[023456]((?<=0)[1]|(?<=2)[035679]|(?<=3)[01345679]|(?<=4)[0134578]|(?<=5)[01256789]|(?<=6)[1])|(?<=3)[12345678]((?<=1)[12346]|(?<=2)[234569]|(?<=3)[0169]|(?<=4)[234567]|(?<=5)[01356789]|(?<=6)[034679]|(?<=7)[01236789]|(?<=8)[0123])|(?<=4)[012]((?<=0)[123467]|(?<=1)[0123456]|(?<=2)[34])|(?<=5)[0123456]((?<=0)[1234568]|(?<=1)[012789]|(?<=2)[0156789]|(?<=3)[023456789]|(?<=4)[013456789]|(?<=5)[36]|(?<=6)[0123567])|(?<=6)[09]((?<=0)[123567]|(?<=9)[9])|(?<=7)[012345678]((?<=0)[13567]|(?<=1)[3489]|(?<=2)[01]|(?<=3)[0134589]|(?<=4)[1234589]|(?<=5)[245689]|(?<=6)[1234569]|(?<=7)[02678]|(?<=8)[0123589])|(?<=8)[2345]((?<=2)[1]|(?<=3)[02456789]|(?<=4)[2356789]|(?<=5)[12345])|(?<=9)[0123]((?<=0)[12345678]|(?<=1)[12568]|(?<=2)[024578]|(?<=3)[024568])))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[01234]((?<=0)[23457]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[013]|(?<=4)[5])|(?<=1)[0123]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[0123456789]|(?<=3)[012345678])|(?<=2)[0123469]((?<=0)[2345679]|(?<=1)[01245689]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[1679]|(?<=6)[046]|(?<=9)[034])|(?<=3)[01]((?<=0)[12345]|(?<=1)[0])|(?<=4)[0123456789]((?<=0)[13]|(?<=1)[9]|(?<=2)[012345678]|(?<=3)[02345689]|(?<=4)[02346789]|(?<=5)[12345679]|(?<=6)[1356789]|(?<=7)[01345689]|(?<=8)[01237]|(?<=9)[8])|(?<=5)[012345]((?<=0)[134]|(?<=1)[0234567]|(?<=2)[014568]|(?<=3)[0245678]|(?<=4)[02345679]|(?<=5)[0])|(?<=6)[012345]((?<=0)[123]|(?<=1)[0125]|(?<=2)[01234]|(?<=3)[14]|(?<=4)[02345689]|(?<=5)[01234])|(?<=7)[02345]((?<=0)[15]|(?<=2)[01236789]|(?<=3)[1234567]|(?<=4)[012345679]|(?<=5)[0145789])|(?<=8)[012346]((?<=0)[1245789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[0123456]|(?<=4)[0]|(?<=6)[01234])|(?<=9)[01235]((?<=0)[23456789]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[089]|(?<=5)[1]))|(?<=1)[0123456]((?<=0)[0123456789]((?<=0)[1345678]|(?<=1)[9]|(?<=2)[01234579]|(?<=3)[0369]|(?<=4)[01345679]|(?<=5)[0245789]|(?<=6)[23479]|(?<=7)[1367]|(?<=8)[12479]|(?<=9)[012])|(?<=1)[02345]((?<=0)[1]|(?<=2)[012345689]|(?<=3)[0123678]|(?<=4)[01346789]|(?<=5)[1245])|(?<=2)[012345]((?<=0)[1]|(?<=1)[012]|(?<=2)[012345678]|(?<=3)[0235679]|(?<=4)[012348]|(?<=5)[123])|(?<=3)[023]((?<=0)[13]|(?<=2)[01345678]|(?<=3)[01245])|(?<=4)[0123]((?<=0)[13]|(?<=1)[0135689]|(?<=2)[23456789]|(?<=3)[012345])|(?<=5)[02]((?<=0)[134567]|(?<=2)[01234567])|(?<=6)[012345]((?<=0)[1]|(?<=1)[0125]|(?<=2)[01345]|(?<=3)[01235789]|(?<=4)[012356789]|(?<=5)[0234567]))|(?<=2)[0123456789]((?<=0)[05678]((?<=0)[1579]|(?<=5)[01234589]|(?<=6)[013]|(?<=7)[023]|(?<=8)[1234])|(?<=1)[9]((?<=9)[0])|(?<=2)[0124]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[1234579]|(?<=4)[0234])|(?<=3)[0123]((?<=0)[1]|(?<=1)[0]|(?<=2)[1234579]|(?<=3)[12456])|(?<=4)[012345]((?<=0)[1]|(?<=1)[0124]|(?<=2)[012368]|(?<=3)[012345]|(?<=4)[0123]|(?<=5)[0])|(?<=5)[012]((?<=0)[1]|(?<=1)[023456]|(?<=2)[03])|(?<=6)[0234]((?<=0)[149]|(?<=2)[0]|(?<=3)[0356789]|(?<=4)[0234689])|(?<=7)[0123]((?<=0)[1]|(?<=1)[012468]|(?<=2)[013579]|(?<=3)[012])|(?<=8)[034]((?<=0)[1]|(?<=3)[123456789]|(?<=4)[245])|(?<=9)[0234]((?<=0)[1]|(?<=2)[2359]|(?<=3)[023456789]|(?<=4)[12345]))|(?<=3)[012345678]((?<=0)[012]((?<=0)[1]|(?<=1)[1234]|(?<=2)[5])|(?<=1)[012]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[01234678])|(?<=2)[012345678]((?<=0)[12349]|(?<=1)[01234578]|(?<=2)[013678]|(?<=3)[23456789]|(?<=4)[13456]|(?<=5)[012345]|(?<=6)[123]|(?<=7)[124678]|(?<=8)[13567])|(?<=3)[012345]((?<=0)[12]|(?<=1)[123468]|(?<=2)[01234578]|(?<=3)[02345678]|(?<=4)[01246789]|(?<=5)[02345])|(?<=4)[0123456]((?<=0)[1246]|(?<=1)[4]|(?<=2)[012345789]|(?<=3)[134568]|(?<=4)[02345689]|(?<=5)[01245]|(?<=6)[023456789])|(?<=5)[02345]((?<=0)[1]|(?<=2)[023456]|(?<=3)[035679]|(?<=4)[0123456789]|(?<=5)[2345])|(?<=6)[012345678]((?<=0)[2457]|(?<=1)[0125679]|(?<=2)[2346789]|(?<=3)[12346789]|(?<=4)[12345678]|(?<=5)[014567]|(?<=6)[0169]|(?<=7)[0267]|(?<=8)[67])|(?<=7)[012]((?<=0)[234569]|(?<=1)[2346]|(?<=2)[05])|(?<=8)[01234567]((?<=0)[12345689]|(?<=1)[012345]|(?<=2)[1234567]|(?<=3)[02345679]|(?<=4)[0123456789]|(?<=5)[01245678]|(?<=6)[0146789]|(?<=7)[012346]))|(?<=4)[0134567]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[034578]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[012345679]|(?<=7)[01234568]|(?<=8)[012345678]|(?<=9)[2345678])|(?<=1)[012358]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[013489]|(?<=3)[8]|(?<=5)[0]|(?<=8)[0])|(?<=3)[01234]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[01])|(?<=4)[01]((?<=0)[13458]|(?<=1)[4])|(?<=5)[01234]((?<=0)[1]|(?<=1)[123568]|(?<=2)[01235689]|(?<=3)[012345679]|(?<=4)[02])|(?<=6)[023456]((?<=0)[1246]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[023456789]|(?<=5)[1234567]|(?<=6)[023457])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[01234567]|(?<=7)[0234569]|(?<=8)[01234]|(?<=9)[0]))|(?<=5)[01235679]((?<=0)[0123458]((?<=0)[346789]|(?<=1)[23456789]|(?<=2)[012346789]|(?<=3)[123457]|(?<=4)[0123458]|(?<=5)[0134]|(?<=8)[3567])|(?<=1)[123479]((?<=1)[89]|(?<=2)[01238]|(?<=3)[125789]|(?<=4)[012357]|(?<=7)[23]|(?<=9)[1234])|(?<=2)[012345689]((?<=0)[123456789]|(?<=1)[0235]|(?<=2)[456]|(?<=3)[346]|(?<=4)[89]|(?<=5)[013456789]|(?<=6)[023468]|(?<=8)[12346]|(?<=9)[5678])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0]|(?<=2)[012345689]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[0123457]|(?<=7)[1345789]|(?<=8)[12378]|(?<=9)[0256])|(?<=5)[0345]((?<=0)[1]|(?<=3)[01234569]|(?<=4)[0123456]|(?<=5)[01234])|(?<=6)[012345]((?<=0)[12356789]|(?<=1)[013456789]|(?<=2)[012345679]|(?<=3)[012345789]|(?<=4)[013568]|(?<=5)[0348])|(?<=7)[012345]((?<=0)[1456789]|(?<=1)[012345689]|(?<=2)[1346]|(?<=3)[045679]|(?<=4)[12356789]|(?<=5)[0567])|(?<=9)[01234]((?<=0)[12]|(?<=1)[12]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[012]))|(?<=6)[0345]((?<=0)[012345]((?<=0)[1345]|(?<=1)[15678]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[0234567]|(?<=5)[234])|(?<=3)[012345]((?<=0)[135]|(?<=1)[345]|(?<=2)[012345679]|(?<=3)[12345678]|(?<=4)[3]|(?<=5)[1])|(?<=4)[01234]((?<=0)[13469]|(?<=1)[13]|(?<=2)[69]|(?<=3)[12345678]|(?<=4)[012345])|(?<=5)[012345]((?<=0)[2345678]|(?<=1)[01245]|(?<=2)[0]|(?<=3)[58]|(?<=4)[0457]|(?<=5)[6]))|(?<=7)[01345789]((?<=0)[012345678]((?<=0)[1245678]|(?<=1)[012345678]|(?<=2)[0123456789]|(?<=3)[1245678]|(?<=4)[0123456789]|(?<=5)[12369]|(?<=6)[012348]|(?<=7)[02]|(?<=8)[3])|(?<=1)[01245]((?<=0)[12456789]|(?<=1)[0123467]|(?<=2)[01234]|(?<=4)[4]|(?<=5)[1])|(?<=3)[0124567]((?<=0)[15]|(?<=1)[01235679]|(?<=2)[01235678]|(?<=4)[7]|(?<=5)[7]|(?<=6)[45]|(?<=7)[5])|(?<=4)[012569]((?<=0)[12]|(?<=1)[02356789]|(?<=2)[01]|(?<=5)[5]|(?<=6)[1]|(?<=9)[9])|(?<=5)[012345678]((?<=0)[15678]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[0125789]|(?<=4)[034789]|(?<=5)[1234678]|(?<=6)[0245679]|(?<=7)[135789]|(?<=8)[0123])|(?<=7)[012345]((?<=0)[1]|(?<=1)[0123458]|(?<=2)[23489]|(?<=3)[0123456]|(?<=4)[0235679]|(?<=5)[023])|(?<=8)[023]((?<=0)[1]|(?<=2)[01345789]|(?<=3)[012])|(?<=9)[034]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[0123]))|(?<=8)[01234]((?<=0)[012345678]((?<=0)[12345789]|(?<=1)[12]|(?<=2)[0123456789]|(?<=3)[0489]|(?<=4)[0123456789]|(?<=5)[12356]|(?<=6)[135]|(?<=7)[2]|(?<=8)[1])|(?<=1)[0123]((?<=0)[13]|(?<=1)[2345689]|(?<=2)[01456]|(?<=3)[02456])|(?<=2)[0123456]((?<=0)[13]|(?<=1)[0]|(?<=2)[0]|(?<=3)[012]|(?<=4)[024]|(?<=5)[023456]|(?<=6)[0234578])|(?<=3)[012345]((?<=0)[1]|(?<=1)[0124678]|(?<=2)[1345]|(?<=3)[06789]|(?<=4)[0123456789]|(?<=5)[012345])|(?<=4)[0123]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[12467]|(?<=3)[014569]))|(?<=9)[0134578]((?<=0)[012345678]((?<=0)[1234578]|(?<=1)[012345789]|(?<=2)[0125679]|(?<=3)[01249]|(?<=4)[023456789]|(?<=5)[24]|(?<=6)[01]|(?<=7)[04]|(?<=8)[1456])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[035789]|(?<=2)[0123489]|(?<=3)[014589]|(?<=4)[123456789]|(?<=5)[68]|(?<=6)[169]|(?<=7)[89]|(?<=8)[3]|(?<=9)[1])|(?<=3)[01]((?<=0)[1]|(?<=1)[01456789])|(?<=4)[01234569]((?<=0)[2345689]|(?<=1)[01234589]|(?<=2)[0123456789]|(?<=3)[01346789]|(?<=4)[012456789]|(?<=5)[01]|(?<=6)[0]|(?<=9)[6])|(?<=5)[0125]((?<=0)[123689]|(?<=1)[0129]|(?<=2)[13]|(?<=5)[7])|(?<=7)[0]((?<=0)[13456])|(?<=8)[01238]((?<=0)[1]|(?<=1)[5]|(?<=2)[0123568]|(?<=3)[012345]|(?<=8)[3])))|(?<=9)[0123456789]((?<=0)[02345678]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[26789]|(?<=6)[123456789]|(?<=7)[1379]|(?<=8)[9]|(?<=9)[45])|(?<=2)[0123456789]((?<=0)[1]|(?<=1)[012]|(?<=2)[012]|(?<=3)[02]|(?<=4)[0125789]|(?<=5)[045]|(?<=6)[02356]|(?<=7)[024578]|(?<=8)[0]|(?<=9)[0123])|(?<=3)[0]((?<=0)[12345])|(?<=4)[0]((?<=0)[12345])|(?<=5)[0]((?<=0)[123456])|(?<=6)[02345678]((?<=0)[123456]|(?<=2)[013]|(?<=3)[0189]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=7)[012345]((?<=0)[1346]|(?<=1)[023567]|(?<=2)[03]|(?<=3)[12]|(?<=4)[0234567]|(?<=5)[5])|(?<=8)[01234]((?<=0)[2345678]|(?<=1)[0345]|(?<=2)[2]|(?<=3)[1]|(?<=4)[0]))|(?<=1)[0123456789]((?<=0)[01234]((?<=0)[1678]|(?<=1)[016]|(?<=2)[04]|(?<=3)[0]|(?<=4)[026])|(?<=1)[02]((?<=0)[1345678]|(?<=2)[5])|(?<=2)[01]((?<=0)[12345678]|(?<=1)[04])|(?<=3)[0123456789]((?<=0)[123467]|(?<=1)[16]|(?<=2)[01456]|(?<=3)[015]|(?<=4)[02345]|(?<=5)[012456]|(?<=6)[01247]|(?<=7)[17]|(?<=8)[147]|(?<=9)[0])|(?<=4)[0123]((?<=0)[12356]|(?<=1)[1]|(?<=2)[3]|(?<=3)[6])|(?<=5)[0]((?<=0)[12456])|(?<=6)[0]((?<=0)[1245678])|(?<=7)[0123456789]((?<=0)[12689]|(?<=1)[01]|(?<=2)[234]|(?<=3)[012379]|(?<=4)[014568]|(?<=5)[02459]|(?<=6)[12345678]|(?<=7)[0356]|(?<=8)[0469]|(?<=9)[012])|(?<=8)[0]((?<=0)[13])|(?<=9)[01345678]((?<=0)[1256]|(?<=1)[0134567]|(?<=3)[1245]|(?<=4)[1258]|(?<=5)[0]|(?<=6)[23]|(?<=7)[78]|(?<=8)[0]))|(?<=2)[012345678]((?<=0)[0123456789]((?<=0)[34789]|(?<=1)[0149]|(?<=2)[01456789]|(?<=3)[67]|(?<=4)[0]|(?<=5)[456789]|(?<=6)[0145679]|(?<=7)[0158]|(?<=8)[12346]|(?<=9)[1236])|(?<=1)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[012346789]|(?<=3)[0124569]|(?<=4)[057]|(?<=5)[45]|(?<=6)[1]|(?<=7)[39]|(?<=8)[2])|(?<=2)[012345678]((?<=0)[13]|(?<=1)[01]|(?<=2)[02357]|(?<=3)[013469]|(?<=4)[01239]|(?<=5)[012346789]|(?<=6)[024678]|(?<=7)[0345678]|(?<=8)[012345])|(?<=3)[0123456789]((?<=0)[145789]|(?<=1)[0134567]|(?<=2)[0124578]|(?<=3)[2356789]|(?<=4)[124567]|(?<=5)[024689]|(?<=6)[34589]|(?<=7)[1234678]|(?<=8)[24569]|(?<=9)[1245789])|(?<=4)[01]((?<=0)[14578]|(?<=1)[015])|(?<=5)[0123456789]((?<=0)[13456789]|(?<=1)[8]|(?<=2)[1]|(?<=3)[0269]|(?<=4)[34589]|(?<=5)[1357]|(?<=6)[1237]|(?<=7)[01]|(?<=8)[234567]|(?<=9)[01256])|(?<=6)[0123456789]((?<=0)[2346]|(?<=1)[02478]|(?<=2)[045679]|(?<=3)[07]|(?<=4)[6789]|(?<=5)[13567]|(?<=6)[0123]|(?<=7)[2356789]|(?<=8)[38]|(?<=9)[1247])|(?<=7)[08]((?<=0)[1345678]|(?<=8)[02])|(?<=8)[0234678]((?<=0)[1245678]|(?<=2)[13]|(?<=3)[1235]|(?<=4)[01345]|(?<=6)[0156789]|(?<=7)[09]|(?<=8)[012367]))|(?<=3)[012345679]((?<=0)[012346]((?<=0)[134]|(?<=1)[0235]|(?<=2)[123]|(?<=3)[0356]|(?<=4)[0123]|(?<=6)[034567])|(?<=1)[01]((?<=0)[135689]|(?<=1)[017])|(?<=2)[0123456789]((?<=0)[12345678]|(?<=1)[02589]|(?<=2)[01234567]|(?<=3)[045789]|(?<=4)[012345679]|(?<=5)[01245678]|(?<=6)[01235678]|(?<=7)[012467]|(?<=8)[03567]|(?<=9)[12])|(?<=3)[01]((?<=0)[1456789]|(?<=1)[1234])|(?<=4)[0123456]((?<=0)[125789]|(?<=1)[0]|(?<=2)[0246789]|(?<=3)[023467]|(?<=4)[0124569]|(?<=5)[0123458]|(?<=6)[0135])|(?<=5)[012345689]((?<=0)[15]|(?<=1)[02346789]|(?<=2)[2346789]|(?<=3)[012456]|(?<=4)[134569]|(?<=5)[0123458]|(?<=6)[0123]|(?<=8)[1]|(?<=9)[1])|(?<=6)[01234567]((?<=0)[12345689]|(?<=1)[01245689]|(?<=2)[012345678]|(?<=3)[01345678]|(?<=4)[01345678]|(?<=5)[0123467]|(?<=6)[02456789]|(?<=7)[035])|(?<=7)[01234]((?<=0)[123456]|(?<=1)[01]|(?<=2)[01235678]|(?<=3)[07]|(?<=4)[01])|(?<=9)[023456]((?<=0)[15678]|(?<=2)[01345678]|(?<=3)[023]|(?<=4)[034]|(?<=5)[0345]|(?<=6)[02]))|(?<=4)[013456789]((?<=0)[01234678]((?<=0)[25]|(?<=1)[04589]|(?<=2)[0124578]|(?<=3)[078]|(?<=4)[0134]|(?<=6)[012356]|(?<=7)[04]|(?<=8)[05679])|(?<=1)[012358]((?<=0)[2345789]|(?<=1)[01245678]|(?<=2)[1234789]|(?<=3)[01234]|(?<=5)[8]|(?<=8)[8])|(?<=3)[0]((?<=0)[13456])|(?<=4)[0]((?<=0)[1234])|(?<=5)[0123456789]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[013568]|(?<=3)[01345689]|(?<=4)[12456789]|(?<=5)[01235689]|(?<=6)[0123456789]|(?<=7)[123456789]|(?<=8)[02356789]|(?<=9)[01256789])|(?<=6)[012]((?<=0)[12356789]|(?<=1)[012389]|(?<=2)[1])|(?<=7)[012]((?<=0)[23456789]|(?<=1)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0234567]((?<=0)[134]|(?<=2)[0234589]|(?<=3)[013789]|(?<=4)[015679]|(?<=5)[012467]|(?<=6)[0345]|(?<=7)[0123]))|(?<=5)[0123456789]((?<=0)[01234567]((?<=0)[2345678]|(?<=1)[0234789]|(?<=2)[03]|(?<=3)[023579]|(?<=4)[1356]|(?<=5)[0134]|(?<=6)[02456]|(?<=7)[0356])|(?<=1)[1234]((?<=1)[01236789]|(?<=2)[0123456789]|(?<=3)[012345689]|(?<=4)[08])|(?<=2)[012345]((?<=0)[2345679]|(?<=1)[01259]|(?<=2)[012345678]|(?<=3)[012367]|(?<=4)[0256789]|(?<=5)[1234578])|(?<=3)[0123456789]((?<=0)[1345679]|(?<=1)[012356789]|(?<=2)[0123456789]|(?<=3)[0345678]|(?<=4)[01568]|(?<=5)[0145678]|(?<=6)[013456789]|(?<=7)[0245679]|(?<=8)[02356789]|(?<=9)[1])|(?<=4)[0123456789]((?<=0)[134579]|(?<=1)[02579]|(?<=2)[012356789]|(?<=3)[0125679]|(?<=4)[12345689]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[0126]|(?<=8)[02568]|(?<=9)[02347])|(?<=5)[0123456789]((?<=0)[13]|(?<=1)[149]|(?<=2)[145678]|(?<=3)[1678]|(?<=4)[02356789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[013]|(?<=8)[579]|(?<=9)[5])|(?<=6)[0123456789]((?<=0)[12345678]|(?<=1)[02345689]|(?<=2)[013456789]|(?<=3)[0123456789]|(?<=4)[012568]|(?<=5)[0123589]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345789])|(?<=7)[01234567]((?<=0)[139]|(?<=1)[3457]|(?<=2)[01268]|(?<=3)[56]|(?<=4)[267]|(?<=5)[78]|(?<=6)[25]|(?<=7)[6])|(?<=8)[12346]((?<=1)[1456789]|(?<=2)[0123456789]|(?<=3)[01234578]|(?<=4)[123]|(?<=6)[4])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[023456789]|(?<=2)[0235689]|(?<=3)[02456789]|(?<=4)[123456789]|(?<=5)[013456789]|(?<=6)[01235689]|(?<=7)[012345789]|(?<=8)[1234678]|(?<=9)[13]))|(?<=6)[01789]((?<=0)[0123456789]((?<=0)[1236789]|(?<=1)[01345679]|(?<=2)[012345789]|(?<=3)[12345789]|(?<=4)[014678]|(?<=5)[012456789]|(?<=6)[12345789]|(?<=7)[134568]|(?<=8)[045678]|(?<=9)[0123467])|(?<=1)[0123456]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0234567]|(?<=4)[0123568]|(?<=5)[05]|(?<=6)[1])|(?<=7)[0123456789]((?<=0)[1345678]|(?<=1)[0234679]|(?<=2)[0256789]|(?<=3)[012478]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[012345689]|(?<=7)[012346789]|(?<=8)[0123569]|(?<=9)[01235679])|(?<=8)[12456]((?<=1)[3456789]|(?<=2)[01256]|(?<=4)[8]|(?<=5)[03789]|(?<=6)[03])|(?<=9)[125]((?<=1)[03567]|(?<=2)[89]|(?<=5)[012]))|(?<=7)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[13456789]|(?<=2)[012346789]|(?<=3)[012345789]|(?<=4)[012589]|(?<=5)[01345678]|(?<=6)[0234578]|(?<=7)[018]|(?<=8)[069])|(?<=1)[01234]((?<=0)[1236789]|(?<=1)[0123456789]|(?<=2)[1234578]|(?<=3)[012345678]|(?<=4)[01456789])|(?<=2)[012356]((?<=0)[12345689]|(?<=1)[0123456789]|(?<=2)[01234579]|(?<=3)[012369]|(?<=5)[8]|(?<=6)[67])|(?<=3)[0123456789]((?<=0)[123456]|(?<=1)[07]|(?<=2)[1245679]|(?<=3)[013568]|(?<=4)[12345678]|(?<=5)[012578]|(?<=6)[012456789]|(?<=7)[01345678]|(?<=8)[01345689]|(?<=9)[01246])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[012345679]|(?<=2)[03469]|(?<=3)[012456789]|(?<=4)[12346789]|(?<=5)[0123456789]|(?<=6)[1235679]|(?<=7)[0136789]|(?<=8)[0146789]|(?<=9)[023456789])|(?<=5)[0234]((?<=0)[1234]|(?<=2)[0234567]|(?<=3)[012456789]|(?<=4)[0134])|(?<=6)[0234]((?<=0)[134]|(?<=2)[01234567]|(?<=3)[023456789]|(?<=4)[01])|(?<=7)[0123456]((?<=0)[12379]|(?<=1)[012]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[1]|(?<=5)[01234689]|(?<=6)[01])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[0234789]|(?<=2)[0345678]|(?<=3)[03456789]|(?<=4)[01234568]|(?<=5)[0679]|(?<=6)[245789]|(?<=7)[034567]|(?<=8)[023456])|(?<=9)[012]((?<=0)[123456789]|(?<=1)[013478]|(?<=2)[0]))|(?<=8)[012345689]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[01249]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[02357]|(?<=5)[012356789]|(?<=6)[58]|(?<=7)[02457]|(?<=8)[7]|(?<=9)[2])|(?<=1)[0123456789]((?<=0)[123456789]|(?<=1)[0256789]|(?<=2)[1256]|(?<=3)[346]|(?<=4)[468]|(?<=5)[458]|(?<=6)[468]|(?<=7)[478]|(?<=8)[8]|(?<=9)[589])|(?<=2)[023456789]((?<=0)[13478]|(?<=2)[01234569]|(?<=3)[02356789]|(?<=4)[01345789]|(?<=5)[01235678]|(?<=6)[0123467]|(?<=7)[0123456789]|(?<=8)[0123468]|(?<=9)[024567])|(?<=3)[0123456789]((?<=0)[345]|(?<=1)[01245]|(?<=2)[01356789]|(?<=3)[012356789]|(?<=4)[02569]|(?<=5)[013456789]|(?<=6)[012345678]|(?<=7)[01234567]|(?<=8)[0123578]|(?<=9)[01246])|(?<=4)[0123469]((?<=0)[23456789]|(?<=1)[68]|(?<=2)[124]|(?<=3)[0389]|(?<=4)[34567]|(?<=6)[567]|(?<=9)[89])|(?<=5)[0123456789]((?<=0)[12356]|(?<=1)[236]|(?<=2)[04678]|(?<=3)[012356789]|(?<=4)[124678]|(?<=5)[0256789]|(?<=6)[02345689]|(?<=7)[0125679]|(?<=8)[0123456789]|(?<=9)[0123567])|(?<=6)[012345678]((?<=0)[12345679]|(?<=1)[01234679]|(?<=2)[01345689]|(?<=3)[12589]|(?<=4)[012345789]|(?<=5)[01]|(?<=6)[012345]|(?<=7)[012345]|(?<=8)[23456])|(?<=8)[0123456]((?<=0)[12]|(?<=1)[12345679]|(?<=2)[12346789]|(?<=3)[0123467]|(?<=4)[013456789]|(?<=5)[012356789]|(?<=6)[02])|(?<=9)[02345]((?<=0)[1238]|(?<=2)[12356]|(?<=3)[023456789]|(?<=4)[01234678]|(?<=5)[0123]))|(?<=9)[0123456789]((?<=0)[01234]((?<=0)[1345689]|(?<=1)[12346789]|(?<=2)[01235679]|(?<=3)[01234679]|(?<=4)[0])|(?<=1)[012345678]((?<=0)[12359]|(?<=1)[013456789]|(?<=2)[12345689]|(?<=3)[013456789]|(?<=4)[01346789]|(?<=5)[0123456789]|(?<=6)[013679]|(?<=7)[013469]|(?<=8)[015])|(?<=2)[0125]((?<=0)[12345678]|(?<=1)[2678]|(?<=2)[34]|(?<=5)[18])|(?<=3)[0234567]((?<=0)[1]|(?<=2)[01234689]|(?<=3)[035678]|(?<=4)[13456789]|(?<=5)[0234679]|(?<=6)[0123]|(?<=7)[1])|(?<=4)[0]((?<=0)[123])|(?<=5)[013456789]((?<=0)[12345678]|(?<=1)[356789]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0123456789]|(?<=6)[13456789]|(?<=7)[123456789]|(?<=8)[01356789]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[23456789]|(?<=1)[012345]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[012345])|(?<=7)[0123456789]((?<=0)[12345679]|(?<=1)[24]|(?<=2)[012345679]|(?<=3)[02346789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012345678]|(?<=8)[012345689]|(?<=9)[01])|(?<=8)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[02356]|(?<=4)[01]|(?<=5)[0])|(?<=9)[012]((?<=0)[13]|(?<=1)[89]|(?<=2)[1235679])))))$") + US: new RegExp("^([0123456789]((?<=0)[012345678]((?<=0)[6789]((?<=6)[0123456789]((?<=0)[1236]|(?<=1)[01267]|(?<=2)[2347]|(?<=3)[1678]|(?<=4)[167]|(?<=5)[02369]|(?<=6)[02479]|(?<=7)[04678]|(?<=8)[023578]|(?<=9)[02348])|(?<=7)[0123456789]((?<=0)[3457]|(?<=1)[456789]|(?<=2)[035789]|(?<=3)[015689]|(?<=4)[015]|(?<=5)[147]|(?<=6)[5679]|(?<=7)[123578]|(?<=8)[02346]|(?<=9)[145])|(?<=8)[02345]((?<=0)[2]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01])|(?<=9)[012345678]((?<=0)[1679]|(?<=1)[123578]|(?<=2)[0134567]|(?<=3)[4]|(?<=4)[9]|(?<=5)[0123679]|(?<=6)[0125689]|(?<=7)[169]|(?<=8)[2357]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[0123]|(?<=2)[026789]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[03467]|(?<=6)[023689]|(?<=7)[01234579]|(?<=8)[01234589]|(?<=9)[2345678])|(?<=1)[01245]((?<=0)[3456789]|(?<=1)[89]|(?<=2)[89]|(?<=4)[4]|(?<=5)[1])|(?<=2)[0234567]((?<=0)[1]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[023457]|(?<=5)[3456789]|(?<=6)[02467]|(?<=7)[0])|(?<=3)[0345678]((?<=0)[1]|(?<=3)[01789]|(?<=4)[01234679]|(?<=5)[0145]|(?<=6)[04678]|(?<=7)[035689]|(?<=8)[0])|(?<=4)[234567]((?<=2)[0]|(?<=3)[012468]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[023489]|(?<=7)[345])|(?<=5)[0123456789]((?<=0)[134567]|(?<=1)[05689]|(?<=2)[01234579]|(?<=3)[124567]|(?<=4)[01235]|(?<=5)[0]|(?<=6)[0124689]|(?<=7)[01]|(?<=8)[1358]|(?<=9)[0])|(?<=6)[01]((?<=0)[23456789]|(?<=1)[012])|(?<=7)[01234567]((?<=0)[12]|(?<=1)[89]|(?<=2)[01]|(?<=3)[01]|(?<=4)[01256789]|(?<=5)[2467]|(?<=6)[0]|(?<=7)[023568])|(?<=8)[0123456789]((?<=0)[13]|(?<=1)[0]|(?<=2)[1467]|(?<=3)[02345]|(?<=4)[01345]|(?<=5)[0124]|(?<=6)[02347]|(?<=7)[69]|(?<=8)[067]|(?<=9)[0])|(?<=9)[012345678]((?<=0)[1245678]|(?<=1)[35]|(?<=2)[1239]|(?<=3)[078]|(?<=4)[0459]|(?<=5)[012]|(?<=6)[0569]|(?<=7)[0]|(?<=8)[2345]))|(?<=2)[0123456789]((?<=0)[123456789]((?<=1)[9]|(?<=2)[156]|(?<=3)[0258]|(?<=4)[3578]|(?<=5)[02346]|(?<=6)[1267]|(?<=7)[12]|(?<=8)[1]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[89]|(?<=1)[01345689]|(?<=2)[012456789]|(?<=3)[012345689]|(?<=4)[01234589]|(?<=5)[0125]|(?<=6)[39]|(?<=7)[016]|(?<=8)[04689]|(?<=9)[019])|(?<=2)[01]((?<=0)[35]|(?<=1)[05])|(?<=3)[02345678]((?<=0)[12]|(?<=2)[245]|(?<=3)[02389]|(?<=4)[1367]|(?<=5)[01679]|(?<=6)[04678]|(?<=7)[059]|(?<=8)[2])|(?<=4)[2456789]((?<=2)[01]|(?<=4)[56]|(?<=5)[123789]|(?<=6)[01245678]|(?<=7)[2468]|(?<=8)[12]|(?<=9)[234])|(?<=5)[345678]((?<=3)[2456789]|(?<=4)[023]|(?<=5)[346789]|(?<=6)[12348]|(?<=7)[156]|(?<=8)[4])|(?<=6)[034567]((?<=0)[1]|(?<=3)[01235789]|(?<=4)[123456789]|(?<=5)[023579]|(?<=6)[034678]|(?<=7)[01235])|(?<=7)[012346789]((?<=0)[23]|(?<=1)[35789]|(?<=2)[013456]|(?<=3)[89]|(?<=4)[0345678]|(?<=6)[0234679]|(?<=7)[0179]|(?<=8)[0]|(?<=9)[01])|(?<=8)[0123456789]((?<=0)[246789]|(?<=1)[2345678]|(?<=2)[23456789]|(?<=3)[012356789]|(?<=4)[012]|(?<=5)[2789]|(?<=6)[01345]|(?<=7)[12345689]|(?<=8)[125689]|(?<=9)[1234568])|(?<=9)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[01]))|(?<=3)[0123456789]((?<=0)[345678]((?<=3)[1234678]|(?<=4)[23456789]|(?<=5)[123457]|(?<=6)[0234]|(?<=7)[01679]|(?<=8)[2467])|(?<=1)[01]((?<=0)[123469]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[5678]|(?<=2)[012345679]|(?<=3)[0134578]|(?<=4)[01234569]|(?<=5)[13456789]|(?<=6)[01234689]|(?<=7)[35689]|(?<=8)[012457]|(?<=9)[013])|(?<=3)[0]((?<=0)[1347])|(?<=4)[34567]((?<=3)[1]|(?<=4)[0123456789]|(?<=5)[0125678]|(?<=6)[124567]|(?<=7)[0])|(?<=5)[6789]((?<=6)[1]|(?<=7)[04569]|(?<=8)[01234568]|(?<=9)[023578])|(?<=6)[0]((?<=0)[12345789])|(?<=7)[45678]((?<=4)[01358]|(?<=5)[01235]|(?<=6)[568]|(?<=7)[013479]|(?<=8)[01245])|(?<=8)[0123456789]((?<=0)[19]|(?<=1)[012346789]|(?<=2)[034567]|(?<=3)[02356789]|(?<=4)[012456789]|(?<=5)[012345678]|(?<=6)[01245789]|(?<=7)[0123458]|(?<=8)[234567]|(?<=9)[047])|(?<=9)[01]((?<=0)[123456789]|(?<=1)[01]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[1235689]|(?<=1)[01579]|(?<=2)[012479]|(?<=3)[02789]|(?<=4)[01236789]|(?<=5)[01567]|(?<=6)[1234689]|(?<=7)[123469]|(?<=8)[345678]|(?<=9)[0123567])|(?<=1)[01]((?<=0)[12356789]|(?<=1)[0])|(?<=2)[123456789]((?<=1)[0679]|(?<=2)[012467]|(?<=3)[146789]|(?<=4)[0]|(?<=5)[023456789]|(?<=6)[013578]|(?<=7)[01456]|(?<=8)[01245679]|(?<=9)[024])|(?<=3)[3456]((?<=3)[0]|(?<=4)[12456789]|(?<=5)[012345789]|(?<=6)[034])|(?<=4)[0123456789]((?<=0)[168]|(?<=1)[0123456789]|(?<=2)[1246789]|(?<=3)[01458]|(?<=4)[123489]|(?<=5)[01345679]|(?<=6)[0123489]|(?<=7)[12345689]|(?<=8)[15789]|(?<=9)[0123567])|(?<=5)[34567]((?<=3)[05789]|(?<=4)[13478]|(?<=5)[134568]|(?<=6)[2348]|(?<=7)[012345689])|(?<=6)[0123456789]((?<=0)[5679]|(?<=1)[1234679]|(?<=2)[2345678]|(?<=3)[0145]|(?<=4)[0235689]|(?<=5)[0234578]|(?<=6)[0246789]|(?<=7)[1345679]|(?<=8)[013456]|(?<=9)[134])|(?<=7)[345678]((?<=3)[02345679]|(?<=4)[023567]|(?<=5)[0678]|(?<=6)[012345689]|(?<=7)[234679]|(?<=8)[013567])|(?<=8)[456]((?<=4)[13789]|(?<=5)[12345689]|(?<=6)[01234])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[012578]|(?<=2)[0123456789]|(?<=3)[026789]|(?<=4)[01234579]|(?<=5)[01235678]|(?<=6)[1345679]|(?<=7)[01345689]|(?<=8)[123456789]|(?<=9)[2]))|(?<=5)[012346789]((?<=0)[03456789]((?<=0)[19]|(?<=3)[0123456789]|(?<=4)[0123568]|(?<=5)[01235689]|(?<=6)[0125789]|(?<=7)[01235679]|(?<=8)[134689]|(?<=9)[1])|(?<=1)[0456]((?<=0)[1]|(?<=4)[123689]|(?<=5)[01234568]|(?<=6)[1])|(?<=2)[056]((?<=0)[1]|(?<=5)[0123457]|(?<=6)[012])|(?<=3)[0456]((?<=0)[1]|(?<=4)[0123456]|(?<=5)[012345689]|(?<=6)[0123])|(?<=4)[03456789]((?<=0)[13458]|(?<=3)[9]|(?<=4)[012345678]|(?<=5)[02456789]|(?<=6)[123458]|(?<=7)[1234678]|(?<=8)[12356789]|(?<=9)[1245])|(?<=6)[045678]((?<=0)[2]|(?<=4)[01789]|(?<=5)[01234568]|(?<=6)[0134679]|(?<=7)[023456789]|(?<=8)[012])|(?<=7)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[234678]|(?<=5)[13789]|(?<=6)[0123456789]|(?<=7)[02345678])|(?<=8)[1234567]((?<=1)[9]|(?<=2)[012456789]|(?<=3)[023679]|(?<=4)[0123567]|(?<=5)[0135789]|(?<=6)[02678]|(?<=7)[12345])|(?<=9)[0]((?<=0)[1234567]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[12]|(?<=1)[03689]|(?<=2)[01234679]|(?<=3)[123579]|(?<=4)[023]|(?<=5)[123789]|(?<=6)[012356789]|(?<=7)[01234689]|(?<=8)[0124589]|(?<=9)[0123568])|(?<=1)[012]((?<=0)[356789]|(?<=1)[0124789]|(?<=2)[0])|(?<=2)[2345678]((?<=2)[6]|(?<=3)[1245789]|(?<=4)[123789]|(?<=5)[045689]|(?<=6)[0234689]|(?<=7)[789]|(?<=8)[012])|(?<=3)[23456789]((?<=2)[0]|(?<=3)[012345689]|(?<=4)[0]|(?<=5)[0134579]|(?<=6)[05]|(?<=7)[013456789]|(?<=8)[024579]|(?<=9)[0])|(?<=4)[0123456789]((?<=0)[1359]|(?<=1)[023456789]|(?<=2)[02346]|(?<=3)[789]|(?<=4)[12347]|(?<=5)[015679]|(?<=6)[01789]|(?<=7)[01235789]|(?<=8)[0123489]|(?<=9)[28])|(?<=5)[12]((?<=1)[0123456789]|(?<=2)[45])|(?<=6)[01]((?<=0)[45678]|(?<=1)[01245])|(?<=7)[0156789]((?<=0)[24568]|(?<=1)[026]|(?<=5)[0123456789]|(?<=6)[23]|(?<=7)[06789]|(?<=8)[234567]|(?<=9)[0134568])|(?<=8)[012345789]((?<=0)[147]|(?<=1)[012]|(?<=2)[045]|(?<=3)[01]|(?<=4)[0]|(?<=5)[01345]|(?<=7)[078]|(?<=8)[03]|(?<=9)[067])|(?<=9)[0]((?<=0)[123567]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[12345689]|(?<=1)[01234678]|(?<=2)[012346789]|(?<=3)[01234569]|(?<=4)[01234567]|(?<=5)[0245789]|(?<=6)[023456789]|(?<=7)[0123456789]|(?<=8)[0123678]|(?<=9)[02345])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0124])|(?<=2)[0]((?<=0)[1234568])|(?<=3)[01]((?<=0)[24567]|(?<=1)[01])|(?<=4)[012345678]((?<=0)[1357]|(?<=1)[06789]|(?<=2)[01234]|(?<=3)[025689]|(?<=4)[0246]|(?<=5)[02678]|(?<=6)[01235]|(?<=7)[0]|(?<=8)[01])|(?<=5)[012]((?<=0)[1234568]|(?<=1)[234]|(?<=2)[24])|(?<=6)[0234567]((?<=0)[1345678]|(?<=2)[014678]|(?<=3)[012]|(?<=4)[0123456789]|(?<=5)[0267]|(?<=6)[01236]|(?<=7)[0567])|(?<=7)[0123456]((?<=0)[1234]|(?<=1)[126789]|(?<=2)[01234678]|(?<=3)[012345789]|(?<=4)[0678]|(?<=5)[0135678]|(?<=6)[024])|(?<=8)[02345678]((?<=0)[13]|(?<=2)[01235678]|(?<=3)[0123468]|(?<=4)[02346789]|(?<=5)[012367]|(?<=6)[03569]|(?<=7)[01468]|(?<=8)[0125])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[0124678]|(?<=3)[01234569]|(?<=4)[056]|(?<=5)[0]|(?<=6)[01]|(?<=7)[04679]|(?<=8)[01]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0124569]|(?<=2)[01236789]|(?<=3)[0123456789]|(?<=4)[1235689]|(?<=5)[012345679]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[013456789]|(?<=9)[012345678])|(?<=1)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=2)[01234567]((?<=0)[12345]|(?<=1)[0257]|(?<=2)[13456]|(?<=3)[024]|(?<=4)[012345678]|(?<=5)[1]|(?<=6)[0]|(?<=7)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01246789]|(?<=2)[012346789]|(?<=3)[02]|(?<=4)[01345689]|(?<=5)[023]|(?<=6)[01])|(?<=4)[0]((?<=0)[1236])|(?<=5)[0123456]((?<=0)[125]|(?<=1)[012458]|(?<=2)[0578]|(?<=3)[03456]|(?<=4)[024]|(?<=5)[0134589]|(?<=6)[012])|(?<=6)[012349]((?<=0)[89]|(?<=1)[0189]|(?<=2)[089]|(?<=3)[8]|(?<=4)[018]|(?<=9)[01])|(?<=7)[02345]((?<=0)[1]|(?<=2)[01234]|(?<=3)[01234568]|(?<=4)[012]|(?<=5)[01235789])|(?<=8)[0123456789]((?<=0)[124579]|(?<=1)[0267]|(?<=2)[0123456789]|(?<=3)[0123567]|(?<=4)[0468]|(?<=5)[0234789]|(?<=6)[13579]|(?<=7)[2369]|(?<=8)[024679]|(?<=9)[0])|(?<=9)[0]((?<=0)[124])))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[0123467]((?<=0)[12345679]|(?<=1)[012346789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[04]|(?<=6)[59]|(?<=7)[5])|(?<=1)[0125679]((?<=0)[3]|(?<=1)[01259]|(?<=2)[8]|(?<=5)[234]|(?<=6)[25789]|(?<=7)[012347]|(?<=9)[9])|(?<=2)[78]((?<=7)[189]|(?<=8)[02])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[0124])|(?<=4)[567]((?<=5)[123456789]|(?<=6)[0123456789]|(?<=7)[012345])|(?<=5)[0123456789]((?<=0)[12345679]|(?<=1)[01246789]|(?<=2)[0234678]|(?<=3)[0235678]|(?<=4)[012356789]|(?<=5)[023]|(?<=6)[0267]|(?<=7)[036789]|(?<=8)[0389]|(?<=9)[0145678])|(?<=6)[0]((?<=0)[134567])|(?<=7)[01]((?<=0)[13456789]|(?<=1)[0])|(?<=8)[0]((?<=0)[1345])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[012345678]|(?<=3)[0123]|(?<=4)[01]|(?<=5)[023468]|(?<=6)[0234589]|(?<=7)[0345679]|(?<=8)[03456789]|(?<=9)[023468]))|(?<=1)[0123456789]((?<=0)[0123459]((?<=0)[1345]|(?<=1)[0]|(?<=2)[0134]|(?<=3)[0]|(?<=4)[02]|(?<=5)[0]|(?<=9)[6])|(?<=1)[0]((?<=0)[1234569])|(?<=2)[01234]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[9])|(?<=3)[5678]((?<=5)[456789]|(?<=6)[0123456789]|(?<=7)[012345789]|(?<=8)[5])|(?<=4)[1235]((?<=1)[123456789]|(?<=2)[012346789]|(?<=3)[0234569]|(?<=5)[1])|(?<=5)[0123456789]((?<=0)[179]|(?<=1)[0468]|(?<=2)[0]|(?<=3)[0]|(?<=4)[25789]|(?<=5)[02346789]|(?<=6)[0135689]|(?<=7)[025679]|(?<=8)[01]|(?<=9)[068])|(?<=6)[9]((?<=9)[12347])|(?<=7)[0123456789]((?<=0)[1234569]|(?<=1)[03456789]|(?<=2)[01245679]|(?<=3)[0123589]|(?<=4)[0123679]|(?<=5)[12345678]|(?<=6)[23456789]|(?<=7)[0126789]|(?<=8)[02346789]|(?<=9)[012345678])|(?<=8)[0]((?<=0)[134])|(?<=9)[0345678]((?<=0)[1]|(?<=3)[01234579]|(?<=4)[01246789]|(?<=5)[0123456789]|(?<=6)[01234578]|(?<=7)[01235678]|(?<=8)[0]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[789]|(?<=1)[05789]|(?<=2)[02345789]|(?<=3)[123567]|(?<=4)[0123567]|(?<=5)[12346789]|(?<=6)[0123456789]|(?<=7)[01245678]|(?<=8)[234567]|(?<=9)[02345])|(?<=1)[0123456789]((?<=0)[68]|(?<=1)[05678]|(?<=2)[012345]|(?<=3)[01246789]|(?<=4)[034789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[0234567]|(?<=8)[023456789]|(?<=9)[02345678])|(?<=2)[012]((?<=0)[23456789]|(?<=1)[01]|(?<=2)[26])|(?<=3)[0]((?<=0)[23456789])|(?<=4)[0123456789]((?<=0)[145679]|(?<=1)[012346789]|(?<=2)[01234789]|(?<=3)[012345689]|(?<=4)[01234689]|(?<=5)[0123456789]|(?<=6)[01345689]|(?<=7)[0123457]|(?<=8)[012345679]|(?<=9)[01234568])|(?<=5)[0123456789]((?<=0)[123478]|(?<=1)[2345678]|(?<=2)[0123456789]|(?<=3)[01348]|(?<=4)[023456789]|(?<=5)[03]|(?<=6)[1345679]|(?<=7)[0124578]|(?<=8)[0123569]|(?<=9)[024])|(?<=6)[0]((?<=0)[134])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[9]|(?<=2)[01234569]|(?<=3)[234678]|(?<=4)[012356789]|(?<=5)[012489]|(?<=6)[023456789]|(?<=7)[0156789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13489]|(?<=1)[01245679]|(?<=2)[0123478]|(?<=3)[123456789]|(?<=4)[12345679]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012348]|(?<=8)[34567])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[0123456789]|(?<=2)[012346789]|(?<=3)[02345679]|(?<=4)[123456]|(?<=5)[02356789]|(?<=6)[01245679]|(?<=7)[023456789]|(?<=8)[0135679]|(?<=9)[23678]))|(?<=3)[0123456789]((?<=0)[23456789]((?<=2)[0146789]|(?<=3)[012345679]|(?<=4)[01245]|(?<=5)[12347]|(?<=6)[01235689]|(?<=7)[1234678]|(?<=8)[0123478]|(?<=9)[02])|(?<=1)[0123456]((?<=0)[12348]|(?<=1)[0123456789]|(?<=2)[012346]|(?<=3)[124568]|(?<=4)[012345678]|(?<=5)[23456789]|(?<=6)[0234567])|(?<=2)[01249]((?<=0)[23456789]|(?<=1)[012459]|(?<=2)[4]|(?<=4)[4]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[1234589]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[12345789]|(?<=4)[023568]|(?<=5)[023457]|(?<=6)[0134578])|(?<=4)[0123456789]((?<=0)[2346789]|(?<=1)[0135678]|(?<=2)[01458]|(?<=3)[1356789]|(?<=4)[01]|(?<=5)[0245679]|(?<=6)[01489]|(?<=7)[01235678]|(?<=8)[02345689]|(?<=9)[012345])|(?<=5)[0]((?<=0)[12])|(?<=6)[0123456789]((?<=0)[1235678]|(?<=1)[123456789]|(?<=2)[01234568]|(?<=3)[023456789]|(?<=4)[012356789]|(?<=5)[01245689]|(?<=6)[012456789]|(?<=7)[02345689]|(?<=8)[0123457]|(?<=9)[012345679])|(?<=7)[3456789]((?<=3)[01234689]|(?<=4)[034678]|(?<=5)[01234567]|(?<=6)[0]|(?<=7)[45678]|(?<=8)[0234678]|(?<=9)[0567])|(?<=8)[0123456]((?<=0)[12346789]|(?<=1)[012345]|(?<=2)[0567]|(?<=3)[0234589]|(?<=4)[1234679]|(?<=5)[069]|(?<=6)[012345])|(?<=9)[0]((?<=0)[12345]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[145689]|(?<=1)[123]|(?<=2)[0456789]|(?<=3)[012345679]|(?<=4)[012378]|(?<=5)[12456789]|(?<=6)[012356789]|(?<=7)[025]|(?<=8)[012356]|(?<=9)[1248])|(?<=1)[01234567]((?<=0)[123589]|(?<=1)[123]|(?<=2)[05679]|(?<=3)[01245689]|(?<=4)[135]|(?<=5)[0]|(?<=6)[6789]|(?<=7)[01234])|(?<=2)[0126]((?<=0)[12346789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=6)[01])|(?<=3)[0]((?<=0)[12345])|(?<=4)[12345678]((?<=1)[134568]|(?<=2)[0234578]|(?<=3)[2357]|(?<=4)[15]|(?<=5)[0346]|(?<=6)[2346789]|(?<=7)[01256789]|(?<=8)[0125679])|(?<=5)[0123456789]((?<=0)[24567]|(?<=1)[012345679]|(?<=2)[125679]|(?<=3)[0234679]|(?<=4)[12345689]|(?<=5)[015679]|(?<=6)[01489]|(?<=7)[12]|(?<=8)[05689]|(?<=9)[012])|(?<=6)[0124]((?<=0)[456789]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=4)[2])|(?<=7)[012345678]((?<=0)[16789]|(?<=1)[012456789]|(?<=2)[012346789]|(?<=3)[12356789]|(?<=4)[0123478]|(?<=5)[0234567]|(?<=6)[079]|(?<=7)[0245789]|(?<=8)[1234578])|(?<=8)[0123456789]((?<=0)[123456789]|(?<=1)[023456789]|(?<=2)[01234567]|(?<=3)[06789]|(?<=4)[0123567]|(?<=5)[0345689]|(?<=6)[014579]|(?<=7)[01234789]|(?<=8)[01234569]|(?<=9)[1234578])|(?<=9)[0]((?<=0)[1345]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[1345679]|(?<=1)[0245789]|(?<=2)[01245678]|(?<=3)[0134578]|(?<=4)[2345679]|(?<=5)[012345679]|(?<=6)[012345678]|(?<=7)[1245678]|(?<=8)[123456789]|(?<=9)[0])|(?<=1)[01234]((?<=0)[12468]|(?<=1)[026]|(?<=2)[02369]|(?<=3)[1235679]|(?<=4)[02345678])|(?<=2)[012346789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[23456789]|(?<=4)[13]|(?<=6)[0]|(?<=7)[5]|(?<=8)[2]|(?<=9)[0])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[01234567]|(?<=2)[01234579]|(?<=3)[0123478]|(?<=4)[012456789]|(?<=5)[0123789]|(?<=6)[012345678]|(?<=7)[06789]|(?<=8)[0])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0123679]|(?<=2)[012345789]|(?<=3)[012345678]|(?<=4)[023456789]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[023456789]|(?<=8)[0234689]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[12]|(?<=1)[0]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[0124567]|(?<=5)[01245789]|(?<=6)[012345])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[012356789]|(?<=2)[023456789]|(?<=3)[123456789]|(?<=4)[012467]|(?<=5)[0568]|(?<=6)[0123568]|(?<=7)[0123456789]|(?<=8)[012346789]|(?<=9)[01235678])|(?<=7)[012345678]((?<=0)[15]|(?<=1)[01234567]|(?<=2)[012345789]|(?<=3)[012346789]|(?<=4)[1245678]|(?<=5)[0234679]|(?<=6)[0123457]|(?<=7)[0123456789]|(?<=8)[0134])|(?<=8)[0234567]((?<=0)[1]|(?<=2)[1345789]|(?<=3)[124]|(?<=4)[0156789]|(?<=5)[1367]|(?<=6)[0134568]|(?<=7)[0])|(?<=9)[023456]((?<=0)[124569]|(?<=2)[0123456789]|(?<=3)[0145678]|(?<=4)[02345689]|(?<=5)[12345678]|(?<=6)[0123]))|(?<=6)[0123456789]((?<=0)[023456]((?<=0)[12]|(?<=2)[02345789]|(?<=3)[0345678]|(?<=4)[015689]|(?<=5)[012345679]|(?<=6)[136])|(?<=1)[01234567]((?<=0)[125]|(?<=1)[01234567]|(?<=2)[013457]|(?<=3)[0123467]|(?<=4)[0123568]|(?<=5)[01345679]|(?<=6)[01]|(?<=7)[2])|(?<=2)[0123456]((?<=0)[1]|(?<=1)[0123478]|(?<=2)[0234689]|(?<=3)[0235689]|(?<=4)[0245689]|(?<=5)[0345689]|(?<=6)[023])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[1234679]|(?<=2)[1236789]|(?<=3)[12345]|(?<=4)[01234567]|(?<=5)[01234]|(?<=6)[01245]|(?<=7)[01234])|(?<=4)[012347]((?<=0)[1234567]|(?<=1)[012567]|(?<=2)[01234678]|(?<=3)[034568]|(?<=4)[01234]|(?<=7)[5])|(?<=5)[01456]((?<=0)[123456789]|(?<=1)[01]|(?<=4)[6]|(?<=5)[0]|(?<=6)[3])|(?<=6)[0123456789]((?<=0)[12]|(?<=1)[13679]|(?<=2)[0123457]|(?<=3)[013456789]|(?<=4)[015678]|(?<=5)[01245679]|(?<=6)[12456789]|(?<=7)[012345789]|(?<=8)[0234569]|(?<=9)[123459])|(?<=7)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[0123458]|(?<=4)[0345689]|(?<=5)[0])|(?<=8)[02345678]((?<=0)[123]|(?<=2)[012356789]|(?<=3)[023456789]|(?<=4)[01345789]|(?<=5)[12345689]|(?<=6)[0134568]|(?<=7)[012456789]|(?<=8)[12])|(?<=9)[012345]((?<=0)[1]|(?<=1)[012457]|(?<=2)[012356789]|(?<=3)[02356789]|(?<=4)[0123678]|(?<=5)[0]))|(?<=7)[0123456789]((?<=0)[0123456789]((?<=0)[2345679]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[01345678]|(?<=8)[0124678]|(?<=9)[034789])|(?<=1)[012]((?<=0)[12349]|(?<=1)[0123]|(?<=2)[0])|(?<=2)[01234567]((?<=0)[12]|(?<=1)[01234579]|(?<=2)[01234589]|(?<=3)[2356789]|(?<=4)[0134679]|(?<=5)[0123457]|(?<=6)[012345678]|(?<=7)[1])|(?<=3)[01234567]((?<=0)[1234679]|(?<=1)[13456789]|(?<=2)[01234579]|(?<=3)[19]|(?<=4)[0234579]|(?<=5)[02356]|(?<=6)[01234568]|(?<=7)[012])|(?<=4)[0]((?<=0)[1234678])|(?<=5)[012345678]((?<=0)[12456789]|(?<=1)[26789]|(?<=2)[0279]|(?<=3)[24568]|(?<=4)[0357]|(?<=5)[012457]|(?<=6)[0235689]|(?<=7)[02689]|(?<=8)[124])|(?<=6)[0]((?<=0)[1236])|(?<=7)[0234567]((?<=0)[12]|(?<=2)[0134789]|(?<=3)[0179]|(?<=4)[0245789]|(?<=5)[012468]|(?<=6)[0234589]|(?<=7)[1246789])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[02345]|(?<=2)[0123479]|(?<=3)[024567]|(?<=4)[0124567]|(?<=5)[01356789]|(?<=6)[01245678]|(?<=7)[0268]|(?<=8)[01456789])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[012359]|(?<=3)[0134568]|(?<=4)[1345689]|(?<=5)[123479]|(?<=6)[0134578]|(?<=7)[024689]|(?<=8)[01235]))|(?<=8)[0123456789]((?<=0)[123456789]((?<=1)[1234578]|(?<=2)[0]|(?<=3)[01245678]|(?<=4)[012569]|(?<=5)[12345689]|(?<=6)[2345679]|(?<=7)[012346789]|(?<=8)[0135678]|(?<=9)[12])|(?<=1)[09]((?<=0)[123469]|(?<=9)[5])|(?<=2)[012345]((?<=0)[12]|(?<=1)[0124689]|(?<=2)[0123459]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[02456])|(?<=3)[0234567]((?<=0)[12]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0234679]|(?<=5)[0134567]|(?<=6)[0]|(?<=7)[012])|(?<=4)[01234567]((?<=0)[357]|(?<=1)[134579]|(?<=2)[014568]|(?<=3)[013456789]|(?<=4)[0134567]|(?<=5)[12345678]|(?<=6)[01234569]|(?<=7)[0123])|(?<=5)[01]((?<=0)[345789]|(?<=1)[02789])|(?<=6)[0123456]((?<=0)[23]|(?<=1)[02456789]|(?<=2)[123456789]|(?<=3)[012456]|(?<=4)[01234]|(?<=5)[1567]|(?<=6)[01])|(?<=7)[0]((?<=0)[12456789])|(?<=8)[012345]((?<=0)[1]|(?<=1)[024678]|(?<=2)[012345689]|(?<=3)[012347]|(?<=4)[02345678]|(?<=5)[0134])|(?<=9)[012345678]((?<=0)[12]|(?<=1)[23457]|(?<=2)[013579]|(?<=3)[023568]|(?<=4)[02467]|(?<=5)[0145]|(?<=6)[02469]|(?<=7)[02467]|(?<=8)[0]))|(?<=9)[013456789]((?<=0)[0123456789]((?<=0)[12346789]|(?<=1)[0234578]|(?<=2)[01235679]|(?<=3)[01234568]|(?<=4)[013467]|(?<=5)[0234567]|(?<=6)[013467]|(?<=7)[02345689]|(?<=8)[123567]|(?<=9)[0456])|(?<=1)[012345]((?<=0)[2346789]|(?<=1)[12345689]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[01234])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[012679]|(?<=2)[0]|(?<=3)[035]|(?<=4)[123458]|(?<=5)[0258]|(?<=6)[23579]|(?<=7)[2345]|(?<=8)[023]|(?<=9)[0])|(?<=4)[02345679]((?<=0)[1356]|(?<=2)[2568]|(?<=3)[5678]|(?<=4)[0246]|(?<=5)[3467]|(?<=6)[02458]|(?<=7)[23457]|(?<=9)[02])|(?<=5)[0123456]((?<=0)[1345678]|(?<=1)[01268]|(?<=2)[023569]|(?<=3)[0345689]|(?<=4)[0134579]|(?<=5)[01459]|(?<=6)[02457])|(?<=6)[01]((?<=0)[12456789]|(?<=1)[01])|(?<=7)[0123]((?<=0)[123679]|(?<=1)[01367]|(?<=2)[0]|(?<=3)[0123456])|(?<=8)[01]((?<=0)[123456789]|(?<=1)[0])|(?<=9)[0345678]((?<=0)[124]|(?<=3)[0134689]|(?<=4)[0134567]|(?<=5)[01234568]|(?<=6)[0234678]|(?<=7)[013579]|(?<=8)[0])))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[04]|(?<=3)[267]|(?<=4)[5]|(?<=5)[279]|(?<=6)[4])|(?<=1)[0123456789]((?<=0)[569]|(?<=1)[012579]|(?<=2)[0149]|(?<=3)[02567]|(?<=4)[13478]|(?<=5)[1258]|(?<=6)[4569]|(?<=7)[0156]|(?<=8)[01467]|(?<=9)[01478])|(?<=2)[023456]((?<=0)[4]|(?<=2)[0]|(?<=3)[0]|(?<=4)[05]|(?<=5)[0]|(?<=6)[0])|(?<=3)[1789]((?<=1)[79]|(?<=7)[3]|(?<=8)[8]|(?<=9)[0])|(?<=4)[0123]((?<=0)[8]|(?<=1)[58]|(?<=2)[27]|(?<=3)[1])|(?<=5)[1234569]((?<=1)[05]|(?<=2)[0]|(?<=3)[05]|(?<=4)[02]|(?<=5)[1]|(?<=6)[056]|(?<=9)[1])|(?<=6)[0123456789]((?<=0)[1236789]|(?<=1)[12356789]|(?<=2)[012345689]|(?<=3)[024679]|(?<=4)[056]|(?<=5)[036789]|(?<=6)[01247]|(?<=7)[045678]|(?<=8)[0456789]|(?<=9)[0235])|(?<=7)[0123456789]((?<=0)[15678]|(?<=1)[012456]|(?<=2)[01234]|(?<=3)[23567]|(?<=4)[02345678]|(?<=5)[14589]|(?<=6)[23459]|(?<=7)[01246789]|(?<=8)[12345]|(?<=9)[4])|(?<=8)[13456789]((?<=1)[245678]|(?<=3)[23789]|(?<=4)[12]|(?<=5)[012345]|(?<=6)[01268]|(?<=7)[1246789]|(?<=8)[0269]|(?<=9)[24569])|(?<=9)[01]((?<=0)[123456]|(?<=1)[02]))|(?<=1)[012456789]((?<=0)[0123456789]((?<=0)[159]|(?<=1)[023457]|(?<=2)[389]|(?<=3)[0124567]|(?<=4)[02345678]|(?<=5)[0123467]|(?<=6)[01]|(?<=7)[145678]|(?<=8)[2457]|(?<=9)[03])|(?<=1)[0123456]((?<=0)[2458]|(?<=1)[1347]|(?<=2)[028]|(?<=3)[01236]|(?<=4)[046]|(?<=5)[2345678]|(?<=6)[0123])|(?<=2)[0123458]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0134679]|(?<=4)[04]|(?<=5)[012]|(?<=8)[567])|(?<=4)[0]((?<=0)[12359])|(?<=5)[023456]((?<=0)[2]|(?<=2)[01349]|(?<=3)[012689]|(?<=4)[01235]|(?<=5)[057]|(?<=6)[012])|(?<=6)[01234567]((?<=0)[17]|(?<=1)[02379]|(?<=2)[023456789]|(?<=3)[1245689]|(?<=4)[01345789]|(?<=5)[012345789]|(?<=6)[0123456789]|(?<=7)[12356789])|(?<=7)[0123456789]((?<=0)[12345]|(?<=1)[013456789]|(?<=2)[237]|(?<=3)[3478]|(?<=4)[026]|(?<=5)[045678]|(?<=6)[2679]|(?<=7)[01346789]|(?<=8)[0123478]|(?<=9)[0134578])|(?<=8)[012345679]((?<=0)[14]|(?<=1)[01347]|(?<=2)[12469]|(?<=3)[0578]|(?<=4)[0129]|(?<=5)[0136]|(?<=6)[12345679]|(?<=7)[1245]|(?<=9)[0])|(?<=9)[0123]((?<=0)[1234]|(?<=1)[12345789]|(?<=2)[01]|(?<=3)[0]))|(?<=2)[0123456789]((?<=0)[0123467]((?<=0)[3]|(?<=1)[5]|(?<=2)[567]|(?<=3)[012359]|(?<=4)[12346]|(?<=6)[06]|(?<=7)[9])|(?<=1)[0235789]((?<=0)[12]|(?<=2)[45]|(?<=3)[4]|(?<=5)[0123]|(?<=7)[2]|(?<=8)[012]|(?<=9)[123])|(?<=2)[01]((?<=0)[12345679]|(?<=1)[134])|(?<=3)[01]((?<=0)[123456789]|(?<=1)[01245])|(?<=4)[02345678]((?<=0)[15678]|(?<=2)[7]|(?<=3)[235678]|(?<=4)[38]|(?<=5)[4]|(?<=6)[09]|(?<=7)[236]|(?<=8)[0258])|(?<=5)[012345678]((?<=0)[3489]|(?<=1)[14]|(?<=2)[09]|(?<=3)[4589]|(?<=4)[268]|(?<=5)[1346]|(?<=6)[07]|(?<=7)[268]|(?<=8)[0])|(?<=6)[0123456]((?<=0)[123]|(?<=1)[01]|(?<=2)[03457]|(?<=3)[079]|(?<=4)[0123456]|(?<=5)[024567]|(?<=6)[034])|(?<=7)[01234]((?<=0)[19]|(?<=1)[12345689]|(?<=2)[023456789]|(?<=3)[012345678]|(?<=4)[0123679])|(?<=8)[012345]((?<=0)[127]|(?<=1)[0125]|(?<=2)[0147]|(?<=3)[01245]|(?<=4)[012345679]|(?<=5)[013])|(?<=9)[012345678]((?<=0)[12348]|(?<=1)[1]|(?<=2)[023]|(?<=3)[1256789]|(?<=4)[0236789]|(?<=5)[2789]|(?<=6)[034789]|(?<=7)[12346]|(?<=8)[09]))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[2459]|(?<=1)[15]|(?<=2)[123457]|(?<=3)[02589]|(?<=4)[0357]|(?<=5)[0569]|(?<=6)[01235689]|(?<=7)[012569]|(?<=8)[134569]|(?<=9)[123])|(?<=1)[0123456789]((?<=0)[23689]|(?<=1)[01234679]|(?<=2)[034689]|(?<=3)[089]|(?<=4)[016789]|(?<=5)[036]|(?<=6)[01389]|(?<=7)[3567]|(?<=8)[0158]|(?<=9)[2])|(?<=2)[123589]((?<=1)[9]|(?<=2)[0123456789]|(?<=3)[01345678]|(?<=5)[0]|(?<=8)[4]|(?<=9)[48])|(?<=3)[01234589]((?<=0)[1234678]|(?<=1)[0456]|(?<=2)[012345]|(?<=3)[67]|(?<=4)[7]|(?<=5)[046789]|(?<=8)[9]|(?<=9)[58])|(?<=4)[01234568]((?<=0)[15789]|(?<=1)[0345678]|(?<=2)[012367]|(?<=3)[02345678]|(?<=4)[012]|(?<=5)[12345679]|(?<=6)[0124]|(?<=8)[0678])|(?<=5)[0125]((?<=0)[2345789]|(?<=1)[01378]|(?<=2)[3]|(?<=5)[1])|(?<=6)[05689]((?<=0)[12345678]|(?<=5)[1]|(?<=6)[123456789]|(?<=8)[1]|(?<=9)[01236])|(?<=7)[0]((?<=0)[1234789])|(?<=8)[023456789]((?<=0)[135]|(?<=2)[14789]|(?<=3)[012346789]|(?<=4)[01234567]|(?<=5)[0167]|(?<=6)[0678]|(?<=7)[0245689]|(?<=8)[12345789]|(?<=9)[0134789])|(?<=9)[01234567]((?<=0)[19]|(?<=1)[579]|(?<=2)[012347]|(?<=3)[04678]|(?<=4)[2347]|(?<=5)[024589]|(?<=6)[0234678]|(?<=7)[046]))|(?<=4)[0123456789]((?<=0)[1256789]((?<=1)[123456789]|(?<=2)[02]|(?<=5)[34589]|(?<=6)[0145679]|(?<=7)[0236789]|(?<=8)[23456789]|(?<=9)[01235])|(?<=1)[012345678]((?<=0)[1245]|(?<=1)[2]|(?<=2)[0124789]|(?<=3)[12346789]|(?<=4)[12789]|(?<=5)[013]|(?<=6)[12578]|(?<=7)[14569]|(?<=8)[45])|(?<=2)[0123456789]((?<=0)[12]|(?<=1)[01679]|(?<=2)[014568]|(?<=3)[0679]|(?<=4)[34568]|(?<=5)[0168]|(?<=6)[03569]|(?<=7)[012379]|(?<=8)[0123]|(?<=9)[023])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[2345678]|(?<=3)[03]|(?<=4)[0378]|(?<=5)[0124]|(?<=6)[01368]|(?<=7)[04578]|(?<=8)[012])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[12356]|(?<=2)[126]|(?<=3)[0123579]|(?<=4)[01258]|(?<=5)[0789]|(?<=6)[04579]|(?<=7)[1234679]|(?<=8)[234567])|(?<=5)[0123456789]((?<=0)[1234]|(?<=1)[57]|(?<=2)[01236789]|(?<=3)[014689]|(?<=4)[019]|(?<=5)[01345678]|(?<=6)[23569]|(?<=7)[0124789]|(?<=8)[01689]|(?<=9)[02345789])|(?<=6)[012345]((?<=0)[12345679]|(?<=1)[234]|(?<=2)[02]|(?<=3)[014579]|(?<=4)[169]|(?<=5)[167])|(?<=7)[01234]((?<=0)[1]|(?<=1)[24569]|(?<=2)[469]|(?<=3)[136789]|(?<=4)[07])|(?<=8)[0123456789]((?<=0)[18]|(?<=1)[135678]|(?<=2)[23678]|(?<=3)[01469]|(?<=4)[3456789]|(?<=5)[013457]|(?<=6)[0126789]|(?<=7)[0123489]|(?<=8)[012478]|(?<=9)[2458])|(?<=9)[0123456789]((?<=0)[1]|(?<=1)[0568]|(?<=2)[0457]|(?<=3)[1458]|(?<=4)[13456]|(?<=5)[147]|(?<=6)[236]|(?<=7)[0467]|(?<=8)[13456]|(?<=9)[13]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[235789]|(?<=1)[159]|(?<=2)[12458]|(?<=3)[013569]|(?<=4)[0345789]|(?<=5)[13479]|(?<=6)[012347]|(?<=7)[0156]|(?<=8)[123568]|(?<=9)[03])|(?<=1)[0123456789]((?<=0)[236789]|(?<=1)[01234589]|(?<=2)[13456]|(?<=3)[023469]|(?<=4)[012389]|(?<=5)[2469]|(?<=6)[0124589]|(?<=7)[347]|(?<=8)[013567]|(?<=9)[3])|(?<=2)[01345678]((?<=0)[12345689]|(?<=1)[134]|(?<=3)[1459]|(?<=4)[134578]|(?<=5)[1239]|(?<=6)[01245678]|(?<=7)[0156]|(?<=8)[567])|(?<=3)[0128]((?<=0)[1234569]|(?<=1)[12345]|(?<=2)[0]|(?<=8)[7])|(?<=4)[01234]((?<=0)[1345]|(?<=1)[1349]|(?<=2)[012578]|(?<=3)[012478]|(?<=4)[2346])|(?<=5)[01234567]((?<=0)[12345678]|(?<=1)[012457]|(?<=2)[013469]|(?<=3)[0457]|(?<=4)[01457]|(?<=5)[0579]|(?<=6)[0457]|(?<=7)[013])|(?<=6)[0123456789]((?<=0)[1678]|(?<=1)[127]|(?<=2)[1458]|(?<=3)[0245789]|(?<=4)[4679]|(?<=5)[01234]|(?<=6)[1679]|(?<=7)[012468]|(?<=8)[58]|(?<=9)[0269])|(?<=7)[05]((?<=0)[12345]|(?<=5)[5])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[012378]|(?<=2)[03567]|(?<=3)[12679]|(?<=4)[01345689]|(?<=5)[13457]|(?<=6)[24568]|(?<=7)[0135689]|(?<=8)[02])|(?<=9)[012345678]((?<=0)[124789]|(?<=1)[135678]|(?<=2)[0128]|(?<=3)[268]|(?<=4)[23]|(?<=5)[18]|(?<=6)[269]|(?<=7)[126789]|(?<=8)[14569]))|(?<=6)[012345678]((?<=0)[034567]((?<=0)[3]|(?<=3)[0123456789]|(?<=4)[017]|(?<=5)[05689]|(?<=6)[02]|(?<=7)[045])|(?<=1)[0345678]((?<=0)[145]|(?<=3)[34678]|(?<=4)[1236789]|(?<=5)[01259]|(?<=6)[012479]|(?<=7)[058]|(?<=8)[0147])|(?<=2)[0123456789]((?<=0)[1235689]|(?<=1)[0578]|(?<=2)[248]|(?<=3)[04678]|(?<=4)[1]|(?<=5)[03479]|(?<=6)[01346789]|(?<=7)[013568]|(?<=8)[0235789]|(?<=9)[123468])|(?<=3)[02345678]((?<=0)[1]|(?<=2)[01357]|(?<=3)[05789]|(?<=4)[236789]|(?<=5)[14]|(?<=6)[1269]|(?<=7)[24678]|(?<=8)[456])|(?<=4)[0123456]((?<=0)[458]|(?<=1)[012569]|(?<=2)[12456]|(?<=3)[015678]|(?<=4)[03478]|(?<=5)[126]|(?<=6)[3])|(?<=5)[0123456789]((?<=0)[1568]|(?<=1)[9]|(?<=2)[0145]|(?<=3)[47]|(?<=4)[123467]|(?<=5)[49]|(?<=6)[0238]|(?<=7)[012456]|(?<=8)[125678]|(?<=9)[01])|(?<=6)[012356789]((?<=0)[1]|(?<=1)[01579]|(?<=2)[13479]|(?<=3)[168]|(?<=5)[16]|(?<=6)[027]|(?<=7)[1689]|(?<=8)[014]|(?<=9)[01])|(?<=7)[0123456]((?<=0)[457]|(?<=1)[014679]|(?<=2)[026]|(?<=3)[19]|(?<=4)[3]|(?<=5)[0357]|(?<=6)[1347])|(?<=8)[01234568]((?<=0)[12478]|(?<=1)[024578]|(?<=2)[3]|(?<=3)[368]|(?<=4)[57]|(?<=5)[125]|(?<=6)[56]|(?<=8)[46]))|(?<=7)[0123456789]((?<=0)[012345]((?<=0)[679]|(?<=1)[12346789]|(?<=2)[01234578]|(?<=3)[0]|(?<=4)[01235678]|(?<=5)[012345])|(?<=1)[012]((?<=0)[1345679]|(?<=1)[0]|(?<=2)[7])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[23457]|(?<=2)[9]|(?<=3)[1359]|(?<=4)[234789]|(?<=5)[23689]|(?<=6)[02358]|(?<=7)[8]|(?<=8)[12348]|(?<=9)[12589])|(?<=3)[01234567]((?<=0)[1256]|(?<=1)[01234567]|(?<=2)[056]|(?<=3)[02]|(?<=4)[012349]|(?<=5)[015678]|(?<=6)[0]|(?<=7)[014679])|(?<=4)[015]((?<=0)[1356789]|(?<=1)[012]|(?<=5)[5])|(?<=5)[0123456789]((?<=0)[123456789]|(?<=1)[01346789]|(?<=2)[012345679]|(?<=3)[0134679]|(?<=4)[0124569]|(?<=5)[135679]|(?<=6)[023589]|(?<=7)[0123467]|(?<=8)[123479]|(?<=9)[1234679])|(?<=6)[019]((?<=0)[13456789]|(?<=1)[0234567]|(?<=9)[57])|(?<=7)[01]((?<=0)[1345789]|(?<=1)[23])|(?<=8)[0123456789]((?<=0)[13456789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[012479]|(?<=4)[012345679]|(?<=5)[01235678]|(?<=6)[01234569]|(?<=7)[0123456789]|(?<=8)[012345689]|(?<=9)[012367])|(?<=9)[012345678]((?<=0)[9]|(?<=1)[05679]|(?<=2)[0123456789]|(?<=3)[256789]|(?<=4)[12346789]|(?<=5)[0346789]|(?<=6)[02456789]|(?<=7)[0234689]|(?<=8)[012356]))|(?<=8)[0123456789]((?<=0)[012345789]((?<=0)[1679]|(?<=1)[26789]|(?<=2)[013457]|(?<=3)[1234679]|(?<=4)[0123]|(?<=5)[246]|(?<=7)[123456789]|(?<=8)[013689]|(?<=9)[01278])|(?<=1)[01234567]((?<=0)[12345789]|(?<=1)[024579]|(?<=2)[045789]|(?<=3)[3456789]|(?<=4)[467]|(?<=5)[029]|(?<=6)[0346789]|(?<=7)[034])|(?<=2)[0124678]((?<=0)[23456789]|(?<=1)[01234567]|(?<=2)[367]|(?<=4)[4]|(?<=6)[29]|(?<=7)[03478]|(?<=8)[02])|(?<=3)[0123456789]((?<=0)[1345678]|(?<=1)[012458]|(?<=2)[035678]|(?<=3)[01234789]|(?<=4)[012345789]|(?<=5)[01256789]|(?<=6)[023456789]|(?<=7)[123456789]|(?<=8)[234567]|(?<=9)[012345689])|(?<=4)[012345678]((?<=0)[1359]|(?<=1)[12]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[12345789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0289]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[1489]|(?<=1)[01235689]|(?<=2)[013456789]|(?<=3)[0123789]|(?<=4)[023467]|(?<=5)[1234567]|(?<=6)[02]|(?<=7)[012345789]|(?<=8)[01245679]|(?<=9)[04])|(?<=6)[0123456789]((?<=0)[1245679]|(?<=1)[012356789]|(?<=2)[123456789]|(?<=3)[0145678]|(?<=4)[01234569]|(?<=5)[012345789]|(?<=6)[023456789]|(?<=7)[012356789]|(?<=8)[123459]|(?<=9)[023478])|(?<=7)[0123456789]((?<=0)[1245789]|(?<=1)[0123456789]|(?<=2)[0123569]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[123456789]|(?<=6)[12368]|(?<=7)[012345789]|(?<=8)[12356789]|(?<=9)[012])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0]((?<=0)[124569]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[1369]|(?<=1)[04568]|(?<=2)[0]|(?<=3)[01236789]|(?<=4)[0245678]|(?<=5)[12345689]|(?<=6)[123579]|(?<=7)[0234589]|(?<=8)[012])|(?<=1)[012345678]((?<=0)[124578]|(?<=1)[1234578]|(?<=2)[2356789]|(?<=3)[03578]|(?<=4)[2568]|(?<=5)[0234]|(?<=6)[01234689]|(?<=7)[02578]|(?<=8)[0])|(?<=2)[012]((?<=0)[13456789]|(?<=1)[02]|(?<=2)[359])|(?<=3)[012345678]((?<=0)[12367]|(?<=1)[6]|(?<=2)[0123459]|(?<=3)[0123458]|(?<=4)[0169]|(?<=5)[1356]|(?<=6)[04589]|(?<=7)[023456789]|(?<=8)[458])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[0248]|(?<=2)[04569]|(?<=3)[12456789]|(?<=4)[05689]|(?<=5)[0123568]|(?<=6)[14689]|(?<=7)[0124579]|(?<=8)[1235678]|(?<=9)[23])|(?<=5)[0123456789]((?<=0)[156]|(?<=1)[012689]|(?<=2)[0567]|(?<=3)[026]|(?<=4)[0134567]|(?<=5)[0456]|(?<=6)[03456789]|(?<=7)[01245679]|(?<=8)[01234589]|(?<=9)[012346])|(?<=6)[0123456789]((?<=0)[1579]|(?<=1)[13457]|(?<=2)[0145678]|(?<=3)[014589]|(?<=4)[0234569]|(?<=5)[01345789]|(?<=6)[1245679]|(?<=7)[012368]|(?<=8)[012345679]|(?<=9)[012367])|(?<=7)[01234]((?<=0)[246789]|(?<=1)[024578]|(?<=2)[046789]|(?<=3)[023]|(?<=4)[1235])|(?<=8)[01234569]((?<=0)[1359]|(?<=1)[02679]|(?<=2)[146789]|(?<=3)[124568]|(?<=4)[012345789]|(?<=5)[136]|(?<=6)[0]|(?<=9)[9])|(?<=9)[01234]((?<=0)[245679]|(?<=1)[012568]|(?<=2)[012346789]|(?<=3)[24569]|(?<=4)[01345])))|(?<=3)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24589]|(?<=1)[12346789]|(?<=2)[12458]|(?<=3)[0234589]|(?<=4)[0134567]|(?<=5)[24568]|(?<=6)[024678]|(?<=7)[0125689]|(?<=8)[023478]|(?<=9)[023467])|(?<=1)[012345678]((?<=0)[12345678]|(?<=1)[01345678]|(?<=2)[0124567]|(?<=3)[24579]|(?<=4)[1345789]|(?<=5)[237]|(?<=6)[158]|(?<=7)[01356789]|(?<=8)[02345789])|(?<=2)[0123456789]((?<=0)[456]|(?<=1)[345678]|(?<=2)[023489]|(?<=3)[03468]|(?<=4)[018]|(?<=5)[01236789]|(?<=6)[03589]|(?<=7)[234567]|(?<=8)[145689]|(?<=9)[01234567])|(?<=3)[0123456]((?<=0)[356789]|(?<=1)[0123456789]|(?<=2)[246789]|(?<=3)[1246789]|(?<=4)[0124569]|(?<=5)[04]|(?<=6)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123457]|(?<=2)[01356789]|(?<=3)[469]|(?<=4)[125689]|(?<=5)[012345678]|(?<=6)[0147]|(?<=7)[01347])|(?<=5)[0123456789]((?<=0)[1467]|(?<=1)[01236789]|(?<=2)[01235789]|(?<=3)[013456789]|(?<=4)[012356789]|(?<=5)[2345789]|(?<=6)[02345678]|(?<=7)[123567]|(?<=8)[12]|(?<=9)[78])|(?<=6)[012345678]((?<=0)[125679]|(?<=1)[9]|(?<=2)[012345789]|(?<=3)[013459]|(?<=4)[12368]|(?<=5)[056]|(?<=6)[023456789]|(?<=7)[378]|(?<=8)[03])|(?<=7)[012345]((?<=0)[1578]|(?<=1)[01]|(?<=2)[014568]|(?<=3)[01345689]|(?<=4)[01267]|(?<=5)[0123567])|(?<=8)[0123]((?<=0)[235789]|(?<=1)[02345678]|(?<=2)[012348]|(?<=3)[03])|(?<=9)[01]((?<=0)[145679]|(?<=1)[2]))|(?<=1)[023456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[12456789]|(?<=2)[012345789]|(?<=3)[0123456789]|(?<=4)[1245679]|(?<=5)[0124578]|(?<=6)[0123456789]|(?<=7)[01256789]|(?<=8)[12345789]|(?<=9)[01234678])|(?<=2)[012]((?<=0)[1467]|(?<=1)[01367]|(?<=2)[0])|(?<=3)[0123]((?<=0)[1235789]|(?<=1)[234568]|(?<=2)[012346789]|(?<=3)[13])|(?<=4)[012]((?<=0)[1456789]|(?<=1)[0159]|(?<=2)[1])|(?<=5)[01234569]((?<=0)[13]|(?<=1)[023689]|(?<=2)[023457]|(?<=3)[23579]|(?<=4)[23456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=9)[9])|(?<=6)[023459]((?<=0)[1256]|(?<=2)[02345679]|(?<=3)[012456789]|(?<=4)[1235789]|(?<=5)[0]|(?<=9)[89])|(?<=7)[0123456789]((?<=0)[14579]|(?<=1)[12469]|(?<=2)[0127]|(?<=3)[0358]|(?<=4)[3479]|(?<=5)[0367]|(?<=6)[3458]|(?<=7)[1234589]|(?<=8)[0134789]|(?<=9)[01234568])|(?<=8)[0123]((?<=0)[1345678]|(?<=1)[012456]|(?<=2)[012345679]|(?<=3)[01236])|(?<=9)[0]((?<=0)[1345679]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[389]|(?<=1)[13]|(?<=2)[456]|(?<=3)[348]|(?<=4)[0346]|(?<=5)[234589]|(?<=6)[01234568]|(?<=7)[1239]|(?<=8)[0123467]|(?<=9)[124567])|(?<=1)[0123456789]((?<=0)[2]|(?<=1)[0234789]|(?<=2)[4789]|(?<=3)[01234679]|(?<=4)[01578]|(?<=5)[79]|(?<=6)[23489]|(?<=7)[4679]|(?<=8)[01279]|(?<=9)[0235])|(?<=2)[01234567]((?<=0)[23456789]|(?<=1)[01246789]|(?<=2)[012345678]|(?<=3)[34]|(?<=4)[46]|(?<=5)[046789]|(?<=6)[6]|(?<=7)[7])|(?<=3)[01234569]((?<=0)[13456789]|(?<=1)[01237]|(?<=2)[0123478]|(?<=3)[0123467]|(?<=4)[034678]|(?<=5)[0125689]|(?<=6)[01]|(?<=9)[9])|(?<=4)[0123456]((?<=0)[1345789]|(?<=1)[03]|(?<=2)[01345678]|(?<=3)[01235789]|(?<=4)[02345689]|(?<=5)[569]|(?<=6)[0123456])|(?<=5)[012345678]((?<=0)[123456789]|(?<=1)[124]|(?<=2)[6]|(?<=3)[0134569]|(?<=4)[12478]|(?<=5)[0]|(?<=6)[13456789]|(?<=7)[01789]|(?<=8)[03])|(?<=6)[012345689]((?<=0)[1356789]|(?<=1)[0256789]|(?<=2)[12568]|(?<=3)[149]|(?<=4)[0138]|(?<=5)[368]|(?<=6)[46789]|(?<=8)[0136]|(?<=9)[23467])|(?<=7)[0123456789]((?<=0)[123789]|(?<=1)[234]|(?<=2)[03456]|(?<=3)[02568]|(?<=4)[46]|(?<=5)[01479]|(?<=6)[345678]|(?<=7)[135689]|(?<=8)[049]|(?<=9)[268])|(?<=8)[01239]((?<=0)[13456789]|(?<=1)[01246789]|(?<=2)[012456789]|(?<=3)[01235679]|(?<=9)[9])|(?<=9)[0234567]((?<=0)[1345789]|(?<=2)[02567]|(?<=3)[1457]|(?<=4)[089]|(?<=5)[0123589]|(?<=6)[023678]|(?<=7)[06]))|(?<=3)[013456789]((?<=0)[01234567]((?<=0)[149]|(?<=1)[02345689]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[023]|(?<=5)[01456]|(?<=6)[023456789]|(?<=7)[0136])|(?<=1)[023456789]((?<=0)[19]|(?<=2)[256789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[045678]|(?<=6)[01256789]|(?<=7)[023456789]|(?<=8)[012345679]|(?<=9)[0346])|(?<=3)[012358]((?<=0)[145689]|(?<=1)[12345679]|(?<=2)[12345678]|(?<=3)[0124]|(?<=5)[1]|(?<=8)[8])|(?<=4)[0123456789]((?<=0)[13456789]|(?<=1)[01234578]|(?<=2)[68]|(?<=3)[012345678]|(?<=4)[0124569]|(?<=5)[58]|(?<=6)[012379]|(?<=7)[0123678]|(?<=8)[03467]|(?<=9)[368])|(?<=5)[0123456789]((?<=0)[3]|(?<=1)[0134]|(?<=2)[1357]|(?<=3)[048]|(?<=4)[012345789]|(?<=5)[0689]|(?<=6)[35679]|(?<=7)[0234689]|(?<=8)[45]|(?<=9)[24678])|(?<=6)[01234]((?<=0)[2345679]|(?<=1)[0123456789]|(?<=2)[014569]|(?<=3)[457]|(?<=4)[7])|(?<=7)[0145678]((?<=0)[123456789]|(?<=1)[0123456]|(?<=4)[4]|(?<=5)[569]|(?<=6)[0123457]|(?<=7)[01234678]|(?<=8)[1256])|(?<=8)[0123456789]((?<=0)[1359]|(?<=1)[01235]|(?<=2)[357]|(?<=3)[045789]|(?<=4)[0134789]|(?<=5)[0123456789]|(?<=6)[0578]|(?<=7)[023567]|(?<=8)[014]|(?<=9)[0678])|(?<=9)[0123456789]((?<=0)[1345789]|(?<=1)[234679]|(?<=2)[01248]|(?<=3)[0156]|(?<=4)[4678]|(?<=5)[0234567]|(?<=6)[0567]|(?<=7)[12346]|(?<=8)[0123]|(?<=9)[013]))|(?<=4)[124679]((?<=1)[01234]((?<=0)[1234589]|(?<=1)[0234679]|(?<=2)[0]|(?<=3)[45789]|(?<=4)[0125])|(?<=2)[0123456789]((?<=0)[1235789]|(?<=1)[0125679]|(?<=2)[123489]|(?<=3)[123456789]|(?<=4)[0123]|(?<=5)[01]|(?<=6)[6789]|(?<=7)[5]|(?<=8)[56789]|(?<=9)[123])|(?<=4)[23456789]((?<=2)[089]|(?<=3)[12346]|(?<=4)[25689]|(?<=5)[023]|(?<=6)[15]|(?<=7)[01234569]|(?<=8)[012478]|(?<=9)[18])|(?<=6)[01356789]((?<=0)[1246789]|(?<=1)[034]|(?<=3)[789]|(?<=5)[2345]|(?<=6)[1789]|(?<=7)[79]|(?<=8)[134589]|(?<=9)[0158])|(?<=7)[0123456789]((?<=0)[5]|(?<=1)[145]|(?<=2)[9]|(?<=3)[14679]|(?<=4)[134678]|(?<=5)[3689]|(?<=6)[0129]|(?<=7)[123]|(?<=8)[5678]|(?<=9)[7])|(?<=9)[45789]((?<=4)[5679]|(?<=5)[012367]|(?<=7)[24]|(?<=8)[123467]|(?<=9)[0467]))|(?<=5)[012456789]((?<=0)[0123456789]((?<=0)[4567]|(?<=1)[03469]|(?<=2)[023]|(?<=3)[123456]|(?<=4)[0234569]|(?<=5)[1234578]|(?<=6)[012348]|(?<=7)[01234789]|(?<=8)[023579]|(?<=9)[14678])|(?<=1)[12345678]((?<=1)[12456789]|(?<=2)[0145678]|(?<=3)[01356]|(?<=4)[36789]|(?<=5)[01]|(?<=6)[0]|(?<=7)[1235689]|(?<=8)[0134568])|(?<=2)[012345]((?<=0)[3456789]|(?<=1)[012345678]|(?<=2)[1234689]|(?<=3)[345]|(?<=4)[2349]|(?<=5)[4])|(?<=4)[0456789]((?<=0)[1456]|(?<=4)[123467]|(?<=5)[236789]|(?<=6)[0123469]|(?<=7)[034567]|(?<=8)[017]|(?<=9)[01])|(?<=5)[0456789]((?<=0)[134]|(?<=4)[012345689]|(?<=5)[023459]|(?<=6)[345]|(?<=7)[0123456789]|(?<=8)[0124567]|(?<=9)[234])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[01345689]|(?<=2)[012]|(?<=3)[0234]|(?<=4)[0356789]|(?<=5)[01234]|(?<=6)[01]|(?<=7)[012347])|(?<=7)[34567]((?<=3)[9]|(?<=4)[01456789]|(?<=5)[012456789]|(?<=6)[01345689]|(?<=7)[123456])|(?<=8)[0129]((?<=0)[123568]|(?<=1)[016]|(?<=2)[4]|(?<=9)[6])|(?<=9)[056789]((?<=0)[134567]|(?<=5)[012346789]|(?<=6)[0123678]|(?<=7)[12345689]|(?<=8)[01346789]|(?<=9)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[35689]|(?<=1)[0367]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[01236789]|(?<=5)[12347]|(?<=6)[4679]|(?<=7)[1589]|(?<=8)[012389]|(?<=9)[123])|(?<=1)[013]((?<=0)[1456789]|(?<=1)[01234567]|(?<=3)[0])|(?<=2)[05678]((?<=0)[13567]|(?<=5)[01568]|(?<=6)[023456789]|(?<=7)[12346789]|(?<=8)[0])|(?<=3)[01234567]((?<=0)[135]|(?<=1)[012346789]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[03456]|(?<=5)[0123]|(?<=6)[02]|(?<=7)[013456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0156]|(?<=3)[2569]|(?<=4)[12456]|(?<=5)[13456]|(?<=6)[07]|(?<=7)[0134567]|(?<=8)[0123])|(?<=5)[012345678]((?<=0)[23579]|(?<=1)[1238]|(?<=2)[123456789]|(?<=3)[02589]|(?<=4)[012345789]|(?<=5)[0135689]|(?<=6)[0124789]|(?<=7)[1245689]|(?<=8)[0123457])|(?<=6)[015689]((?<=0)[23456789]|(?<=1)[01235789]|(?<=5)[2]|(?<=6)[3]|(?<=8)[8]|(?<=9)[35])|(?<=7)[023456789]((?<=0)[13]|(?<=2)[023678]|(?<=3)[268]|(?<=4)[012489]|(?<=5)[01234689]|(?<=6)[13456789]|(?<=7)[356]|(?<=8)[23456]|(?<=9)[023])|(?<=8)[034567]((?<=0)[14]|(?<=3)[02]|(?<=4)[9]|(?<=5)[01234568]|(?<=6)[01235679]|(?<=7)[014579])|(?<=9)[012]((?<=0)[1478]|(?<=1)[023569]|(?<=2)[125]))|(?<=7)[012346789]((?<=0)[123456789]((?<=1)[02345689]|(?<=2)[02356789]|(?<=3)[01234567]|(?<=4)[0236789]|(?<=5)[0125789]|(?<=6)[0124679]|(?<=7)[2345689]|(?<=8)[023567]|(?<=9)[015678])|(?<=1)[0123456789]((?<=0)[1]|(?<=1)[058]|(?<=2)[2789]|(?<=3)[024578]|(?<=4)[012345689]|(?<=5)[013]|(?<=6)[0567]|(?<=7)[124589]|(?<=8)[013456789]|(?<=9)[01])|(?<=2)[0123]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[018]|(?<=3)[28])|(?<=3)[0123456789]((?<=0)[12356789]|(?<=1)[01235678]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[0123578]|(?<=5)[012345679]|(?<=6)[01235679]|(?<=7)[0345679]|(?<=8)[013578]|(?<=9)[14678])|(?<=4)[0125]((?<=0)[23456789]|(?<=1)[012569]|(?<=2)[1]|(?<=5)[0])|(?<=6)[01245689]((?<=0)[14]|(?<=1)[45678]|(?<=2)[0]|(?<=4)[01235]|(?<=5)[06789]|(?<=6)[0345]|(?<=8)[0123678]|(?<=9)[0124])|(?<=7)[01234567]((?<=0)[1589]|(?<=1)[0134569]|(?<=2)[12345679]|(?<=3)[012378]|(?<=4)[2358]|(?<=5)[234567]|(?<=6)[0234569]|(?<=7)[012479])|(?<=8)[0123456789]((?<=0)[134679]|(?<=1)[013489]|(?<=2)[015689]|(?<=3)[0]|(?<=4)[01356789]|(?<=5)[12347]|(?<=6)[0123569]|(?<=7)[012346789]|(?<=8)[0125678]|(?<=9)[012])|(?<=9)[0123]((?<=0)[29]|(?<=1)[2456789]|(?<=2)[012349]|(?<=3)[1248]))|(?<=8)[0123456789]((?<=0)[012345678]((?<=0)[124678]|(?<=1)[1256789]|(?<=2)[13489]|(?<=3)[04679]|(?<=4)[0124679]|(?<=5)[0234789]|(?<=6)[0136789]|(?<=7)[05679]|(?<=8)[0])|(?<=1)[012345]((?<=0)[3456789]|(?<=1)[123456789]|(?<=2)[025678]|(?<=3)[1234589]|(?<=4)[1]|(?<=5)[2])|(?<=2)[023456]((?<=0)[1]|(?<=2)[0124569]|(?<=3)[0123567]|(?<=4)[012]|(?<=5)[13456789]|(?<=6)[01])|(?<=3)[0123456789]((?<=0)[15]|(?<=1)[0135678]|(?<=2)[016789]|(?<=3)[0234789]|(?<=4)[01234578]|(?<=5)[1256789]|(?<=6)[12356789]|(?<=7)[0124569]|(?<=8)[012789]|(?<=9)[012])|(?<=4)[0245678]((?<=0)[1]|(?<=2)[5]|(?<=4)[9]|(?<=5)[012345679]|(?<=6)[0123489]|(?<=7)[12345678]|(?<=8)[1235678])|(?<=5)[045678]((?<=0)[13456]|(?<=4)[12345789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[012345789]|(?<=8)[01235789])|(?<=6)[012345678]((?<=0)[136]|(?<=1)[014789]|(?<=2)[01235679]|(?<=3)[123579]|(?<=4)[1234567]|(?<=5)[0124589]|(?<=6)[134568]|(?<=7)[0123467]|(?<=8)[035])|(?<=7)[02345678]((?<=0)[13]|(?<=2)[012356]|(?<=3)[0123678]|(?<=4)[04568]|(?<=5)[13469]|(?<=6)[01245789]|(?<=7)[123468]|(?<=8)[1])|(?<=8)[0234567]((?<=0)[14]|(?<=2)[146789]|(?<=3)[3489]|(?<=4)[1346789]|(?<=5)[01256789]|(?<=6)[02345689]|(?<=7)[013689])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[34567]|(?<=2)[012345789]|(?<=3)[0]|(?<=4)[01346789]|(?<=5)[012347]|(?<=6)[1234567]))|(?<=9)[012345678]((?<=0)[3456789]((?<=3)[89]|(?<=4)[0124567]|(?<=5)[146789]|(?<=6)[123679]|(?<=7)[13489]|(?<=8)[2368]|(?<=9)[024567])|(?<=1)[012456789]((?<=0)[8]|(?<=1)[01345679]|(?<=2)[0]|(?<=4)[045689]|(?<=5)[0234679]|(?<=6)[026789]|(?<=7)[0345679]|(?<=8)[039]|(?<=9)[1234])|(?<=2)[01367]((?<=0)[1234689]|(?<=1)[0123678]|(?<=3)[2]|(?<=6)[9]|(?<=7)[2])|(?<=3)[023456]((?<=0)[1579]|(?<=2)[02345678]|(?<=3)[0256789]|(?<=4)[125678]|(?<=5)[0245689]|(?<=6)[01234567])|(?<=4)[02345678]((?<=0)[126]|(?<=2)[12356789]|(?<=3)[79]|(?<=4)[03]|(?<=5)[12569]|(?<=6)[12456]|(?<=7)[0456789]|(?<=8)[0123])|(?<=5)[023456789]((?<=0)[137]|(?<=2)[059]|(?<=3)[0124]|(?<=4)[0]|(?<=5)[36]|(?<=6)[0123457]|(?<=7)[123467]|(?<=8)[1]|(?<=9)[5])|(?<=6)[023456]((?<=0)[1]|(?<=2)[9]|(?<=3)[01358]|(?<=4)[13578]|(?<=5)[23467]|(?<=6)[123456789])|(?<=7)[034567]((?<=0)[125]|(?<=3)[05679]|(?<=4)[0134567]|(?<=5)[0123569]|(?<=6)[2679]|(?<=7)[1236])|(?<=8)[123456789]((?<=1)[3579]|(?<=2)[345678]|(?<=3)[2467]|(?<=4)[01256]|(?<=5)[149]|(?<=6)[1267]|(?<=7)[07]|(?<=8)[56]|(?<=9)[7])))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[01234567]((?<=0)[346789]|(?<=1)[012349]|(?<=2)[02356]|(?<=3)[1367]|(?<=4)[015679]|(?<=5)[01256789]|(?<=6)[01235789]|(?<=7)[015678])|(?<=1)[0124567]((?<=0)[4789]|(?<=1)[015789]|(?<=2)[1]|(?<=4)[023456]|(?<=5)[0257]|(?<=6)[0125]|(?<=7)[015678])|(?<=2)[012345789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012389]|(?<=3)[1]|(?<=4)[1235]|(?<=5)[8]|(?<=7)[2]|(?<=8)[0]|(?<=9)[19])|(?<=3)[123456789]((?<=1)[01236]|(?<=2)[248]|(?<=3)[04679]|(?<=4)[2678]|(?<=5)[01356789]|(?<=6)[013]|(?<=7)[012469]|(?<=8)[0357]|(?<=9)[01])|(?<=4)[012345678]((?<=0)[2349]|(?<=1)[9]|(?<=2)[2]|(?<=3)[47]|(?<=4)[024578]|(?<=5)[6]|(?<=6)[0148]|(?<=7)[25]|(?<=8)[1469])|(?<=5)[0123]((?<=0)[2345789]|(?<=1)[0134567]|(?<=2)[6]|(?<=3)[6])|(?<=6)[0]((?<=0)[1])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[9]|(?<=3)[47]|(?<=4)[014]|(?<=5)[9]|(?<=6)[39]|(?<=7)[1])|(?<=8)[01234567]((?<=0)[13678]|(?<=1)[035689]|(?<=2)[0346789]|(?<=3)[01]|(?<=4)[034579]|(?<=5)[4568]|(?<=6)[2358]|(?<=7)[034])|(?<=9)[0123456789]((?<=0)[236]|(?<=1)[345]|(?<=2)[137]|(?<=3)[59]|(?<=4)[01369]|(?<=5)[38]|(?<=6)[245]|(?<=7)[279]|(?<=8)[1238]|(?<=9)[57]))|(?<=1)[012345678]((?<=0)[013456789]((?<=0)[12345678]|(?<=1)[0145678]|(?<=3)[013459]|(?<=4)[012345689]|(?<=5)[12569]|(?<=6)[34]|(?<=7)[13456]|(?<=8)[0356]|(?<=9)[1234578])|(?<=1)[02345678]((?<=0)[12]|(?<=2)[149]|(?<=3)[259]|(?<=4)[123469]|(?<=5)[9]|(?<=6)[4689]|(?<=7)[1459]|(?<=8)[0139])|(?<=2)[01234567]((?<=0)[134]|(?<=1)[469]|(?<=2)[246]|(?<=3)[01248]|(?<=4)[0]|(?<=5)[04567]|(?<=6)[0234578]|(?<=7)[14])|(?<=3)[01345689]((?<=0)[1]|(?<=1)[0147]|(?<=3)[29]|(?<=4)[8]|(?<=5)[12]|(?<=6)[04567]|(?<=8)[56]|(?<=9)[07])|(?<=4)[0267]((?<=0)[8]|(?<=2)[15]|(?<=6)[45]|(?<=7)[2])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[23479]|(?<=2)[24678]|(?<=3)[145789]|(?<=4)[03478]|(?<=5)[345789]|(?<=6)[0234678]|(?<=7)[12])|(?<=6)[0123456]((?<=0)[1234567]|(?<=1)[2569]|(?<=2)[12]|(?<=3)[01256]|(?<=4)[023579]|(?<=5)[01359]|(?<=6)[03679])|(?<=7)[01234567]((?<=0)[1]|(?<=1)[2349]|(?<=2)[123579]|(?<=3)[159]|(?<=4)[0569]|(?<=5)[149]|(?<=6)[02346]|(?<=7)[2345678])|(?<=8)[0123456]((?<=0)[4]|(?<=1)[02579]|(?<=2)[124568]|(?<=3)[123456789]|(?<=4)[0345789]|(?<=5)[589]|(?<=6)[12]))|(?<=2)[01234567]((?<=0)[02345678]((?<=0)[13]|(?<=2)[012345789]|(?<=3)[1256789]|(?<=4)[0145789]|(?<=5)[0134568]|(?<=6)[01469]|(?<=7)[1689]|(?<=8)[1235678])|(?<=1)[0234567]((?<=0)[134]|(?<=2)[023479]|(?<=3)[0134]|(?<=4)[01]|(?<=5)[134679]|(?<=6)[03467]|(?<=7)[01])|(?<=2)[012345678]((?<=0)[2467]|(?<=1)[01457]|(?<=2)[03]|(?<=3)[246]|(?<=4)[0]|(?<=5)[2469]|(?<=6)[1256]|(?<=7)[3456]|(?<=8)[056])|(?<=3)[0234567]((?<=0)[13]|(?<=2)[012345678]|(?<=3)[023789]|(?<=4)[345789]|(?<=5)[012456]|(?<=6)[16789]|(?<=7)[012468])|(?<=4)[0123456]((?<=0)[4689]|(?<=1)[013]|(?<=2)[0]|(?<=3)[167]|(?<=4)[01245]|(?<=5)[01235689]|(?<=6)[1234])|(?<=5)[0123456]((?<=0)[13]|(?<=1)[689]|(?<=2)[8]|(?<=3)[39]|(?<=4)[14]|(?<=5)[3]|(?<=6)[567])|(?<=6)[02345]((?<=0)[23]|(?<=2)[9]|(?<=3)[13458]|(?<=4)[279]|(?<=5)[3])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[235678]|(?<=2)[124689]|(?<=3)[23]|(?<=4)[0123689]|(?<=5)[34789]|(?<=6)[245]|(?<=7)[6]|(?<=8)[248]))|(?<=3)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[12356789]|(?<=3)[0123567]|(?<=4)[04567]|(?<=5)[0456]|(?<=6)[01245678]|(?<=7)[0124678]|(?<=8)[01245])|(?<=1)[0123456]((?<=0)[1235679]|(?<=1)[01235679]|(?<=2)[35678]|(?<=3)[05678]|(?<=4)[023456789]|(?<=5)[012345678]|(?<=6)[024])|(?<=2)[01234]((?<=0)[12345679]|(?<=1)[012345789]|(?<=2)[01234789]|(?<=3)[0125]|(?<=4)[0])|(?<=3)[0123456]((?<=0)[2]|(?<=1)[01456789]|(?<=2)[0123456]|(?<=3)[01234678]|(?<=4)[012345678]|(?<=5)[016789]|(?<=6)[0])|(?<=4)[0123456]((?<=0)[23678]|(?<=1)[02346]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[0235679]|(?<=5)[012678]|(?<=6)[023456789])|(?<=5)[01234567]((?<=0)[12456]|(?<=1)[01256789]|(?<=2)[0123456789]|(?<=3)[01234567]|(?<=4)[01235789]|(?<=5)[1345678]|(?<=6)[05679]|(?<=7)[01])|(?<=6)[012]((?<=0)[456789]|(?<=1)[012345679]|(?<=2)[03])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[136789]|(?<=2)[01234578]|(?<=3)[012345689]|(?<=4)[06789]|(?<=5)[045689]|(?<=6)[0124678]|(?<=7)[123789]|(?<=8)[023678]|(?<=9)[13])|(?<=8)[01234]((?<=0)[245]|(?<=1)[12]|(?<=2)[124]|(?<=3)[0267]|(?<=4)[02345])|(?<=9)[012345678]((?<=0)[12356789]|(?<=1)[023457]|(?<=2)[0568]|(?<=3)[01234589]|(?<=4)[02345678]|(?<=5)[0123]|(?<=6)[123478]|(?<=7)[123467]|(?<=8)[13568]))|(?<=4)[0123456789]((?<=0)[0123456789]((?<=0)[134]|(?<=1)[0127]|(?<=2)[123468]|(?<=3)[0259]|(?<=4)[01456789]|(?<=5)[0234567]|(?<=6)[024578]|(?<=7)[02467]|(?<=8)[01245679]|(?<=9)[023459])|(?<=1)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345679])|(?<=2)[012345678]((?<=0)[123]|(?<=1)[24567]|(?<=2)[134]|(?<=3)[0123456]|(?<=4)[013]|(?<=5)[013456]|(?<=6)[0246]|(?<=7)[0234568]|(?<=8)[015678])|(?<=3)[0123]((?<=0)[12345678]|(?<=1)[012349]|(?<=2)[015]|(?<=3)[3])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[0123578]|(?<=2)[0345789]|(?<=3)[0126789]|(?<=4)[01234569]|(?<=5)[01245]|(?<=6)[0]|(?<=7)[013]|(?<=8)[1345]|(?<=9)[013])|(?<=5)[015]((?<=0)[2345679]|(?<=1)[01245]|(?<=5)[5])|(?<=6)[0123456789]((?<=0)[16789]|(?<=1)[01234589]|(?<=2)[012456789]|(?<=3)[0234789]|(?<=4)[0134567]|(?<=5)[1234679]|(?<=6)[01235679]|(?<=7)[0125678]|(?<=8)[01235789]|(?<=9)[013579])|(?<=7)[0123]((?<=0)[23456789]|(?<=1)[048]|(?<=2)[01]|(?<=3)[0])|(?<=8)[0123456789]((?<=0)[24579]|(?<=1)[134578]|(?<=2)[0245678]|(?<=3)[036789]|(?<=4)[01234679]|(?<=5)[01345679]|(?<=6)[14567]|(?<=7)[0458]|(?<=8)[012379]|(?<=9)[0])|(?<=9)[0]((?<=0)[1234567]))|(?<=5)[012345678]((?<=0)[0134567]((?<=0)[1235]|(?<=1)[1345]|(?<=3)[023469]|(?<=4)[0124]|(?<=5)[0123456]|(?<=6)[2456789]|(?<=7)[0])|(?<=1)[01234567]((?<=0)[123567]|(?<=1)[123589]|(?<=2)[0123]|(?<=3)[01235]|(?<=4)[024678]|(?<=5)[023456789]|(?<=6)[0246789]|(?<=7)[12467])|(?<=2)[0123456]((?<=0)[23456789]|(?<=1)[123456789]|(?<=2)[0345679]|(?<=3)[01236789]|(?<=4)[0123456789]|(?<=5)[125]|(?<=6)[7])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[012456789]|(?<=5)[01234689]|(?<=6)[0123589]|(?<=7)[012378]|(?<=8)[012345789]|(?<=9)[0])|(?<=4)[0123456]((?<=0)[234569]|(?<=1)[045679]|(?<=2)[034689]|(?<=3)[0123459]|(?<=4)[09]|(?<=5)[89]|(?<=6)[9])|(?<=5)[0]((?<=0)[123456])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0123489]|(?<=3)[01468]|(?<=4)[0245678]|(?<=5)[012346789]|(?<=6)[01239]|(?<=7)[1234789]|(?<=8)[0124568]|(?<=9)[023456789])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[014569]|(?<=2)[013479]|(?<=3)[2459]|(?<=4)[0123456]|(?<=5)[0]|(?<=6)[0146789]|(?<=7)[01235689]|(?<=8)[0234689])|(?<=8)[0123456789]((?<=0)[1456789]|(?<=1)[02345679]|(?<=2)[012678]|(?<=3)[0123568]|(?<=4)[01345689]|(?<=5)[01345689]|(?<=6)[0123456789]|(?<=7)[012345679]|(?<=8)[0123456789]|(?<=9)[013456789]))|(?<=6)[0123456789]((?<=0)[0134567]((?<=0)[1]|(?<=1)[12367]|(?<=3)[0123456789]|(?<=4)[0145789]|(?<=5)[0125678]|(?<=6)[0234589]|(?<=7)[0124567])|(?<=1)[012345678]((?<=0)[234567]|(?<=1)[0123578]|(?<=2)[012345678]|(?<=3)[0135]|(?<=4)[02346789]|(?<=5)[0145678]|(?<=6)[012345678]|(?<=7)[012356]|(?<=8)[012346])|(?<=2)[0123456789]((?<=0)[1234568]|(?<=1)[46789]|(?<=2)[012456789]|(?<=3)[145679]|(?<=4)[01]|(?<=5)[0469]|(?<=6)[08]|(?<=7)[8]|(?<=8)[0]|(?<=9)[0])|(?<=3)[012456789]((?<=0)[12347]|(?<=1)[0129]|(?<=2)[012347]|(?<=4)[01256789]|(?<=5)[06]|(?<=6)[0568]|(?<=7)[1345679]|(?<=8)[1235]|(?<=9)[01234])|(?<=4)[01]((?<=0)[23456789]|(?<=1)[0])|(?<=5)[0123456789]((?<=0)[124678]|(?<=1)[013467]|(?<=2)[468]|(?<=3)[01246789]|(?<=4)[02345]|(?<=5)[023456]|(?<=6)[12357]|(?<=7)[01234]|(?<=8)[02]|(?<=9)[05])|(?<=6)[0123]((?<=0)[1]|(?<=1)[345679]|(?<=2)[48]|(?<=3)[57])|(?<=7)[0123456789]((?<=0)[123456]|(?<=1)[014]|(?<=2)[135]|(?<=3)[012378]|(?<=4)[01235678]|(?<=5)[059]|(?<=6)[0134567]|(?<=7)[012346789]|(?<=8)[13456789]|(?<=9)[123456789])|(?<=8)[01234]((?<=0)[23456789]|(?<=1)[45689]|(?<=2)[5]|(?<=3)[5]|(?<=4)[5])|(?<=9)[0123456789]((?<=0)[12]|(?<=1)[0134579]|(?<=2)[023689]|(?<=3)[01236789]|(?<=4)[013567]|(?<=5)[0123789]|(?<=6)[012578]|(?<=7)[014589]|(?<=8)[02456789]|(?<=9)[012468]))|(?<=7)[0123456789]((?<=0)[012346]((?<=0)[136]|(?<=1)[012678]|(?<=2)[012345]|(?<=3)[012345678]|(?<=4)[0123]|(?<=6)[0])|(?<=1)[01234567]((?<=0)[2468]|(?<=1)[012456789]|(?<=2)[0234569]|(?<=3)[05678]|(?<=4)[012357]|(?<=5)[0]|(?<=6)[01234567]|(?<=7)[02457])|(?<=2)[02345678]((?<=0)[13]|(?<=2)[0345679]|(?<=3)[012456]|(?<=4)[03467]|(?<=5)[0]|(?<=6)[0345]|(?<=7)[0234]|(?<=8)[0123])|(?<=3)[023456789]((?<=0)[23456]|(?<=2)[04567]|(?<=3)[01456789]|(?<=4)[0124568]|(?<=5)[123456789]|(?<=6)[0126789]|(?<=7)[0134]|(?<=8)[012345678]|(?<=9)[02346])|(?<=4)[0234567]((?<=0)[134568]|(?<=2)[01479]|(?<=3)[12345678]|(?<=4)[135689]|(?<=5)[123456789]|(?<=6)[0245789]|(?<=7)[01])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[234569]|(?<=2)[012345789]|(?<=3)[1257]|(?<=4)[126]|(?<=5)[012378]|(?<=6)[12478]|(?<=7)[3456789]|(?<=8)[014568]|(?<=9)[01678])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[0123569]|(?<=2)[0]|(?<=3)[01345789]|(?<=4)[089]|(?<=5)[4]|(?<=6)[056]|(?<=7)[0]|(?<=8)[3])|(?<=7)[012]((?<=0)[8]|(?<=1)[012345]|(?<=2)[05])|(?<=8)[0345678]((?<=0)[234579]|(?<=3)[1234678]|(?<=4)[01256789]|(?<=5)[01345789]|(?<=6)[01235689]|(?<=7)[0124569]|(?<=8)[01245])|(?<=9)[0123456789]((?<=0)[145679]|(?<=1)[678]|(?<=2)[012345689]|(?<=3)[023]|(?<=4)[01234689]|(?<=5)[01245789]|(?<=6)[03456789]|(?<=7)[014578]|(?<=8)[0123679]|(?<=9)[0123457]))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[123569]|(?<=1)[457]|(?<=2)[1235678]|(?<=3)[02345689]|(?<=4)[012345789]|(?<=5)[0149]|(?<=6)[02345679]|(?<=7)[01234569]|(?<=8)[01234589]|(?<=9)[12345678])|(?<=1)[0123456789]((?<=0)[134589]|(?<=1)[14678]|(?<=2)[0245678]|(?<=3)[01345789]|(?<=4)[013456]|(?<=5)[024789]|(?<=6)[012456789]|(?<=7)[0346789]|(?<=8)[023456789]|(?<=9)[0123578])|(?<=2)[01234]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[013456789]|(?<=3)[03456789]|(?<=4)[023])|(?<=3)[0123456789]((?<=0)[124679]|(?<=1)[0234567]|(?<=2)[02346789]|(?<=3)[1456]|(?<=4)[01268]|(?<=5)[03679]|(?<=6)[0237]|(?<=7)[01457]|(?<=8)[01236]|(?<=9)[03])|(?<=4)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[0124569]|(?<=5)[01345678]|(?<=6)[0123456789]|(?<=7)[012356])|(?<=5)[0123]((?<=0)[2345679]|(?<=1)[9]|(?<=2)[9]|(?<=3)[2])|(?<=6)[0123456]((?<=0)[123479]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[0279]|(?<=5)[0123456789]|(?<=6)[12])|(?<=7)[01234567]((?<=0)[13568]|(?<=1)[0]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0123456789]|(?<=5)[045679]|(?<=6)[01235678]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[16789]|(?<=1)[1356789]|(?<=2)[01234579]|(?<=3)[1245678]|(?<=4)[012356789]|(?<=5)[0123456789]|(?<=6)[0124567]|(?<=7)[0123456789]|(?<=8)[01345689]|(?<=9)[01234567])|(?<=9)[013]((?<=0)[6]|(?<=1)[01257]|(?<=3)[3]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1246789]|(?<=1)[0123457]|(?<=2)[1246789]|(?<=3)[01234678]|(?<=4)[0235678]|(?<=5)[01235678]|(?<=6)[01345678]|(?<=7)[012345689]|(?<=8)[02345789]|(?<=9)[0123456789])|(?<=1)[0123]((?<=0)[123467]|(?<=1)[1235679]|(?<=2)[056789]|(?<=3)[0])|(?<=2)[02345678]((?<=0)[123]|(?<=2)[014789]|(?<=3)[02345678]|(?<=4)[01256789]|(?<=5)[012345689]|(?<=6)[123456789]|(?<=7)[0124679]|(?<=8)[23456789])|(?<=3)[01234]((?<=0)[12345679]|(?<=1)[025689]|(?<=2)[012356789]|(?<=3)[012356789]|(?<=4)[0123456789])|(?<=4)[0123456]((?<=0)[12345689]|(?<=1)[0125789]|(?<=2)[0134568]|(?<=3)[014567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[014])|(?<=5)[01234]((?<=0)[3456789]|(?<=1)[29]|(?<=2)[5]|(?<=3)[4]|(?<=4)[468])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[012356789]|(?<=3)[0123456789]|(?<=4)[02345689]|(?<=5)[01345679]|(?<=6)[034578]|(?<=7)[045679]|(?<=8)[02345689]|(?<=9)[06])|(?<=7)[0123456789]((?<=0)[15679]|(?<=1)[02356789]|(?<=2)[012456789]|(?<=3)[03568]|(?<=4)[03456789]|(?<=5)[1235679]|(?<=6)[0245689]|(?<=7)[045679]|(?<=8)[012348]|(?<=9)[13569])|(?<=8)[0123456789]((?<=0)[125678]|(?<=1)[245678]|(?<=2)[0125679]|(?<=3)[13456789]|(?<=4)[01789]|(?<=5)[23458]|(?<=6)[123468]|(?<=7)[012346789]|(?<=8)[0134567]|(?<=9)[123456])|(?<=9)[01234567]((?<=0)[12358]|(?<=1)[012356789]|(?<=2)[012579]|(?<=3)[01458]|(?<=4)[25678]|(?<=5)[023589]|(?<=6)[01235789]|(?<=7)[01])))|(?<=5)[0123456789]((?<=0)[012345678]((?<=0)[01234567]((?<=0)[12356789]|(?<=1)[0234]|(?<=2)[012356789]|(?<=3)[12345689]|(?<=4)[01246789]|(?<=5)[01245678]|(?<=6)[0123456789]|(?<=7)[01234568])|(?<=1)[01234567]((?<=0)[123456789]|(?<=1)[01256789]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[0134])|(?<=2)[01234567]((?<=0)[1678]|(?<=1)[012346789]|(?<=2)[02356789]|(?<=3)[0123456789]|(?<=4)[012346789]|(?<=5)[01245678]|(?<=6)[12345689]|(?<=7)[12345678])|(?<=3)[012]((?<=0)[9]|(?<=1)[012345679]|(?<=2)[0123457])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[0134678]|(?<=3)[012345689]|(?<=4)[0146789]|(?<=5)[0123456789]|(?<=6)[01456789]|(?<=7)[012356789]|(?<=8)[0234])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[01235689]|(?<=4)[01234568]|(?<=5)[1246789]|(?<=6)[012356789]|(?<=7)[013456789]|(?<=8)[123568]|(?<=9)[012345789])|(?<=6)[012345678]((?<=0)[123456789]|(?<=1)[12369]|(?<=2)[0123456789]|(?<=3)[01234568]|(?<=4)[12345789]|(?<=5)[012345789]|(?<=6)[02456789]|(?<=7)[01234567]|(?<=8)[012])|(?<=7)[0]((?<=0)[1237])|(?<=8)[03456]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[012356789]|(?<=5)[134789]|(?<=6)[01234]))|(?<=1)[0123456]((?<=0)[0123456]((?<=0)[123456789]|(?<=1)[01245689]|(?<=2)[023456789]|(?<=3)[013456789]|(?<=4)[01456789]|(?<=5)[01234568]|(?<=6)[0123])|(?<=1)[01]((?<=0)[1345689]|(?<=1)[1])|(?<=2)[0345]((?<=0)[1]|(?<=3)[01245789]|(?<=4)[0123456789]|(?<=5)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1348]|(?<=4)[0123567]|(?<=5)[014578]|(?<=6)[03456])|(?<=4)[03456]((?<=0)[1]|(?<=3)[012369]|(?<=4)[0123456789]|(?<=5)[01234589]|(?<=6)[0123567])|(?<=5)[01234567]((?<=0)[13]|(?<=1)[0]|(?<=2)[01356789]|(?<=3)[01234567]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[0123456]|(?<=7)[012356789])|(?<=6)[0345]((?<=0)[1]|(?<=3)[0126789]|(?<=4)[056789]|(?<=5)[012346]))|(?<=2)[012345678]((?<=0)[034567]((?<=0)[123]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[023467]|(?<=6)[045689]|(?<=7)[0123456789])|(?<=1)[034567]((?<=0)[1]|(?<=3)[23456]|(?<=4)[012467]|(?<=5)[1456789]|(?<=6)[012345689]|(?<=7)[0125])|(?<=2)[012345]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[123567]|(?<=4)[01256789]|(?<=5)[123457])|(?<=3)[0123456]((?<=0)[1256789]|(?<=1)[02345678]|(?<=2)[0123456789]|(?<=3)[023456789]|(?<=4)[012456789]|(?<=5)[12345689]|(?<=6)[12])|(?<=4)[01]((?<=0)[12345]|(?<=1)[1])|(?<=5)[03456789]((?<=0)[1]|(?<=3)[0134567]|(?<=4)[023489]|(?<=5)[01234567]|(?<=6)[012356789]|(?<=7)[0123467]|(?<=8)[0134568]|(?<=9)[01345])|(?<=6)[0123456]((?<=0)[1]|(?<=1)[9]|(?<=2)[0134567]|(?<=3)[0125789]|(?<=4)[0145679]|(?<=5)[0123456789]|(?<=6)[0])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0126789]|(?<=3)[012789]|(?<=4)[256789]|(?<=5)[0123456789]|(?<=6)[0156789]|(?<=7)[1234678])|(?<=8)[0]((?<=0)[123467]))|(?<=3)[01245789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[0123456789]|(?<=2)[0123479]|(?<=3)[123456789]|(?<=4)[02456789]|(?<=5)[01789]|(?<=6)[13569]|(?<=7)[02345689]|(?<=8)[0135689]|(?<=9)[012345789])|(?<=1)[0123456789]((?<=0)[3458]|(?<=1)[04589]|(?<=2)[01256789]|(?<=3)[0279]|(?<=4)[0234679]|(?<=5)[0134678]|(?<=6)[78]|(?<=7)[026789]|(?<=8)[12345689]|(?<=9)[0125])|(?<=2)[01239]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[35]|(?<=9)[5])|(?<=4)[0]((?<=0)[23456])|(?<=5)[0123456789]((?<=0)[12345678]|(?<=1)[015678]|(?<=2)[012356789]|(?<=3)[01234678]|(?<=4)[01345689]|(?<=5)[013456789]|(?<=6)[0123569]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[034789])|(?<=7)[0129]((?<=0)[3456]|(?<=1)[13456789]|(?<=2)[6]|(?<=9)[2])|(?<=8)[012]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[01567])|(?<=9)[0123456]((?<=0)[1]|(?<=1)[01369]|(?<=2)[02345689]|(?<=3)[012345679]|(?<=4)[012346789]|(?<=5)[01234569]|(?<=6)[01234589]))|(?<=4)[0123456789]((?<=0)[0128]((?<=0)[12345679]|(?<=1)[134567]|(?<=2)[012345678]|(?<=8)[2])|(?<=1)[012345678]((?<=0)[123467]|(?<=1)[0123459]|(?<=2)[013456789]|(?<=3)[056789]|(?<=4)[0139]|(?<=5)[012345679]|(?<=6)[012569]|(?<=7)[013457]|(?<=8)[0])|(?<=2)[01234]((?<=0)[1245789]|(?<=1)[01234567]|(?<=2)[0789]|(?<=3)[0245]|(?<=4)[1567])|(?<=3)[01]((?<=0)[12347]|(?<=1)[13])|(?<=4)[0123456789]((?<=0)[1356789]|(?<=1)[01234678]|(?<=2)[012345678]|(?<=3)[03567]|(?<=4)[01236789]|(?<=5)[012456789]|(?<=6)[02345679]|(?<=7)[0134569]|(?<=8)[012456789]|(?<=9)[0134589])|(?<=5)[0123456]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[0145679]|(?<=3)[0146789]|(?<=4)[0125678]|(?<=5)[02456789]|(?<=6)[01234568])|(?<=6)[01234567]((?<=0)[13]|(?<=1)[012345689]|(?<=2)[123456789]|(?<=3)[012456789]|(?<=4)[234568]|(?<=5)[0123456789]|(?<=6)[0145679]|(?<=7)[0])|(?<=7)[0234567]((?<=0)[13]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[01256789]|(?<=5)[01456789]|(?<=6)[01236789]|(?<=7)[0123])|(?<=8)[0123456789]((?<=0)[156]|(?<=1)[023479]|(?<=2)[01246789]|(?<=3)[0256789]|(?<=4)[0123456789]|(?<=5)[03456789]|(?<=6)[124578]|(?<=7)[0123456]|(?<=8)[089]|(?<=9)[1356])|(?<=9)[012345678]((?<=0)[1249]|(?<=1)[1345]|(?<=2)[1236789]|(?<=3)[012357]|(?<=4)[0123456789]|(?<=5)[026]|(?<=6)[012345678]|(?<=7)[014789]|(?<=8)[0123456]))|(?<=5)[01346789]((?<=0)[0123456789]((?<=0)[1356789]|(?<=1)[12346789]|(?<=2)[0145679]|(?<=3)[0123678]|(?<=4)[012345679]|(?<=5)[1234567]|(?<=6)[035689]|(?<=7)[012345679]|(?<=8)[0245789]|(?<=9)[02])|(?<=1)[01235]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0]|(?<=5)[05])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[01245789]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[023456789]|(?<=6)[02346789]|(?<=7)[012345689]|(?<=8)[12456789]|(?<=9)[015678])|(?<=4)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[123456789]|(?<=5)[045])|(?<=6)[01]((?<=0)[12345679]|(?<=1)[23456])|(?<=7)[0123456789]((?<=0)[23456789]|(?<=1)[01236789]|(?<=2)[0123456]|(?<=3)[1234568]|(?<=4)[124689]|(?<=5)[0123678]|(?<=6)[0345789]|(?<=7)[1259]|(?<=8)[01234567]|(?<=9)[0235678])|(?<=8)[01]((?<=0)[2345678]|(?<=1)[0124])|(?<=9)[0123456789]((?<=0)[1234569]|(?<=1)[02789]|(?<=2)[012345679]|(?<=3)[1234569]|(?<=4)[01345679]|(?<=5)[012345679]|(?<=6)[012345789]|(?<=7)[012345679]|(?<=8)[12357]|(?<=9)[012]))|(?<=6)[01234567]((?<=0)[0123456789]((?<=0)[1379]|(?<=1)[0134679]|(?<=2)[0123456789]|(?<=3)[012345679]|(?<=4)[1234568]|(?<=5)[01245678]|(?<=6)[023589]|(?<=7)[123458]|(?<=8)[01235789]|(?<=9)[013678])|(?<=1)[012345678]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[01235789]|(?<=3)[1246789]|(?<=4)[012345679]|(?<=5)[012356789]|(?<=6)[012456789]|(?<=7)[01234568]|(?<=8)[013567])|(?<=2)[0123456789]((?<=0)[1789]|(?<=1)[01245689]|(?<=2)[0123456789]|(?<=3)[0125679]|(?<=4)[0134589]|(?<=5)[1235678]|(?<=6)[0234567]|(?<=7)[01346789]|(?<=8)[012345789]|(?<=9)[1234567])|(?<=3)[012345678]((?<=0)[134789]|(?<=1)[012345689]|(?<=2)[013456789]|(?<=3)[01245689]|(?<=4)[023579]|(?<=5)[023456789]|(?<=6)[01234789]|(?<=7)[13456789]|(?<=8)[1245679])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[5]|(?<=3)[134578]|(?<=4)[012346789]|(?<=5)[02358]|(?<=6)[1456789]|(?<=7)[0234579]|(?<=8)[124])|(?<=5)[0123456789]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[012345789]|(?<=3)[134567]|(?<=4)[0123456789]|(?<=5)[0123467]|(?<=6)[02356789]|(?<=7)[012345689]|(?<=8)[013456789]|(?<=9)[0124])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[136789]|(?<=3)[034679]|(?<=4)[14679]|(?<=5)[012345789]|(?<=6)[01236789]|(?<=7)[012368]|(?<=8)[0134568])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[013456]|(?<=2)[0123456789]|(?<=3)[12345678]|(?<=4)[248]|(?<=5)[01456789]|(?<=6)[0123]))|(?<=7)[01234567]((?<=0)[01234567]((?<=0)[1234567]|(?<=1)[02345678]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[012356789]|(?<=5)[012345789]|(?<=6)[123456789]|(?<=7)[01235678])|(?<=1)[019]((?<=0)[345678]|(?<=1)[07]|(?<=9)[7])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[2346789]|(?<=2)[0134567]|(?<=3)[123456789]|(?<=4)[12356789]|(?<=5)[1256789]|(?<=6)[012345689]|(?<=7)[01234689])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[1234579]|(?<=2)[1234589]|(?<=3)[0124579]|(?<=4)[01245689]|(?<=5)[0345689]|(?<=6)[123456789]|(?<=7)[0134569]|(?<=8)[0123456])|(?<=4)[02345678]((?<=0)[1]|(?<=2)[01246789]|(?<=3)[023456789]|(?<=4)[0125689]|(?<=5)[0124567]|(?<=6)[0156789]|(?<=7)[012345679]|(?<=8)[1])|(?<=5)[02345678]((?<=0)[1]|(?<=2)[012389]|(?<=3)[1234678]|(?<=4)[013478]|(?<=5)[12359]|(?<=6)[02346789]|(?<=7)[0124679]|(?<=8)[045])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012356]|(?<=3)[01234689]|(?<=4)[01245689]|(?<=5)[0126789]|(?<=6)[01])|(?<=7)[0123456789]((?<=0)[1236]|(?<=1)[46789]|(?<=2)[0245]|(?<=3)[02578]|(?<=4)[14578]|(?<=5)[01245689]|(?<=6)[01234679]|(?<=7)[023569]|(?<=8)[023578]|(?<=9)[012349]))|(?<=8)[012345678]((?<=0)[012345678]((?<=0)[12456789]|(?<=1)[1235678]|(?<=2)[179]|(?<=3)[0123568]|(?<=4)[012356789]|(?<=5)[12346789]|(?<=6)[012345789]|(?<=7)[12456789]|(?<=8)[1])|(?<=1)[0]((?<=0)[2345])|(?<=2)[012345678]((?<=0)[12345]|(?<=1)[024689]|(?<=2)[02345789]|(?<=3)[01356789]|(?<=4)[01349]|(?<=5)[01456789]|(?<=6)[0125679]|(?<=7)[012345678]|(?<=8)[12])|(?<=3)[012345678]((?<=0)[1]|(?<=1)[013678]|(?<=2)[134579]|(?<=3)[012589]|(?<=4)[134568]|(?<=5)[123567]|(?<=6)[12356789]|(?<=7)[02479]|(?<=8)[012456])|(?<=4)[0123456789]((?<=0)[125]|(?<=1)[3568]|(?<=2)[012345689]|(?<=3)[013689]|(?<=4)[0123458]|(?<=5)[124568]|(?<=6)[013467]|(?<=7)[2456789]|(?<=8)[01234678]|(?<=9)[024567])|(?<=5)[02345678]((?<=0)[1345]|(?<=2)[013489]|(?<=3)[012358]|(?<=4)[012459]|(?<=5)[2489]|(?<=6)[012345689]|(?<=7)[01235679]|(?<=8)[01])|(?<=6)[02345]((?<=0)[1]|(?<=2)[0123567]|(?<=3)[0124689]|(?<=4)[012345679]|(?<=5)[0123456])|(?<=7)[0123456789]((?<=0)[13457]|(?<=1)[012368]|(?<=2)[12357]|(?<=3)[0134567]|(?<=4)[01468]|(?<=5)[0256789]|(?<=6)[0123589]|(?<=7)[01235689]|(?<=8)[12345789]|(?<=9)[02345])|(?<=8)[0345]((?<=0)[1]|(?<=3)[01358]|(?<=4)[34579]|(?<=5)[2346]))|(?<=9)[0123456789]((?<=0)[012345678]((?<=0)[123678]|(?<=1)[012345689]|(?<=2)[02456789]|(?<=3)[0123456789]|(?<=4)[13467]|(?<=5)[02345789]|(?<=6)[123456789]|(?<=7)[012456789]|(?<=8)[12356789])|(?<=1)[0]((?<=0)[1256])|(?<=2)[01234567]((?<=0)[1]|(?<=1)[12345789]|(?<=2)[12356]|(?<=3)[01]|(?<=4)[0123478]|(?<=5)[023456789]|(?<=6)[0123]|(?<=7)[03456])|(?<=3)[012345]((?<=0)[1]|(?<=1)[123456789]|(?<=2)[23467]|(?<=3)[0236789]|(?<=4)[34579]|(?<=5)[134])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[01246789]|(?<=2)[012457]|(?<=3)[023456]|(?<=4)[01234678]|(?<=5)[0123467]|(?<=6)[0123456789]|(?<=7)[12479]|(?<=8)[02345679])|(?<=5)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[012578]|(?<=4)[024567])|(?<=6)[0234]((?<=0)[12]|(?<=2)[35]|(?<=3)[12345689]|(?<=4)[0234578])|(?<=7)[0123456]((?<=0)[1]|(?<=1)[0134568]|(?<=2)[01245789]|(?<=3)[0123569]|(?<=4)[01356789]|(?<=5)[01245689]|(?<=6)[012])|(?<=8)[01234567]((?<=0)[12348]|(?<=1)[2]|(?<=2)[013456789]|(?<=3)[012347]|(?<=4)[012345678]|(?<=5)[1345689]|(?<=6)[0345678]|(?<=7)[012345])|(?<=9)[0123]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[02356789]|(?<=3)[01234567])))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[0123456789]((?<=0)[24578]|(?<=1)[0234568]|(?<=2)[012569]|(?<=3)[01345]|(?<=4)[012345678]|(?<=5)[0136]|(?<=6)[0124789]|(?<=7)[01234567]|(?<=8)[1345789]|(?<=9)[0136789])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[0123589]|(?<=2)[03469]|(?<=3)[01345679]|(?<=4)[01234568]|(?<=5)[01234567]|(?<=6)[023459]|(?<=7)[12345678]|(?<=8)[01345789]|(?<=9)[012345])|(?<=2)[0]((?<=0)[1238])|(?<=3)[0]((?<=0)[1245])|(?<=4)[0123456789]((?<=0)[12346789]|(?<=1)[0156789]|(?<=2)[012345689]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[012356789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[01247]|(?<=9)[01])|(?<=5)[01234568]((?<=0)[123456]|(?<=1)[0123456789]|(?<=2)[013567]|(?<=3)[01246789]|(?<=4)[012345689]|(?<=5)[0123456789]|(?<=6)[01345]|(?<=8)[56])|(?<=6)[0123456]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[012346789]|(?<=4)[012345679]|(?<=5)[12345679]|(?<=6)[01])|(?<=7)[01]((?<=0)[67]|(?<=1)[24])|(?<=8)[02]((?<=0)[345]|(?<=2)[7])|(?<=9)[01234567]((?<=0)[1]|(?<=1)[012345789]|(?<=2)[01246789]|(?<=3)[012345689]|(?<=4)[0125689]|(?<=5)[0123456789]|(?<=6)[012346789]|(?<=7)[034]))|(?<=1)[0123456789]((?<=0)[0123456789]((?<=0)[1678]|(?<=1)[012345689]|(?<=2)[014578]|(?<=3)[0126789]|(?<=4)[12346789]|(?<=5)[0123479]|(?<=6)[01234578]|(?<=7)[012345789]|(?<=8)[0145789]|(?<=9)[1])|(?<=1)[01]((?<=0)[1234789]|(?<=1)[1245])|(?<=2)[0345678]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[01246789]|(?<=6)[012345]|(?<=7)[023456789]|(?<=8)[12345])|(?<=3)[01234567]((?<=0)[1]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012345678]|(?<=4)[01245689]|(?<=5)[034689]|(?<=6)[01234789]|(?<=7)[0123456789])|(?<=4)[0123456789]((?<=0)[12]|(?<=1)[0123456789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[0123789]|(?<=5)[01234589]|(?<=6)[0256789]|(?<=7)[0123456789]|(?<=8)[02345689]|(?<=9)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[679]|(?<=2)[0345689]|(?<=3)[012345679]|(?<=4)[012345678]|(?<=5)[02349]|(?<=6)[012345789]|(?<=7)[012])|(?<=6)[012]((?<=0)[234567]|(?<=1)[01456]|(?<=2)[5])|(?<=7)[0234567]((?<=0)[145]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012345789]|(?<=5)[01234569]|(?<=6)[0149]|(?<=7)[012345678])|(?<=8)[012345678]((?<=0)[12]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[012349]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[23456]|(?<=7)[012345678]|(?<=8)[0234])|(?<=9)[12345]((?<=1)[0123479]|(?<=2)[04589]|(?<=3)[0123678]|(?<=4)[012349]|(?<=5)[13567]))|(?<=2)[023456789]((?<=0)[0123456789]((?<=0)[1269]|(?<=1)[0123456789]|(?<=2)[12345678]|(?<=3)[01234567]|(?<=4)[0456789]|(?<=5)[01234689]|(?<=6)[012379]|(?<=7)[456789]|(?<=8)[0123456789]|(?<=9)[01234578])|(?<=2)[0123456789]((?<=0)[1345678]|(?<=1)[456789]|(?<=2)[01356]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[0345678]|(?<=6)[012345689]|(?<=7)[12345789]|(?<=8)[01245689]|(?<=9)[234578])|(?<=3)[012345678]((?<=0)[15]|(?<=1)[123469]|(?<=2)[013456]|(?<=3)[04689]|(?<=4)[013456789]|(?<=5)[123456789]|(?<=6)[0123567]|(?<=7)[0345689]|(?<=8)[0])|(?<=4)[012345678]((?<=0)[1]|(?<=1)[0134789]|(?<=2)[012345678]|(?<=3)[1234689]|(?<=4)[0123456789]|(?<=5)[012489]|(?<=6)[0123456789]|(?<=7)[13456789]|(?<=8)[01])|(?<=5)[01234567]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[01236]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[01345678]|(?<=6)[013578]|(?<=7)[0123])|(?<=6)[0123456789]((?<=0)[1]|(?<=1)[0123578]|(?<=2)[12456789]|(?<=3)[0134589]|(?<=4)[02349]|(?<=5)[056]|(?<=6)[1345678]|(?<=7)[0123457]|(?<=8)[124589]|(?<=9)[012345])|(?<=7)[01]((?<=0)[123467]|(?<=1)[12])|(?<=8)[0123456789]((?<=0)[136789]|(?<=1)[012456789]|(?<=2)[012345789]|(?<=3)[012356789]|(?<=4)[1234689]|(?<=5)[01234689]|(?<=6)[012345789]|(?<=7)[012456789]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[1235678]|(?<=1)[02456789]|(?<=2)[01234678]|(?<=3)[01234589]|(?<=4)[01236789]|(?<=5)[012346789]|(?<=6)[012345679]|(?<=7)[0245679]|(?<=8)[234578]|(?<=9)[02456789]))|(?<=3)[013456789]((?<=0)[0123456789]((?<=0)[5]|(?<=1)[012345679]|(?<=2)[013568]|(?<=3)[01346789]|(?<=4)[012345789]|(?<=5)[012356]|(?<=6)[0189]|(?<=7)[0123479]|(?<=8)[04789]|(?<=9)[01])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[013467]|(?<=5)[5])|(?<=3)[03456789]((?<=0)[134]|(?<=3)[023469]|(?<=4)[1345789]|(?<=5)[012379]|(?<=6)[12356789]|(?<=7)[3679]|(?<=8)[0123456789]|(?<=9)[0])|(?<=4)[034567]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[0135678]|(?<=5)[012346789]|(?<=6)[012356789]|(?<=7)[1234])|(?<=5)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[013456789]|(?<=5)[1256789]|(?<=6)[013567])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[013678]|(?<=4)[058]|(?<=5)[03456]|(?<=6)[02345]|(?<=7)[0345])|(?<=7)[0345678]((?<=0)[13]|(?<=3)[025689]|(?<=4)[02345678]|(?<=5)[0158]|(?<=6)[034679]|(?<=7)[0145]|(?<=8)[0123457])|(?<=8)[02345678]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[03479]|(?<=4)[0156789]|(?<=5)[012357]|(?<=6)[0236789]|(?<=7)[0346789]|(?<=8)[02])|(?<=9)[03456]((?<=0)[1]|(?<=3)[2345679]|(?<=4)[012345]|(?<=5)[01234567]|(?<=6)[0124567]))|(?<=4)[0145678]((?<=0)[0123456789]((?<=0)[1]|(?<=1)[12456789]|(?<=2)[012489]|(?<=3)[04567]|(?<=4)[08]|(?<=5)[02345678]|(?<=6)[012345678]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[023678])|(?<=1)[0123456]((?<=0)[125689]|(?<=1)[012346789]|(?<=2)[03456789]|(?<=3)[012346789]|(?<=4)[5679]|(?<=5)[012345678]|(?<=6)[134567])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[012345689]|(?<=5)[13456789]|(?<=6)[1356789]|(?<=7)[01345679]|(?<=8)[012345679]|(?<=9)[012346789])|(?<=5)[0]((?<=0)[134567])|(?<=6)[02345678]((?<=0)[1]|(?<=2)[023458]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[01478]|(?<=7)[0123469]|(?<=8)[123689])|(?<=7)[023456789]((?<=0)[1]|(?<=2)[0234568]|(?<=3)[034589]|(?<=4)[012345678]|(?<=5)[02569]|(?<=6)[123579]|(?<=7)[012689]|(?<=8)[01348]|(?<=9)[0])|(?<=8)[034567]((?<=0)[14]|(?<=3)[0123456]|(?<=4)[01234789]|(?<=5)[0456789]|(?<=6)[1235678]|(?<=7)[034]))|(?<=5)[012345678]((?<=0)[012345678]((?<=0)[1]|(?<=1)[0134678]|(?<=2)[03456]|(?<=3)[24579]|(?<=4)[0136789]|(?<=5)[0123489]|(?<=6)[123456789]|(?<=7)[2456789]|(?<=8)[012345])|(?<=1)[0]((?<=0)[19])|(?<=2)[01345678]((?<=0)[123]|(?<=1)[56]|(?<=3)[0123679]|(?<=4)[034678]|(?<=5)[01456789]|(?<=6)[012345]|(?<=7)[045689]|(?<=8)[01234567])|(?<=3)[023456]((?<=0)[15]|(?<=2)[012345679]|(?<=3)[023456789]|(?<=4)[045789]|(?<=5)[0145]|(?<=6)[0])|(?<=4)[0345678]((?<=0)[19]|(?<=3)[689]|(?<=4)[013469]|(?<=5)[23679]|(?<=6)[123468]|(?<=7)[039]|(?<=8)[346])|(?<=5)[023456789]((?<=0)[1]|(?<=2)[9]|(?<=3)[456]|(?<=4)[1238]|(?<=5)[025679]|(?<=6)[04567]|(?<=7)[01]|(?<=8)[0234689]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[1345689]|(?<=1)[012346789]|(?<=2)[02345679]|(?<=3)[01234578]|(?<=4)[0146789]|(?<=5)[02345678]|(?<=6)[012346789]|(?<=7)[24569]|(?<=8)[0125689]|(?<=9)[02])|(?<=7)[0123456789]((?<=0)[245678]|(?<=1)[0123457]|(?<=2)[0123456789]|(?<=3)[012345789]|(?<=4)[0124567]|(?<=5)[2345679]|(?<=6)[01246789]|(?<=7)[012345789]|(?<=8)[13456789]|(?<=9)[013])|(?<=8)[019]((?<=0)[1234679]|(?<=1)[0]|(?<=9)[7]))|(?<=6)[012456789]((?<=0)[0123456789]((?<=0)[2678]|(?<=1)[02345678]|(?<=2)[0134567]|(?<=3)[012359]|(?<=4)[0123456789]|(?<=5)[023468]|(?<=6)[012467]|(?<=7)[01235689]|(?<=8)[035678]|(?<=9)[0123457])|(?<=1)[016]((?<=0)[1234569]|(?<=1)[1258]|(?<=6)[0])|(?<=2)[0125]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013467]|(?<=5)[1])|(?<=4)[012345]((?<=0)[12346789]|(?<=1)[123456789]|(?<=2)[2345789]|(?<=3)[124689]|(?<=4)[0129]|(?<=5)[1])|(?<=5)[012345]((?<=0)[1236789]|(?<=1)[0245678]|(?<=2)[01234678]|(?<=3)[123456789]|(?<=4)[012346789]|(?<=5)[024])|(?<=6)[012]((?<=0)[3456789]|(?<=1)[012456789]|(?<=2)[12])|(?<=7)[012345678]((?<=0)[1]|(?<=1)[0123467]|(?<=2)[045]|(?<=3)[2345689]|(?<=4)[0123689]|(?<=5)[1345678]|(?<=6)[012379]|(?<=7)[012356789]|(?<=8)[0123])|(?<=8)[034567]((?<=0)[1]|(?<=3)[034589]|(?<=4)[023569]|(?<=5)[012346789]|(?<=6)[012345689]|(?<=7)[0123])|(?<=9)[034567]((?<=0)[1]|(?<=3)[02356789]|(?<=4)[012345689]|(?<=5)[1235689]|(?<=6)[01234678]|(?<=7)[0]))|(?<=7)[0123456789]((?<=0)[01234567]((?<=0)[1234589]|(?<=1)[0236789]|(?<=2)[012345689]|(?<=3)[0156789]|(?<=4)[12579]|(?<=5)[0123456789]|(?<=6)[01235678]|(?<=7)[01234])|(?<=1)[012345]((?<=0)[123456789]|(?<=1)[0124789]|(?<=2)[02347]|(?<=3)[1234578]|(?<=4)[0234679]|(?<=5)[0124569])|(?<=2)[01236]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[013678]|(?<=3)[025]|(?<=6)[0])|(?<=3)[03456]((?<=0)[1]|(?<=3)[0234567]|(?<=4)[01245679]|(?<=5)[1234567]|(?<=6)[0134])|(?<=4)[0123456789]((?<=0)[1]|(?<=1)[0678]|(?<=2)[023578]|(?<=3)[0126789]|(?<=4)[123456789]|(?<=5)[012456789]|(?<=6)[04678]|(?<=7)[034568]|(?<=8)[0123457]|(?<=9)[012])|(?<=5)[012345678]((?<=0)[125]|(?<=1)[012345689]|(?<=2)[01234569]|(?<=3)[0]|(?<=4)[345678]|(?<=5)[0234679]|(?<=6)[01345678]|(?<=7)[02345689]|(?<=8)[134])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[12356789]|(?<=3)[1245789]|(?<=4)[023456789]|(?<=5)[01346789]|(?<=6)[0134579]|(?<=7)[12345])|(?<=7)[03456]((?<=0)[1]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[123678]|(?<=6)[124])|(?<=8)[0345678]((?<=0)[1]|(?<=3)[1456789]|(?<=4)[0123469]|(?<=5)[0134579]|(?<=6)[012345789]|(?<=7)[016789]|(?<=8)[02])|(?<=9)[05]((?<=0)[1]|(?<=5)[01234]))|(?<=8)[013456789]((?<=0)[01234567]((?<=0)[1234578]|(?<=1)[0456789]|(?<=2)[023589]|(?<=3)[01346789]|(?<=4)[01245678]|(?<=5)[056789]|(?<=6)[123456789]|(?<=7)[0123])|(?<=1)[012345678]((?<=0)[245678]|(?<=1)[01234678]|(?<=2)[23478]|(?<=3)[012345678]|(?<=4)[247]|(?<=5)[247]|(?<=6)[4]|(?<=7)[8]|(?<=8)[23])|(?<=3)[012345678]((?<=0)[134579]|(?<=1)[03456789]|(?<=2)[0123456789]|(?<=3)[012356789]|(?<=4)[0123456789]|(?<=5)[01245789]|(?<=6)[01245678]|(?<=7)[01256789]|(?<=8)[012])|(?<=4)[0123456]((?<=0)[12345679]|(?<=1)[03456789]|(?<=2)[0123489]|(?<=3)[01346789]|(?<=4)[012345678]|(?<=5)[02345678]|(?<=6)[01234567])|(?<=5)[01238]((?<=0)[2345678]|(?<=1)[02467]|(?<=2)[01234678]|(?<=3)[12]|(?<=8)[8])|(?<=6)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[12345678]|(?<=4)[01234789]|(?<=5)[1234589]|(?<=6)[012345679])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[013456789]|(?<=2)[023456789]|(?<=3)[01234569]|(?<=4)[012356789]|(?<=5)[12356789]|(?<=6)[013456789]|(?<=7)[01346789]|(?<=8)[013456789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[13]|(?<=1)[02345678]|(?<=2)[012345678]|(?<=3)[12345678]|(?<=4)[012345679]|(?<=5)[02345689]|(?<=6)[01234569]|(?<=7)[012345689]|(?<=8)[123])|(?<=9)[02345678]((?<=0)[1]|(?<=2)[023456789]|(?<=3)[023456789]|(?<=4)[0123456789]|(?<=5)[02456789]|(?<=6)[01467]|(?<=7)[0123456789]|(?<=8)[012]))|(?<=9)[0123]((?<=0)[0234]((?<=0)[1]|(?<=2)[0123456789]|(?<=3)[02346789]|(?<=4)[0123456])|(?<=1)[0234567]((?<=0)[1]|(?<=2)[01235789]|(?<=3)[0123458]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[12356789]|(?<=7)[01])|(?<=2)[012]((?<=0)[1]|(?<=1)[01246789]|(?<=2)[01])|(?<=3)[03456]((?<=0)[1]|(?<=3)[1345679]|(?<=4)[0135678]|(?<=5)[012345678]|(?<=6)[01567])))|(?<=7)[0123456789]((?<=0)[01345678]((?<=0)[03456789]((?<=0)[12356]|(?<=3)[0126789]|(?<=4)[01379]|(?<=5)[0123678]|(?<=6)[2578]|(?<=7)[012569]|(?<=8)[0234567]|(?<=9)[0124])|(?<=1)[12346]((?<=1)[23456789]|(?<=2)[123456789]|(?<=3)[019]|(?<=4)[8]|(?<=6)[3])|(?<=3)[013456789]((?<=0)[1]|(?<=1)[0]|(?<=3)[9]|(?<=4)[0123456]|(?<=5)[23456789]|(?<=6)[034]|(?<=7)[23457]|(?<=8)[0]|(?<=9)[0123457])|(?<=4)[0234567]((?<=0)[123]|(?<=2)[0267]|(?<=3)[135678]|(?<=4)[123456789]|(?<=5)[012345678]|(?<=6)[0123456]|(?<=7)[1])|(?<=5)[0123456789]((?<=0)[13678]|(?<=1)[023456789]|(?<=2)[02345689]|(?<=3)[1234578]|(?<=4)[1234689]|(?<=5)[01245689]|(?<=6)[03]|(?<=7)[05678]|(?<=8)[01234569]|(?<=9)[12])|(?<=6)[0123456]((?<=0)[1579]|(?<=1)[15]|(?<=2)[9]|(?<=3)[01234789]|(?<=4)[0345678]|(?<=5)[0123456789]|(?<=6)[0123589])|(?<=7)[0123456789]((?<=0)[6]|(?<=1)[012459]|(?<=2)[123569]|(?<=3)[0234679]|(?<=4)[034789]|(?<=5)[02345679]|(?<=6)[0123479]|(?<=7)[02345678]|(?<=8)[02356789]|(?<=9)[1])|(?<=8)[0123]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[05]|(?<=3)[6]))|(?<=1)[012346789]((?<=0)[012345678]((?<=0)[12346789]|(?<=1)[689]|(?<=2)[134789]|(?<=3)[01234789]|(?<=4)[03456789]|(?<=5)[125]|(?<=6)[013456789]|(?<=7)[0123589]|(?<=8)[2])|(?<=1)[012]((?<=0)[13456789]|(?<=1)[012589]|(?<=2)[9])|(?<=2)[0123456789]((?<=0)[1239]|(?<=1)[289]|(?<=2)[0235679]|(?<=3)[0234578]|(?<=4)[12357]|(?<=5)[013469]|(?<=6)[0134689]|(?<=7)[025679]|(?<=8)[026]|(?<=9)[125])|(?<=3)[01234567]((?<=0)[123]|(?<=1)[6]|(?<=2)[0235678]|(?<=3)[013469]|(?<=4)[012356]|(?<=5)[013456789]|(?<=6)[026789]|(?<=7)[1358])|(?<=4)[0123456789]((?<=0)[1345679]|(?<=1)[01456789]|(?<=2)[23456789]|(?<=3)[0234589]|(?<=4)[1679]|(?<=5)[0245679]|(?<=6)[12356789]|(?<=7)[23459]|(?<=8)[0356]|(?<=9)[7])|(?<=6)[034567]((?<=0)[123]|(?<=3)[01589]|(?<=4)[023467]|(?<=5)[1234589]|(?<=6)[0123567]|(?<=7)[0145678])|(?<=7)[0234567]((?<=0)[1]|(?<=2)[0124568]|(?<=3)[0]|(?<=4)[02345789]|(?<=5)[12389]|(?<=6)[23456]|(?<=7)[02])|(?<=8)[023456]((?<=0)[1]|(?<=2)[023567]|(?<=3)[123456789]|(?<=4)[12567]|(?<=5)[12345789]|(?<=6)[012456])|(?<=9)[012345679]((?<=0)[19]|(?<=1)[3]|(?<=2)[1239]|(?<=3)[357]|(?<=4)[0123459]|(?<=5)[0236789]|(?<=6)[0124589]|(?<=7)[0123]|(?<=9)[89]))|(?<=2)[0123456789]((?<=0)[0123456789]((?<=0)[1234567]|(?<=1)[012345679]|(?<=2)[0123456789]|(?<=3)[01245689]|(?<=4)[01245678]|(?<=5)[1235789]|(?<=6)[013456789]|(?<=7)[0234569]|(?<=8)[012345678]|(?<=9)[9])|(?<=1)[0123456789]((?<=0)[1234678]|(?<=1)[012346789]|(?<=2)[012356789]|(?<=3)[012345679]|(?<=4)[0123]|(?<=5)[02367]|(?<=6)[056789]|(?<=7)[035689]|(?<=8)[0123]|(?<=9)[9])|(?<=2)[012]((?<=0)[1245679]|(?<=1)[012]|(?<=2)[37])|(?<=3)[0123456789]((?<=0)[1]|(?<=1)[135]|(?<=2)[02456789]|(?<=3)[0123589]|(?<=4)[012678]|(?<=5)[01234589]|(?<=6)[0456789]|(?<=7)[0234679]|(?<=8)[34679]|(?<=9)[012456])|(?<=4)[012345678]((?<=0)[145]|(?<=1)[012345679]|(?<=2)[12456789]|(?<=3)[012345678]|(?<=4)[01234579]|(?<=5)[03456789]|(?<=6)[0124679]|(?<=7)[0123689]|(?<=8)[2])|(?<=5)[012345678]((?<=0)[1]|(?<=1)[23579]|(?<=2)[012346789]|(?<=3)[012346789]|(?<=4)[02346]|(?<=5)[03456]|(?<=6)[012456789]|(?<=7)[1236789]|(?<=8)[13457])|(?<=6)[012345678]((?<=0)[1]|(?<=1)[15679]|(?<=2)[34689]|(?<=3)[012345689]|(?<=4)[012458]|(?<=5)[01358]|(?<=6)[0123689]|(?<=7)[02579]|(?<=8)[023567])|(?<=7)[01234567]((?<=0)[134]|(?<=1)[2345789]|(?<=2)[1279]|(?<=3)[024689]|(?<=4)[024579]|(?<=5)[12368]|(?<=6)[012489]|(?<=7)[346])|(?<=8)[023456]((?<=0)[12]|(?<=2)[1346789]|(?<=3)[02345789]|(?<=4)[0123567]|(?<=5)[12345678]|(?<=6)[035])|(?<=9)[012345]((?<=0)[13458]|(?<=1)[6]|(?<=2)[13678]|(?<=3)[02345678]|(?<=4)[013456789]|(?<=5)[0125689]))|(?<=3)[01456789]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123468]|(?<=4)[012345789]|(?<=5)[0123456789]|(?<=6)[123456789]|(?<=7)[012345789]|(?<=8)[02469]|(?<=9)[02356789])|(?<=1)[01234567]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[012789]|(?<=3)[012459]|(?<=4)[1259]|(?<=5)[019]|(?<=6)[0259]|(?<=7)[039])|(?<=4)[02345689]((?<=0)[1]|(?<=2)[5]|(?<=3)[023456789]|(?<=4)[012346789]|(?<=5)[035689]|(?<=6)[013]|(?<=8)[178]|(?<=9)[1])|(?<=5)[0234567]((?<=0)[1357]|(?<=2)[0136789]|(?<=3)[0123789]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[02456789]|(?<=7)[0123])|(?<=6)[0234567]((?<=0)[1]|(?<=2)[0245678]|(?<=3)[289]|(?<=4)[124567]|(?<=5)[014589]|(?<=6)[012346789]|(?<=7)[3])|(?<=7)[01234567]((?<=0)[135]|(?<=1)[6789]|(?<=2)[0246789]|(?<=3)[013456789]|(?<=4)[1234679]|(?<=5)[03456789]|(?<=6)[0123468]|(?<=7)[0123])|(?<=8)[03456]((?<=0)[1]|(?<=3)[2458]|(?<=4)[012348]|(?<=5)[1235789]|(?<=6)[0])|(?<=9)[03456]((?<=0)[1]|(?<=3)[123789]|(?<=4)[245679]|(?<=5)[01]|(?<=6)[0]))|(?<=4)[013456789]((?<=0)[012345678]((?<=0)[12368]|(?<=1)[01245679]|(?<=2)[01236789]|(?<=3)[023456789]|(?<=4)[1245678]|(?<=5)[012345689]|(?<=6)[012368]|(?<=7)[012345789]|(?<=8)[012345])|(?<=1)[012347]((?<=0)[345678]|(?<=1)[0245679]|(?<=2)[06789]|(?<=3)[01234567]|(?<=4)[56]|(?<=7)[1])|(?<=3)[034567]((?<=0)[1]|(?<=3)[0123789]|(?<=4)[0234679]|(?<=5)[02489]|(?<=6)[013456789]|(?<=7)[0])|(?<=4)[0234567]((?<=0)[13]|(?<=2)[12356789]|(?<=3)[01245678]|(?<=4)[12567]|(?<=5)[012456789]|(?<=6)[0234789]|(?<=7)[0127])|(?<=5)[0234567]((?<=0)[1]|(?<=2)[12358]|(?<=3)[0134568]|(?<=4)[03679]|(?<=5)[2345678]|(?<=6)[0123579]|(?<=7)[0124678])|(?<=6)[0345]((?<=0)[14]|(?<=3)[012367]|(?<=4)[013467]|(?<=5)[0123])|(?<=7)[023456]((?<=0)[1]|(?<=2)[012346789]|(?<=3)[01345678]|(?<=4)[013578]|(?<=5)[034569]|(?<=6)[0146])|(?<=8)[02345678]((?<=0)[14]|(?<=2)[045679]|(?<=3)[01234679]|(?<=4)[0234589]|(?<=5)[01245679]|(?<=6)[0456789]|(?<=7)[12358]|(?<=8)[0134])|(?<=9)[03456]((?<=0)[12]|(?<=3)[0125679]|(?<=4)[0123456789]|(?<=5)[1345679]|(?<=6)[023456]))|(?<=5)[0123456789]((?<=0)[0123456789]((?<=0)[12679]|(?<=1)[039]|(?<=2)[0123458]|(?<=3)[2345689]|(?<=4)[012348]|(?<=5)[0124678]|(?<=6)[01235789]|(?<=7)[01245678]|(?<=8)[012789]|(?<=9)[02348])|(?<=1)[012345678]((?<=0)[123459]|(?<=1)[045679]|(?<=2)[4567]|(?<=3)[2457]|(?<=4)[012346789]|(?<=5)[023456789]|(?<=6)[01345679]|(?<=7)[23]|(?<=8)[0129])|(?<=2)[012345678]((?<=0)[123456789]|(?<=1)[012456789]|(?<=2)[03456789]|(?<=3)[012345678]|(?<=4)[01346789]|(?<=5)[1234]|(?<=6)[1]|(?<=7)[0]|(?<=8)[7])|(?<=3)[9]((?<=9)[0])|(?<=4)[0123456789]((?<=0)[1279]|(?<=1)[012345678]|(?<=2)[01234689]|(?<=3)[123456789]|(?<=4)[0126789]|(?<=5)[01234579]|(?<=6)[0289]|(?<=7)[0123456789]|(?<=8)[0126789]|(?<=9)[01234567])|(?<=5)[0567]((?<=0)[13]|(?<=5)[0145689]|(?<=6)[0123456789]|(?<=7)[01234])|(?<=6)[03456789]((?<=0)[12345]|(?<=3)[01389]|(?<=4)[0123457]|(?<=5)[01246789]|(?<=6)[12789]|(?<=7)[012]|(?<=8)[01234679]|(?<=9)[1234])|(?<=7)[0156789]((?<=0)[123456789]|(?<=1)[1]|(?<=5)[012456789]|(?<=6)[023456]|(?<=7)[01389]|(?<=8)[0234589]|(?<=9)[012])|(?<=8)[034568]((?<=0)[13]|(?<=3)[13589]|(?<=4)[0456789]|(?<=5)[01235689]|(?<=6)[0125]|(?<=8)[46])|(?<=9)[02345678]((?<=0)[134]|(?<=2)[5689]|(?<=3)[0123456789]|(?<=4)[1234689]|(?<=5)[1469]|(?<=6)[01245689]|(?<=7)[2345679]|(?<=8)[0]))|(?<=6)[0123456789]((?<=0)[0123456789]((?<=0)[125689]|(?<=1)[012345678]|(?<=2)[01238]|(?<=3)[134569]|(?<=4)[013489]|(?<=5)[01234589]|(?<=6)[0134567]|(?<=7)[01378]|(?<=8)[245678]|(?<=9)[23])|(?<=1)[012345678]((?<=0)[23456789]|(?<=1)[012456789]|(?<=2)[03679]|(?<=3)[123457]|(?<=4)[08]|(?<=5)[5]|(?<=6)[4]|(?<=7)[79]|(?<=8)[02])|(?<=2)[01234567]((?<=0)[135789]|(?<=1)[0]|(?<=2)[5678]|(?<=3)[03489]|(?<=4)[0145789]|(?<=5)[0123589]|(?<=6)[12345678]|(?<=7)[0123])|(?<=3)[015678]((?<=0)[125689]|(?<=1)[01]|(?<=5)[147]|(?<=6)[034567]|(?<=7)[0123479]|(?<=8)[0489])|(?<=4)[023456789]((?<=0)[12]|(?<=2)[4679]|(?<=3)[01235679]|(?<=4)[2345689]|(?<=5)[02345789]|(?<=6)[023469]|(?<=7)[012456]|(?<=8)[13467]|(?<=9)[01])|(?<=5)[012345679]((?<=0)[124]|(?<=1)[1389]|(?<=2)[0234578]|(?<=3)[014789]|(?<=4)[123489]|(?<=5)[04679]|(?<=6)[15679]|(?<=7)[0134789]|(?<=9)[6789])|(?<=6)[23456789]((?<=2)[12346789]|(?<=3)[0123456789]|(?<=4)[0123589]|(?<=5)[01234567]|(?<=6)[014567]|(?<=7)[013689]|(?<=8)[0125679]|(?<=9)[0123])|(?<=7)[019]((?<=0)[145678]|(?<=1)[012]|(?<=9)[8])|(?<=8)[023456789]((?<=0)[12]|(?<=2)[0134578]|(?<=3)[12467]|(?<=4)[124589]|(?<=5)[2346789]|(?<=6)[124569]|(?<=7)[01234578]|(?<=8)[024578]|(?<=9)[0])|(?<=9)[0345]((?<=0)[1234589]|(?<=3)[02345679]|(?<=4)[0135]|(?<=5)[013578]))|(?<=7)[023456789]((?<=0)[0123456789]((?<=0)[23456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345689])|(?<=2)[0]((?<=0)[4])|(?<=3)[0123456789]((?<=0)[12346]|(?<=1)[68]|(?<=2)[0678]|(?<=3)[145689]|(?<=4)[01256]|(?<=5)[01456789]|(?<=6)[02345789]|(?<=7)[123456789]|(?<=8)[01245689]|(?<=9)[6])|(?<=4)[0123456789]((?<=0)[167]|(?<=1)[245789]|(?<=2)[023689]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[013456789]|(?<=6)[01456789]|(?<=7)[013456789]|(?<=8)[012345689]|(?<=9)[348])|(?<=5)[0123456789]((?<=0)[234567]|(?<=1)[0145789]|(?<=2)[013]|(?<=3)[012345689]|(?<=4)[1567]|(?<=5)[0145]|(?<=6)[01234568]|(?<=7)[13578]|(?<=8)[01234567]|(?<=9)[0178])|(?<=6)[123456]((?<=1)[12345679]|(?<=2)[234579]|(?<=3)[02]|(?<=4)[02]|(?<=5)[015679]|(?<=6)[012345])|(?<=7)[01]((?<=0)[1235678]|(?<=1)[3])|(?<=8)[0345678]((?<=0)[12378]|(?<=3)[013567]|(?<=4)[035]|(?<=5)[235679]|(?<=6)[1345678]|(?<=7)[1235689]|(?<=8)[02])|(?<=9)[056789]((?<=0)[145]|(?<=5)[0147]|(?<=6)[0123489]|(?<=7)[013456789]|(?<=8)[234678]|(?<=9)[01345]))|(?<=8)[0123456789]((?<=0)[01234567]((?<=0)[123456789]|(?<=1)[012345679]|(?<=2)[123456789]|(?<=3)[9]|(?<=4)[013456]|(?<=5)[0256789]|(?<=6)[12345679]|(?<=7)[0123456])|(?<=1)[0123456]((?<=0)[124789]|(?<=1)[12346789]|(?<=2)[12345]|(?<=3)[023]|(?<=4)[012345678]|(?<=5)[012459]|(?<=6)[01234])|(?<=2)[0123456]((?<=0)[12345789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[02345789]|(?<=5)[0123456789]|(?<=6)[01346])|(?<=3)[3456789]((?<=3)[02689]|(?<=4)[0123479]|(?<=5)[1235789]|(?<=6)[012389]|(?<=7)[012345679]|(?<=8)[0234579]|(?<=9)[013])|(?<=4)[01]((?<=0)[12456789]|(?<=1)[0123456789])|(?<=5)[0123456789]((?<=0)[134]|(?<=1)[6]|(?<=2)[016]|(?<=3)[56789]|(?<=4)[01235789]|(?<=5)[02789]|(?<=6)[012345679]|(?<=7)[023456789]|(?<=8)[02345689]|(?<=9)[0123456789])|(?<=6)[012345678]((?<=0)[256789]|(?<=1)[0123456789]|(?<=2)[01234689]|(?<=3)[12345689]|(?<=4)[0123458]|(?<=5)[023456789]|(?<=6)[01234569]|(?<=7)[0124567]|(?<=8)[1])|(?<=7)[012345]((?<=0)[12345]|(?<=1)[279]|(?<=2)[123456789]|(?<=3)[0123456789]|(?<=4)[12456789]|(?<=5)[012346789])|(?<=8)[02345678]((?<=0)[12]|(?<=2)[789]|(?<=3)[02346789]|(?<=4)[0123]|(?<=5)[012]|(?<=6)[01]|(?<=7)[012379]|(?<=8)[013456])|(?<=9)[3456]((?<=3)[123458]|(?<=4)[0123456789]|(?<=5)[0134679]|(?<=6)[23]))|(?<=9)[0123456789]((?<=0)[0123456789]((?<=0)[1235789]|(?<=1)[012345689]|(?<=2)[124579]|(?<=3)[1234569]|(?<=4)[0123456]|(?<=5)[12346789]|(?<=6)[1234568]|(?<=7)[02389]|(?<=8)[012345678]|(?<=9)[12345678])|(?<=1)[012]((?<=0)[12346789]|(?<=1)[0189]|(?<=2)[14])|(?<=2)[023456]((?<=0)[1]|(?<=2)[035679]|(?<=3)[01345679]|(?<=4)[0134578]|(?<=5)[01256789]|(?<=6)[1])|(?<=3)[12345678]((?<=1)[12346]|(?<=2)[234569]|(?<=3)[0169]|(?<=4)[234567]|(?<=5)[01356789]|(?<=6)[034679]|(?<=7)[01236789]|(?<=8)[0123])|(?<=4)[012]((?<=0)[123467]|(?<=1)[0123456]|(?<=2)[34])|(?<=5)[0123456]((?<=0)[1234568]|(?<=1)[012789]|(?<=2)[0156789]|(?<=3)[023456789]|(?<=4)[013456789]|(?<=5)[36]|(?<=6)[0123567])|(?<=6)[09]((?<=0)[123567]|(?<=9)[9])|(?<=7)[012345678]((?<=0)[13567]|(?<=1)[3489]|(?<=2)[01]|(?<=3)[0134589]|(?<=4)[1234589]|(?<=5)[245689]|(?<=6)[1234569]|(?<=7)[02678]|(?<=8)[0123589])|(?<=8)[2345]((?<=2)[1]|(?<=3)[02456789]|(?<=4)[2356789]|(?<=5)[12345])|(?<=9)[0123]((?<=0)[12345678]|(?<=1)[12568]|(?<=2)[024578]|(?<=3)[024568])))|(?<=8)[0123456789]((?<=0)[0123456789]((?<=0)[01234]((?<=0)[23457]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[013]|(?<=4)[5])|(?<=1)[0123]((?<=0)[123456789]|(?<=1)[0123678]|(?<=2)[0123456789]|(?<=3)[012345678])|(?<=2)[0123469]((?<=0)[2345679]|(?<=1)[01245689]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[1679]|(?<=6)[046]|(?<=9)[034])|(?<=3)[01]((?<=0)[12345]|(?<=1)[0])|(?<=4)[0123456789]((?<=0)[13]|(?<=1)[9]|(?<=2)[012345678]|(?<=3)[02345689]|(?<=4)[02346789]|(?<=5)[12345679]|(?<=6)[1356789]|(?<=7)[01345689]|(?<=8)[01237]|(?<=9)[8])|(?<=5)[012345]((?<=0)[134]|(?<=1)[0234567]|(?<=2)[014568]|(?<=3)[0245678]|(?<=4)[02345679]|(?<=5)[0])|(?<=6)[012345]((?<=0)[123]|(?<=1)[0125]|(?<=2)[01234]|(?<=3)[14]|(?<=4)[02345689]|(?<=5)[01234])|(?<=7)[02345]((?<=0)[15]|(?<=2)[01236789]|(?<=3)[1234567]|(?<=4)[012345679]|(?<=5)[0145789])|(?<=8)[012346]((?<=0)[1245789]|(?<=1)[023456789]|(?<=2)[0123456789]|(?<=3)[0123456]|(?<=4)[0]|(?<=6)[01234])|(?<=9)[01235]((?<=0)[23456789]|(?<=1)[013456789]|(?<=2)[0123456789]|(?<=3)[089]|(?<=5)[1]))|(?<=1)[0123456]((?<=0)[0123456789]((?<=0)[1345678]|(?<=1)[9]|(?<=2)[01234579]|(?<=3)[0369]|(?<=4)[01345679]|(?<=5)[0245789]|(?<=6)[23479]|(?<=7)[1367]|(?<=8)[12479]|(?<=9)[012])|(?<=1)[02345]((?<=0)[1]|(?<=2)[012345689]|(?<=3)[0123678]|(?<=4)[01346789]|(?<=5)[1245])|(?<=2)[012345]((?<=0)[1]|(?<=1)[012]|(?<=2)[012345678]|(?<=3)[0235679]|(?<=4)[012348]|(?<=5)[123])|(?<=3)[023]((?<=0)[13]|(?<=2)[01345678]|(?<=3)[01245])|(?<=4)[0123]((?<=0)[13]|(?<=1)[0135689]|(?<=2)[23456789]|(?<=3)[012345])|(?<=5)[02]((?<=0)[134567]|(?<=2)[01234567])|(?<=6)[012345]((?<=0)[1]|(?<=1)[0125]|(?<=2)[01345]|(?<=3)[01235789]|(?<=4)[012356789]|(?<=5)[0234567]))|(?<=2)[0123456789]((?<=0)[05678]((?<=0)[1579]|(?<=5)[01234589]|(?<=6)[013]|(?<=7)[023]|(?<=8)[1234])|(?<=1)[9]((?<=9)[0])|(?<=2)[0124]((?<=0)[1]|(?<=1)[02345789]|(?<=2)[1234579]|(?<=4)[0234])|(?<=3)[0123]((?<=0)[1]|(?<=1)[0]|(?<=2)[1234579]|(?<=3)[12456])|(?<=4)[012345]((?<=0)[1]|(?<=1)[0124]|(?<=2)[012368]|(?<=3)[012345]|(?<=4)[0123]|(?<=5)[0])|(?<=5)[012]((?<=0)[1]|(?<=1)[023456]|(?<=2)[03])|(?<=6)[0234]((?<=0)[149]|(?<=2)[0]|(?<=3)[0356789]|(?<=4)[0234689])|(?<=7)[0123]((?<=0)[1]|(?<=1)[012468]|(?<=2)[013579]|(?<=3)[012])|(?<=8)[034]((?<=0)[1]|(?<=3)[123456789]|(?<=4)[245])|(?<=9)[0234]((?<=0)[1]|(?<=2)[2359]|(?<=3)[023456789]|(?<=4)[12345]))|(?<=3)[012345678]((?<=0)[012]((?<=0)[1]|(?<=1)[1234]|(?<=2)[5])|(?<=1)[012]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[01234678])|(?<=2)[012345678]((?<=0)[12349]|(?<=1)[01234578]|(?<=2)[013678]|(?<=3)[23456789]|(?<=4)[13456]|(?<=5)[012345]|(?<=6)[123]|(?<=7)[124678]|(?<=8)[13567])|(?<=3)[012345]((?<=0)[12]|(?<=1)[123468]|(?<=2)[01234578]|(?<=3)[02345678]|(?<=4)[01246789]|(?<=5)[02345])|(?<=4)[0123456]((?<=0)[1246]|(?<=1)[4]|(?<=2)[012345789]|(?<=3)[134568]|(?<=4)[02345689]|(?<=5)[01245]|(?<=6)[023456789])|(?<=5)[02345]((?<=0)[1]|(?<=2)[023456]|(?<=3)[035679]|(?<=4)[0123456789]|(?<=5)[2345])|(?<=6)[012345678]((?<=0)[2457]|(?<=1)[0125679]|(?<=2)[2346789]|(?<=3)[12346789]|(?<=4)[12345678]|(?<=5)[014567]|(?<=6)[0169]|(?<=7)[0267]|(?<=8)[67])|(?<=7)[012]((?<=0)[234569]|(?<=1)[2346]|(?<=2)[05])|(?<=8)[01234567]((?<=0)[12345689]|(?<=1)[012345]|(?<=2)[1234567]|(?<=3)[02345679]|(?<=4)[0123456789]|(?<=5)[01245678]|(?<=6)[0146789]|(?<=7)[012346]))|(?<=4)[0134567]((?<=0)[0123456789]((?<=0)[123456789]|(?<=1)[034578]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[012345679]|(?<=7)[01234568]|(?<=8)[012345678]|(?<=9)[2345678])|(?<=1)[012358]((?<=0)[123456789]|(?<=1)[123456789]|(?<=2)[013489]|(?<=3)[8]|(?<=5)[0]|(?<=8)[0])|(?<=3)[01234]((?<=0)[12456789]|(?<=1)[0123456789]|(?<=2)[012456789]|(?<=3)[0123456789]|(?<=4)[01])|(?<=4)[01]((?<=0)[13458]|(?<=1)[4])|(?<=5)[01234]((?<=0)[1]|(?<=1)[123568]|(?<=2)[01235689]|(?<=3)[012345679]|(?<=4)[02])|(?<=6)[023456]((?<=0)[1246]|(?<=2)[012346789]|(?<=3)[0123456789]|(?<=4)[023456789]|(?<=5)[1234567]|(?<=6)[023457])|(?<=7)[0123456789]((?<=0)[1]|(?<=1)[012345689]|(?<=2)[012345689]|(?<=3)[0123456789]|(?<=4)[012345679]|(?<=5)[0123456789]|(?<=6)[01234567]|(?<=7)[0234569]|(?<=8)[01234]|(?<=9)[0]))|(?<=5)[01235679]((?<=0)[0123458]((?<=0)[346789]|(?<=1)[23456789]|(?<=2)[012346789]|(?<=3)[123457]|(?<=4)[0123458]|(?<=5)[0134]|(?<=8)[3567])|(?<=1)[123479]((?<=1)[89]|(?<=2)[01238]|(?<=3)[125789]|(?<=4)[012357]|(?<=7)[23]|(?<=9)[1234])|(?<=2)[012345689]((?<=0)[123456789]|(?<=1)[0235]|(?<=2)[456]|(?<=3)[346]|(?<=4)[89]|(?<=5)[013456789]|(?<=6)[023468]|(?<=8)[12346]|(?<=9)[5678])|(?<=3)[0123456789]((?<=0)[123456789]|(?<=1)[0]|(?<=2)[012345689]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[01234567]|(?<=6)[0123457]|(?<=7)[1345789]|(?<=8)[12378]|(?<=9)[0256])|(?<=5)[0345]((?<=0)[1]|(?<=3)[01234569]|(?<=4)[0123456]|(?<=5)[01234])|(?<=6)[012345]((?<=0)[12356789]|(?<=1)[013456789]|(?<=2)[012345679]|(?<=3)[012345789]|(?<=4)[013568]|(?<=5)[0348])|(?<=7)[012345]((?<=0)[1456789]|(?<=1)[012345689]|(?<=2)[1346]|(?<=3)[045679]|(?<=4)[12356789]|(?<=5)[0567])|(?<=9)[01234]((?<=0)[12]|(?<=1)[12]|(?<=2)[023456789]|(?<=3)[0123456789]|(?<=4)[012]))|(?<=6)[0345]((?<=0)[012345]((?<=0)[1345]|(?<=1)[15678]|(?<=2)[01234589]|(?<=3)[012345689]|(?<=4)[0234567]|(?<=5)[234])|(?<=3)[012345]((?<=0)[135]|(?<=1)[345]|(?<=2)[012345679]|(?<=3)[12345678]|(?<=4)[3]|(?<=5)[1])|(?<=4)[01234]((?<=0)[13469]|(?<=1)[13]|(?<=2)[69]|(?<=3)[12345678]|(?<=4)[012345])|(?<=5)[012345]((?<=0)[2345678]|(?<=1)[01245]|(?<=2)[0]|(?<=3)[58]|(?<=4)[0457]|(?<=5)[6]))|(?<=7)[01345789]((?<=0)[012345678]((?<=0)[1245678]|(?<=1)[012345678]|(?<=2)[0123456789]|(?<=3)[1245678]|(?<=4)[0123456789]|(?<=5)[12369]|(?<=6)[012348]|(?<=7)[02]|(?<=8)[3])|(?<=1)[01245]((?<=0)[12456789]|(?<=1)[0123467]|(?<=2)[01234]|(?<=4)[4]|(?<=5)[1])|(?<=3)[0124567]((?<=0)[15]|(?<=1)[01235679]|(?<=2)[01235678]|(?<=4)[7]|(?<=5)[7]|(?<=6)[45]|(?<=7)[5])|(?<=4)[012569]((?<=0)[12]|(?<=1)[02356789]|(?<=2)[01]|(?<=5)[5]|(?<=6)[1]|(?<=9)[9])|(?<=5)[012345678]((?<=0)[15678]|(?<=1)[0123456789]|(?<=2)[012345789]|(?<=3)[0125789]|(?<=4)[034789]|(?<=5)[1234678]|(?<=6)[0245679]|(?<=7)[135789]|(?<=8)[0123])|(?<=7)[012345]((?<=0)[1]|(?<=1)[0123458]|(?<=2)[23489]|(?<=3)[0123456]|(?<=4)[0235679]|(?<=5)[023])|(?<=8)[023]((?<=0)[1]|(?<=2)[01345789]|(?<=3)[012])|(?<=9)[034]((?<=0)[1]|(?<=3)[0135679]|(?<=4)[0123]))|(?<=8)[01234]((?<=0)[012345678]((?<=0)[12345789]|(?<=1)[12]|(?<=2)[0123456789]|(?<=3)[0489]|(?<=4)[0123456789]|(?<=5)[12356]|(?<=6)[135]|(?<=7)[2]|(?<=8)[1])|(?<=1)[0123]((?<=0)[13]|(?<=1)[2345689]|(?<=2)[01456]|(?<=3)[02456])|(?<=2)[0123456]((?<=0)[13]|(?<=1)[0]|(?<=2)[0]|(?<=3)[012]|(?<=4)[024]|(?<=5)[023456]|(?<=6)[0234578])|(?<=3)[012345]((?<=0)[1]|(?<=1)[0124678]|(?<=2)[1345]|(?<=3)[06789]|(?<=4)[0123456789]|(?<=5)[012345])|(?<=4)[0123]((?<=0)[1]|(?<=1)[01456789]|(?<=2)[12467]|(?<=3)[014569]))|(?<=9)[0134578]((?<=0)[012345678]((?<=0)[1234578]|(?<=1)[012345789]|(?<=2)[0125679]|(?<=3)[01249]|(?<=4)[023456789]|(?<=5)[24]|(?<=6)[01]|(?<=7)[04]|(?<=8)[1456])|(?<=1)[0123456789]((?<=0)[12346789]|(?<=1)[035789]|(?<=2)[0123489]|(?<=3)[014589]|(?<=4)[123456789]|(?<=5)[68]|(?<=6)[169]|(?<=7)[89]|(?<=8)[3]|(?<=9)[1])|(?<=3)[01]((?<=0)[1]|(?<=1)[01456789])|(?<=4)[01234569]((?<=0)[2345689]|(?<=1)[01234589]|(?<=2)[0123456789]|(?<=3)[01346789]|(?<=4)[012456789]|(?<=5)[01]|(?<=6)[0]|(?<=9)[6])|(?<=5)[0125]((?<=0)[123689]|(?<=1)[0129]|(?<=2)[13]|(?<=5)[7])|(?<=7)[0]((?<=0)[13456])|(?<=8)[01238]((?<=0)[1]|(?<=1)[5]|(?<=2)[0123568]|(?<=3)[012345]|(?<=8)[3])))|(?<=9)[0123456789]((?<=0)[02345678]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[123456789]|(?<=4)[0123456789]|(?<=5)[26789]|(?<=6)[123456789]|(?<=7)[1379]|(?<=8)[9]|(?<=9)[45])|(?<=2)[0123456789]((?<=0)[1]|(?<=1)[012]|(?<=2)[012]|(?<=3)[02]|(?<=4)[0125789]|(?<=5)[045]|(?<=6)[02356]|(?<=7)[024578]|(?<=8)[0]|(?<=9)[0123])|(?<=3)[0]((?<=0)[12345])|(?<=4)[0]((?<=0)[12345])|(?<=5)[0]((?<=0)[123456])|(?<=6)[02345678]((?<=0)[123456]|(?<=2)[013]|(?<=3)[0189]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=7)[012345]((?<=0)[1346]|(?<=1)[023567]|(?<=2)[03]|(?<=3)[12]|(?<=4)[0234567]|(?<=5)[5])|(?<=8)[01234]((?<=0)[2345678]|(?<=1)[0345]|(?<=2)[2]|(?<=3)[1]|(?<=4)[0]))|(?<=1)[0123456789]((?<=0)[01234]((?<=0)[1678]|(?<=1)[016]|(?<=2)[04]|(?<=3)[0]|(?<=4)[026])|(?<=1)[02]((?<=0)[1345678]|(?<=2)[5])|(?<=2)[01]((?<=0)[12345678]|(?<=1)[04])|(?<=3)[0123456789]((?<=0)[123467]|(?<=1)[16]|(?<=2)[01456]|(?<=3)[015]|(?<=4)[02345]|(?<=5)[012456]|(?<=6)[01247]|(?<=7)[17]|(?<=8)[147]|(?<=9)[0])|(?<=4)[0123]((?<=0)[12356]|(?<=1)[1]|(?<=2)[3]|(?<=3)[6])|(?<=5)[0]((?<=0)[12456])|(?<=6)[0]((?<=0)[1245678])|(?<=7)[0123456789]((?<=0)[12689]|(?<=1)[01]|(?<=2)[234]|(?<=3)[012379]|(?<=4)[014568]|(?<=5)[02459]|(?<=6)[12345678]|(?<=7)[0356]|(?<=8)[0469]|(?<=9)[012])|(?<=8)[0]((?<=0)[13])|(?<=9)[01345678]((?<=0)[1256]|(?<=1)[0134567]|(?<=3)[1245]|(?<=4)[1258]|(?<=5)[0]|(?<=6)[23]|(?<=7)[78]|(?<=8)[0]))|(?<=2)[012345678]((?<=0)[0123456789]((?<=0)[34789]|(?<=1)[0149]|(?<=2)[01456789]|(?<=3)[67]|(?<=4)[0]|(?<=5)[456789]|(?<=6)[0145679]|(?<=7)[0158]|(?<=8)[12346]|(?<=9)[1236])|(?<=1)[012345678]((?<=0)[123456789]|(?<=1)[013456789]|(?<=2)[012346789]|(?<=3)[0124569]|(?<=4)[057]|(?<=5)[45]|(?<=6)[1]|(?<=7)[39]|(?<=8)[2])|(?<=2)[012345678]((?<=0)[13]|(?<=1)[01]|(?<=2)[02357]|(?<=3)[013469]|(?<=4)[01239]|(?<=5)[012346789]|(?<=6)[024678]|(?<=7)[0345678]|(?<=8)[012345])|(?<=3)[0123456789]((?<=0)[145789]|(?<=1)[0134567]|(?<=2)[0124578]|(?<=3)[2356789]|(?<=4)[124567]|(?<=5)[024689]|(?<=6)[34589]|(?<=7)[1234678]|(?<=8)[24569]|(?<=9)[1245789])|(?<=4)[01]((?<=0)[14578]|(?<=1)[015])|(?<=5)[0123456789]((?<=0)[13456789]|(?<=1)[8]|(?<=2)[1]|(?<=3)[0269]|(?<=4)[34589]|(?<=5)[1357]|(?<=6)[1237]|(?<=7)[01]|(?<=8)[234567]|(?<=9)[01256])|(?<=6)[0123456789]((?<=0)[2346]|(?<=1)[02478]|(?<=2)[045679]|(?<=3)[07]|(?<=4)[6789]|(?<=5)[13567]|(?<=6)[0123]|(?<=7)[2356789]|(?<=8)[38]|(?<=9)[1247])|(?<=7)[08]((?<=0)[1345678]|(?<=8)[02])|(?<=8)[0234678]((?<=0)[1245678]|(?<=2)[13]|(?<=3)[1235]|(?<=4)[01345]|(?<=6)[0156789]|(?<=7)[09]|(?<=8)[012367]))|(?<=3)[012345679]((?<=0)[012346]((?<=0)[134]|(?<=1)[0235]|(?<=2)[123]|(?<=3)[0356]|(?<=4)[0123]|(?<=6)[034567])|(?<=1)[01]((?<=0)[135689]|(?<=1)[017])|(?<=2)[0123456789]((?<=0)[12345678]|(?<=1)[02589]|(?<=2)[01234567]|(?<=3)[045789]|(?<=4)[012345679]|(?<=5)[01245678]|(?<=6)[01235678]|(?<=7)[012467]|(?<=8)[03567]|(?<=9)[12])|(?<=3)[01]((?<=0)[1456789]|(?<=1)[1234])|(?<=4)[0123456]((?<=0)[125789]|(?<=1)[0]|(?<=2)[0246789]|(?<=3)[023467]|(?<=4)[0124569]|(?<=5)[0123458]|(?<=6)[0135])|(?<=5)[012345689]((?<=0)[15]|(?<=1)[02346789]|(?<=2)[2346789]|(?<=3)[012456]|(?<=4)[134569]|(?<=5)[0123458]|(?<=6)[0123]|(?<=8)[1]|(?<=9)[1])|(?<=6)[01234567]((?<=0)[12345689]|(?<=1)[01245689]|(?<=2)[012345678]|(?<=3)[01345678]|(?<=4)[01345678]|(?<=5)[0123467]|(?<=6)[02456789]|(?<=7)[035])|(?<=7)[01234]((?<=0)[123456]|(?<=1)[01]|(?<=2)[01235678]|(?<=3)[07]|(?<=4)[01])|(?<=9)[023456]((?<=0)[15678]|(?<=2)[01345678]|(?<=3)[023]|(?<=4)[034]|(?<=5)[0345]|(?<=6)[02]))|(?<=4)[013456789]((?<=0)[01234678]((?<=0)[25]|(?<=1)[04589]|(?<=2)[0124578]|(?<=3)[078]|(?<=4)[0134]|(?<=6)[012356]|(?<=7)[04]|(?<=8)[05679])|(?<=1)[012358]((?<=0)[2345789]|(?<=1)[01245678]|(?<=2)[1234789]|(?<=3)[01234]|(?<=5)[8]|(?<=8)[8])|(?<=3)[0]((?<=0)[13456])|(?<=4)[0]((?<=0)[1234])|(?<=5)[0123456789]((?<=0)[12356789]|(?<=1)[0123456789]|(?<=2)[013568]|(?<=3)[01345689]|(?<=4)[12456789]|(?<=5)[01235689]|(?<=6)[0123456789]|(?<=7)[123456789]|(?<=8)[02356789]|(?<=9)[01256789])|(?<=6)[012]((?<=0)[12356789]|(?<=1)[012389]|(?<=2)[1])|(?<=7)[012]((?<=0)[23456789]|(?<=1)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[13456])|(?<=9)[0234567]((?<=0)[134]|(?<=2)[0234589]|(?<=3)[013789]|(?<=4)[015679]|(?<=5)[012467]|(?<=6)[0345]|(?<=7)[0123]))|(?<=5)[0123456789]((?<=0)[01234567]((?<=0)[2345678]|(?<=1)[0234789]|(?<=2)[03]|(?<=3)[023579]|(?<=4)[1356]|(?<=5)[0134]|(?<=6)[02456]|(?<=7)[0356])|(?<=1)[1234]((?<=1)[01236789]|(?<=2)[0123456789]|(?<=3)[012345689]|(?<=4)[08])|(?<=2)[012345]((?<=0)[2345679]|(?<=1)[01259]|(?<=2)[012345678]|(?<=3)[012367]|(?<=4)[0256789]|(?<=5)[1234578])|(?<=3)[0123456789]((?<=0)[1345679]|(?<=1)[012356789]|(?<=2)[0123456789]|(?<=3)[0345678]|(?<=4)[01568]|(?<=5)[0145678]|(?<=6)[013456789]|(?<=7)[0245679]|(?<=8)[02356789]|(?<=9)[1])|(?<=4)[0123456789]((?<=0)[134579]|(?<=1)[02579]|(?<=2)[012356789]|(?<=3)[0125679]|(?<=4)[12345689]|(?<=5)[012346789]|(?<=6)[0123456789]|(?<=7)[0126]|(?<=8)[02568]|(?<=9)[02347])|(?<=5)[0123456789]((?<=0)[13]|(?<=1)[149]|(?<=2)[145678]|(?<=3)[1678]|(?<=4)[02356789]|(?<=5)[012345689]|(?<=6)[02345789]|(?<=7)[013]|(?<=8)[579]|(?<=9)[5])|(?<=6)[0123456789]((?<=0)[12345678]|(?<=1)[02345689]|(?<=2)[013456789]|(?<=3)[0123456789]|(?<=4)[012568]|(?<=5)[0123589]|(?<=6)[0123456789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[012345789])|(?<=7)[01234567]((?<=0)[139]|(?<=1)[3457]|(?<=2)[01268]|(?<=3)[56]|(?<=4)[267]|(?<=5)[78]|(?<=6)[25]|(?<=7)[6])|(?<=8)[12346]((?<=1)[1456789]|(?<=2)[0123456789]|(?<=3)[01234578]|(?<=4)[123]|(?<=6)[4])|(?<=9)[0123456789]((?<=0)[13]|(?<=1)[023456789]|(?<=2)[0235689]|(?<=3)[02456789]|(?<=4)[123456789]|(?<=5)[013456789]|(?<=6)[01235689]|(?<=7)[012345789]|(?<=8)[1234678]|(?<=9)[13]))|(?<=6)[01789]((?<=0)[0123456789]((?<=0)[1236789]|(?<=1)[01345679]|(?<=2)[012345789]|(?<=3)[12345789]|(?<=4)[014678]|(?<=5)[012456789]|(?<=6)[12345789]|(?<=7)[134568]|(?<=8)[045678]|(?<=9)[0123467])|(?<=1)[0123456]((?<=0)[13456789]|(?<=1)[0123456789]|(?<=2)[012345689]|(?<=3)[0234567]|(?<=4)[0123568]|(?<=5)[05]|(?<=6)[1])|(?<=7)[0123456789]((?<=0)[1345678]|(?<=1)[0234679]|(?<=2)[0256789]|(?<=3)[012478]|(?<=4)[012346789]|(?<=5)[012345679]|(?<=6)[012345689]|(?<=7)[012346789]|(?<=8)[0123569]|(?<=9)[01235679])|(?<=8)[12456]((?<=1)[3456789]|(?<=2)[01256]|(?<=4)[8]|(?<=5)[03789]|(?<=6)[03])|(?<=9)[125]((?<=1)[03567]|(?<=2)[89]|(?<=5)[012]))|(?<=7)[0123456789]((?<=0)[012345678]((?<=0)[123456789]|(?<=1)[13456789]|(?<=2)[012346789]|(?<=3)[012345789]|(?<=4)[012589]|(?<=5)[01345678]|(?<=6)[0234578]|(?<=7)[018]|(?<=8)[069])|(?<=1)[01234]((?<=0)[1236789]|(?<=1)[0123456789]|(?<=2)[1234578]|(?<=3)[012345678]|(?<=4)[01456789])|(?<=2)[012356]((?<=0)[12345689]|(?<=1)[0123456789]|(?<=2)[01234579]|(?<=3)[012369]|(?<=5)[8]|(?<=6)[67])|(?<=3)[0123456789]((?<=0)[123456]|(?<=1)[07]|(?<=2)[1245679]|(?<=3)[013568]|(?<=4)[12345678]|(?<=5)[012578]|(?<=6)[012456789]|(?<=7)[01345678]|(?<=8)[01345689]|(?<=9)[01246])|(?<=4)[0123456789]((?<=0)[1234568]|(?<=1)[012345679]|(?<=2)[03469]|(?<=3)[012456789]|(?<=4)[12346789]|(?<=5)[0123456789]|(?<=6)[1235679]|(?<=7)[0136789]|(?<=8)[0146789]|(?<=9)[023456789])|(?<=5)[0234]((?<=0)[1234]|(?<=2)[0234567]|(?<=3)[012456789]|(?<=4)[0134])|(?<=6)[0234]((?<=0)[134]|(?<=2)[01234567]|(?<=3)[023456789]|(?<=4)[01])|(?<=7)[0123456]((?<=0)[12379]|(?<=1)[012]|(?<=2)[012]|(?<=3)[0123456789]|(?<=4)[1]|(?<=5)[01234689]|(?<=6)[01])|(?<=8)[012345678]((?<=0)[1]|(?<=1)[0234789]|(?<=2)[0345678]|(?<=3)[03456789]|(?<=4)[01234568]|(?<=5)[0679]|(?<=6)[245789]|(?<=7)[034567]|(?<=8)[023456])|(?<=9)[012]((?<=0)[123456789]|(?<=1)[013478]|(?<=2)[0]))|(?<=8)[012345689]((?<=0)[0123456789]((?<=0)[12345678]|(?<=1)[01249]|(?<=2)[0123456789]|(?<=3)[012346789]|(?<=4)[02357]|(?<=5)[012356789]|(?<=6)[58]|(?<=7)[02457]|(?<=8)[7]|(?<=9)[2])|(?<=1)[0123456789]((?<=0)[123456789]|(?<=1)[0256789]|(?<=2)[1256]|(?<=3)[346]|(?<=4)[468]|(?<=5)[458]|(?<=6)[468]|(?<=7)[478]|(?<=8)[8]|(?<=9)[589])|(?<=2)[023456789]((?<=0)[13478]|(?<=2)[01234569]|(?<=3)[02356789]|(?<=4)[01345789]|(?<=5)[01235678]|(?<=6)[0123467]|(?<=7)[0123456789]|(?<=8)[0123468]|(?<=9)[024567])|(?<=3)[0123456789]((?<=0)[345]|(?<=1)[01245]|(?<=2)[01356789]|(?<=3)[012356789]|(?<=4)[02569]|(?<=5)[013456789]|(?<=6)[012345678]|(?<=7)[01234567]|(?<=8)[0123578]|(?<=9)[01246])|(?<=4)[0123469]((?<=0)[23456789]|(?<=1)[68]|(?<=2)[124]|(?<=3)[0389]|(?<=4)[34567]|(?<=6)[567]|(?<=9)[89])|(?<=5)[0123456789]((?<=0)[12356]|(?<=1)[236]|(?<=2)[04678]|(?<=3)[012356789]|(?<=4)[124678]|(?<=5)[0256789]|(?<=6)[02345689]|(?<=7)[0125679]|(?<=8)[0123456789]|(?<=9)[0123567])|(?<=6)[012345678]((?<=0)[12345679]|(?<=1)[01234679]|(?<=2)[01345689]|(?<=3)[12589]|(?<=4)[012345789]|(?<=5)[01]|(?<=6)[012345]|(?<=7)[012345]|(?<=8)[23456])|(?<=8)[0123456]((?<=0)[12]|(?<=1)[12345679]|(?<=2)[12346789]|(?<=3)[0123467]|(?<=4)[013456789]|(?<=5)[012356789]|(?<=6)[02])|(?<=9)[02345]((?<=0)[1238]|(?<=2)[12356]|(?<=3)[023456789]|(?<=4)[01234678]|(?<=5)[0123]))|(?<=9)[0123456789]((?<=0)[01234]((?<=0)[1345689]|(?<=1)[12346789]|(?<=2)[01235679]|(?<=3)[01234679]|(?<=4)[0])|(?<=1)[012345678]((?<=0)[12359]|(?<=1)[013456789]|(?<=2)[12345689]|(?<=3)[013456789]|(?<=4)[01346789]|(?<=5)[0123456789]|(?<=6)[013679]|(?<=7)[013469]|(?<=8)[015])|(?<=2)[0125]((?<=0)[12345678]|(?<=1)[2678]|(?<=2)[34]|(?<=5)[18])|(?<=3)[0234567]((?<=0)[1]|(?<=2)[01234689]|(?<=3)[035678]|(?<=4)[13456789]|(?<=5)[0234679]|(?<=6)[0123]|(?<=7)[1])|(?<=4)[0]((?<=0)[123])|(?<=5)[013456789]((?<=0)[12345678]|(?<=1)[356789]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0123456789]|(?<=6)[13456789]|(?<=7)[123456789]|(?<=8)[01356789]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[23456789]|(?<=1)[012345]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[01345789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012456789]|(?<=8)[012345689]|(?<=9)[012345])|(?<=7)[0123456789]((?<=0)[12345679]|(?<=1)[24]|(?<=2)[012345679]|(?<=3)[02346789]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[012345678]|(?<=8)[012345689]|(?<=9)[01])|(?<=8)[02345]((?<=0)[1]|(?<=2)[045679]|(?<=3)[02356]|(?<=4)[01]|(?<=5)[0])|(?<=9)[012]((?<=0)[13]|(?<=1)[89]|(?<=2)[1235679])))))$"), + EE: new RegExp("^([798154362]((?<=7)[614503298]((?<=6)[6978014235]((?<=6)[012]((?<=0)[798536]|(?<=1)[0467123958]|(?<=2)[314206])|(?<=9)[012]((?<=0)[168923574]|(?<=1)[7826901345]|(?<=2)[14325])|(?<=7)[01]((?<=0)[476938251]|(?<=1)[351082469])|(?<=8)[0]((?<=0)[56741])|(?<=0)[012]((?<=0)[913768425]|(?<=1)[9706534821]|(?<=2)[3120])|(?<=1)[0]((?<=0)[7134256])|(?<=4)[01]((?<=0)[645327198]|(?<=1)[456310827])|(?<=2)[10]((?<=1)[8905341672]|(?<=0)[431297586])|(?<=3)[01]((?<=0)[146523978]|(?<=1)[781362045])|(?<=5)[0]((?<=0)[65]))|(?<=1)[025413]((?<=0)[0128675]((?<=0)[48735912]|(?<=1)[063254178]|(?<=2)[043]|(?<=8)[210]|(?<=6)[7658493]|(?<=7)[20134]|(?<=5)[7286543])|(?<=2)[108]((?<=1)[10]|(?<=0)[17253469]|(?<=8)[0])|(?<=5)[01]((?<=0)[67548321]|(?<=1)[1203])|(?<=4)[018]((?<=0)[913628745]|(?<=1)[120]|(?<=8)[0])|(?<=1)[2018]((?<=2)[403125]|(?<=0)[29381457]|(?<=1)[802194]|(?<=8)[30])|(?<=3)[0]((?<=0)[193826754]))|(?<=4)[801267345]((?<=8)[01]((?<=0)[65798]|(?<=1)[2106435])|(?<=0)[102]((?<=1)[1792634058]|(?<=0)[1945678]|(?<=2)[04123])|(?<=1)[12]((?<=1)[7346125]|(?<=2)[120])|(?<=2)[2130]((?<=2)[0293468157]|(?<=1)[6213074589]|(?<=3)[0]|(?<=0)[961527348])|(?<=6)[30214]((?<=3)[0268195374]|(?<=0)[47918625]|(?<=2)[3695714028]|(?<=1)[2964075318]|(?<=4)[012])|(?<=7)[012]((?<=0)[31246789]|(?<=1)[6307928145]|(?<=2)[01])|(?<=3)[01]((?<=0)[7569]|(?<=1)[5246310])|(?<=4)[01]((?<=0)[39571428]|(?<=1)[20516347])|(?<=5)[0]((?<=0)[321]))|(?<=5)[320451]((?<=3)[1023]((?<=1)[7493601852]|(?<=0)[396152748]|(?<=2)[130426975]|(?<=3)[01])|(?<=2)[012]((?<=0)[123574968]|(?<=1)[0213746895]|(?<=2)[3425016])|(?<=0)[0312]((?<=0)[376849521]|(?<=3)[014586723]|(?<=1)[7654930281]|(?<=2)[4138609527])|(?<=4)[01]((?<=0)[419287365]|(?<=1)[3761054])|(?<=5)[01]((?<=0)[13578496]|(?<=1)[2603487159])|(?<=1)[012]((?<=0)[732416859]|(?<=1)[6793284015]|(?<=2)[6301524]))|(?<=0)[164325]((?<=1)[0128]((?<=0)[916483752]|(?<=1)[065341728]|(?<=2)[2130]|(?<=8)[102])|(?<=6)[0]((?<=0)[423965781])|(?<=4)[018]((?<=0)[174396852]|(?<=1)[412350]|(?<=8)[2])|(?<=3)[01]((?<=0)[86437912]|(?<=1)[01453786])|(?<=2)[10]((?<=1)[1]|(?<=0)[12])|(?<=5)[01]((?<=0)[245913687]|(?<=1)[1]))|(?<=3)[4056312]((?<=4)[01]((?<=0)[295813764]|(?<=1)[1365024])|(?<=0)[012]((?<=0)[231475698]|(?<=1)[9782430651]|(?<=2)[57321064])|(?<=5)[10]((?<=1)[04123]|(?<=0)[24875163])|(?<=6)[10]((?<=1)[150342]|(?<=0)[136492587])|(?<=3)[01]((?<=0)[842169573]|(?<=1)[0])|(?<=1)[01]((?<=0)[451839276]|(?<=1)[201])|(?<=2)[01]((?<=0)[251374689]|(?<=1)[1302]))|(?<=2)[072583146]((?<=0)[01]((?<=0)[97615423]|(?<=1)[01])|(?<=7)[25106]((?<=2)[0]|(?<=5)[896275413]|(?<=1)[823169574]|(?<=0)[1]|(?<=6)[1230])|(?<=2)[3410]((?<=3)[41032]|(?<=4)[3421650]|(?<=1)[031245]|(?<=0)[1])|(?<=5)[01]((?<=0)[178942635]|(?<=1)[3074216])|(?<=8)[10]((?<=1)[4132]|(?<=0)[5462731])|(?<=3)[10]((?<=1)[102]|(?<=0)[264581739])|(?<=1)[0]((?<=0)[231])|(?<=4)[10]((?<=1)[012]|(?<=0)[457316289])|(?<=6)[01]((?<=0)[678251394]|(?<=1)[354012]))|(?<=9)[513048762]((?<=5)[1432]((?<=1)[841726359]|(?<=4)[02134]|(?<=3)[210]|(?<=2)[9251460387])|(?<=1)[01]((?<=0)[1]|(?<=1)[210])|(?<=3)[2031]((?<=2)[430125]|(?<=0)[312]|(?<=3)[3]|(?<=1)[342])|(?<=0)[706152]((?<=7)[1302]|(?<=0)[62415938]|(?<=6)[8573021946]|(?<=1)[9215034678]|(?<=5)[13204]|(?<=2)[3201])|(?<=4)[01]((?<=0)[83967514]|(?<=1)[23791085])|(?<=8)[05314]((?<=0)[654178]|(?<=5)[2]|(?<=3)[0167]|(?<=1)[4325108]|(?<=4)[31])|(?<=7)[041]((?<=0)[51263894]|(?<=4)[435218]|(?<=1)[0])|(?<=6)[0134265]((?<=0)[67143258]|(?<=1)[071489365]|(?<=3)[10324]|(?<=4)[12034]|(?<=2)[0123]|(?<=6)[1]|(?<=5)[4])|(?<=2)[10]((?<=1)[31627845]|(?<=0)[1]))|(?<=8)[42301]((?<=4)[102]((?<=1)[5238901647]|(?<=0)[214596378]|(?<=2)[3021])|(?<=2)[0241356]((?<=0)[5637124]|(?<=2)[6371508492]|(?<=4)[6945283170]|(?<=1)[927581634]|(?<=3)[7590148263]|(?<=5)[6809735241]|(?<=6)[1032])|(?<=3)[01]((?<=0)[2415]|(?<=1)[38572461])|(?<=0)[1203]((?<=1)[358497612]|(?<=2)[0173962854]|(?<=0)[341]|(?<=3)[34102])|(?<=1)[012]((?<=0)[123]|(?<=1)[946183752]|(?<=2)[012])))|(?<=9)[34201]((?<=3)[048365217]((?<=0)[0]((?<=0)[1])|(?<=4)[45306127]((?<=4)[1047859236]|(?<=5)[4136205]|(?<=3)[421568973]|(?<=0)[1]|(?<=6)[781524369]|(?<=1)[214735]|(?<=2)[1]|(?<=7)[01])|(?<=8)[158724639]((?<=1)[2156038497]|(?<=5)[17926385]|(?<=8)[4861253970]|(?<=7)[241635]|(?<=2)[60]|(?<=4)[8437651]|(?<=6)[10]|(?<=3)[3296157]|(?<=9)[102])|(?<=3)[13240]((?<=1)[3461729]|(?<=3)[01]|(?<=2)[8253714096]|(?<=4)[312]|(?<=0)[1])|(?<=6)[13240]((?<=1)[2645371]|(?<=3)[54231]|(?<=2)[321]|(?<=4)[53241]|(?<=0)[1])|(?<=5)[201365]((?<=2)[6847395102]|(?<=0)[1]|(?<=1)[21]|(?<=3)[0]|(?<=6)[12]|(?<=5)[1])|(?<=2)[14235076]((?<=1)[36457812]|(?<=4)[0754682391]|(?<=2)[34021]|(?<=3)[528743196]|(?<=5)[10]|(?<=0)[1]|(?<=7)[1]|(?<=6)[10])|(?<=1)[012]((?<=0)[1]|(?<=1)[31245]|(?<=2)[12])|(?<=7)[310254]((?<=3)[45123]|(?<=1)[5471236]|(?<=0)[1]|(?<=2)[53241]|(?<=5)[324156]|(?<=4)[125436]))|(?<=4)[7126354]((?<=7)[5643210]((?<=5)[9576034128]|(?<=6)[4136520]|(?<=4)[196824375]|(?<=3)[24013]|(?<=2)[4783691025]|(?<=1)[564172839]|(?<=0)[21])|(?<=1)[42501637]((?<=4)[923154678]|(?<=2)[0792463851]|(?<=5)[13405]|(?<=0)[12]|(?<=1)[347862591]|(?<=6)[12]|(?<=3)[01]|(?<=7)[1])|(?<=2)[62543017]((?<=6)[23145]|(?<=2)[35124]|(?<=5)[9347015682]|(?<=4)[4820371659]|(?<=3)[823791546]|(?<=0)[12]|(?<=1)[691532847]|(?<=7)[2431])|(?<=6)[5134620]((?<=5)[195283746]|(?<=1)[321]|(?<=3)[6873549102]|(?<=4)[201]|(?<=6)[01]|(?<=2)[95826341]|(?<=0)[1])|(?<=3)[04231]((?<=0)[12]|(?<=4)[357264801]|(?<=2)[3102]|(?<=3)[783645291]|(?<=1)[258671394])|(?<=5)[324501]((?<=3)[719352648]|(?<=2)[2310]|(?<=4)[205431]|(?<=5)[321]|(?<=0)[1]|(?<=1)[3589271])|(?<=4)[01324]((?<=0)[1]|(?<=1)[984637512]|(?<=3)[43215]|(?<=2)[231504]|(?<=4)[32]))|(?<=2)[32140]((?<=3)[61240357]((?<=6)[931476582]|(?<=1)[319478526]|(?<=2)[2301]|(?<=4)[1639840572]|(?<=0)[21]|(?<=3)[47562318]|(?<=5)[01]|(?<=7)[0])|(?<=2)[06324157]((?<=0)[12]|(?<=6)[534701698]|(?<=3)[043526187]|(?<=2)[8954603271]|(?<=4)[961473258]|(?<=1)[728536914]|(?<=5)[9872403156]|(?<=7)[0])|(?<=1)[6270314]((?<=6)[314256]|(?<=2)[712496358]|(?<=7)[2148379]|(?<=0)[21]|(?<=3)[820365147]|(?<=1)[1684253]|(?<=4)[1])|(?<=4)[12]((?<=1)[1423]|(?<=2)[1204])|(?<=0)[2054136]((?<=2)[8164329750]|(?<=0)[321]|(?<=5)[8916472035]|(?<=4)[781652493]|(?<=1)[251743986]|(?<=3)[0]|(?<=6)[0]))|(?<=0)[547362189]((?<=5)[01]((?<=0)[35248679]|(?<=1)[0])|(?<=4)[03452168]((?<=0)[931752486]|(?<=3)[3980256714]|(?<=4)[46083125]|(?<=5)[3246185907]|(?<=2)[230175846]|(?<=1)[2049361578]|(?<=6)[013]|(?<=8)[10])|(?<=7)[210]((?<=2)[0]|(?<=1)[9541068372]|(?<=0)[1342])|(?<=3)[0]((?<=0)[3254])|(?<=6)[023145]((?<=0)[1526]|(?<=2)[5794062318]|(?<=3)[120564]|(?<=1)[246753]|(?<=4)[45106327]|(?<=5)[1])|(?<=2)[21304]((?<=2)[271864035]|(?<=1)[154923]|(?<=3)[1782430956]|(?<=0)[165278]|(?<=4)[160532847])|(?<=1)[0213]((?<=0)[372518496]|(?<=2)[357601248]|(?<=1)[836154207]|(?<=3)[102])|(?<=8)[102]((?<=1)[438627519]|(?<=0)[5142786]|(?<=2)[0])|(?<=9)[01]((?<=0)[1234]|(?<=1)[1]))|(?<=1)[0231]((?<=0)[102]((?<=1)[74213658]|(?<=0)[84156372]|(?<=2)[01])|(?<=2)[1302]((?<=1)[285319476]|(?<=3)[1320]|(?<=0)[14263875]|(?<=2)[01])|(?<=3)[01]((?<=0)[158629743]|(?<=1)[04213])|(?<=1)[01]((?<=0)[436251]|(?<=1)[425])))|(?<=8)[80756]((?<=8)[23014]((?<=2)[13024]((?<=1)[0259637481]|(?<=3)[7286945130]|(?<=0)[968412375]|(?<=2)[8314709562]|(?<=4)[0])|(?<=3)[102]((?<=1)[1357890462]|(?<=0)[518396274]|(?<=2)[2413605])|(?<=0)[0]((?<=0)[5432])|(?<=1)[012]((?<=0)[629135874]|(?<=1)[9021837465]|(?<=2)[0])|(?<=4)[13204]((?<=1)[6532471980]|(?<=3)[1805729463]|(?<=2)[1260735849]|(?<=0)[712943586]|(?<=4)[021]))|(?<=0)[0]((?<=0)[41239]((?<=4)[7521304]|(?<=1)[3258176490]|(?<=2)[0258349761]|(?<=3)[8463590712]|(?<=9)[98]))|(?<=7)[63724510]((?<=6)[0231]((?<=0)[589134276]|(?<=2)[7245309186]|(?<=3)[6302145]|(?<=1)[9170845362])|(?<=3)[10]((?<=1)[210]|(?<=0)[982531467])|(?<=7)[0]((?<=0)[1])|(?<=2)[23014]((?<=2)[4956301728]|(?<=3)[3062814957]|(?<=0)[372816954]|(?<=1)[3982016745]|(?<=4)[3120])|(?<=4)[0]((?<=0)[6321475])|(?<=5)[0]((?<=0)[1])|(?<=1)[0]((?<=0)[1])|(?<=0)[0]((?<=0)[1]))|(?<=5)[0]((?<=0)[01]((?<=0)[837291564]|(?<=1)[01]))|(?<=6)[873064251]((?<=8)[102]((?<=1)[6935087214]|(?<=0)[712953684]|(?<=2)[10])|(?<=7)[0]((?<=0)[534])|(?<=3)[0]((?<=0)[34561])|(?<=0)[012]((?<=0)[168493725]|(?<=1)[9084672351]|(?<=2)[10])|(?<=6)[0]((?<=0)[124635])|(?<=4)[01]((?<=0)[893152476]|(?<=1)[01])|(?<=2)[10]((?<=1)[10543267]|(?<=0)[921876534])|(?<=5)[0]((?<=0)[639581274])|(?<=1)[0]((?<=0)[239478156])))|(?<=1)[031259]((?<=0)[149630]((?<=1)[12345]((?<=1)[231984756]|(?<=2)[5391076428]|(?<=3)[3745208691]|(?<=4)[2514673908]|(?<=5)[210534968])|(?<=4)[1]((?<=1)[125436])|(?<=9)[12]((?<=1)[926387451]|(?<=2)[120])|(?<=6)[12]((?<=1)[612853794]|(?<=2)[10])|(?<=3)[12]((?<=1)[893147526]|(?<=2)[013])|(?<=0)[0]((?<=0)[1]))|(?<=3)[85964]((?<=8)[1]((?<=1)[6712])|(?<=5)[12]((?<=1)[693215874]|(?<=2)[014523])|(?<=9)[1]((?<=1)[497213568])|(?<=6)[21]((?<=2)[7461382095]|(?<=1)[913285764])|(?<=4)[21]((?<=2)[6510423]|(?<=1)[859641237]))|(?<=1)[7692341]((?<=7)[1]((?<=1)[231])|(?<=6)[12]((?<=1)[583942176]|(?<=2)[153420])|(?<=9)[1]((?<=1)[4321])|(?<=2)[1]((?<=1)[38724516])|(?<=3)[1]((?<=1)[13762458])|(?<=4)[1]((?<=1)[1245637])|(?<=1)[0]((?<=0)[1]))|(?<=2)[0169]((?<=0)[1]((?<=1)[54132])|(?<=1)[1]((?<=1)[123])|(?<=6)[21]((?<=2)[0]|(?<=1)[867341952])|(?<=9)[1]((?<=1)[631452789]))|(?<=5)[01]((?<=0)[450931267]((?<=4)[7981]|(?<=5)[095]|(?<=0)[79]|(?<=9)[8594]|(?<=3)[0]|(?<=1)[5]|(?<=2)[6]|(?<=6)[5]|(?<=7)[1])|(?<=1)[7968]((?<=7)[02]|(?<=9)[903]|(?<=6)[15]|(?<=8)[58]))|(?<=9)[0]((?<=0)[8]((?<=8)[6])))|(?<=5)[01]((?<=0)[4136705]((?<=4)[10]((?<=1)[20163457]|(?<=0)[6497538])|(?<=1)[10]((?<=1)[130452]|(?<=0)[5673984])|(?<=3)[0]((?<=0)[43])|(?<=6)[0]((?<=0)[365471])|(?<=7)[0]((?<=0)[587463])|(?<=0)[95]((?<=9)[0613]|(?<=5)[0])|(?<=5)[0]((?<=0)[1]))|(?<=1)[0]((?<=0)[10]((?<=1)[170]|(?<=0)[76395481])))|(?<=4)[513649028]((?<=5)[2143056]((?<=2)[02134]((?<=0)[425961378]|(?<=2)[5271640983]|(?<=1)[0756324819]|(?<=3)[9740182356]|(?<=4)[314])|(?<=1)[0]((?<=0)[68971])|(?<=4)[143052]((?<=1)[0712368945]|(?<=4)[5681329407]|(?<=3)[5328690471]|(?<=0)[163852479]|(?<=5)[01]|(?<=2)[6528149730])|(?<=3)[021]((?<=0)[316279485]|(?<=2)[01]|(?<=1)[6802475139])|(?<=0)[10]((?<=1)[10]|(?<=0)[653279148])|(?<=5)[0]((?<=0)[1])|(?<=6)[0]((?<=0)[1]))|(?<=1)[517203]((?<=5)[35469]((?<=3)[68235714]|(?<=5)[120376458]|(?<=4)[261354789]|(?<=6)[8]|(?<=9)[789513])|(?<=1)[01]((?<=0)[21634579]|(?<=1)[524031])|(?<=7)[102]((?<=1)[5438627]|(?<=0)[21]|(?<=2)[6])|(?<=2)[01]((?<=0)[631749258]|(?<=1)[145302])|(?<=0)[01]((?<=0)[397546812]|(?<=1)[2031])|(?<=3)[021]((?<=0)[932815467]|(?<=2)[03214]|(?<=1)[97254810]))|(?<=3)[40123]((?<=4)[0]((?<=0)[12438657])|(?<=0)[03]((?<=0)[41356]|(?<=3)[7])|(?<=1)[32]((?<=3)[13548762]|(?<=2)[5421])|(?<=2)[29]((?<=2)[125]|(?<=9)[9])|(?<=3)[0123]((?<=0)[345819672]|(?<=1)[10]|(?<=2)[1]|(?<=3)[1]))|(?<=6)[26035714]((?<=2)[01234]((?<=0)[741298653]|(?<=1)[6349271085]|(?<=2)[9827054316]|(?<=3)[014523]|(?<=4)[1])|(?<=6)[31204]((?<=3)[5802176943]|(?<=1)[5732801964]|(?<=2)[0842713956]|(?<=0)[472613985]|(?<=4)[210])|(?<=0)[2013]((?<=2)[8146097253]|(?<=0)[216349758]|(?<=1)[8615420973]|(?<=3)[0])|(?<=3)[2013]((?<=2)[591486032]|(?<=0)[125967348]|(?<=1)[9875320641]|(?<=3)[012])|(?<=5)[01]((?<=0)[546327198]|(?<=1)[4861539072])|(?<=7)[10]((?<=1)[103452]|(?<=0)[618729453])|(?<=1)[0]((?<=0)[56781])|(?<=4)[0]((?<=0)[1]))|(?<=4)[04312]((?<=0)[3201]((?<=3)[3715402]|(?<=2)[5864902137]|(?<=0)[314857629]|(?<=1)[5937408612])|(?<=4)[210]((?<=2)[0]|(?<=1)[4758029613]|(?<=0)[258634197])|(?<=3)[102]((?<=1)[27603154]|(?<=0)[87695]|(?<=2)[0])|(?<=1)[0]((?<=0)[69758])|(?<=2)[0123]((?<=0)[318249756]|(?<=1)[9201475836]|(?<=2)[7846301295]|(?<=3)[0]))|(?<=9)[2405136]((?<=2)[120]((?<=1)[37126089]|(?<=2)[308146572]|(?<=0)[56479318])|(?<=4)[012]((?<=0)[7648935]|(?<=1)[6573124809]|(?<=2)[351260])|(?<=0)[01]((?<=0)[38724695]|(?<=1)[20413])|(?<=5)[0]((?<=0)[93672854])|(?<=1)[102]((?<=1)[5793084162]|(?<=0)[6859743]|(?<=2)[07426135])|(?<=3)[102]((?<=1)[5162879043]|(?<=0)[6489753]|(?<=2)[31024])|(?<=6)[0]((?<=0)[43]))|(?<=0)[12]((?<=1)[021]((?<=0)[451963728]|(?<=2)[01]|(?<=1)[4275861093])|(?<=2)[34]((?<=3)[231]|(?<=4)[1]))|(?<=2)[1230]((?<=1)[1023]((?<=1)[5638290174]|(?<=0)[21438796]|(?<=2)[120]|(?<=3)[0])|(?<=2)[01]((?<=0)[86947532]|(?<=1)[31])|(?<=3)[012]((?<=0)[423519687]|(?<=1)[7934268150]|(?<=2)[13204])|(?<=0)[0]((?<=0)[1573642]))|(?<=8)[052431]((?<=0)[0213]((?<=0)[1658347]|(?<=2)[9614823057]|(?<=1)[8743569102]|(?<=3)[021])|(?<=5)[201]((?<=2)[0243561]|(?<=0)[37215698]|(?<=1)[0942536178])|(?<=2)[120]((?<=1)[6297048153]|(?<=2)[20341]|(?<=0)[57863429])|(?<=4)[10234]((?<=1)[3506487192]|(?<=0)[9675]|(?<=2)[8651370429]|(?<=3)[6834015792]|(?<=4)[635410])|(?<=3)[0]((?<=0)[3954678])|(?<=1)[0]((?<=0)[5634])))|(?<=3)[10]((?<=1)[02]((?<=0)[2]((?<=2)[6715243])|(?<=2)[2]((?<=2)[1]))|(?<=0)[376251]((?<=3)[239]((?<=2)[45316782]|(?<=3)[312]|(?<=9)[5])|(?<=7)[2]((?<=2)[12])|(?<=6)[20]((?<=2)[16345]|(?<=0)[1])|(?<=2)[2]((?<=2)[12])|(?<=5)[0]((?<=0)[76345])|(?<=1)[09]((?<=0)[3]|(?<=9)[87])))|(?<=6)[1032489756]((?<=1)[60127534]((?<=6)[102]((?<=1)[6479053281]|(?<=0)[123847596]|(?<=2)[102])|(?<=0)[01]((?<=0)[578324916]|(?<=1)[45173206])|(?<=1)[021]((?<=0)[29345678]|(?<=2)[0]|(?<=1)[8049253761])|(?<=2)[10]((?<=1)[71054632]|(?<=0)[52789436])|(?<=7)[01]((?<=0)[39827465]|(?<=1)[543102])|(?<=5)[0]((?<=0)[78634591])|(?<=3)[10]((?<=1)[539682714]|(?<=0)[175839426])|(?<=4)[10]((?<=1)[021]|(?<=0)[349826715]))|(?<=0)[145326]((?<=1)[0]((?<=0)[43])|(?<=4)[2013]((?<=2)[8674231059]|(?<=0)[5978346]|(?<=1)[4128397605]|(?<=3)[21])|(?<=5)[42031]((?<=4)[376891025]|(?<=2)[4123980765]|(?<=0)[58349276]|(?<=3)[9024578163]|(?<=1)[1896204753])|(?<=3)[0]((?<=0)[42653])|(?<=2)[1203]((?<=1)[1247580639]|(?<=2)[2865430917]|(?<=0)[851234679]|(?<=3)[120])|(?<=6)[0]((?<=0)[384625]))|(?<=3)[03425761]((?<=0)[10]((?<=1)[021]|(?<=0)[89726543])|(?<=3)[0]((?<=0)[3576489])|(?<=4)[01]((?<=0)[468975]|(?<=1)[4706839152])|(?<=2)[2013]((?<=2)[3940175862]|(?<=0)[37294685]|(?<=1)[1846705932]|(?<=3)[0])|(?<=5)[10]((?<=1)[40213]|(?<=0)[38725649])|(?<=7)[01]((?<=0)[63759428]|(?<=1)[0])|(?<=6)[01]((?<=0)[432581796]|(?<=1)[01])|(?<=1)[102]((?<=1)[5206398471]|(?<=0)[17839625]|(?<=2)[3102]))|(?<=2)[2354106]((?<=2)[021]((?<=0)[27639584]|(?<=2)[201]|(?<=1)[2376045891])|(?<=3)[10]((?<=1)[487163025]|(?<=0)[8943576])|(?<=5)[01]((?<=0)[37586942]|(?<=1)[102])|(?<=4)[10]((?<=1)[34210]|(?<=0)[71982654])|(?<=1)[012]((?<=0)[7589436]|(?<=1)[0319256748]|(?<=2)[120])|(?<=0)[1320]((?<=1)[0729861453]|(?<=3)[41032]|(?<=2)[2390175486]|(?<=0)[487569])|(?<=6)[0]((?<=0)[123]))|(?<=4)[4205361]((?<=4)[102]((?<=1)[6872914035]|(?<=0)[73156298]|(?<=2)[472380165])|(?<=2)[3201]((?<=3)[213]|(?<=2)[2573804961]|(?<=0)[7364985]|(?<=1)[4178390265])|(?<=0)[0123]((?<=0)[1574986]|(?<=1)[0576842193]|(?<=2)[1745263098]|(?<=3)[64073521])|(?<=5)[0]((?<=0)[3465])|(?<=3)[012]((?<=0)[198745326]|(?<=1)[874321965]|(?<=2)[0])|(?<=6)[10]((?<=1)[842763015]|(?<=0)[456978])|(?<=1)[0123]((?<=0)[372541698]|(?<=1)[5830417926]|(?<=2)[196327584]|(?<=3)[10]))|(?<=8)[35176204]((?<=3)[10]((?<=1)[3651240]|(?<=0)[457896])|(?<=5)[01]((?<=0)[872546]|(?<=1)[31])|(?<=1)[01]((?<=0)[5689473]|(?<=1)[5142630])|(?<=7)[01]((?<=0)[5947836]|(?<=1)[3562401])|(?<=6)[10]((?<=1)[715364892]|(?<=0)[645871])|(?<=2)[021]((?<=0)[54867931]|(?<=2)[92341]|(?<=1)[987])|(?<=0)[10]((?<=1)[1046532]|(?<=0)[764598])|(?<=4)[01]((?<=0)[5473829]|(?<=1)[10]))|(?<=9)[37150642]((?<=3)[01]((?<=0)[239576481]|(?<=1)[0])|(?<=7)[0123]((?<=0)[345196728]|(?<=1)[4530629178]|(?<=2)[6529014837]|(?<=3)[12073564])|(?<=1)[01]((?<=0)[74932586]|(?<=1)[103452])|(?<=5)[120]((?<=1)[0651279483]|(?<=2)[021]|(?<=0)[638257914])|(?<=0)[0]((?<=0)[2431])|(?<=6)[0128]((?<=0)[234718965]|(?<=1)[81972043]|(?<=2)[0]|(?<=8)[0213])|(?<=4)[10]((?<=1)[10]|(?<=0)[234957681])|(?<=2)[0]((?<=0)[21]))|(?<=7)[324501]((?<=3)[01]((?<=0)[273549186]|(?<=1)[10])|(?<=2)[10]((?<=1)[42567103]|(?<=0)[7836945])|(?<=4)[01]((?<=0)[354897]|(?<=1)[58167420])|(?<=5)[10]((?<=1)[2615430]|(?<=0)[6354987])|(?<=0)[01]((?<=0)[736549]|(?<=1)[2013])|(?<=1)[10]((?<=1)[1]|(?<=0)[54872936]))|(?<=5)[0653142]((?<=0)[10342]((?<=1)[534807269]|(?<=0)[671854293]|(?<=3)[3517984602]|(?<=4)[214503]|(?<=2)[4923708651])|(?<=6)[01]((?<=0)[6745389]|(?<=1)[0])|(?<=5)[2610354]((?<=2)[052146973]|(?<=6)[65]|(?<=1)[8249105376]|(?<=0)[362897541]|(?<=3)[264380571]|(?<=5)[032541]|(?<=4)[3674582910])|(?<=3)[6382704195]((?<=6)[8714235096]|(?<=3)[5714368029]|(?<=8)[9852134670]|(?<=2)[8074196253]|(?<=7)[8329410576]|(?<=0)[143296785]|(?<=4)[0236894175]|(?<=1)[0539127468]|(?<=9)[01]|(?<=5)[487592063])|(?<=1)[9576241038]((?<=9)[6145293780]|(?<=5)[2401685739]|(?<=7)[1928465730]|(?<=6)[5879413620]|(?<=2)[548216903]|(?<=4)[7213096485]|(?<=1)[806743159]|(?<=0)[712965834]|(?<=3)[6072138549]|(?<=8)[2049873615])|(?<=4)[01]((?<=0)[836215479]|(?<=1)[304512])|(?<=2)[0146253]((?<=0)[61738459]|(?<=1)[826904735]|(?<=4)[6795034182]|(?<=6)[0]|(?<=2)[3791642850]|(?<=5)[6382490175]|(?<=3)[597021436]))|(?<=6)[61453072]((?<=6)[12034]((?<=1)[7843659]|(?<=2)[0892514736]|(?<=0)[234]|(?<=3)[857126439]|(?<=4)[120])|(?<=1)[102]((?<=1)[058273146]|(?<=0)[386142795]|(?<=2)[0])|(?<=4)[102]((?<=1)[460981257]|(?<=0)[7493851]|(?<=2)[052413])|(?<=5)[01]((?<=0)[475698]|(?<=1)[7935826014])|(?<=3)[0]((?<=0)[321785964])|(?<=0)[01]((?<=0)[43295768]|(?<=1)[825413706])|(?<=7)[01]((?<=0)[261947583]|(?<=1)[210])|(?<=2)[6790815342]((?<=6)[0412386957]|(?<=7)[5409237816]|(?<=9)[8912453607]|(?<=0)[167589]|(?<=8)[2910748653]|(?<=1)[197308654]|(?<=5)[5872613490]|(?<=3)[9542183607]|(?<=4)[4907386512]|(?<=2)[6478025193])))|(?<=2)[109]((?<=1)[0]((?<=0)[4602573]((?<=4)[7945283106]|(?<=6)[428307691]|(?<=0)[743568]|(?<=2)[09678]|(?<=5)[1748350926]|(?<=7)[1025346]|(?<=3)[0164259873]))|(?<=0)[6123]((?<=6)[0]((?<=0)[9458376])|(?<=1)[0]((?<=0)[345])|(?<=2)[0]((?<=0)[65437])|(?<=3)[0]((?<=0)[4587396]))|(?<=9)[0]((?<=0)[2]((?<=2)[431256])))))$"), + ES: new RegExp("^([201345]((?<=2)[6247153890]((?<=6)[01235]((?<=0)[078]((?<=0)[123456789]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[01]|(?<=2)[01234567]|(?<=3)[012345]|(?<=4)[012345678]|(?<=5)[01]|(?<=6)[0]|(?<=9)[01])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[012346]|(?<=3)[0]|(?<=4)[01]|(?<=5)[06789]|(?<=6)[01]|(?<=7)[0]|(?<=8)[089]|(?<=9)[120])|(?<=3)[01234567]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456789]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0123456])|(?<=5)[012345678]((?<=0)[09]|(?<=1)[0123]|(?<=2)[056789]|(?<=3)[0123]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0456789]))|(?<=2)[012345678]((?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0123456]|(?<=3)[012345]|(?<=4)[0123456789]|(?<=5)[0]|(?<=6)[012]|(?<=9)[01234567])|(?<=2)[012345678]((?<=0)[0]|(?<=1)[023456]|(?<=2)[0123]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[012345]|(?<=6)[089]|(?<=7)[0]|(?<=8)[0123])|(?<=3)[012345679]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[06789]|(?<=4)[0789]|(?<=5)[01]|(?<=6)[01234567]|(?<=7)[012345678]|(?<=9)[012345])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[01234]|(?<=3)[056789]|(?<=4)[09]|(?<=5)[012]|(?<=6)[0123456789]|(?<=7)[01234]|(?<=8)[01234567])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[089]|(?<=3)[0123456]|(?<=4)[09]|(?<=5)[089]|(?<=6)[09]|(?<=7)[012]|(?<=8)[03456789]|(?<=9)[012])|(?<=6)[0123456]((?<=0)[09]|(?<=1)[0123]|(?<=2)[012345]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0123456])|(?<=7)[012345679]((?<=0)[0]|(?<=1)[012345]|(?<=2)[089]|(?<=3)[012]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[01]|(?<=7)[0123]|(?<=9)[012])|(?<=8)[0123678]((?<=0)[07968]|(?<=1)[01]|(?<=2)[012]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]))|(?<=4)[0123456789]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[02]|(?<=7)[01]|(?<=8)[0])|(?<=1)[012345679]((?<=0)[0]|(?<=1)[01234]|(?<=2)[01234567]|(?<=3)[0123456789]|(?<=4)[012345689]|(?<=5)[0123456]|(?<=6)[0123456]|(?<=7)[01245]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[056789]|(?<=1)[0789]|(?<=2)[012345678]|(?<=3)[0123456789]|(?<=4)[089]|(?<=5)[01237]|(?<=6)[80]|(?<=7)[01234567]|(?<=8)[012345678]|(?<=9)[01234])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[03456789]|(?<=3)[09]|(?<=4)[01234567]|(?<=5)[06789]|(?<=6)[0789]|(?<=7)[0456789]|(?<=8)[0456789]|(?<=9)[012345678])|(?<=4)[0123456789]((?<=0)[01234]|(?<=1)[0123456]|(?<=2)[089]|(?<=3)[03456789]|(?<=4)[012345678]|(?<=5)[0789]|(?<=6)[09]|(?<=7)[089]|(?<=8)[089]|(?<=9)[012345678])|(?<=5)[0123456]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0123456]|(?<=3)[0]|(?<=4)[0456789]|(?<=5)[0]|(?<=6)[056789])|(?<=6)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[09])|(?<=7)[01234569]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234]|(?<=3)[01234568]|(?<=4)[0123456]|(?<=5)[0]|(?<=6)[0123456789]|(?<=9)[01234567])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[06789]|(?<=4)[03456789]|(?<=5)[023456789]|(?<=6)[09]|(?<=7)[0789]|(?<=8)[023456789]|(?<=9)[0123])|(?<=9)[0123456789]((?<=0)[0]|(?<=1)[12345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[01456]))|(?<=7)[012345678]((?<=0)[078]((?<=0)[01234]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[023456789]|(?<=3)[01234569]|(?<=4)[0123456]|(?<=5)[01234567]|(?<=6)[012345689]|(?<=7)[0789]|(?<=8)[012345678]|(?<=9)[012])|(?<=2)[0123456789]((?<=0)[03456789]|(?<=1)[01234567]|(?<=2)[06789]|(?<=3)[012345]|(?<=4)[01345678]|(?<=5)[06789]|(?<=6)[06789]|(?<=7)[0123456789]|(?<=8)[02345679]|(?<=9)[0123456789])|(?<=3)[0123456789]((?<=0)[056789]|(?<=1)[078]|(?<=2)[04589]|(?<=3)[013456892]|(?<=4)[0123456789]|(?<=5)[09]|(?<=6)[02346789]|(?<=7)[0123456789]|(?<=8)[089]|(?<=9)[012])|(?<=4)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[012345]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0689]|(?<=7)[0])|(?<=5)[012345679]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0789]|(?<=3)[0123]|(?<=4)[03456789]|(?<=5)[0456789]|(?<=6)[089]|(?<=7)[06789]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0345678]|(?<=3)[0123456789]|(?<=4)[06789]|(?<=5)[0123456798]|(?<=6)[012345678]|(?<=7)[0123456789]|(?<=8)[056789]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456789]|(?<=3)[0789]|(?<=4)[02345789]|(?<=5)[012]|(?<=6)[05678]|(?<=7)[03456789]|(?<=8)[056789]|(?<=9)[012345678])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0123456]|(?<=3)[012345679]|(?<=4)[0123459]|(?<=5)[0]|(?<=6)[013456789]|(?<=7)[06789]|(?<=8)[089]|(?<=9)[0123]))|(?<=1)[501234678]((?<=5)[4012356789]((?<=4)[50]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012345])|(?<=0)[078]((?<=0)[1234567]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123]((?<=0)[0]|(?<=1)[0]|(?<=2)[02]|(?<=3)[0])|(?<=2)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=3)[012345689]((?<=0)[09]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[02]|(?<=5)[09]|(?<=6)[0]|(?<=8)[0678]|(?<=9)[0])|(?<=4)[012345]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[01]|(?<=4)[09]|(?<=5)[09])|(?<=6)[01234567]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[079]|(?<=5)[0]|(?<=6)[089]|(?<=7)[0])|(?<=7)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01]))|(?<=5)[01234567]((?<=0)[078]((?<=0)[12345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[09]|(?<=1)[01234]|(?<=2)[0123456]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[012345]|(?<=6)[012345]|(?<=7)[0123456789]|(?<=8)[01234567]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[0]|(?<=4)[012345]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[01]|(?<=8)[0123456798]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[05678]|(?<=2)[0]|(?<=3)[01234567]|(?<=4)[0134]|(?<=5)[012345]|(?<=6)[0])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[07]|(?<=6)[0]|(?<=7)[1]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[06789]|(?<=3)[0789]|(?<=4)[089]|(?<=5)[0123456]|(?<=6)[06789]|(?<=7)[01234567]|(?<=8)[0346789]|(?<=9)[0123456789])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[012345678]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=7)[01234589]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[056789]|(?<=4)[06789]|(?<=5)[0123]|(?<=8)[8]|(?<=9)[0123456789]))|(?<=3)[01234567]((?<=0)[078]((?<=0)[123456789]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012346])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0456789]|(?<=7)[0]|(?<=8)[09]|(?<=9)[012345678])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[09]|(?<=8)[09]|(?<=9)[0123])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[089]|(?<=7)[06789]|(?<=8)[056789]|(?<=9)[09])|(?<=5)[01234569]((?<=0)[09]|(?<=1)[09]|(?<=2)[0689]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[089]|(?<=9)[01])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[08]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0789]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0456789]|(?<=9)[0123])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0]))|(?<=8)[0123456789]((?<=0)[01234578]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=5)[012345]|(?<=7)[01]|(?<=8)[023567])|(?<=1)[0134567892]((?<=0)[089]|(?<=1)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[0123456]|(?<=2)[0])|(?<=2)[0123456789]((?<=0)[09]|(?<=1)[012349]|(?<=2)[012349]|(?<=3)[012]|(?<=4)[083]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0234567])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01])|(?<=4)[0123456798]((?<=0)[0]|(?<=1)[01239]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[09]|(?<=9)[012]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012453]|(?<=2)[12349]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[045678])|(?<=6)[0123456789]((?<=0)[079]|(?<=1)[05]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[089]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123456])|(?<=7)[012345679]((?<=0)[01236789]|(?<=1)[0]|(?<=2)[01239]|(?<=3)[079]|(?<=4)[02391]|(?<=5)[0123456]|(?<=6)[0]|(?<=7)[0]|(?<=9)[1234])|(?<=8)[0123456897]((?<=0)[012345678]|(?<=1)[012345678]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01]|(?<=6)[01234]|(?<=8)[0]|(?<=9)[01]|(?<=7)[0])|(?<=9)[012345789]((?<=0)[123456790]|(?<=1)[0123456789]|(?<=2)[123450]|(?<=3)[1234567890]|(?<=4)[01234567]|(?<=5)[0]|(?<=7)[016789]|(?<=8)[01234]|(?<=9)[01]))|(?<=9)[01234567]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0134567])|(?<=2)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0789]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[12345])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[012]|(?<=6)[012]|(?<=7)[01]|(?<=8)[0]|(?<=9)[01234])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0123]|(?<=4)[0]|(?<=5)[012]|(?<=6)[0679]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=6)[0123456789]((?<=0)[01234]|(?<=1)[012]|(?<=2)[0]|(?<=3)[019]|(?<=4)[09]|(?<=5)[01]|(?<=6)[0]|(?<=7)[089]|(?<=8)[089]|(?<=9)[0123])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[08]|(?<=4)[09]|(?<=5)[012345]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[0123]))|(?<=0)[012345678]((?<=0)[0178]((?<=0)[123456789]|(?<=1)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[012345678]((?<=0)[0]|(?<=1)[05]|(?<=2)[08]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=2)[012345678]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[09]|(?<=6)[0789]|(?<=7)[01]|(?<=8)[0])|(?<=3)[0]((?<=0)[012345])|(?<=4)[09]((?<=0)[0]|(?<=9)[0123456])|(?<=5)[03456789]((?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0789]|(?<=7)[0789]|(?<=8)[0]|(?<=9)[0])|(?<=6)[09]((?<=0)[0]|(?<=9)[0])|(?<=7)[012345]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[09])|(?<=8)[0123567]((?<=0)[089]|(?<=1)[0]|(?<=2)[09]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])))|(?<=0)[213469587]((?<=2)[0123456]((?<=0)[0478]((?<=0)[12345678]|(?<=4)[9]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[045789]|(?<=3)[0679]|(?<=4)[012]|(?<=5)[0134562]|(?<=6)[012])|(?<=2)[01234567]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0123]|(?<=6)[0]|(?<=7)[0])|(?<=3)[012456]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[06789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[012345689]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[045679]|(?<=4)[089]|(?<=5)[09]|(?<=6)[012]|(?<=8)[045679]|(?<=9)[09])|(?<=5)[0123]((?<=0)[0]|(?<=1)[0123]|(?<=2)[09]|(?<=3)[046])|(?<=6)[01234569]((?<=0)[0]|(?<=1)[0124]|(?<=2)[0]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[0123]|(?<=6)[0]|(?<=9)[0123456]))|(?<=1)[124035]((?<=1)[1023679]((?<=1)[807]|(?<=0)[0]|(?<=2)[089]|(?<=3)[089]|(?<=6)[059]|(?<=7)[0]|(?<=9)[123456])|(?<=2)[1023456]((?<=1)[1236]|(?<=0)[0678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[2034576]((?<=2)[70368]|(?<=0)[089]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=7)[046789]|(?<=6)[8])|(?<=0)[0178]((?<=0)[123456789]|(?<=1)[0235]|(?<=7)[1]|(?<=8)[0])|(?<=3)[0234]((?<=0)[06789]|(?<=2)[012]|(?<=3)[0]|(?<=4)[0])|(?<=5)[12]((?<=1)[0]|(?<=2)[0]))|(?<=3)[012345678]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[013456789]((?<=0)[089]|(?<=1)[012345]|(?<=3)[089]|(?<=4)[09]|(?<=5)[089]|(?<=6)[09]|(?<=7)[06789]|(?<=8)[0123456789]|(?<=9)[01345])|(?<=2)[09]((?<=0)[123456780]|(?<=9)[0123456])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0125]|(?<=3)[09]|(?<=4)[089]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=4)[0123456]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09])|(?<=5)[0123456789]((?<=0)[012398]|(?<=1)[06789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[089]|(?<=8)[019]|(?<=9)[09])|(?<=6)[013456789]((?<=0)[0]|(?<=1)[0]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0897]|(?<=6)[089]|(?<=7)[09]|(?<=8)[089]|(?<=9)[089])|(?<=7)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[03456789]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[09]|(?<=6)[09]|(?<=7)[089]|(?<=8)[06789]|(?<=9)[012345])|(?<=8)[01234567]((?<=0)[01234]|(?<=1)[012345689]|(?<=2)[0789]|(?<=3)[0789]|(?<=4)[01]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]))|(?<=4)[01245678]((?<=0)[087]((?<=0)[123456789]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456]((?<=0)[0]|(?<=1)[03456789]|(?<=2)[0]|(?<=3)[01]|(?<=4)[09]|(?<=5)[01]|(?<=6)[0])|(?<=2)[01345678]((?<=0)[0]|(?<=1)[0123]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[01456789]|(?<=8)[089])|(?<=4)[012345678]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[01]|(?<=4)[0]|(?<=5)[089]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0])|(?<=5)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0123]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0789])|(?<=6)[01234569]((?<=0)[0]|(?<=1)[06789]|(?<=2)[0189]|(?<=3)[089]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[012]|(?<=9)[01234])|(?<=7)[01234567]((?<=0)[0]|(?<=1)[0123567]|(?<=2)[01789]|(?<=3)[89]|(?<=4)[01356]|(?<=5)[0]|(?<=6)[089]|(?<=7)[089])|(?<=8)[012356789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[056789]|(?<=3)[089]|(?<=5)[0789]|(?<=6)[0789]|(?<=7)[0789]|(?<=8)[0789]|(?<=9)[0789]))|(?<=6)[6012345789]((?<=6)[9012345678]((?<=9)[102]|(?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[056789]|(?<=6)[0]|(?<=7)[089]|(?<=8)[09])|(?<=0)[01587]((?<=0)[123456789]|(?<=1)[012]|(?<=5)[0]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456789]((?<=0)[056789]|(?<=1)[0]|(?<=2)[09]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[012345678]|(?<=8)[01234567]|(?<=9)[01234567])|(?<=2)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[056789]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[08]|(?<=8)[09]|(?<=9)[01234])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[01235]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0123456]|(?<=5)[089]|(?<=6)[089]|(?<=7)[03456789]|(?<=8)[06789]|(?<=9)[089])|(?<=5)[01]((?<=0)[0]|(?<=1)[089])|(?<=7)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[01]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234])|(?<=9)[012345678]((?<=0)[06789]|(?<=1)[09]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]))|(?<=9)[2013456]((?<=2)[1023456789]((?<=1)[8012345679]|(?<=0)[0]|(?<=2)[01678]|(?<=3)[039]|(?<=4)[0456789]|(?<=5)[0123789]|(?<=6)[0789]|(?<=7)[012]|(?<=8)[05]|(?<=9)[0234])|(?<=0)[078]((?<=0)[1234567]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123459]((?<=0)[0789]|(?<=1)[089]|(?<=2)[013456789]|(?<=3)[013569]|(?<=4)[0123456]|(?<=5)[09]|(?<=9)[123456789])|(?<=3)[012345796]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[89]|(?<=4)[0123567894]|(?<=5)[01234]|(?<=7)[0]|(?<=9)[01]|(?<=6)[0])|(?<=4)[01345679]((?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[0134]|(?<=6)[0123]|(?<=7)[1]|(?<=9)[013])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0123456789]|(?<=6)[06789]|(?<=7)[012345]|(?<=8)[056789]|(?<=9)[1234])|(?<=6)[012456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=4)[0125679]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123]))|(?<=5)[2401356]((?<=2)[3012456789]((?<=3)[90]|(?<=0)[0]|(?<=1)[01234567]|(?<=2)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[078]|(?<=7)[089]|(?<=8)[09]|(?<=9)[0124689])|(?<=4)[2013456789]((?<=2)[9078]|(?<=0)[0]|(?<=1)[02345678]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[01]|(?<=7)[0]|(?<=8)[09]|(?<=9)[012])|(?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0234]|(?<=3)[01234]|(?<=4)[01356789]|(?<=5)[01234]|(?<=6)[023456]|(?<=9)[012345678])|(?<=3)[0125678]((?<=0)[019]|(?<=1)[01]|(?<=2)[0]|(?<=5)[078]|(?<=6)[9]|(?<=7)[06]|(?<=8)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[02456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[1]|(?<=8)[0]|(?<=9)[0123])|(?<=6)[01239]((?<=0)[0]|(?<=1)[09]|(?<=2)[01]|(?<=3)[01345]|(?<=9)[01234567]))|(?<=8)[0123456789]((?<=0)[0123478]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[0123456789]|(?<=4)[012]|(?<=7)[501]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[04567]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[068]|(?<=5)[0]|(?<=6)[0]|(?<=7)[023481]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[012345678]|(?<=1)[01234]|(?<=2)[123456780]|(?<=3)[0123]|(?<=4)[01238]|(?<=5)[0134569]|(?<=6)[01239]|(?<=7)[01234589]|(?<=8)[01239]|(?<=9)[0123456789])|(?<=3)[0123456789]((?<=0)[01234]|(?<=1)[0789]|(?<=2)[089]|(?<=3)[089]|(?<=4)[089]|(?<=5)[089]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[012345678])|(?<=4)[0123456789]((?<=0)[01234]|(?<=1)[056]|(?<=2)[0]|(?<=3)[0]|(?<=4)[05]|(?<=5)[05689]|(?<=6)[019]|(?<=7)[012469]|(?<=8)[0]|(?<=9)[05])|(?<=5)[0123456789]((?<=0)[03456789]|(?<=1)[0123456789]|(?<=2)[0129]|(?<=3)[0]|(?<=4)[0]|(?<=5)[012349]|(?<=6)[09]|(?<=7)[0123]|(?<=8)[0456789]|(?<=9)[0123])|(?<=6)[0123456789]((?<=0)[04567]|(?<=1)[01234789]|(?<=2)[09]|(?<=3)[05]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01239]|(?<=8)[0]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[03]|(?<=1)[012789]|(?<=2)[09]|(?<=3)[0123456789]|(?<=4)[0]|(?<=5)[03456789]|(?<=6)[09]|(?<=7)[035679]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=8)[012345678]((?<=0)[05]|(?<=1)[0128]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[09]|(?<=6)[0]|(?<=7)[012]|(?<=8)[0])|(?<=9)[012345678]((?<=0)[123456780]|(?<=1)[123456780]|(?<=2)[12340]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]))|(?<=7)[801234567]((?<=8)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[012])|(?<=0)[0178]((?<=0)[1234567890]|(?<=1)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[012456789]((?<=0)[0189]|(?<=1)[0]|(?<=2)[012]|(?<=4)[01234]|(?<=5)[097]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0341]|(?<=9)[012345689])|(?<=2)[0123456]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[09])|(?<=4)[0234567]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[089]|(?<=6)[09]|(?<=7)[0])|(?<=5)[0123456789]((?<=0)[09]|(?<=1)[0189]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09]|(?<=9)[0])|(?<=6)[0123456789]((?<=0)[098]|(?<=1)[01]|(?<=2)[09]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[01])|(?<=7)[0123456]((?<=0)[0123]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[09])))|(?<=1)[0456397218]((?<=0)[0123456789]((?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[069]|(?<=3)[01234567]|(?<=4)[0]|(?<=5)[0]|(?<=6)[01234]|(?<=7)[0]|(?<=8)[0123456789]|(?<=9)[01234589])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[012]|(?<=6)[01239]|(?<=7)[012]|(?<=8)[0]|(?<=9)[012])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0789]|(?<=2)[089]|(?<=3)[012345]|(?<=4)[01]|(?<=5)[09]|(?<=6)[0]|(?<=7)[01234]|(?<=8)[0]|(?<=9)[012346])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[01234569]|(?<=2)[0189]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[03456789]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0]|(?<=6)[01234567]|(?<=7)[012]|(?<=8)[0]|(?<=9)[01234567])|(?<=7)[012345]((?<=0)[0]|(?<=1)[012]|(?<=2)[089]|(?<=3)[09]|(?<=4)[089]|(?<=5)[09])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[089]|(?<=3)[09]|(?<=4)[089]|(?<=5)[0789]|(?<=6)[0456789]|(?<=7)[09]|(?<=8)[0123]|(?<=9)[0123456])|(?<=9)[013456789]((?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01]))|(?<=4)[0123456789]((?<=0)[01278]((?<=0)[0123456789]|(?<=1)[01234567]|(?<=2)[9]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123459]((?<=0)[0]|(?<=1)[01253]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0123])|(?<=2)[0123456789]((?<=0)[06789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0789])|(?<=3)[01235]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[023]|(?<=2)[0]|(?<=3)[09]|(?<=4)[056789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01])|(?<=5)[012345]((?<=0)[0]|(?<=1)[012]|(?<=2)[0]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0])|(?<=6)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0])|(?<=7)[01234]((?<=0)[09]|(?<=1)[019]|(?<=2)[09]|(?<=3)[09]|(?<=4)[09])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0789]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=9)[01234567]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[089]))|(?<=5)[0123456789]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[01]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0256789]|(?<=1)[0123456789]|(?<=2)[124567893]|(?<=3)[0789]|(?<=4)[0123456789]|(?<=5)[012345]|(?<=6)[056789]|(?<=7)[0123456789]|(?<=8)[0123456789]|(?<=9)[01289])|(?<=2)[012345789]((?<=0)[0]|(?<=1)[01234568]|(?<=2)[089]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[6890]|(?<=7)[0]|(?<=8)[01256789]|(?<=9)[012356789])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[03456789]|(?<=2)[0456789]|(?<=3)[02789]|(?<=4)[079]|(?<=5)[0789]|(?<=6)[056789]|(?<=7)[9]|(?<=8)[06789]|(?<=9)[01])|(?<=4)[02789]((?<=0)[01234567]|(?<=2)[1]|(?<=7)[01]|(?<=8)[0]|(?<=9)[0])|(?<=5)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[08]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[012345]|(?<=6)[0123456789]|(?<=7)[0267893]|(?<=8)[02]|(?<=9)[012345678])|(?<=6)[0123456789]((?<=0)[0789]|(?<=1)[123456789]|(?<=2)[01234567]|(?<=3)[05789]|(?<=4)[0]|(?<=5)[069]|(?<=6)[089]|(?<=7)[09]|(?<=8)[03456789]|(?<=9)[0])|(?<=7)[078]((?<=0)[01234567]|(?<=7)[01]|(?<=8)[012])|(?<=8)[0123456789]((?<=0)[056789]|(?<=1)[03456789]|(?<=2)[01234568]|(?<=3)[0789]|(?<=4)[015678]|(?<=5)[0156789]|(?<=6)[0123456]|(?<=7)[01234]|(?<=8)[012345678]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[08]|(?<=3)[01789]|(?<=4)[089]|(?<=5)[09]|(?<=6)[0156789]|(?<=7)[089]|(?<=8)[012345]|(?<=9)[012345689]))|(?<=6)[102345678]((?<=1)[4012569]((?<=4)[901234567]|(?<=0)[0]|(?<=1)[13482]|(?<=2)[023]|(?<=5)[02]|(?<=6)[012]|(?<=9)[0123456])|(?<=0)[078]((?<=0)[1234]|(?<=7)[01]|(?<=8)[0])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012456]|(?<=2)[0]|(?<=3)[0456798]|(?<=4)[0]|(?<=5)[01]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=3)[012345679]((?<=0)[0]|(?<=1)[1235678]|(?<=2)[01]|(?<=3)[06789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0123]|(?<=9)[03])|(?<=4)[01234567]((?<=0)[0]|(?<=1)[0123457]|(?<=2)[0123]|(?<=3)[012345]|(?<=4)[0124]|(?<=5)[2]|(?<=6)[01345]|(?<=7)[0])|(?<=5)[012345]((?<=0)[0]|(?<=1)[02]|(?<=2)[012]|(?<=3)[1257]|(?<=4)[012]|(?<=5)[05])|(?<=6)[01234567]((?<=0)[0]|(?<=1)[012]|(?<=2)[0123]|(?<=3)[089]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=7)[01234678]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=6)[0]|(?<=7)[019]|(?<=8)[01])|(?<=8)[01345679]((?<=0)[0]|(?<=1)[23]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[01234567]|(?<=6)[0]|(?<=7)[089]|(?<=9)[0123]))|(?<=3)[01234567]((?<=0)[078]((?<=0)[12345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0789]|(?<=1)[0345678]|(?<=2)[089]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09]|(?<=9)[01234567])|(?<=2)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[06789]|(?<=3)[0123]|(?<=4)[012345]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[01])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0789]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[03]|(?<=8)[0]|(?<=9)[0])|(?<=5)[089]((?<=0)[0]|(?<=8)[0]|(?<=9)[012345678])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0])|(?<=7)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[08]|(?<=7)[09]))|(?<=9)[01234]((?<=0)[087]((?<=0)[012345]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[056789]|(?<=3)[0123459]|(?<=4)[012345]|(?<=5)[0123]|(?<=6)[0123]|(?<=7)[014]|(?<=8)[0245678]|(?<=9)[023678])|(?<=2)[0123456789]((?<=0)[089]|(?<=1)[09]|(?<=2)[02345679]|(?<=3)[0789]|(?<=4)[02345678]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[045678]|(?<=8)[013567]|(?<=9)[0245])|(?<=3)[01234569]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0345678]|(?<=3)[2346789]|(?<=4)[0123456]|(?<=5)[01234567]|(?<=6)[0123]|(?<=9)[012])|(?<=4)[01234569]((?<=0)[0]|(?<=1)[123]|(?<=2)[09]|(?<=3)[12]|(?<=4)[12345]|(?<=5)[089]|(?<=6)[0123]|(?<=9)[01235]))|(?<=7)[012345678]((?<=0)[078]((?<=0)[1234567]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[01345678]|(?<=2)[0134]|(?<=3)[0123467]|(?<=4)[01234]|(?<=5)[01234]|(?<=6)[012456]|(?<=7)[0123456789]|(?<=8)[012345]|(?<=9)[09])|(?<=2)[012345]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[012345689]|(?<=5)[01235678])|(?<=3)[012]((?<=0)[0]|(?<=1)[0]|(?<=2)[0])|(?<=4)[0123456789]((?<=0)[0123456]|(?<=1)[012]|(?<=2)[01]|(?<=3)[0]|(?<=4)[12345]|(?<=5)[0123456789]|(?<=6)[0123456789]|(?<=7)[023456]|(?<=8)[0123456789]|(?<=9)[01234567])|(?<=5)[0123]((?<=0)[0]|(?<=1)[02345]|(?<=2)[0789]|(?<=3)[0123456789])|(?<=6)[0]((?<=0)[0])|(?<=7)[012345678]((?<=0)[06789]|(?<=1)[0]|(?<=2)[0123]|(?<=3)[01234]|(?<=4)[01234567]|(?<=5)[012345]|(?<=6)[0123]|(?<=7)[0123]|(?<=8)[01])|(?<=8)[0123456]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0]|(?<=3)[01234]|(?<=4)[03456]|(?<=5)[012345678]|(?<=6)[012346789]))|(?<=2)[0123456]((?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[089]|(?<=2)[01234567]|(?<=3)[012345]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0123456]|(?<=7)[09]|(?<=8)[0123456]|(?<=9)[01234])|(?<=2)[0123]((?<=0)[0]|(?<=1)[0]|(?<=2)[012345]|(?<=3)[012])|(?<=3)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[02345]|(?<=2)[089]|(?<=3)[01]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[09]|(?<=9)[09])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123]|(?<=2)[06789]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[089]|(?<=8)[09]|(?<=9)[0123456789])|(?<=6)[0]((?<=0)[09]))|(?<=1)[0123456]((?<=0)[01378]((?<=0)[0123456789]|(?<=1)[012]|(?<=3)[5]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0345678912]((?<=0)[0]|(?<=3)[089]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0]|(?<=7)[089]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=2)[0])|(?<=2)[078]((?<=0)[01234567]|(?<=7)[01]|(?<=8)[0])|(?<=3)[0123456798]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[09]|(?<=4)[09]|(?<=5)[01]|(?<=6)[089]|(?<=7)[09]|(?<=9)[0123]|(?<=8)[0])|(?<=4)[078]((?<=0)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=5)[0123456879]((?<=0)[0]|(?<=1)[089]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[049]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[012]|(?<=2)[0]|(?<=3)[089]|(?<=4)[089]|(?<=5)[09]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0789]|(?<=9)[0123]))|(?<=8)[012345678]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[012]|(?<=1)[0]|(?<=2)[056789]|(?<=3)[012]|(?<=4)[0]|(?<=5)[012]|(?<=6)[0]|(?<=7)[09]|(?<=8)[01234]|(?<=9)[0123456789])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0135])|(?<=3)[012345678]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0]|(?<=8)[01])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[089]|(?<=4)[089]|(?<=5)[012]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0124])|(?<=5)[01234567]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[0])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[06789]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0789])|(?<=7)[01234567]((?<=0)[08]|(?<=1)[013]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[089]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01])))|(?<=3)[6823914705]((?<=6)[0123456789]((?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[12345690]((?<=1)[06789]|(?<=2)[01]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[012345678]|(?<=6)[01234]|(?<=9)[01234]|(?<=0)[0])|(?<=2)[0178]((?<=0)[912345678]|(?<=1)[6012345]|(?<=7)[01]|(?<=8)[012])|(?<=3)[0124567893]((?<=0)[0789]|(?<=1)[03682457]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0389]|(?<=8)[089]|(?<=9)[1302]|(?<=3)[019])|(?<=4)[012345679]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[05678]|(?<=4)[06789]|(?<=5)[056789]|(?<=6)[0]|(?<=7)[012345]|(?<=9)[01234])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[012456789]|(?<=2)[0456789]|(?<=3)[0789]|(?<=4)[023456789]|(?<=5)[056789]|(?<=6)[0789]|(?<=7)[09]|(?<=8)[0123456789]|(?<=9)[06789])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[06789]|(?<=3)[03456789]|(?<=4)[056789]|(?<=5)[023456789]|(?<=6)[0789]|(?<=7)[056789]|(?<=8)[0123456789]|(?<=9)[0123])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[019]|(?<=3)[09]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[089]|(?<=9)[0124])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[06789]|(?<=3)[056789]|(?<=4)[0123456789]|(?<=5)[123456789]|(?<=6)[0123456789]|(?<=7)[023456789]|(?<=8)[03456789]|(?<=9)[01235])|(?<=9)[0134567892]((?<=0)[0]|(?<=1)[012345]|(?<=3)[0789]|(?<=4)[067895]|(?<=5)[045789]|(?<=6)[06789]|(?<=7)[09]|(?<=8)[089]|(?<=9)[012345]|(?<=2)[0]))|(?<=8)[7098123456]((?<=7)[012345678]((?<=0)[0]|(?<=1)[012345]|(?<=2)[06789]|(?<=3)[089]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0789]|(?<=7)[09]|(?<=8)[0789])|(?<=0)[40178]((?<=4)[8]|(?<=0)[123456789]|(?<=1)[01]|(?<=7)[01]|(?<=8)[0])|(?<=9)[01]((?<=0)[0]|(?<=1)[01234567])|(?<=8)[012345679]((?<=0)[01]|(?<=1)[0123]|(?<=2)[09]|(?<=3)[0]|(?<=4)[09]|(?<=5)[02]|(?<=6)[90]|(?<=7)[09]|(?<=9)[012])|(?<=1)[0123456789]((?<=0)[789]|(?<=1)[01]|(?<=2)[09]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=2)[0456789]((?<=0)[012345678]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234567])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[056789]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09]|(?<=9)[089])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[0456789]|(?<=4)[019]|(?<=5)[089]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09])|(?<=5)[0123456789]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[089]|(?<=9)[012345])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[06789]|(?<=3)[0129]|(?<=4)[09]|(?<=5)[02]|(?<=6)[0]|(?<=7)[0789]|(?<=8)[03456789]|(?<=9)[0]))|(?<=2)[0123456789]((?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234567]((?<=0)[0123]|(?<=1)[012]|(?<=2)[0]|(?<=3)[0456789]|(?<=4)[01]|(?<=5)[0123]|(?<=6)[01234]|(?<=7)[012])|(?<=2)[0123]((?<=0)[0]|(?<=1)[123]|(?<=2)[6789]|(?<=3)[01256])|(?<=3)[01234567]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[09]|(?<=3)[0456789]|(?<=4)[089]|(?<=5)[0678]|(?<=6)[056789]|(?<=7)[012345])|(?<=4)[0123459]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[056789]|(?<=3)[01234567]|(?<=4)[089]|(?<=5)[02345679]|(?<=9)[9])|(?<=5)[012345679]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0123456]|(?<=3)[0456789]|(?<=4)[056789]|(?<=5)[012456789]|(?<=6)[0123]|(?<=7)[023456789]|(?<=9)[13])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234567]|(?<=3)[012345678]|(?<=4)[01234568]|(?<=5)[012345]|(?<=6)[0456789]|(?<=7)[089]|(?<=8)[089]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[012345678]|(?<=1)[01]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[01]|(?<=6)[0456789]|(?<=7)[0489]|(?<=8)[0123456789]|(?<=9)[01234])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0123456789]|(?<=3)[089]|(?<=4)[056789]|(?<=5)[0789]|(?<=6)[089]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123456789])|(?<=9)[0123456789]((?<=0)[01]|(?<=1)[015]|(?<=2)[0]|(?<=3)[0]|(?<=4)[01]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01]|(?<=8)[01]|(?<=9)[0]))|(?<=3)[0123456789]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[012456789]|(?<=2)[056789]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0456789]|(?<=6)[0123]|(?<=7)[01234]|(?<=8)[06789]|(?<=9)[01234569])|(?<=2)[019]((?<=0)[1234567890]|(?<=1)[0123]|(?<=9)[09])|(?<=3)[0123459]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0456789]|(?<=3)[0]|(?<=4)[01234567]|(?<=5)[0]|(?<=9)[01234])|(?<=4)[0123456789]((?<=0)[012345]|(?<=1)[0124678]|(?<=2)[023456789]|(?<=3)[089]|(?<=4)[089]|(?<=5)[06789]|(?<=6)[089]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=5)[0123456789]((?<=0)[0789]|(?<=1)[089]|(?<=2)[0789]|(?<=3)[0456789]|(?<=4)[06789]|(?<=5)[0456789]|(?<=6)[06789]|(?<=7)[06789]|(?<=8)[0123456789]|(?<=9)[0123456789])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0789]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0356789]|(?<=8)[012345678]|(?<=9)[01234567])|(?<=7)[0123456789]((?<=0)[078]|(?<=1)[06789]|(?<=2)[01456789]|(?<=3)[0123456789]|(?<=4)[06789]|(?<=5)[06789]|(?<=6)[089]|(?<=7)[0456789]|(?<=8)[023456789]|(?<=9)[012345689])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[056789]|(?<=3)[06789]|(?<=4)[01234567]|(?<=5)[0789]|(?<=6)[056789]|(?<=7)[03456789]|(?<=8)[056789]|(?<=9)[012])|(?<=9)[0123456789]((?<=0)[09]|(?<=1)[029]|(?<=2)[09]|(?<=3)[0456789]|(?<=4)[056789]|(?<=5)[0789]|(?<=6)[09]|(?<=7)[09]|(?<=8)[06789]|(?<=9)[01234567]))|(?<=9)[012345678]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[012]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[089]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234567])|(?<=2)[012359]((?<=0)[0]|(?<=1)[023]|(?<=2)[0]|(?<=3)[023]|(?<=5)[0]|(?<=9)[01234])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[0123456789]((?<=0)[0789]|(?<=1)[06789]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[01]|(?<=6)[0]|(?<=7)[0789]|(?<=8)[0]|(?<=9)[01])|(?<=5)[0123456789]((?<=0)[06789]|(?<=1)[0135678]|(?<=2)[056789]|(?<=3)[089]|(?<=4)[0789]|(?<=5)[013456789]|(?<=6)[09]|(?<=7)[012345789]|(?<=8)[02346789]|(?<=9)[012345])|(?<=6)[0123456789]((?<=0)[089]|(?<=1)[012389]|(?<=2)[06789]|(?<=3)[089]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[012356789]|(?<=9)[012346789])|(?<=7)[0123456789]((?<=0)[06789]|(?<=1)[056789]|(?<=2)[02345678]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[0]|(?<=6)[01234569]|(?<=7)[0678]|(?<=8)[06789]|(?<=9)[01234578])|(?<=8)[0124568]((?<=0)[056789]|(?<=1)[01235]|(?<=2)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[09]|(?<=8)[0]))|(?<=1)[501234678]((?<=5)[1023456789]((?<=1)[501234]|(?<=0)[0]|(?<=2)[0123]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[0789]|(?<=9)[0123])|(?<=0)[0178]((?<=0)[123456789]|(?<=1)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[013456789]((?<=0)[09]|(?<=1)[09]|(?<=3)[0123]|(?<=4)[0]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[0123456789]|(?<=8)[0]|(?<=9)[012345])|(?<=2)[0123456789]((?<=0)[08]|(?<=1)[09]|(?<=2)[0789]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[01234]|(?<=6)[01234]|(?<=7)[012]|(?<=8)[01234]|(?<=9)[0123])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[023]|(?<=9)[012345678])|(?<=4)[0123456789]((?<=0)[09]|(?<=1)[012345678]|(?<=2)[012]|(?<=3)[089]|(?<=4)[089]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[0123]|(?<=8)[01234567]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[01]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01]|(?<=8)[09]|(?<=9)[0123456789])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0456789]|(?<=5)[01234]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[0123456789])|(?<=8)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[09]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[06789]|(?<=7)[06789]|(?<=8)[0]|(?<=9)[012]))|(?<=4)[240138]((?<=2)[4601235]((?<=4)[80679]|(?<=6)[01]|(?<=0)[089]|(?<=1)[089]|(?<=2)[0]|(?<=3)[09]|(?<=5)[079])|(?<=4)[8012345679]((?<=8)[90345678]|(?<=0)[056789]|(?<=1)[019]|(?<=2)[09]|(?<=3)[09]|(?<=4)[079]|(?<=5)[0]|(?<=6)[056789]|(?<=7)[035789]|(?<=9)[012])|(?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01235679]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[06789]|(?<=3)[1230]|(?<=5)[9]|(?<=6)[0]|(?<=7)[0]|(?<=9)[012])|(?<=3)[012345]((?<=0)[045679]|(?<=1)[0]|(?<=2)[0]|(?<=3)[78]|(?<=4)[0789]|(?<=5)[0])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[01345]|(?<=2)[089]|(?<=3)[09]|(?<=4)[023456789]|(?<=5)[089]|(?<=6)[9]|(?<=7)[089]|(?<=8)[026789]))|(?<=7)[0123456789]((?<=0)[078]((?<=0)[123456789]|(?<=7)[1]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[01456]|(?<=2)[09]|(?<=3)[09]|(?<=4)[0789]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0123456]|(?<=8)[0123456789]|(?<=9)[0123487])|(?<=2)[0123456789]((?<=0)[0789]|(?<=1)[03456789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0678]|(?<=5)[013456789]|(?<=6)[079]|(?<=7)[01]|(?<=8)[1]|(?<=9)[012])|(?<=3)[012345]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[09]|(?<=3)[06789]|(?<=4)[09]|(?<=5)[0])|(?<=4)[0123456789]((?<=0)[05689]|(?<=1)[089]|(?<=2)[06789]|(?<=3)[09]|(?<=4)[06789]|(?<=5)[01234568]|(?<=6)[056897]|(?<=7)[089]|(?<=8)[018]|(?<=9)[01345726])|(?<=5)[01234589]((?<=0)[0]|(?<=1)[056]|(?<=2)[01234]|(?<=3)[012]|(?<=4)[012]|(?<=5)[0123456]|(?<=8)[9]|(?<=9)[0123456])|(?<=6)[0123456789]((?<=0)[06789]|(?<=1)[0789]|(?<=2)[014]|(?<=3)[089]|(?<=4)[0]|(?<=5)[06789]|(?<=6)[0]|(?<=7)[01]|(?<=8)[0234]|(?<=9)[0])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[012346785]|(?<=2)[047]|(?<=3)[0]|(?<=4)[089]|(?<=5)[01234569]|(?<=6)[02345678]|(?<=7)[03456789]|(?<=8)[0156789]|(?<=9)[0123456789])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[012345]|(?<=7)[0134]|(?<=8)[012]|(?<=9)[01234])|(?<=9)[0]((?<=0)[0]))|(?<=0)[013456782]((?<=0)[0178]((?<=0)[0123456789]|(?<=1)[012]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[089]|(?<=5)[012345678]|(?<=6)[0123456789]|(?<=7)[06789]|(?<=8)[09]|(?<=9)[0123456])|(?<=3)[235680179]((?<=2)[09]|(?<=3)[1234580]|(?<=5)[103]|(?<=6)[0479568]|(?<=8)[0134592]|(?<=0)[0]|(?<=1)[09]|(?<=7)[0]|(?<=9)[0123456789])|(?<=4)[01234]((?<=0)[0]|(?<=1)[01234]|(?<=2)[0]|(?<=3)[089]|(?<=4)[012])|(?<=5)[0123456789]((?<=0)[06789]|(?<=1)[0]|(?<=2)[089]|(?<=3)[05]|(?<=4)[0]|(?<=5)[089]|(?<=6)[0123456]|(?<=7)[09]|(?<=8)[089]|(?<=9)[01234])|(?<=6)[0124]((?<=0)[09]|(?<=1)[0123]|(?<=2)[06789]|(?<=4)[089])|(?<=7)[01234]((?<=0)[089]|(?<=1)[0]|(?<=2)[09]|(?<=3)[09]|(?<=4)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[0]|(?<=3)[01234567]|(?<=4)[089]|(?<=5)[089]|(?<=6)[08]|(?<=7)[056789]|(?<=8)[09]|(?<=9)[0123])|(?<=2)[0]((?<=0)[012345]))|(?<=5)[6012345]((?<=6)[0123456]((?<=0)[0]|(?<=1)[0123]|(?<=2)[056789]|(?<=3)[0789]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0])|(?<=0)[0178]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234]((?<=0)[06789]|(?<=1)[089]|(?<=2)[089]|(?<=3)[089]|(?<=4)[09])|(?<=2)[0124567893]((?<=0)[02]|(?<=1)[0123456789]|(?<=2)[09]|(?<=4)[0]|(?<=5)[09]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[09]|(?<=3)[0])|(?<=3)[0123456]((?<=0)[0789]|(?<=1)[09]|(?<=2)[089]|(?<=3)[0389]|(?<=4)[09]|(?<=5)[0]|(?<=6)[089])|(?<=4)[01235678]((?<=0)[0]|(?<=1)[1234568]|(?<=2)[0123]|(?<=3)[012]|(?<=5)[0789]|(?<=6)[0123456789]|(?<=7)[089]|(?<=8)[089])|(?<=5)[012345678]((?<=0)[0789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[01234]|(?<=5)[089]|(?<=6)[01]|(?<=7)[012]|(?<=8)[0])))|(?<=4)[6420795381]((?<=6)[0123456789]((?<=0)[012378]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456]|(?<=3)[5]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123467895]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[07]|(?<=3)[0123456789]|(?<=4)[0123456789]|(?<=6)[023456789]|(?<=7)[0123456789]|(?<=8)[0123457]|(?<=9)[0123456789]|(?<=5)[0])|(?<=2)[012345679]((?<=0)[0]|(?<=1)[0]|(?<=2)[059]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[06789]|(?<=7)[0]|(?<=9)[012345])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[0123457]|(?<=2)[01]|(?<=3)[09]|(?<=4)[0]|(?<=5)[01234567]|(?<=6)[0789]|(?<=7)[0]|(?<=8)[089]|(?<=9)[01234])|(?<=4)[01234567]((?<=0)[089]|(?<=1)[0789]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[0])|(?<=5)[01234569]((?<=0)[01]|(?<=1)[012345]|(?<=2)[09]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[012345])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[012345]|(?<=3)[05]|(?<=4)[0]|(?<=5)[09]|(?<=6)[06789]|(?<=7)[0]|(?<=8)[0789]|(?<=9)[012])|(?<=7)[0123456789]((?<=0)[0123]|(?<=1)[01234567]|(?<=2)[0123456789]|(?<=3)[0]|(?<=4)[09]|(?<=5)[089]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[012345]|(?<=3)[0789]|(?<=4)[01234]|(?<=5)[0]|(?<=6)[089]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234])|(?<=9)[012345678]((?<=0)[019]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]))|(?<=4)[01234567]((?<=0)[078]((?<=0)[123]|(?<=7)[01]|(?<=8)[0])|(?<=1)[01234569]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456]|(?<=3)[01234]|(?<=4)[01234567]|(?<=5)[056789]|(?<=6)[0123456789]|(?<=9)[012345])|(?<=2)[0123]((?<=0)[0]|(?<=1)[0123]|(?<=2)[0123]|(?<=3)[0123])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[01345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0789]|(?<=6)[06789]|(?<=7)[0]|(?<=8)[012]|(?<=9)[01234567])|(?<=4)[0123456789]((?<=0)[09]|(?<=1)[012345]|(?<=2)[01234]|(?<=3)[0123]|(?<=4)[01]|(?<=5)[09]|(?<=6)[0]|(?<=7)[7890]|(?<=8)[0]|(?<=9)[01234567])|(?<=5)[0123456789]((?<=0)[09]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0789]|(?<=5)[056789]|(?<=6)[0123456]|(?<=7)[09]|(?<=8)[06789]|(?<=9)[01234567])|(?<=6)[0123456]((?<=0)[0]|(?<=1)[0]|(?<=2)[01234]|(?<=3)[0]|(?<=4)[0123]|(?<=5)[0123]|(?<=6)[01])|(?<=7)[0123456789]((?<=0)[06789]|(?<=1)[012]|(?<=2)[01]|(?<=3)[0]|(?<=4)[012]|(?<=5)[0]|(?<=6)[09]|(?<=7)[09]|(?<=8)[0]|(?<=9)[0123]))|(?<=2)[2013]((?<=2)[60123459]((?<=6)[90]|(?<=0)[0]|(?<=1)[012345678]|(?<=2)[0235]|(?<=3)[0]|(?<=4)[089]|(?<=5)[0789]|(?<=9)[0123456])|(?<=0)[078]((?<=0)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[078]|(?<=1)[01234]|(?<=2)[056789]|(?<=3)[0124578]|(?<=4)[012356897]|(?<=5)[02367894]|(?<=6)[01245679]|(?<=7)[23456]|(?<=8)[0129]|(?<=9)[01235])|(?<=3)[01234569]((?<=0)[0]|(?<=1)[012345678]|(?<=2)[089]|(?<=3)[09]|(?<=4)[01245]|(?<=5)[0123]|(?<=6)[056789]|(?<=9)[012]))|(?<=0)[012345]((?<=0)[078]((?<=0)[0123456]|(?<=7)[01]|(?<=8)[0])|(?<=1)[023456789]((?<=0)[09]|(?<=2)[0123]|(?<=3)[03456]|(?<=4)[012456]|(?<=5)[01234]|(?<=6)[012345]|(?<=7)[0123456]|(?<=8)[012345]|(?<=9)[01234567])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0]|(?<=3)[0123456789]|(?<=4)[012]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456789])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[01234578]|(?<=2)[0]|(?<=3)[012]|(?<=4)[0]|(?<=5)[0123456789]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[01234567])|(?<=4)[0123456789]((?<=0)[068]|(?<=1)[09]|(?<=2)[01234]|(?<=3)[0]|(?<=4)[012345679]|(?<=5)[0]|(?<=6)[0123456789]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456])|(?<=5)[01234569]((?<=0)[0]|(?<=1)[02345678]|(?<=2)[09]|(?<=3)[0123]|(?<=4)[012]|(?<=5)[0123456]|(?<=6)[0789]|(?<=9)[01234]))|(?<=7)[01234568]((?<=0)[0178]((?<=0)[123456789]|(?<=1)[012345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[09]|(?<=3)[01234]|(?<=4)[0]|(?<=5)[01235]|(?<=6)[0124569]|(?<=7)[01234567]|(?<=8)[0123456]|(?<=9)[01234567])|(?<=2)[0123456789]((?<=0)[09]|(?<=1)[09]|(?<=2)[0]|(?<=3)[012789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123]|(?<=9)[0])|(?<=3)[0123456]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[089]|(?<=3)[01]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[089]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[01234]|(?<=6)[012345]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234])|(?<=5)[0123]((?<=0)[09]|(?<=1)[0123]|(?<=2)[09]|(?<=3)[0])|(?<=6)[0123456789]((?<=0)[06789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[09]|(?<=4)[01]|(?<=5)[0]|(?<=6)[4]|(?<=7)[0123456]|(?<=8)[06789]|(?<=9)[012])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[012]|(?<=4)[0]|(?<=5)[01]|(?<=6)[02]|(?<=7)[0]|(?<=8)[0123]))|(?<=9)[012345678]((?<=0)[012378]((?<=0)[123456789]|(?<=1)[0123456789]|(?<=2)[0123456789]|(?<=3)[012]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0123456789]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[0123456789]|(?<=6)[012345678]|(?<=7)[01234678]|(?<=8)[0123]|(?<=9)[012])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[012]|(?<=4)[0]|(?<=5)[012345]|(?<=6)[0]|(?<=7)[012]|(?<=8)[01]|(?<=9)[0])|(?<=3)[01234569]((?<=0)[0]|(?<=1)[0789]|(?<=2)[012345679]|(?<=3)[01234567]|(?<=4)[0123456789]|(?<=5)[02789]|(?<=6)[012]|(?<=9)[0123456])|(?<=4)[012345]((?<=0)[0]|(?<=1)[09]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[012345]|(?<=3)[09]|(?<=4)[0123]|(?<=5)[09]|(?<=6)[0123]|(?<=7)[01234]|(?<=8)[023]|(?<=9)[01234])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[089]|(?<=2)[0123456789]|(?<=3)[0789]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456789])|(?<=7)[012345678]((?<=0)[06789]|(?<=1)[0456789]|(?<=2)[012]|(?<=3)[01]|(?<=4)[0123]|(?<=5)[01]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123])|(?<=8)[012345678]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0123456]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[01]|(?<=8)[021]))|(?<=5)[0123456789]((?<=0)[087]((?<=0)[012345678]|(?<=8)[0]|(?<=7)[01])|(?<=1)[0123456789]((?<=0)[09]|(?<=1)[012349]|(?<=2)[012345678]|(?<=3)[089]|(?<=4)[0]|(?<=5)[09]|(?<=6)[012345]|(?<=7)[09]|(?<=8)[0123]|(?<=9)[01])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[01234]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012])|(?<=3)[014567]((?<=0)[0]|(?<=1)[01234]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=4)[012345678]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09]|(?<=8)[09])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[01234569]|(?<=3)[01234]|(?<=4)[12340]|(?<=5)[0345]|(?<=6)[0789]|(?<=7)[012345678]|(?<=8)[089]|(?<=9)[01234])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[012]|(?<=3)[012345678]|(?<=4)[0123456]|(?<=5)[01234]|(?<=6)[01234]|(?<=7)[012345678]|(?<=8)[01234567]|(?<=9)[012345])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09]|(?<=9)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0])|(?<=9)[0123456]((?<=0)[089]|(?<=1)[0789]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]))|(?<=3)[01234578]((?<=0)[078]((?<=0)[12345678]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123457]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[01234]|(?<=5)[012345]|(?<=7)[8])|(?<=2)[04]((?<=0)[0123456]|(?<=4)[1])|(?<=3)[0123456789]((?<=0)[0]|(?<=1)[012]|(?<=2)[01]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[012345]|(?<=7)[01234569]|(?<=8)[012]|(?<=9)[0123])|(?<=4)[0123456789]((?<=0)[0]|(?<=1)[012345]|(?<=2)[0123456789]|(?<=3)[09]|(?<=4)[089]|(?<=5)[09]|(?<=6)[01]|(?<=7)[09]|(?<=8)[01]|(?<=9)[01])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[0789]|(?<=3)[0]|(?<=4)[098]|(?<=5)[089]|(?<=6)[09]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01234567])|(?<=7)[0123456789]((?<=0)[0]|(?<=1)[0123456789]|(?<=2)[09]|(?<=3)[06789]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[012345]|(?<=7)[01234567]|(?<=8)[01234567]|(?<=9)[012])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[01234567]|(?<=2)[0]|(?<=3)[089]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0789]|(?<=8)[01234567]|(?<=9)[01234567]))|(?<=8)[3427015689]((?<=3)[5012346789]((?<=5)[0]|(?<=0)[09]|(?<=1)[012345]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123]|(?<=9)[012345])|(?<=4)[69158]((?<=6)[0]|(?<=9)[809]|(?<=1)[09]|(?<=5)[0]|(?<=8)[0])|(?<=2)[7012345689]((?<=7)[7068]|(?<=0)[0]|(?<=1)[01235]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[09]|(?<=8)[0789]|(?<=9)[1])|(?<=7)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[0178]((?<=0)[123456789]|(?<=1)[012345]|(?<=7)[01]|(?<=8)[0])|(?<=1)[0123456789]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[0]|(?<=3)[0]|(?<=4)[012345]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[012456])|(?<=5)[01235]((?<=0)[08]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0])|(?<=6)[012345]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=8)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[09]|(?<=7)[09]|(?<=8)[0]|(?<=9)[015])|(?<=9)[0123456789]((?<=0)[0123]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[01238]))|(?<=1)[0123456789]((?<=0)[012897]((?<=0)[0123456789]|(?<=1)[0123456789]|(?<=2)[0]|(?<=8)[90]|(?<=9)[2]|(?<=7)[01])|(?<=1)[012345]((?<=0)[0]|(?<=1)[01]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[012345]((?<=0)[09]|(?<=1)[089]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=3)[0123456789]((?<=0)[09]|(?<=1)[089]|(?<=2)[0]|(?<=3)[09]|(?<=4)[0]|(?<=5)[09]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]|(?<=9)[0])|(?<=4)[01234567]((?<=0)[09]|(?<=1)[0]|(?<=2)[09]|(?<=3)[09]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[09])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[03456789]|(?<=7)[0]|(?<=8)[0]|(?<=9)[09])|(?<=6)[01234567]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0789]|(?<=6)[01]|(?<=7)[0])|(?<=7)[012345678]((?<=0)[01234]|(?<=1)[09]|(?<=2)[078]|(?<=3)[01]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0])|(?<=8)[0123456789]((?<=0)[0456789]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[09]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[089]|(?<=9)[0789])|(?<=9)[012345678]((?<=0)[0789]|(?<=1)[0]|(?<=2)[078]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[09])))|(?<=5)[102]((?<=1)[0]((?<=0)[078]((?<=0)[12345]|(?<=7)[01]|(?<=8)[0]))|(?<=0)[012345678]((?<=0)[1250789]((?<=1)[6901234578]|(?<=2)[201]|(?<=5)[9]|(?<=0)[123456789]|(?<=7)[01]|(?<=8)[0]|(?<=9)[0])|(?<=1)[0345678912]((?<=0)[089]|(?<=3)[0123456789]|(?<=4)[01234]|(?<=5)[0123456]|(?<=6)[01234]|(?<=7)[012345786]|(?<=8)[0]|(?<=9)[056123478]|(?<=1)[0]|(?<=2)[0])|(?<=2)[0123456789]((?<=0)[0]|(?<=1)[012345679]|(?<=2)[0789]|(?<=3)[06789]|(?<=4)[06789]|(?<=5)[0789]|(?<=6)[06789]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0123456789])|(?<=3)[01234679]((?<=0)[0]|(?<=1)[0123456]|(?<=2)[023456]|(?<=3)[0123456]|(?<=4)[012345678]|(?<=6)[06789]|(?<=7)[0123456]|(?<=9)[01])|(?<=4)[0123456789]((?<=0)[089]|(?<=1)[01]|(?<=2)[0]|(?<=3)[0]|(?<=4)[01]|(?<=5)[0]|(?<=6)[01]|(?<=7)[0]|(?<=8)[012]|(?<=9)[01])|(?<=5)[0123456789]((?<=0)[0]|(?<=1)[01234]|(?<=2)[09]|(?<=3)[0]|(?<=4)[06789]|(?<=5)[0]|(?<=6)[012]|(?<=7)[0]|(?<=8)[01234]|(?<=9)[0126])|(?<=6)[0123456789]((?<=0)[0]|(?<=1)[01245679]|(?<=2)[90]|(?<=3)[0789]|(?<=4)[01]|(?<=5)[0]|(?<=6)[089]|(?<=7)[089]|(?<=8)[023456789]|(?<=9)[0123456])|(?<=7)[0134567892]((?<=0)[09]|(?<=1)[0]|(?<=3)[0]|(?<=4)[01]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0123456]|(?<=9)[02345]|(?<=2)[0])|(?<=8)[01234]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]))|(?<=2)[0]((?<=0)[078]((?<=0)[123456]|(?<=7)[01]|(?<=8)[0])))))$"), + FR: new RegExp("^([5623401789]((?<=5)[0123456789]((?<=0)[356284170]((?<=3)[9420617358]((?<=9)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0])|(?<=5)[8742310659]((?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0])|(?<=6)[073684219]((?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0])|(?<=2)[562140973]((?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0])|(?<=8)[71059864]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=4)[0])|(?<=4)[1982546037]((?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0])|(?<=1)[1478956230]((?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0])|(?<=7)[07526413]((?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[127643580]((?<=1)[275634190]((?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0])|(?<=2)[596374210]((?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[98207365]((?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=3)[3092418675]((?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0])|(?<=5)[3012]((?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=2)[213476058]((?<=2)[310497625]((?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=1)[312549670]((?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=3)[0371246]((?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0])|(?<=4)[01]((?<=0)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=3)[2163459870]((?<=2)[139405672]((?<=1)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0])|(?<=1)[70264195]((?<=7)[0]|(?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0])|(?<=6)[04]((?<=0)[0]|(?<=4)[0])|(?<=3)[48605927]((?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=4)[148072]((?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0])|(?<=5)[04]((?<=0)[0]|(?<=4)[0])|(?<=9)[4756]((?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=4)[8173542690]((?<=8)[0973468125]((?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=1)[1529746380]((?<=1)[502364198]|(?<=5)[0]|(?<=2)[02913]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[4560]|(?<=8)[0]|(?<=0)[0])|(?<=7)[4180762395]((?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0])|(?<=3)[7608312459]((?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[50]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0])|(?<=5)[8725643109]((?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0])|(?<=4)[7519382460]((?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[50]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=2)[3069418725]((?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[3612054897]((?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=7)[0])|(?<=9)[239458761]((?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[143627085]((?<=1)[306259147]((?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[03]((?<=0)[0]|(?<=3)[0])|(?<=3)[021]((?<=0)[0]|(?<=2)[0]|(?<=1)[0])|(?<=6)[0]((?<=0)[0])|(?<=2)[675104293]((?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[04]((?<=0)[0]|(?<=4)[0])|(?<=5)[0]((?<=0)[0]))|(?<=6)[6321457980]((?<=6)[4920318675]((?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0])|(?<=3)[5982641037]((?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0])|(?<=2)[40625397]((?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0])|(?<=1)[432671950]((?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=0)[0])|(?<=4)[0326875941]((?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0])|(?<=5)[6058143927]((?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=7)[0687354]((?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0])|(?<=9)[2135]((?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[9850764]((?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[4731508269]((?<=4)[4851620379]((?<=4)[05]|(?<=8)[0]|(?<=5)[05]|(?<=1)[025]|(?<=6)[0]|(?<=2)[0]|(?<=0)[05]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[32401978]((?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0])|(?<=3)[6042837519]((?<=6)[05]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[05]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0])|(?<=1)[375460892]((?<=3)[0]|(?<=7)[05]|(?<=5)[50]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[05]|(?<=9)[0]|(?<=2)[0])|(?<=5)[9358617420]((?<=9)[0]|(?<=3)[05]|(?<=5)[0]|(?<=8)[0]|(?<=6)[50]|(?<=1)[05]|(?<=7)[0]|(?<=4)[0]|(?<=2)[05]|(?<=0)[0])|(?<=0)[570]((?<=5)[0]|(?<=7)[0]|(?<=0)[0])|(?<=8)[3018726549]((?<=3)[0]|(?<=0)[0]|(?<=1)[50]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[50]|(?<=5)[05]|(?<=4)[0]|(?<=9)[0])|(?<=2)[204698375]((?<=2)[0]|(?<=0)[0]|(?<=4)[50]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[05])|(?<=6)[306924758]((?<=3)[05]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[50]|(?<=7)[0]|(?<=5)[50]|(?<=8)[05])|(?<=9)[8732641905]((?<=8)[0]|(?<=7)[0]|(?<=3)[05]|(?<=2)[05]|(?<=6)[0]|(?<=4)[0]|(?<=1)[05]|(?<=9)[0]|(?<=0)[5]|(?<=5)[0]))|(?<=8)[713548260]((?<=7)[0]((?<=0)[0])|(?<=1)[791425836]((?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[0524183796]((?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0])|(?<=5)[03]((?<=0)[0]|(?<=3)[0])|(?<=4)[620174935]((?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=2)[210539746]((?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0])|(?<=6)[604]((?<=6)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[2467135980]((?<=2)[6842175390]((?<=6)[8691025374]|(?<=8)[085267431]|(?<=4)[475093216]|(?<=2)[503917264]|(?<=1)[6483709152]|(?<=7)[80973421]|(?<=5)[92183045]|(?<=3)[4091256738]|(?<=9)[36025794]|(?<=0)[0])|(?<=4)[1490738625]((?<=1)[0]|(?<=4)[0]|(?<=9)[0431562]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=6)[0867932541]((?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0])|(?<=7)[1483579206]((?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[07]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0])|(?<=1)[3719254680]((?<=3)[4309816257]|(?<=7)[3806172594]|(?<=1)[2016495837]|(?<=9)[10985342]|(?<=2)[8273401965]|(?<=5)[7398145260]|(?<=4)[3149875602]|(?<=6)[4139725608]|(?<=8)[197248605]|(?<=0)[0])|(?<=3)[321769850]((?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0])|(?<=5)[7451360829]((?<=7)[0]|(?<=4)[0]|(?<=5)[20341]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=2)[0]|(?<=9)[0])|(?<=9)[894526731]((?<=8)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0])|(?<=8)[2473158690]((?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])))|(?<=6)[0123456789]((?<=0)[4631985270]((?<=4)[80923461]((?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0])|(?<=6)[08954621]((?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0])|(?<=3)[0958136427]((?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=1)[9243715680]((?<=9)[0]|(?<=2)[039687]|(?<=4)[109]|(?<=3)[048]|(?<=7)[035]|(?<=1)[09273]|(?<=5)[0753]|(?<=6)[20]|(?<=8)[0]|(?<=0)[0])|(?<=9)[3465]((?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0])|(?<=8)[270854619]((?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0])|(?<=5)[4108937256]((?<=4)[0]|(?<=1)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0])|(?<=2)[4291356870]((?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=0)[0])|(?<=7)[903514]((?<=9)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[521476038]((?<=5)[7065]((?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0])|(?<=2)[743205916]((?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0])|(?<=1)[210356794]((?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[71042359]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0])|(?<=7)[09]((?<=0)[0]|(?<=9)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=3)[2693851074]((?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0])|(?<=8)[0]((?<=0)[0]))|(?<=2)[3168254790]((?<=3)[2916438750]((?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0])|(?<=1)[4265783190]((?<=4)[40579321]|(?<=2)[071489362]|(?<=6)[4120]|(?<=5)[086523791]|(?<=7)[056932]|(?<=8)[0752]|(?<=3)[4061827]|(?<=1)[813906742]|(?<=9)[096]|(?<=0)[0])|(?<=6)[5197203486]((?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[5916743082]((?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=2)[0])|(?<=2)[1764253890]((?<=1)[08795]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[3041]|(?<=5)[0]|(?<=3)[210]|(?<=8)[0]|(?<=9)[0]|(?<=0)[0])|(?<=5)[6375908412]((?<=6)[0]|(?<=3)[0]|(?<=7)[05]|(?<=5)[0]|(?<=9)[0]|(?<=0)[0]|(?<=8)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0])|(?<=4)[5786019432]((?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0])|(?<=7)[8467209315]((?<=8)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=9)[659217384]((?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[4213657890]((?<=4)[2694581370]((?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0])|(?<=2)[136572094]((?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0])|(?<=1)[156492703]((?<=1)[4906215873]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[02]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[9152387460]((?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=6)[0817329645]((?<=0)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0])|(?<=5)[7089643215]((?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=7)[6025398147]((?<=6)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=8)[845230917]((?<=8)[0]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=7)[0])|(?<=9)[832571946]((?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0]))|(?<=4)[3245168790]((?<=3)[650739214]((?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0])|(?<=2)[253674910]((?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0])|(?<=4)[2056917483]((?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0])|(?<=5)[173206]((?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0])|(?<=1)[273149560]((?<=2)[012]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=0)[0])|(?<=6)[6480]((?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0])|(?<=8)[07]((?<=0)[0]|(?<=7)[0])|(?<=7)[80]((?<=8)[0]|(?<=0)[0])|(?<=9)[9]((?<=9)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[234165780]((?<=2)[40532769]((?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0])|(?<=3)[698507231]((?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0])|(?<=4)[4026193]((?<=4)[0]|(?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0])|(?<=1)[04375291]((?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0])|(?<=6)[6790]((?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0])|(?<=5)[9061]((?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0])|(?<=7)[10]((?<=1)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=6)[213657480]((?<=2)[1265830947]((?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=7)[0])|(?<=1)[1572893640]((?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0])|(?<=3)[0246975318]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=8)[0])|(?<=6)[06952781]((?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0]|(?<=8)[0]|(?<=1)[0])|(?<=5)[0361574]((?<=0)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0])|(?<=7)[264035]((?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0])|(?<=4)[0851296374]((?<=0)[0]|(?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0])|(?<=8)[20]((?<=2)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[1638254790]((?<=1)[247319560]((?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[80473526]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=0)[0])|(?<=6)[0548693721]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0])|(?<=3)[2716489350]((?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0])|(?<=8)[01867524]((?<=0)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0])|(?<=2)[6792143508]((?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[01672453]|(?<=8)[0])|(?<=5)[7031526894]((?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[7380294516]((?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0])|(?<=7)[02579316]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=9)[398726]((?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[2853471960]((?<=2)[1234905687]((?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0])|(?<=8)[7052943]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=5)[6835017942]((?<=6)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0]|(?<=2)[0])|(?<=3)[2538906147]((?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[84297061]((?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0])|(?<=7)[283049765]((?<=2)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0])|(?<=1)[9413802756]((?<=9)[0]|(?<=4)[0]|(?<=1)[680]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=2)[7584016]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0])|(?<=9)[9761528]((?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=8)[0])|(?<=6)[163042985]((?<=1)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0])|(?<=0)[04]((?<=0)[0]|(?<=4)[0]))|(?<=9)[4265837190]((?<=4)[8790642315]((?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0])|(?<=2)[1269853407]((?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0])|(?<=6)[1294860537]((?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0])|(?<=5)[0513687924]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0])|(?<=8)[47562093]((?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0])|(?<=3)[8964312057]((?<=8)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=7)[09487326]((?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0])|(?<=1)[720546139]((?<=7)[0]|(?<=2)[0564]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[50]|(?<=3)[0]|(?<=9)[0])|(?<=9)[7316]((?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[892145637])))|(?<=2)[5678901234]((?<=5)[2137406859]((?<=2)[715429630]((?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0])|(?<=1)[15749623]((?<=1)[0315]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0])|(?<=3)[2186390745]((?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0])|(?<=7)[27905]((?<=2)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0])|(?<=4)[3214967085]((?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=6)[452869013]((?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=3)[0])|(?<=8)[7042]((?<=7)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0])|(?<=5)[65832017]((?<=6)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0])|(?<=9)[623]((?<=6)[0]|(?<=2)[0]|(?<=3)[0]))|(?<=6)[134265780]((?<=1)[546192730]((?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=0)[0])|(?<=3)[04153982]((?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0])|(?<=4)[072156]((?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0])|(?<=2)[034672159]((?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0])|(?<=6)[02]((?<=0)[0]|(?<=2)[0])|(?<=5)[136704]((?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0])|(?<=7)[48973650]((?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[4537621980]((?<=4)[0324765981]((?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0])|(?<=5)[0236741589]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=9)[0])|(?<=3)[8370259416]((?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0])|(?<=7)[0264395187]((?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=7)[0])|(?<=6)[0674389251]((?<=0)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0])|(?<=2)[267159340]((?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0])|(?<=1)[7689235401]((?<=7)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0])|(?<=9)[45312]((?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0])|(?<=8)[02395617]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[523176480]((?<=5)[0]((?<=0)[0])|(?<=2)[629714053]((?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0])|(?<=3)[36042185]((?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=5)[0])|(?<=1)[263974510]((?<=2)[0]|(?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=6)[30]((?<=3)[0]|(?<=0)[0])|(?<=4)[018]((?<=0)[0]|(?<=1)[0]|(?<=8)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[6148529730]((?<=6)[5921307468]((?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0])|(?<=1)[60892547]((?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[6041597238]((?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0])|(?<=8)[6140728395]((?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=8)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[961530724]((?<=9)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0])|(?<=2)[698475031]((?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=4)[162]|(?<=7)[0]|(?<=5)[0239]|(?<=0)[0]|(?<=3)[3]|(?<=1)[7])|(?<=9)[425970183]((?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0])|(?<=7)[1587936402]((?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0]|(?<=2)[0])|(?<=3)[05148697]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=0)[0126]((?<=0)[09]((?<=0)[0]|(?<=9)[0])|(?<=1)[261459307]((?<=2)[851734962]|(?<=6)[67093485]|(?<=1)[2178306495]|(?<=4)[078526413]|(?<=5)[13027]|(?<=9)[0]|(?<=3)[8145972603]|(?<=0)[0]|(?<=7)[0123])|(?<=2)[7102345968]((?<=7)[06295]|(?<=1)[2384579]|(?<=0)[0]|(?<=2)[695410287]|(?<=3)[7043589261]|(?<=4)[50264837]|(?<=5)[291036]|(?<=9)[0]|(?<=6)[0]|(?<=8)[7])|(?<=6)[20]((?<=2)[0]|(?<=0)[0]))|(?<=1)[1524367089]((?<=1)[21754396]((?<=2)[10]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=6)[0])|(?<=5)[1087432695]((?<=1)[0]|(?<=0)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=5)[0])|(?<=2)[309276154]((?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0])|(?<=4)[210954376]((?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=6)[0])|(?<=3)[1562397840]((?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=0)[0])|(?<=6)[94103]((?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0])|(?<=7)[06]((?<=0)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[025]((?<=0)[0]|(?<=2)[0]|(?<=5)[0])|(?<=9)[1]((?<=1)[0]))|(?<=2)[4182359760]((?<=4)[0358142976]((?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0])|(?<=1)[364017529]((?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0])|(?<=8)[710236]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0])|(?<=2)[519074263]((?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0]|(?<=3)[0])|(?<=3)[5321908467]((?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=0)[0]|(?<=8)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0])|(?<=5)[5741869320]((?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0])|(?<=9)[874536]((?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0])|(?<=7)[02378145]((?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=7)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0])|(?<=6)[192360458]((?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[327150468]((?<=3)[824065]((?<=8)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0])|(?<=2)[024165973]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0])|(?<=7)[0]((?<=0)[0])|(?<=1)[705931426]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[603852]((?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=2)[0])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=4)[321456870]((?<=3)[0321684795]((?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=7)[0]|(?<=9)[0]|(?<=5)[0])|(?<=2)[162543970]((?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0])|(?<=1)[547610932]((?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0])|(?<=4)[4017528369]((?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0])|(?<=5)[4562180973]((?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0])|(?<=6)[54201386]((?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[05]((?<=0)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])))|(?<=3)[0123456789]((?<=0)[7123546980]((?<=7)[0746532]((?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0])|(?<=1)[349125670]((?<=3)[3210]|(?<=4)[0]|(?<=9)[0]|(?<=1)[041]|(?<=2)[065427918]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=2)[165492037]((?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0])|(?<=3)[056293481]((?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0])|(?<=5)[80731462]((?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0])|(?<=4)[8519430762]((?<=8)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0])|(?<=6)[31502467]((?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0])|(?<=9)[60482]((?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0])|(?<=8)[4207]((?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[241537860]((?<=2)[8923160475]((?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0])|(?<=4)[6254937810]((?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=8)[0]|(?<=1)[0]|(?<=0)[0])|(?<=1)[6192358470]((?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0]|(?<=7)[0]|(?<=0)[0])|(?<=5)[1985476320]((?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=0)[0])|(?<=3)[8456137920]((?<=8)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0])|(?<=7)[70895]((?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0])|(?<=8)[705234168]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0])|(?<=6)[52067]((?<=5)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=2)[271364580]((?<=2)[74356920]((?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0])|(?<=7)[203]((?<=2)[0]|(?<=0)[0]|(?<=3)[0])|(?<=1)[173490562]((?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0])|(?<=3)[0875932146]((?<=0)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[801269354]((?<=8)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0])|(?<=5)[05]((?<=0)[0]|(?<=5)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[3178469052]((?<=3)[7564982031]((?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=1)[2983107654]((?<=2)[4653017]|(?<=9)[0]|(?<=8)[50]|(?<=3)[803]|(?<=1)[34205]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[10])|(?<=7)[3265914780]((?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0])|(?<=8)[8324961057]((?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=4)[3921647850]((?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0])|(?<=6)[492107568]((?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0])|(?<=9)[1258937]((?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=5)[5490786132]((?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=2)[341592076]((?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]))|(?<=4)[3462719508]((?<=3)[6328150974]((?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=4)[0])|(?<=4)[8603941275]((?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0])|(?<=6)[051863792]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0])|(?<=2)[2619378045]((?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0])|(?<=7)[012396574]((?<=0)[0]|(?<=1)[0]|(?<=2)[50]|(?<=3)[0]|(?<=9)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0])|(?<=1)[67913245]((?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0])|(?<=9)[8297]((?<=8)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0])|(?<=5)[674301952]((?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0])|(?<=0)[8907]((?<=8)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0])|(?<=8)[503128]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=8)[0]))|(?<=5)[2134586709]((?<=2)[569327401]((?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[05]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0])|(?<=1)[35124967]((?<=3)[70345216]|(?<=5)[0]|(?<=1)[314]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0])|(?<=3)[4372689051]((?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0])|(?<=4)[1657342908]((?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=0)[0]|(?<=8)[0])|(?<=5)[089524631]((?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0])|(?<=8)[95073]((?<=9)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0])|(?<=6)[853610429]((?<=8)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0])|(?<=7)[27564830]((?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=9)[6]((?<=6)[0]))|(?<=6)[123486750]((?<=1)[2650317489]((?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0])|(?<=2)[173042569]((?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0])|(?<=3)[35701426]((?<=3)[0]|(?<=5)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=4)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[152364870]((?<=1)[612453970]((?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0])|(?<=5)[021345]((?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[614237509]((?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0])|(?<=3)[4137986520]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[620]((?<=6)[0]|(?<=2)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[1253679480]((?<=1)[5496012387]((?<=5)[0]|(?<=4)[024]|(?<=9)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[209483]|(?<=2)[120]|(?<=3)[480]|(?<=8)[0]|(?<=7)[0])|(?<=2)[7698103254]((?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0])|(?<=5)[2914735086]((?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0])|(?<=3)[025983674]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0])|(?<=6)[9743568210]((?<=9)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0])|(?<=7)[431960785]((?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=6)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0])|(?<=9)[8736524]((?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0])|(?<=4)[7264983510]((?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=0)[0])|(?<=8)[79064583]((?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0])|(?<=0)[8097]((?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]))|(?<=9)[632185740]((?<=6)[0]((?<=0)[0])|(?<=3)[20516873]((?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0])|(?<=2)[471536920]((?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0])|(?<=1)[253140679]((?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0])|(?<=8)[0]((?<=0)[0])|(?<=5)[720]((?<=7)[0]|(?<=2)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[016]((?<=0)[0]|(?<=1)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0])))|(?<=4)[0123456789]((?<=0)[3910562874]((?<=3)[382095167]((?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0])|(?<=9)[9]((?<=9)[0])|(?<=1)[1270985463]((?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=5)[01563]((?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0])|(?<=6)[036]((?<=0)[0]|(?<=3)[0]|(?<=6)[0])|(?<=2)[1478569302]((?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=0)[0]|(?<=2)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[0163284]((?<=0)[0]|(?<=1)[0]|(?<=6)[50]|(?<=3)[0]|(?<=2)[0]|(?<=8)[0]|(?<=4)[0]))|(?<=1)[231865470]((?<=2)[459721036]((?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[3601752]((?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0])|(?<=1)[721596340]((?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=4)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=2)[5164293780]((?<=5)[5697821043]((?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=3)[0])|(?<=1)[342510796]((?<=3)[01]|(?<=4)[0]|(?<=2)[032]|(?<=5)[0352]|(?<=1)[041]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0])|(?<=6)[026417835]((?<=0)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0])|(?<=4)[6137049258]((?<=6)[0]|(?<=1)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0])|(?<=2)[4621937]((?<=4)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0])|(?<=9)[492]((?<=4)[0]|(?<=9)[0]|(?<=2)[0])|(?<=3)[0687312495]((?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=5)[0])|(?<=7)[52048]((?<=5)[0]|(?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=8)[0])|(?<=8)[403291]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[374215806]((?<=3)[083476529]((?<=0)[0]|(?<=8)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0])|(?<=7)[057]((?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=4)[1354902]((?<=1)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=2)[0])|(?<=2)[639021754]((?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[267054931]((?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0])|(?<=5)[0918325]((?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0])|(?<=8)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0])|(?<=6)[20]((?<=2)[0]|(?<=0)[0]))|(?<=4)[1645832709]((?<=1)[461972530]((?<=4)[0]|(?<=6)[0]|(?<=1)[095876]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=6)[8714390256]((?<=8)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0])|(?<=4)[1647258309]((?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0])|(?<=5)[8239540617]((?<=8)[0]|(?<=2)[012]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=7)[0])|(?<=8)[3506841]((?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=1)[0])|(?<=3)[5127493608]((?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0])|(?<=2)[705629314]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0])|(?<=7)[815347260]((?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=9)[8]((?<=8)[0]))|(?<=5)[321546708]((?<=3)[091476823]((?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=8)[0]|(?<=2)[0]|(?<=3)[0])|(?<=2)[216907354]((?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[713590624]((?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=4)[0])|(?<=5)[70523619]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0])|(?<=4)[508912367]((?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0])|(?<=6)[204538]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0])|(?<=7)[0624357]((?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=6)[183742065]((?<=1)[204635197]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0])|(?<=8)[0]((?<=0)[0])|(?<=3)[3251460]((?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[0]((?<=0)[0])|(?<=2)[15637204]((?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0]))|(?<=7)[721453680]((?<=7)[0]((?<=0)[0])|(?<=2)[256917034]((?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0])|(?<=1)[247536819]((?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=9)[0])|(?<=4)[17203584]((?<=1)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=4)[0])|(?<=5)[0125]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=3)[6301527489]((?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[215367048]((?<=2)[03145627]((?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0])|(?<=1)[946025173]((?<=9)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0])|(?<=5)[0]((?<=0)[0])|(?<=3)[103427]((?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=9)[605123478]((?<=6)[5134267089]((?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0])|(?<=0)[078]((?<=0)[0]|(?<=7)[0]|(?<=8)[0])|(?<=5)[41362097]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0])|(?<=1)[576429130]((?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[03254]|(?<=9)[0]|(?<=1)[02]|(?<=3)[0]|(?<=0)[0])|(?<=2)[56728934]((?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0])|(?<=3)[2631580794]((?<=2)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0]|(?<=5)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[403925618]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0])|(?<=7)[073541]((?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])))|(?<=0)[123456789]((?<=1)[6351248079]((?<=6)[40386]((?<=4)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=6)[0])|(?<=3)[3048612579]((?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0])|(?<=5)[01567984]((?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=8)[0]|(?<=4)[0])|(?<=1)[195230674]((?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0])|(?<=2)[0653918427]((?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0]|(?<=9)[0]|(?<=1)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0])|(?<=4)[735216804]((?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=4)[0])|(?<=8)[05]((?<=0)[0]|(?<=5)[1])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=7)[051]((?<=0)[0]|(?<=5)[0]|(?<=1)[0])|(?<=9)[69]((?<=6)[0]|(?<=9)[0]))|(?<=2)[385421067]((?<=3)[0641538729]((?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=2)[0]|(?<=9)[0])|(?<=8)[061825743]((?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0])|(?<=5)[09824715]((?<=0)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0])|(?<=4)[8924015673]((?<=8)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0])|(?<=2)[972140563]((?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0])|(?<=1)[923016475]((?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=6)[807351429]((?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0])|(?<=7)[2069]((?<=2)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]))|(?<=3)[213074568]((?<=2)[051249763]((?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0])|(?<=1)[495327160]((?<=4)[0]|(?<=9)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0])|(?<=3)[0718364925]((?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=4)[71523640]((?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=0)[0])|(?<=5)[01]((?<=0)[0]|(?<=1)[0])|(?<=6)[03]((?<=0)[0]|(?<=3)[0])|(?<=8)[0]((?<=0)[0]))|(?<=4)[524137086]((?<=5)[031]((?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[6785034192]((?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0])|(?<=4)[201]((?<=2)[0]|(?<=0)[0]|(?<=1)[0])|(?<=1)[5267149803]((?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[372408615]((?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[5670]((?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=6)[06]((?<=0)[0]|(?<=6)[0]))|(?<=5)[162735408]((?<=1)[194075362]((?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=6)[0]((?<=0)[0])|(?<=2)[6309254]((?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0])|(?<=7)[0]((?<=0)[0])|(?<=3)[5041382]((?<=5)[0]|(?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[0])|(?<=5)[06]((?<=0)[0]|(?<=6)[0])|(?<=4)[0867]((?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=6)[1463827950]((?<=1)[6340519]((?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0])|(?<=4)[207645381]((?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=1)[0])|(?<=6)[27604591]((?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0])|(?<=3)[194832670]((?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0])|(?<=8)[0531]((?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0])|(?<=2)[16270543]((?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0])|(?<=7)[105943]((?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=9)[15]((?<=1)[0]|(?<=5)[0])|(?<=5)[6108345972]((?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=8)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[136250748]((?<=1)[904516237]((?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=7)[0])|(?<=3)[412078365]((?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[01936]((?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0])|(?<=2)[930764215]((?<=9)[0]|(?<=3)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=5)[87319206]((?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=0)[0]|(?<=6)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[09]((?<=0)[0]|(?<=9)[0])|(?<=4)[7106453]((?<=7)[0]|(?<=1)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0])|(?<=8)[0]((?<=0)[0]))|(?<=8)[432165087]((?<=4)[503641]((?<=5)[0]|(?<=0)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0])|(?<=3)[180957623]((?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0])|(?<=2)[149256703]((?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0])|(?<=1)[92165347]((?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0]))|(?<=9)[632841507]((?<=6)[0]((?<=0)[0])|(?<=3)[1205493]((?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0])|(?<=2)[45302971]((?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[026]((?<=0)[0]|(?<=2)[0]|(?<=6)[0])|(?<=1)[0623419]((?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])))|(?<=1)[0123456789]((?<=0)[231648570]((?<=2)[0249167835]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=8)[0]|(?<=3)[0]|(?<=5)[0])|(?<=3)[4382715960]((?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=0)[0])|(?<=1)[3791052468]((?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0])|(?<=6)[0]((?<=0)[0])|(?<=4)[012435]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=5)[01]((?<=0)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=1)[351270486]((?<=3)[6490375182]((?<=6)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0])|(?<=5)[8160497]((?<=8)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0])|(?<=1)[724906153]((?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=2)[073425916]((?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[3012984]((?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=8)[0]|(?<=4)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[012]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]))|(?<=2)[521340786]((?<=5)[2546081]((?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=1)[0])|(?<=2)[230694157]((?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0])|(?<=1)[164325709]((?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=0)[0]|(?<=9)[0])|(?<=3)[5209638147]((?<=5)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0]|(?<=7)[0])|(?<=4)[8062574319]((?<=8)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0482]((?<=0)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0])|(?<=8)[50]((?<=5)[0]|(?<=0)[0])|(?<=6)[4203]((?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]))|(?<=3)[1375248609]((?<=1)[9268103547]((?<=9)[0]|(?<=2)[10796243]|(?<=6)[0]|(?<=8)[0]|(?<=1)[7596430812]|(?<=0)[35904]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0])|(?<=3)[9236105784]((?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0])|(?<=7)[2498107563]((?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0])|(?<=5)[1803927645]((?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[7586321490]((?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0])|(?<=4)[2183607459]((?<=2)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0])|(?<=8)[5942317806]((?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=2)[10]|(?<=3)[0]|(?<=1)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0]|(?<=6)[0])|(?<=6)[4203198567]((?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[0189]((?<=0)[689124537]|(?<=1)[3615024]|(?<=8)[0]|(?<=9)[0])|(?<=9)[54891326]((?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]))|(?<=4)[1526493780]((?<=1)[916304752]((?<=9)[0]|(?<=1)[230741]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[130])|(?<=5)[43970152]((?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0])|(?<=2)[4569217380]((?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0])|(?<=6)[120758943]((?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=4)[3980471625]((?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=9)[537924618]((?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0])|(?<=3)[534718296]((?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0])|(?<=7)[107549368]((?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0])|(?<=8)[4860513]((?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[702831456]((?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=2)[537246901]((?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])|(?<=3)[082154]((?<=0)[0]|(?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0])|(?<=1)[941235076]((?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0])|(?<=4)[03]((?<=0)[0]|(?<=3)[0])|(?<=5)[90]((?<=9)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0]))|(?<=6)[154327608]((?<=1)[432157906]((?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0])|(?<=5)[06197]((?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0])|(?<=4)[6129703845]((?<=6)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=4)[0]|(?<=5)[0])|(?<=3)[0258349671]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=8)[0]|(?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=6)[0]|(?<=7)[0]|(?<=1)[0])|(?<=2)[154670239]((?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0]|(?<=0)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0])|(?<=7)[0123]((?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0])|(?<=6)[20]((?<=2)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=7)[5784231609]((?<=5)[2057914683]((?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=3)[0])|(?<=7)[703854]((?<=7)[0]|(?<=0)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0])|(?<=8)[017894]((?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[4387901625]((?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0])|(?<=2)[971346025]((?<=9)[0]|(?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0])|(?<=3)[3824651790]((?<=3)[0]|(?<=8)[0]|(?<=2)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0])|(?<=1)[5603741928]((?<=5)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[07892]|(?<=7)[0]|(?<=4)[0]|(?<=1)[310]|(?<=9)[0]|(?<=2)[30]|(?<=8)[0])|(?<=6)[10275934]((?<=1)[0]|(?<=0)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0])|(?<=9)[24]((?<=2)[0]|(?<=4)[0]))|(?<=8)[231546780]((?<=2)[261497503]((?<=2)[0]|(?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[4582097613]((?<=4)[0]|(?<=5)[0]|(?<=8)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=3)[0])|(?<=1)[435672109]((?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0])|(?<=5)[2701]((?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0])|(?<=4)[10]((?<=1)[0]|(?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[321546870]((?<=3)[8152436907]((?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=7)[0])|(?<=2)[529017364]((?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=4)[0])|(?<=1)[921045673]((?<=9)[0]|(?<=2)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0])|(?<=5)[02516]((?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=1)[0]|(?<=6)[0])|(?<=4)[3107965]((?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0]|(?<=5)[0])|(?<=6)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])))|(?<=7)[0123456789]((?<=0)[321045678]((?<=3)[0612]((?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=2)[0])|(?<=2)[807134592]((?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0])|(?<=1)[1049268735]((?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0])|(?<=0)[0]((?<=0)[0])|(?<=4)[04]((?<=0)[0]|(?<=4)[0])|(?<=5)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=1)[3451269708]((?<=3)[7321409658]((?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0]|(?<=5)[0]|(?<=8)[0])|(?<=4)[6843720915]((?<=6)[0]|(?<=8)[0]|(?<=4)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0])|(?<=5)[483721950]((?<=4)[0]|(?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=0)[0])|(?<=1)[237619045]((?<=2)[0]|(?<=3)[0]|(?<=7)[0]|(?<=6)[0]|(?<=1)[08]|(?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[256794130]((?<=2)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=0)[0])|(?<=6)[27840]((?<=2)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=0)[0])|(?<=9)[69]((?<=6)[0]|(?<=9)[0])|(?<=7)[6104]((?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0758]((?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0]))|(?<=2)[684531270]((?<=6)[015]((?<=0)[0]|(?<=1)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[035467]((?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=7)[0])|(?<=5)[054163]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0])|(?<=3)[2049518367]((?<=2)[0]|(?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0])|(?<=1)[167354209]((?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0])|(?<=2)[142736905]((?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=9)[0]|(?<=0)[0]|(?<=5)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[623450187]((?<=6)[1306472]((?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0])|(?<=2)[610452739]((?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0])|(?<=3)[407915362]((?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=4)[176480295]((?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[0429357]((?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0])|(?<=1)[970136542]((?<=9)[0]|(?<=7)[0]|(?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0])|(?<=8)[07]((?<=0)[0]|(?<=7)[0])|(?<=7)[20931]((?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0]))|(?<=4)[5231849670]((?<=5)[4062758]((?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0])|(?<=2)[901567342]((?<=9)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=2)[0])|(?<=3)[5068127394]((?<=5)[0]|(?<=0)[0]|(?<=6)[0]|(?<=8)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0]|(?<=4)[0])|(?<=1)[063451297]((?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=7)[0])|(?<=8)[09]((?<=0)[0]|(?<=9)[0])|(?<=4)[302741956]((?<=3)[0]|(?<=0)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=5)[0]|(?<=6)[0])|(?<=9)[1763542]((?<=1)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=2)[0])|(?<=6)[506]((?<=5)[0]|(?<=0)[0]|(?<=6)[0])|(?<=7)[04]((?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[01]((?<=0)[012]((?<=0)[325814679]|(?<=1)[2516470389]|(?<=2)[0])|(?<=1)[1]((?<=1)[6]))|(?<=6)[5781462390]((?<=5)[6937514208]((?<=6)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=0)[0]|(?<=8)[0])|(?<=7)[6425389107]((?<=6)[0]|(?<=4)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0])|(?<=8)[95146807]((?<=9)[0]|(?<=5)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0])|(?<=1)[169734520]((?<=1)[067913]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[30]|(?<=4)[0]|(?<=5)[0]|(?<=2)[0]|(?<=0)[0])|(?<=4)[9465083127]((?<=9)[0]|(?<=4)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0])|(?<=6)[893460125]((?<=8)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0])|(?<=2)[8372691405]((?<=8)[0]|(?<=3)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0])|(?<=3)[2934687501]((?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=1)[0])|(?<=9)[75431628]((?<=7)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=2)[0]|(?<=8)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[1793458260]((?<=1)[2765834910]((?<=2)[047236]|(?<=7)[1306847]|(?<=6)[0365974]|(?<=5)[4701]|(?<=8)[34561]|(?<=3)[9801354]|(?<=4)[40851]|(?<=9)[0]|(?<=1)[5841]|(?<=0)[0])|(?<=7)[6523018]((?<=6)[0]|(?<=5)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=8)[0])|(?<=9)[1427359]((?<=1)[0]|(?<=4)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=9)[0])|(?<=3)[9287534160]((?<=9)[0]|(?<=2)[0]|(?<=8)[0]|(?<=7)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0]|(?<=1)[0]|(?<=6)[0]|(?<=0)[0])|(?<=4)[786314052]((?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0])|(?<=5)[956214870]((?<=9)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[05]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=0)[0])|(?<=8)[392654817]((?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=1)[0]|(?<=7)[0])|(?<=2)[2398610745]((?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0])|(?<=6)[5183094267]((?<=5)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0])|(?<=0)[09]((?<=0)[0]|(?<=9)[0]))|(?<=8)[6592871430]((?<=6)[6590432718]((?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0])|(?<=5)[8257319460]((?<=8)[0]|(?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=9)[138957426]((?<=1)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=5)[05]|(?<=7)[0]|(?<=4)[0]|(?<=2)[0]|(?<=6)[0])|(?<=2)[7053264891]((?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0])|(?<=8)[349271650]((?<=3)[0]|(?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=5)[0]|(?<=0)[0])|(?<=7)[2931764508]((?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[01]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0])|(?<=1)[5321760894]((?<=5)[0]|(?<=3)[0]|(?<=2)[50614]|(?<=1)[073421]|(?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=8)[0]|(?<=9)[0]|(?<=4)[0])|(?<=4)[6947512803]((?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=7)[0]|(?<=5)[0]|(?<=1)[0]|(?<=2)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0])|(?<=3)[1269853704]((?<=1)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[612843507]((?<=6)[0]((?<=0)[0])|(?<=1)[3579610248]((?<=3)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=8)[0])|(?<=2)[912053746]((?<=9)[0]|(?<=1)[0]|(?<=2)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[2015436]((?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0])|(?<=3)[0654827931]((?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=9)[0]|(?<=3)[0]|(?<=1)[0])|(?<=5)[10]((?<=1)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0])))|(?<=8)[0123456789]((?<=0)[1320758649]((?<=1)[013576924]((?<=0)[0]|(?<=1)[058]|(?<=3)[204651]|(?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0]|(?<=2)[02]|(?<=4)[0])|(?<=3)[071462935]((?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=5)[0])|(?<=2)[706954132]((?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0])|(?<=0)[098]((?<=0)[0]|(?<=9)[0]|(?<=8)[0])|(?<=7)[054871]((?<=0)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=1)[0])|(?<=5)[60784215]((?<=6)[0]|(?<=0)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=8)[05627398]((?<=0)[0]|(?<=5)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0]|(?<=9)[0]|(?<=8)[0])|(?<=6)[024879153]((?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=8)[0]|(?<=7)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0])|(?<=4)[8705192346]((?<=8)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=4)[0]|(?<=6)[0])|(?<=9)[7618]((?<=7)[0]|(?<=6)[0]|(?<=1)[0]|(?<=8)[0]))|(?<=1)[1354269870]((?<=1)[473529106]((?<=4)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=6)[0])|(?<=3)[6430175829]((?<=6)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0]|(?<=8)[0]|(?<=2)[0]|(?<=9)[0])|(?<=5)[08743]((?<=0)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0])|(?<=4)[304795]((?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=7)[0]|(?<=9)[0]|(?<=5)[0])|(?<=2)[601254937]((?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=7)[0])|(?<=6)[0436]((?<=0)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0])|(?<=9)[9]((?<=9)[0])|(?<=8)[0]((?<=0)[0])|(?<=7)[01]((?<=0)[0]|(?<=1)[0])|(?<=0)[90]((?<=9)[0]|(?<=0)[0]))|(?<=2)[218453760]((?<=2)[91430527]((?<=9)[0]|(?<=1)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0]|(?<=7)[0])|(?<=1)[297603541]((?<=2)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=4)[0]|(?<=1)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[041]((?<=0)[0]|(?<=4)[0]|(?<=1)[0])|(?<=5)[0]((?<=0)[0])|(?<=3)[7409365]((?<=7)[0]|(?<=4)[0]|(?<=0)[0]|(?<=9)[0]|(?<=3)[0]|(?<=6)[0]|(?<=5)[0])|(?<=7)[01]((?<=0)[0]|(?<=1)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=3)[6813459270]((?<=6)[01743689]((?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0])|(?<=8)[439267]((?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=7)[0])|(?<=1)[732105946]((?<=7)[0]|(?<=3)[610]|(?<=2)[0]|(?<=1)[190]|(?<=0)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[039]|(?<=6)[0])|(?<=3)[423915087]((?<=4)[0]|(?<=2)[0]|(?<=3)[0]|(?<=9)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=7)[0])|(?<=4)[40732689]((?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=3)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=9)[0])|(?<=5)[763109582]((?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=5)[0]|(?<=8)[0]|(?<=2)[0])|(?<=9)[8219]((?<=8)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0])|(?<=2)[03521674]((?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=4)[0])|(?<=7)[04982]((?<=0)[0]|(?<=4)[0]|(?<=9)[0]|(?<=8)[0]|(?<=2)[0])|(?<=0)[0]((?<=0)[0]))|(?<=4)[432168570]((?<=4)[0187463529]((?<=0)[0]|(?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=2)[0]|(?<=9)[0])|(?<=3)[4928630175]((?<=4)[0]|(?<=9)[0]|(?<=2)[0]|(?<=8)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0])|(?<=2)[429105367]((?<=4)[0]|(?<=2)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0])|(?<=1)[196270534]((?<=1)[0]|(?<=9)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=4)[0])|(?<=6)[06]((?<=0)[0]|(?<=6)[0])|(?<=8)[40517362]((?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=6)[0]|(?<=2)[0])|(?<=5)[8716305]((?<=8)[0]|(?<=7)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0]|(?<=0)[0]|(?<=5)[0])|(?<=7)[5460]((?<=5)[0]|(?<=4)[0]|(?<=6)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[416532780]((?<=4)[3815024769]((?<=3)[0]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=0)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0]|(?<=6)[0]|(?<=9)[0])|(?<=1)[7456913082]((?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=9)[0]|(?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=2)[0])|(?<=6)[027849163]((?<=0)[0]|(?<=2)[0]|(?<=7)[0]|(?<=8)[0]|(?<=4)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=3)[0])|(?<=5)[1972304568]((?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=2)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=8)[0])|(?<=3)[215749063]((?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=9)[0]|(?<=0)[0]|(?<=6)[0]|(?<=3)[0])|(?<=2)[2485610379]((?<=2)[0]|(?<=4)[0]|(?<=8)[0]|(?<=5)[0]|(?<=6)[0]|(?<=1)[0]|(?<=0)[0]|(?<=3)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[07145]((?<=0)[0]|(?<=7)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=6)[431265780]((?<=4)[3957201648]((?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=6)[0]|(?<=4)[0]|(?<=8)[0])|(?<=3)[1308524976]((?<=1)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=9)[0]|(?<=7)[0]|(?<=6)[0])|(?<=1)[0926873145]((?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=6)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=1)[0]|(?<=4)[0]|(?<=5)[0])|(?<=2)[0531296478]((?<=0)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0])|(?<=6)[0]((?<=0)[0])|(?<=5)[350814]((?<=3)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=1)[0]|(?<=4)[0])|(?<=7)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=7)[1234986750]((?<=1)[675243910]((?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=9)[0]|(?<=1)[0]|(?<=0)[0])|(?<=2)[2173850964]((?<=2)[0]|(?<=1)[0]|(?<=7)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0])|(?<=3)[624380175]((?<=6)[0]|(?<=2)[0]|(?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=1)[0]|(?<=7)[0]|(?<=5)[0])|(?<=4)[60418273]((?<=6)[0]|(?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=3)[0])|(?<=9)[2]((?<=2)[0])|(?<=8)[09]((?<=0)[0]|(?<=9)[0])|(?<=6)[024]((?<=0)[0]|(?<=2)[0]|(?<=4)[0])|(?<=7)[02]((?<=0)[0]|(?<=2)[0])|(?<=5)[10927]((?<=1)[0]|(?<=0)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0])|(?<=0)[0]((?<=0)[0]))|(?<=8)[763218450]((?<=7)[0]((?<=0)[0])|(?<=6)[5304]((?<=5)[0]|(?<=3)[0]|(?<=0)[0]|(?<=4)[0])|(?<=3)[0132954867]((?<=0)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=9)[0]|(?<=5)[0]|(?<=4)[0]|(?<=8)[0]|(?<=6)[0]|(?<=7)[0])|(?<=2)[674301259]((?<=6)[0]|(?<=7)[0]|(?<=4)[0]|(?<=3)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=5)[0]|(?<=9)[0])|(?<=1)[371245096]((?<=3)[0]|(?<=7)[0]|(?<=1)[0]|(?<=2)[0]|(?<=4)[0]|(?<=5)[0]|(?<=0)[0]|(?<=9)[0]|(?<=6)[0])|(?<=8)[0]((?<=0)[0])|(?<=4)[3659412708]((?<=3)[0]|(?<=6)[0]|(?<=5)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0])|(?<=5)[02156384]((?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=4)[0])|(?<=0)[0]((?<=0)[0]))|(?<=9)[871426035]((?<=8)[0]((?<=0)[0])|(?<=7)[1704]((?<=1)[0]|(?<=7)[0]|(?<=0)[0]|(?<=4)[0])|(?<=1)[612934057]((?<=6)[0]|(?<=1)[360]|(?<=2)[0]|(?<=9)[0]|(?<=3)[0]|(?<=4)[40]|(?<=0)[0]|(?<=5)[0]|(?<=7)[0])|(?<=4)[840253167]((?<=8)[0]|(?<=4)[0]|(?<=0)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0])|(?<=2)[075964123]((?<=0)[0]|(?<=7)[0]|(?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0]|(?<=2)[0]|(?<=3)[0])|(?<=6)[6039]((?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0])|(?<=0)[0]((?<=0)[0])|(?<=3)[620194358]((?<=6)[0]|(?<=2)[0]|(?<=0)[0]|(?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0])|(?<=5)[68270513]((?<=6)[0]|(?<=8)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0])))|(?<=9)[01234578]((?<=0)[401263857]((?<=4)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=1)[01537642]((?<=0)[0]|(?<=1)[0]|(?<=5)[0]|(?<=3)[0]|(?<=7)[0]|(?<=6)[0]|(?<=4)[0]|(?<=2)[0])|(?<=2)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0])|(?<=3)[4603587]((?<=4)[0]|(?<=6)[0]|(?<=0)[0]|(?<=3)[0]|(?<=5)[0]|(?<=8)[0]|(?<=7)[0])|(?<=8)[05]((?<=0)[0]|(?<=5)[0])|(?<=5)[0]((?<=0)[0])|(?<=7)[0]((?<=0)[0]))|(?<=1)[4568172039]((?<=4)[1943672508]((?<=1)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0])|(?<=5)[874532196]((?<=8)[0]|(?<=7)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0]|(?<=2)[0]|(?<=1)[0]|(?<=9)[0]|(?<=6)[0])|(?<=6)[3459270861]((?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0]|(?<=1)[0])|(?<=8)[0815726943]((?<=0)[0]|(?<=8)[0]|(?<=1)[0]|(?<=5)[0]|(?<=7)[0]|(?<=2)[0]|(?<=6)[0]|(?<=9)[0]|(?<=4)[0]|(?<=3)[0])|(?<=1)[596803247]((?<=5)[0]|(?<=9)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=7)[0])|(?<=7)[2578039641]((?<=2)[0]|(?<=5)[0]|(?<=7)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0]|(?<=6)[0]|(?<=4)[0]|(?<=1)[0])|(?<=2)[1870639524]((?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=0)[0]|(?<=6)[0]|(?<=3)[0]|(?<=9)[0]|(?<=5)[0]|(?<=2)[0]|(?<=4)[0])|(?<=0)[8970]((?<=8)[0]|(?<=9)[0]|(?<=7)[0]|(?<=0)[0])|(?<=3)[1923807654]((?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=3)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=5)[0]|(?<=4)[0])|(?<=9)[413]((?<=4)[0]|(?<=1)[0]|(?<=3)[0]))|(?<=2)[213475086]((?<=2)[792406513]((?<=7)[0]|(?<=9)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0])|(?<=1)[041927635]((?<=0)[0]|(?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=2)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=5)[0])|(?<=3)[5762148039]((?<=5)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=0)[0]|(?<=3)[0]|(?<=9)[0])|(?<=4)[2031]((?<=2)[0]|(?<=0)[0]|(?<=3)[0]|(?<=1)[0])|(?<=7)[0]((?<=0)[0])|(?<=5)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0])|(?<=6)[0]((?<=0)[0]))|(?<=3)[631452708]((?<=6)[0]((?<=0)[0])|(?<=3)[9763854012]((?<=9)[0]|(?<=7)[0]|(?<=6)[0]|(?<=3)[0]|(?<=8)[0]|(?<=5)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0])|(?<=1)[240697351]((?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=6)[0]|(?<=9)[0]|(?<=7)[0]|(?<=3)[0]|(?<=5)[0]|(?<=1)[0])|(?<=4)[52637401]((?<=5)[0]|(?<=2)[0]|(?<=6)[0]|(?<=3)[0]|(?<=7)[0]|(?<=4)[0]|(?<=0)[0]|(?<=1)[0])|(?<=5)[0]((?<=0)[0])|(?<=2)[345601279]((?<=3)[0]|(?<=4)[0]|(?<=5)[0]|(?<=6)[0]|(?<=0)[0]|(?<=1)[0]|(?<=2)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=8)[0]((?<=0)[0]))|(?<=4)[527148360]((?<=5)[0215]((?<=0)[0]|(?<=2)[0]|(?<=1)[0]|(?<=5)[0])|(?<=2)[651324079]((?<=6)[0]|(?<=5)[0]|(?<=1)[0]|(?<=3)[0]|(?<=2)[0]|(?<=4)[0]|(?<=0)[0]|(?<=7)[0]|(?<=9)[0])|(?<=7)[0]((?<=0)[0])|(?<=1)[356720941]((?<=3)[0]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0]|(?<=2)[0]|(?<=0)[0]|(?<=9)[0]|(?<=4)[0]|(?<=1)[0])|(?<=4)[4389167502]((?<=4)[0]|(?<=3)[0]|(?<=8)[0]|(?<=9)[0]|(?<=1)[0]|(?<=6)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=2)[0])|(?<=8)[08]((?<=0)[0]|(?<=8)[0])|(?<=3)[064712985]((?<=0)[0]|(?<=6)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=2)[0]|(?<=9)[0]|(?<=8)[0]|(?<=5)[0])|(?<=6)[0]((?<=0)[0])|(?<=0)[0]((?<=0)[0]))|(?<=5)[584276031]((?<=5)[1807629453]((?<=1)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=6)[0]|(?<=2)[0]|(?<=9)[0]|(?<=4)[0]|(?<=5)[0]|(?<=3)[0])|(?<=8)[18734052]((?<=1)[0]|(?<=8)[0]|(?<=7)[0]|(?<=3)[0]|(?<=4)[0]|(?<=0)[0]|(?<=5)[0]|(?<=2)[0])|(?<=4)[3275061489]((?<=3)[0]|(?<=2)[0]|(?<=7)[0]|(?<=5)[0]|(?<=0)[0]|(?<=6)[0]|(?<=1)[0]|(?<=4)[0]|(?<=8)[0]|(?<=9)[0])|(?<=2)[5471830296]((?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=1)[0]|(?<=8)[0]|(?<=3)[0]|(?<=0)[0]|(?<=2)[0]|(?<=9)[0]|(?<=6)[0])|(?<=7)[14725086]((?<=1)[0]|(?<=4)[0]|(?<=7)[0]|(?<=2)[0]|(?<=5)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0])|(?<=6)[4197862530]((?<=4)[0]|(?<=1)[0]|(?<=9)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0]|(?<=2)[0]|(?<=5)[0]|(?<=3)[0]|(?<=0)[0])|(?<=0)[0]((?<=0)[0])|(?<=3)[7521493086]((?<=7)[0]|(?<=5)[0]|(?<=2)[0]|(?<=1)[0]|(?<=4)[0]|(?<=9)[0]|(?<=3)[0]|(?<=0)[0]|(?<=8)[0]|(?<=6)[0])|(?<=1)[6357904281]((?<=6)[0]|(?<=3)[0]|(?<=5)[0]|(?<=7)[0]|(?<=9)[0]|(?<=0)[0]|(?<=4)[0]|(?<=2)[0]|(?<=8)[0]|(?<=1)[0]))|(?<=7)[123456]((?<=1)[4321968075]((?<=4)[201]|(?<=3)[0473916]|(?<=2)[891250736]|(?<=1)[6492108735]|(?<=9)[0]|(?<=6)[0]|(?<=8)[0]|(?<=0)[0]|(?<=7)[0]|(?<=5)[0])|(?<=2)[1209354786]((?<=1)[73528641]|(?<=2)[4258317960]|(?<=0)[0]|(?<=9)[0]|(?<=3)[10342]|(?<=5)[0]|(?<=4)[0]|(?<=7)[0]|(?<=8)[0]|(?<=6)[0])|(?<=3)[9150627483]((?<=9)[0]|(?<=1)[8342760195]|(?<=5)[2310546]|(?<=0)[0]|(?<=6)[0]|(?<=2)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0]|(?<=3)[0])|(?<=4)[2140836795]((?<=2)[503697412]|(?<=1)[910873426]|(?<=4)[021]|(?<=0)[0]|(?<=8)[0]|(?<=3)[6245870931]|(?<=6)[0]|(?<=7)[0]|(?<=9)[0]|(?<=5)[0])|(?<=5)[0]((?<=0)[0])|(?<=6)[572136084]((?<=5)[0]|(?<=7)[0]|(?<=2)[05]|(?<=1)[5]|(?<=3)[0]|(?<=6)[0]|(?<=0)[05]|(?<=8)[0]|(?<=4)[0]))|(?<=8)[7860]((?<=7)[8063945127]((?<=8)[6142578093]|(?<=0)[14973568]|(?<=6)[1209567348]|(?<=3)[012345]|(?<=9)[0236945]|(?<=4)[0135649278]|(?<=5)[502341]|(?<=1)[0294681]|(?<=2)[8904153627]|(?<=7)[3512964708])|(?<=8)[3521704869]((?<=3)[0346217958]|(?<=5)[90]|(?<=2)[0382945617]|(?<=1)[9372501648]|(?<=7)[468057]|(?<=0)[09]|(?<=4)[0]|(?<=8)[9105234]|(?<=6)[0]|(?<=9)[0])|(?<=6)[021]((?<=0)[0]|(?<=2)[0]|(?<=1)[0])|(?<=0)[0]((?<=0)[0])))))$"), + IS: new RegExp("^([123456789]((?<=1)[0123679]((?<=0)[12345789]|(?<=1)[01236]|(?<=2)[1345789]|(?<=3)[02]|(?<=6)[12]|(?<=7)[02]|(?<=9)[01])|(?<=2)[01234567]((?<=0)[01236]|(?<=1)[02]|(?<=2)[0125]|(?<=3)[0235]|(?<=4)[0156]|(?<=5)[01]|(?<=6)[02]|(?<=7)[016])|(?<=3)[01245678]((?<=0)[012]|(?<=1)[01]|(?<=2)[0]|(?<=4)[0125]|(?<=5)[0156]|(?<=6)[0]|(?<=7)[01]|(?<=8)[01])|(?<=4)[0123567]((?<=0)[01]|(?<=1)[056]|(?<=2)[0156]|(?<=3)[01]|(?<=5)[01]|(?<=6)[0156]|(?<=7)[01])|(?<=5)[012345678]((?<=0)[0]|(?<=1)[012]|(?<=2)[04]|(?<=3)[01]|(?<=4)[0156]|(?<=5)[01]|(?<=6)[0156]|(?<=7)[0]|(?<=8)[01])|(?<=6)[0123456789]((?<=0)[01234567]|(?<=1)[016]|(?<=2)[0156]|(?<=3)[0]|(?<=4)[015]|(?<=5)[0]|(?<=6)[0]|(?<=7)[0156]|(?<=8)[0156]|(?<=9)[01])|(?<=7)[01234568]((?<=0)[01]|(?<=1)[015]|(?<=2)[01]|(?<=3)[0156]|(?<=4)[01]|(?<=5)[0156]|(?<=6)[0156]|(?<=8)[015])|(?<=8)[01245678]((?<=0)[0123456]|(?<=1)[056]|(?<=2)[05]|(?<=4)[056]|(?<=5)[01]|(?<=6)[01]|(?<=7)[01]|(?<=8)[01])|(?<=9)[0]((?<=0)[02])))$"), + LU: new RegExp("^([978643521]((?<=9)[7856193042]((?<=7)[56481307]((?<=5)[579324186]|(?<=6)[4389527610]|(?<=4)[528709643]|(?<=8)[0]|(?<=1)[103452]|(?<=3)[78]|(?<=0)[9876]|(?<=7)[59321406])|(?<=8)[3401]((?<=3)[710839546]|(?<=4)[10]|(?<=0)[79586]|(?<=1)[0])|(?<=5)[5471362]((?<=5)[4805926137]|(?<=4)[132504]|(?<=7)[7341286905]|(?<=1)[2689014753]|(?<=3)[7801596342]|(?<=6)[05]|(?<=2)[1320])|(?<=6)[4793865]((?<=4)[7381504]|(?<=7)[6482301]|(?<=9)[60]|(?<=3)[39187256]|(?<=8)[79241]|(?<=6)[0523896]|(?<=5)[41365079])|(?<=1)[825493761]((?<=8)[986504312]|(?<=2)[7524893601]|(?<=5)[41087356]|(?<=4)[02657849]|(?<=9)[10]|(?<=3)[70254136]|(?<=7)[926075318]|(?<=6)[107439586]|(?<=1)[76859])|(?<=9)[18549706]((?<=1)[0123]|(?<=8)[02]|(?<=5)[4620]|(?<=4)[840326]|(?<=9)[301294]|(?<=7)[0246]|(?<=0)[9758623]|(?<=6)[48026])|(?<=3)[579684]((?<=5)[931502746]|(?<=7)[3186570294]|(?<=9)[0125]|(?<=6)[6058419]|(?<=8)[120]|(?<=4)[0])|(?<=0)[821493576]((?<=8)[8904312576]|(?<=2)[3560472198]|(?<=1)[9871320645]|(?<=4)[570483612]|(?<=9)[90241]|(?<=3)[3102]|(?<=5)[34201756]|(?<=7)[1902]|(?<=6)[540689231])|(?<=4)[150624]((?<=1)[562749108]|(?<=5)[261473589]|(?<=0)[58967]|(?<=6)[543612]|(?<=2)[2054316]|(?<=4)[0])|(?<=2)[0931427568]((?<=0)[59867]|(?<=9)[41230]|(?<=3)[3714260985]|(?<=1)[671382054]|(?<=4)[405321]|(?<=2)[7049165]|(?<=7)[738956]|(?<=5)[1703524968]|(?<=6)[143270568]|(?<=8)[563894270]))|(?<=7)[246357]((?<=2)[43521670]((?<=4)[6015479382]|(?<=3)[1283074596]|(?<=5)[0798563412]|(?<=2)[7032461598]|(?<=1)[7306891425]|(?<=6)[805613429]|(?<=7)[04]|(?<=0)[9])|(?<=4)[817642350]((?<=8)[012]|(?<=1)[768905124]|(?<=7)[3501]|(?<=6)[23054]|(?<=4)[1865370942]|(?<=2)[30514]|(?<=3)[32015]|(?<=5)[250178346]|(?<=0)[9])|(?<=6)[47568213]((?<=4)[019]|(?<=7)[03]|(?<=5)[3102]|(?<=6)[20314]|(?<=8)[01]|(?<=2)[51624037]|(?<=1)[539082]|(?<=3)[46593])|(?<=3)[2934786510]((?<=2)[9057423186]|(?<=9)[751206]|(?<=3)[3405769821]|(?<=4)[7608913452]|(?<=7)[0529374186]|(?<=8)[34012]|(?<=6)[31402]|(?<=5)[3086195427]|(?<=1)[3819562740]|(?<=0)[47539286])|(?<=5)[92541673]((?<=9)[3674058219]|(?<=2)[60751243]|(?<=5)[8456937]|(?<=4)[06375124]|(?<=1)[791683542]|(?<=6)[5027986341]|(?<=7)[0213]|(?<=3)[971235486])|(?<=7)[498763152]((?<=4)[01]|(?<=9)[6531402]|(?<=8)[4806529317]|(?<=7)[34827190]|(?<=6)[8940617523]|(?<=3)[802319574]|(?<=1)[362154]|(?<=5)[98]|(?<=2)[3740612]))|(?<=8)[723845610]((?<=7)[012]((?<=0)[7685]|(?<=1)[501]|(?<=2)[0])|(?<=2)[8729136540]((?<=8)[7693521408]|(?<=7)[98407123]|(?<=2)[0528791463]|(?<=9)[768513402]|(?<=1)[0132869457]|(?<=3)[7265019348]|(?<=6)[4563180972]|(?<=5)[82905431]|(?<=4)[1926054783]|(?<=0)[9])|(?<=3)[9487561320]((?<=9)[015396248]|(?<=4)[086241375]|(?<=8)[786914530]|(?<=7)[362941508]|(?<=5)[0523468179]|(?<=6)[9852106743]|(?<=1)[1704596238]|(?<=3)[0389214675]|(?<=2)[3817205964]|(?<=0)[89])|(?<=8)[3021]((?<=3)[835421]|(?<=0)[9586]|(?<=2)[6104532]|(?<=1)[49163872])|(?<=4)[67314285]((?<=6)[5193672048]|(?<=7)[9267403851]|(?<=3)[7695]|(?<=1)[0635412]|(?<=4)[053178294]|(?<=2)[540132]|(?<=8)[0]|(?<=5)[0321])|(?<=5)[6534012]((?<=6)[102]|(?<=5)[27180]|(?<=3)[017389]|(?<=4)[0346251]|(?<=0)[8679]|(?<=1)[021]|(?<=2)[87623159])|(?<=6)[012]((?<=0)[69]|(?<=1)[143520]|(?<=2)[0])|(?<=1)[59381264]((?<=5)[801364792]|(?<=9)[9018]|(?<=3)[249531780]|(?<=8)[6192573804]|(?<=1)[98701256]|(?<=2)[381745096]|(?<=6)[51067]|(?<=4)[02913675])|(?<=0)[6832741059]((?<=6)[274693185]|(?<=8)[4125097638]|(?<=3)[0851394627]|(?<=2)[0718635249]|(?<=7)[472196085]|(?<=4)[9310248765]|(?<=1)[9180435726]|(?<=0)[89]|(?<=5)[5324869170]|(?<=9)[3780291456]))|(?<=6)[126897435]((?<=1)[718349526]((?<=7)[051]|(?<=1)[643781259]|(?<=8)[1032576498]|(?<=3)[6980743125]|(?<=4)[2581360794]|(?<=9)[7605]|(?<=5)[50]|(?<=2)[9250143]|(?<=6)[5621039])|(?<=2)[45231]((?<=4)[0635]|(?<=5)[1052]|(?<=2)[5]|(?<=3)[08195]|(?<=1)[410325])|(?<=6)[736281954]((?<=7)[9314528067]|(?<=3)[570346128]|(?<=6)[016953]|(?<=2)[41320]|(?<=8)[8945106327]|(?<=1)[1682793450]|(?<=9)[02153]|(?<=5)[105]|(?<=4)[56789])|(?<=8)[536478]((?<=5)[0812]|(?<=3)[1097243568]|(?<=6)[89]|(?<=4)[120]|(?<=7)[01]|(?<=8)[0])|(?<=9)[912368754]((?<=9)[6187052]|(?<=1)[234609715]|(?<=2)[35162]|(?<=3)[310495]|(?<=6)[2091]|(?<=8)[87210695]|(?<=7)[0673592814]|(?<=5)[6051]|(?<=4)[420156378])|(?<=7)[139652748]((?<=1)[276389415]|(?<=3)[3046152987]|(?<=9)[2136405]|(?<=6)[023541]|(?<=5)[2367098154]|(?<=2)[054236]|(?<=7)[7613824059]|(?<=4)[134205]|(?<=8)[2160435])|(?<=4)[4519683720]((?<=4)[879651023]|(?<=5)[214053]|(?<=1)[1240893657]|(?<=9)[027395614]|(?<=6)[9860413725]|(?<=8)[12548306]|(?<=3)[1248709635]|(?<=7)[0576189423]|(?<=2)[012]|(?<=0)[9])|(?<=3)[165748]((?<=1)[1235640]|(?<=6)[0]|(?<=5)[0]|(?<=7)[0]|(?<=4)[0]|(?<=8)[0])|(?<=5)[67598]((?<=6)[20]|(?<=7)[2019]|(?<=5)[10257839]|(?<=9)[0]|(?<=8)[2103567]))|(?<=4)[0659132487]((?<=0)[27583146]((?<=2)[6321759408]|(?<=7)[4120]|(?<=5)[103459278]|(?<=8)[81624503]|(?<=3)[1578230694]|(?<=1)[3109625874]|(?<=4)[0132796854]|(?<=6)[5128390746])|(?<=6)[8247605319]((?<=8)[2835479106]|(?<=2)[5041873926]|(?<=4)[0159826473]|(?<=7)[701968]|(?<=6)[5926034817]|(?<=0)[624917853]|(?<=5)[7843106]|(?<=3)[4297036581]|(?<=1)[0213]|(?<=9)[46781320])|(?<=5)[7013256489]((?<=7)[751340986]|(?<=0)[837659]|(?<=1)[9043856217]|(?<=3)[8132074596]|(?<=2)[2385016497]|(?<=5)[0629183547]|(?<=6)[256903741]|(?<=4)[0376859241]|(?<=8)[0132]|(?<=9)[9105487632])|(?<=9)[7968415302]((?<=7)[0234576198]|(?<=9)[4876950231]|(?<=6)[8743652019]|(?<=8)[17502698]|(?<=4)[5260731948]|(?<=1)[6431078925]|(?<=5)[0518793426]|(?<=3)[9502763148]|(?<=0)[57896]|(?<=2)[4351906827])|(?<=1)[237416508]((?<=2)[065123]|(?<=3)[8290731654]|(?<=7)[7312048569]|(?<=4)[90132]|(?<=1)[683205149]|(?<=6)[947586]|(?<=5)[1025643]|(?<=0)[75381692]|(?<=8)[0])|(?<=3)[0286534179]((?<=0)[356492871]|(?<=2)[605321748]|(?<=8)[201435]|(?<=6)[2184309765]|(?<=5)[153024]|(?<=3)[03645271]|(?<=4)[7083514692]|(?<=1)[0896547]|(?<=7)[04153]|(?<=9)[801236457])|(?<=2)[102865743]((?<=1)[160374]|(?<=0)[865471923]|(?<=2)[210]|(?<=8)[01923]|(?<=6)[17504368]|(?<=5)[5462013]|(?<=7)[18690752]|(?<=4)[5304867921]|(?<=3)[6405183792])|(?<=4)[4852697013]((?<=4)[6314907258]|(?<=8)[0187453269]|(?<=5)[67109324]|(?<=2)[8765903412]|(?<=6)[7916504382]|(?<=9)[1049238]|(?<=7)[65790814]|(?<=0)[76859]|(?<=1)[108573692]|(?<=3)[9872530416])|(?<=8)[340128795]((?<=3)[91238407]|(?<=4)[534782690]|(?<=0)[9872546]|(?<=1)[05328194]|(?<=2)[9064532]|(?<=8)[3285769104]|(?<=7)[4367918025]|(?<=9)[201345]|(?<=5)[30])|(?<=7)[8497513206]((?<=8)[4052631]|(?<=4)[134205]|(?<=9)[8576]|(?<=7)[2374061895]|(?<=5)[1078942635]|(?<=1)[9012374856]|(?<=3)[6495210837]|(?<=2)[021]|(?<=0)[9827]|(?<=6)[2031]))|(?<=3)[65483927]((?<=6)[57314628]((?<=5)[321064758]|(?<=7)[0132694857]|(?<=3)[785610]|(?<=1)[621547]|(?<=4)[04132]|(?<=6)[0]|(?<=2)[210]|(?<=8)[012])|(?<=5)[0645127983]((?<=0)[549832167]|(?<=6)[7362498051]|(?<=4)[0836492715]|(?<=5)[02345]|(?<=1)[75643012]|(?<=2)[06542913]|(?<=7)[4251036]|(?<=9)[061582347]|(?<=8)[32489]|(?<=3)[1290])|(?<=4)[4892135670]((?<=4)[2436970815]|(?<=8)[1975820436]|(?<=9)[0231]|(?<=2)[3542709816]|(?<=1)[5261048793]|(?<=3)[203965417]|(?<=5)[43021]|(?<=6)[8051672943]|(?<=7)[2031465]|(?<=0)[9])|(?<=8)[693548217]((?<=6)[01342]|(?<=9)[98567]|(?<=3)[9064237581]|(?<=5)[7658140392]|(?<=4)[14302]|(?<=8)[320145]|(?<=2)[5034261]|(?<=1)[3067421985]|(?<=7)[4081293567])|(?<=3)[819432576]((?<=8)[50243916]|(?<=1)[4563178]|(?<=9)[318764520]|(?<=4)[0718569]|(?<=3)[3624570]|(?<=2)[9204173685]|(?<=5)[257401386]|(?<=7)[845723601]|(?<=6)[2094681735])|(?<=9)[3148620]((?<=3)[2698134057]|(?<=1)[0863912574]|(?<=4)[31054]|(?<=8)[05]|(?<=6)[01]|(?<=2)[201567948]|(?<=0)[9])|(?<=2)[2573481960]((?<=2)[5102439]|(?<=5)[1480792365]|(?<=7)[4309215678]|(?<=3)[3108257964]|(?<=4)[91023]|(?<=8)[405726381]|(?<=1)[0815346972]|(?<=9)[0]|(?<=6)[095617]|(?<=0)[9])|(?<=7)[218763945]((?<=2)[7541089623]|(?<=1)[4138250796]|(?<=8)[74601892]|(?<=7)[5410362]|(?<=6)[24137865]|(?<=3)[7096154832]|(?<=9)[0]|(?<=4)[23014]|(?<=5)[315042]))|(?<=5)[46378952]((?<=4)[0143625897]((?<=0)[2518734]|(?<=1)[6083291457]|(?<=4)[41502736]|(?<=3)[5342019]|(?<=6)[506]|(?<=2)[962741503]|(?<=5)[10]|(?<=8)[5021983]|(?<=9)[95]|(?<=7)[10])|(?<=6)[89571324]((?<=8)[20147653]|(?<=9)[803125]|(?<=5)[1329704586]|(?<=7)[015]|(?<=1)[9738215406]|(?<=3)[8749163502]|(?<=2)[70689]|(?<=4)[0])|(?<=3)[76135248]((?<=7)[416705328]|(?<=6)[5462780931]|(?<=1)[36420587]|(?<=3)[540231976]|(?<=5)[31529]|(?<=2)[80624]|(?<=4)[120]|(?<=8)[01])|(?<=7)[4317625]((?<=4)[10]|(?<=3)[0]|(?<=1)[706149823]|(?<=7)[5062134]|(?<=6)[201]|(?<=2)[2031]|(?<=5)[2630145])|(?<=8)[9231740685]((?<=9)[895210346]|(?<=2)[340965128]|(?<=3)[2387069145]|(?<=1)[1746092385]|(?<=7)[51234086]|(?<=4)[362104]|(?<=0)[89]|(?<=6)[4579280361]|(?<=8)[7906485]|(?<=5)[3490526])|(?<=9)[7564]((?<=7)[125387640]|(?<=5)[0645972318]|(?<=6)[92034]|(?<=4)[023])|(?<=5)[7542316]((?<=7)[27461503]|(?<=5)[3214058796]|(?<=4)[9804]|(?<=2)[1302]|(?<=3)[3106824795]|(?<=1)[738195462]|(?<=6)[01])|(?<=2)[8351492]((?<=8)[0]|(?<=3)[369801472]|(?<=5)[2561403]|(?<=1)[479638125]|(?<=4)[1034]|(?<=9)[109]|(?<=2)[012]))|(?<=2)[5124637]((?<=5)[625143]((?<=6)[016475382]|(?<=2)[0174938256]|(?<=5)[9247015638]|(?<=1)[3812476590]|(?<=4)[2305468179]|(?<=3)[517963084])|(?<=1)[45126738]((?<=4)[932561804]|(?<=5)[5632498170]|(?<=1)[894372615]|(?<=2)[574192038]|(?<=6)[7824630591]|(?<=7)[0425967813]|(?<=3)[593427180]|(?<=8)[1204])|(?<=2)[231746]((?<=2)[1206785394]|(?<=3)[3102]|(?<=1)[521430]|(?<=7)[0231]|(?<=4)[1203]|(?<=6)[28935671])|(?<=4)[314520]((?<=3)[142053]|(?<=1)[031627498]|(?<=4)[6309814527]|(?<=5)[3120]|(?<=2)[238956704]|(?<=0)[9])|(?<=6)[23016758]((?<=2)[5843610927]|(?<=3)[32046715]|(?<=0)[79]|(?<=1)[294061375]|(?<=6)[21347856]|(?<=7)[4021]|(?<=5)[21]|(?<=8)[01])|(?<=3)[352104876]((?<=3)[6897135402]|(?<=5)[7619850234]|(?<=2)[3802476]|(?<=1)[13796024]|(?<=0)[98]|(?<=4)[2309468157]|(?<=8)[01]|(?<=7)[0]|(?<=6)[10])|(?<=7)[12364]((?<=1)[123965874]|(?<=2)[8163759024]|(?<=3)[723918406]|(?<=6)[1324]|(?<=4)[10]))|(?<=1)[835624179]((?<=8)[817653294]((?<=8)[021]|(?<=1)[21387546]|(?<=7)[0123]|(?<=6)[372540618]|(?<=5)[5873216409]|(?<=3)[713469258]|(?<=2)[102]|(?<=9)[9867]|(?<=4)[5021])|(?<=3)[23456170]((?<=2)[1329860754]|(?<=3)[167482053]|(?<=4)[4732598601]|(?<=5)[4986530127]|(?<=6)[625318497]|(?<=1)[8639714205]|(?<=7)[015342]|(?<=0)[9])|(?<=5)[314250]((?<=3)[425103679]|(?<=1)[013852479]|(?<=4)[3705214698]|(?<=2)[8960175234]|(?<=5)[02]|(?<=0)[89])|(?<=6)[1352764]((?<=1)[76508139]|(?<=3)[5862470193]|(?<=5)[520134]|(?<=2)[2647518390]|(?<=7)[0]|(?<=6)[01]|(?<=4)[6478025913])|(?<=2)[124738065]((?<=1)[5872063914]|(?<=2)[1057369428]|(?<=4)[4250861379]|(?<=7)[0258964371]|(?<=3)[9823157064]|(?<=8)[1032]|(?<=0)[98]|(?<=6)[2073581469]|(?<=5)[0165984732])|(?<=4)[2765194830]((?<=2)[083964751]|(?<=7)[7614302589]|(?<=6)[1280749635]|(?<=5)[7013582649]|(?<=1)[182536749]|(?<=9)[09]|(?<=4)[859]|(?<=8)[02143]|(?<=3)[03421]|(?<=0)[9])|(?<=1)[432516]((?<=4)[5126378409]|(?<=3)[8319467025]|(?<=2)[9148760235]|(?<=5)[2019]|(?<=1)[582763491]|(?<=6)[10])|(?<=7)[304152]((?<=3)[6407285931]|(?<=0)[9]|(?<=4)[7091425863]|(?<=1)[931804267]|(?<=5)[04231]|(?<=2)[657841309])|(?<=9)[24135]((?<=2)[234567890]|(?<=4)[017895463]|(?<=1)[5802719436]|(?<=3)[842790153]|(?<=5)[503142]))))$") }; switch (sanitizedCountyInput) { case "AT": @@ -68,6 +73,16 @@ return reg["US"].test(sanitizedZipCode); case "IT": return reg["IT"].test(sanitizedZipCode); + case "EE": + return reg["EE"].test(sanitizedZipCode); + case "FR": + return reg["FR"].test(sanitizedZipCode); + case "IS": + return reg["IS"].test(sanitizedZipCode); + case "ES": + return reg["ES"].test(sanitizedZipCode); + case "LU": + return reg["LU"].test(sanitizedZipCode); default: console.error("Sorry :( \nCurrently there is no support for the country you want: " + sanitizeCountyInput.toString()); } diff --git a/node_modules/.bin/_mocha b/node_modules/.bin/_mocha new file mode 100644 index 0000000..47a3b10 --- /dev/null +++ b/node_modules/.bin/_mocha @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../mocha/bin/_mocha" "$@" +else + exec node "$basedir/../mocha/bin/_mocha" "$@" +fi diff --git a/node_modules/.bin/_mocha.cmd b/node_modules/.bin/_mocha.cmd new file mode 100644 index 0000000..417aa20 --- /dev/null +++ b/node_modules/.bin/_mocha.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mocha\bin\_mocha" %* diff --git a/node_modules/.bin/_mocha.ps1 b/node_modules/.bin/_mocha.ps1 new file mode 100644 index 0000000..c17fc71 --- /dev/null +++ b/node_modules/.bin/_mocha.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../mocha/bin/_mocha" $args + } else { + & "$basedir/node$exe" "$basedir/../mocha/bin/_mocha" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../mocha/bin/_mocha" $args + } else { + & "node$exe" "$basedir/../mocha/bin/_mocha" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/flat b/node_modules/.bin/flat new file mode 100644 index 0000000..50faba1 --- /dev/null +++ b/node_modules/.bin/flat @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../flat/cli.js" "$@" +else + exec node "$basedir/../flat/cli.js" "$@" +fi diff --git a/node_modules/.bin/flat.cmd b/node_modules/.bin/flat.cmd new file mode 100644 index 0000000..bae8d2c --- /dev/null +++ b/node_modules/.bin/flat.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\flat\cli.js" %* diff --git a/node_modules/.bin/flat.ps1 b/node_modules/.bin/flat.ps1 new file mode 100644 index 0000000..92a76a9 --- /dev/null +++ b/node_modules/.bin/flat.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../flat/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../flat/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../flat/cli.js" $args + } else { + & "node$exe" "$basedir/../flat/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/he b/node_modules/.bin/he new file mode 100644 index 0000000..70e18de --- /dev/null +++ b/node_modules/.bin/he @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../he/bin/he" "$@" +else + exec node "$basedir/../he/bin/he" "$@" +fi diff --git a/node_modules/.bin/he.cmd b/node_modules/.bin/he.cmd new file mode 100644 index 0000000..611a864 --- /dev/null +++ b/node_modules/.bin/he.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\he\bin\he" %* diff --git a/node_modules/.bin/he.ps1 b/node_modules/.bin/he.ps1 new file mode 100644 index 0000000..b0010bc --- /dev/null +++ b/node_modules/.bin/he.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../he/bin/he" $args + } else { + & "$basedir/node$exe" "$basedir/../he/bin/he" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../he/bin/he" $args + } else { + & "node$exe" "$basedir/../he/bin/he" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/js-yaml b/node_modules/.bin/js-yaml new file mode 100644 index 0000000..ed78a86 --- /dev/null +++ b/node_modules/.bin/js-yaml @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../js-yaml/bin/js-yaml.js" "$@" +else + exec node "$basedir/../js-yaml/bin/js-yaml.js" "$@" +fi diff --git a/node_modules/.bin/js-yaml.cmd b/node_modules/.bin/js-yaml.cmd new file mode 100644 index 0000000..453312b --- /dev/null +++ b/node_modules/.bin/js-yaml.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\js-yaml\bin\js-yaml.js" %* diff --git a/node_modules/.bin/js-yaml.ps1 b/node_modules/.bin/js-yaml.ps1 new file mode 100644 index 0000000..2acfc61 --- /dev/null +++ b/node_modules/.bin/js-yaml.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args + } else { + & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args + } else { + & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/mocha b/node_modules/.bin/mocha new file mode 100644 index 0000000..89dd21b --- /dev/null +++ b/node_modules/.bin/mocha @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../mocha/bin/mocha.js" "$@" +else + exec node "$basedir/../mocha/bin/mocha.js" "$@" +fi diff --git a/node_modules/.bin/mocha.cmd b/node_modules/.bin/mocha.cmd new file mode 100644 index 0000000..b328ae9 --- /dev/null +++ b/node_modules/.bin/mocha.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mocha\bin\mocha.js" %* diff --git a/node_modules/.bin/mocha.ps1 b/node_modules/.bin/mocha.ps1 new file mode 100644 index 0000000..5f83501 --- /dev/null +++ b/node_modules/.bin/mocha.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../mocha/bin/mocha.js" $args + } else { + & "$basedir/node$exe" "$basedir/../mocha/bin/mocha.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../mocha/bin/mocha.js" $args + } else { + & "node$exe" "$basedir/../mocha/bin/mocha.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/nanoid b/node_modules/.bin/nanoid new file mode 100644 index 0000000..23254eb --- /dev/null +++ b/node_modules/.bin/nanoid @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../nanoid/bin/nanoid.cjs" "$@" +else + exec node "$basedir/../nanoid/bin/nanoid.cjs" "$@" +fi diff --git a/node_modules/.bin/nanoid.cmd b/node_modules/.bin/nanoid.cmd new file mode 100644 index 0000000..9c40107 --- /dev/null +++ b/node_modules/.bin/nanoid.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %* diff --git a/node_modules/.bin/nanoid.ps1 b/node_modules/.bin/nanoid.ps1 new file mode 100644 index 0000000..d8a4d7a --- /dev/null +++ b/node_modules/.bin/nanoid.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index 84e867a..2f5edca 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -1,6 +1,6 @@ { "name": "val-zip", - "version": "1.0.11", + "version": "1.0.12", "lockfileVersion": 2, "requires": true, "packages": { @@ -1839,6 +1839,22 @@ "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", "dev": true }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1855,8 +1871,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "optional": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1865,6 +1879,11 @@ "node": ">= 8" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", @@ -1907,15 +1926,12 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "optional": true, "engines": { "node": ">=8" } @@ -1924,7 +1940,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -1933,8 +1948,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -1942,6 +1955,11 @@ "node": ">=8" } }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, "node_modules/browserslist": { "version": "4.21.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", @@ -1982,6 +2000,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001450", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz", @@ -2016,14 +2045,12 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } ], - "optional": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2040,6 +2067,16 @@ "fsevents": "~2.3.2" } }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -2073,8 +2110,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/convert-source-map": { "version": "1.9.0", @@ -2099,7 +2135,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -2112,6 +2147,17 @@ } } }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/deepmerge": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", @@ -2121,17 +2167,29 @@ "node": ">=0.10.0" } }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.286", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.286.tgz", "integrity": "sha512-Vp3CVhmYpgf4iXNKAucoQUDcCrBQX3XLBtwgFqP9BUXuucgvAV9zWp1kYU7LL9j4++s9O+12cb3wMtN4SJy6UQ==", "dev": true }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -2164,8 +2222,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "optional": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2173,6 +2229,29 @@ "node": ">=8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" + } + }, "node_modules/fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -2182,8 +2261,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/function-bind": { "version": "1.1.1", @@ -2200,6 +2278,14 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -2223,8 +2309,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "optional": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -2262,11 +2346,18 @@ "node": ">=4" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2275,15 +2366,12 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -2322,18 +2410,22 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "optional": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "optional": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -2351,12 +2443,18 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true, "engines": { "node": ">=0.12.0" } }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-reference": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", @@ -2366,12 +2464,34 @@ "@types/estree": "*" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -2396,12 +2516,105 @@ "node": ">=6" } }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -2457,11 +2670,148 @@ "node": ">=10" } }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, "node_modules/node-releases": { "version": "2.0.9", @@ -2473,8 +2823,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true, "engines": { "node": ">=0.10.0" } @@ -2483,16 +2831,50 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2513,7 +2895,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -2530,12 +2911,18 @@ "node": ">=6" } }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "optional": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -2620,6 +3007,14 @@ "jsesc": "bin/jsesc" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -2653,6 +3048,25 @@ "fsevents": "~2.3.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -2662,6 +3076,14 @@ "semver": "bin/semver.js" } }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", @@ -2671,6 +3093,41 @@ "node": ">=6" } }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -2708,8 +3165,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "optional": true, "dependencies": { "is-number": "^7.0.0" }, @@ -2783,17 +3238,125 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/node_modules/ansi-colors/LICENSE b/node_modules/ansi-colors/LICENSE new file mode 100644 index 0000000..8749cc7 --- /dev/null +++ b/node_modules/ansi-colors/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-present, Brian Woodward. + +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/node_modules/ansi-colors/README.md b/node_modules/ansi-colors/README.md new file mode 100644 index 0000000..dcdbcb5 --- /dev/null +++ b/node_modules/ansi-colors/README.md @@ -0,0 +1,315 @@ +# ansi-colors [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [![NPM version](https://img.shields.io/npm/v/ansi-colors.svg?style=flat)](https://www.npmjs.com/package/ansi-colors) [![NPM monthly downloads](https://img.shields.io/npm/dm/ansi-colors.svg?style=flat)](https://npmjs.org/package/ansi-colors) [![NPM total downloads](https://img.shields.io/npm/dt/ansi-colors.svg?style=flat)](https://npmjs.org/package/ansi-colors) [![Linux Build Status](https://img.shields.io/travis/doowb/ansi-colors.svg?style=flat&label=Travis)](https://travis-ci.org/doowb/ansi-colors) + +> Easily add ANSI colors to your text and symbols in the terminal. A faster drop-in replacement for chalk, kleur and turbocolor (without the dependencies and rendering bugs). + +Please consider following this project's author, [Brian Woodward](https://github.com/doowb), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save ansi-colors +``` + +![image](https://user-images.githubusercontent.com/383994/39635445-8a98a3a6-4f8b-11e8-89c1-068c45d4fff8.png) + +## Why use this? + +ansi-colors is _the fastest Node.js library for terminal styling_. A more performant drop-in replacement for chalk, with no dependencies. + +* _Blazing fast_ - Fastest terminal styling library in node.js, 10-20x faster than chalk! + +* _Drop-in replacement_ for [chalk](https://github.com/chalk/chalk). +* _No dependencies_ (Chalk has 7 dependencies in its tree!) + +* _Safe_ - Does not modify the `String.prototype` like [colors](https://github.com/Marak/colors.js). +* Supports [nested colors](#nested-colors), **and does not have the [nested styling bug](#nested-styling-bug) that is present in [colorette](https://github.com/jorgebucaran/colorette), [chalk](https://github.com/chalk/chalk), and [kleur](https://github.com/lukeed/kleur)**. +* Supports [chained colors](#chained-colors). +* [Toggle color support](#toggle-color-support) on or off. + +## Usage + +```js +const c = require('ansi-colors'); + +console.log(c.red('This is a red string!')); +console.log(c.green('This is a red string!')); +console.log(c.cyan('This is a cyan string!')); +console.log(c.yellow('This is a yellow string!')); +``` + +![image](https://user-images.githubusercontent.com/383994/39653848-a38e67da-4fc0-11e8-89ae-98c65ebe9dcf.png) + +## Chained colors + +```js +console.log(c.bold.red('this is a bold red message')); +console.log(c.bold.yellow.italic('this is a bold yellow italicized message')); +console.log(c.green.bold.underline('this is a bold green underlined message')); +``` + +![image](https://user-images.githubusercontent.com/383994/39635780-7617246a-4f8c-11e8-89e9-05216cc54e38.png) + +## Nested colors + +```js +console.log(c.yellow(`foo ${c.red.bold('red')} bar ${c.cyan('cyan')} baz`)); +``` + +![image](https://user-images.githubusercontent.com/383994/39635817-8ed93d44-4f8c-11e8-8afd-8c3ea35f5fbe.png) + +### Nested styling bug + +`ansi-colors` does not have the nested styling bug found in [colorette](https://github.com/jorgebucaran/colorette), [chalk](https://github.com/chalk/chalk), and [kleur](https://github.com/lukeed/kleur). + +```js +const { bold, red } = require('ansi-styles'); +console.log(bold(`foo ${red.dim('bar')} baz`)); + +const colorette = require('colorette'); +console.log(colorette.bold(`foo ${colorette.red(colorette.dim('bar'))} baz`)); + +const kleur = require('kleur'); +console.log(kleur.bold(`foo ${kleur.red.dim('bar')} baz`)); + +const chalk = require('chalk'); +console.log(chalk.bold(`foo ${chalk.red.dim('bar')} baz`)); +``` + +**Results in the following** + +(sans icons and labels) + +![image](https://user-images.githubusercontent.com/383994/47280326-d2ee0580-d5a3-11e8-9611-ea6010f0a253.png) + +## Toggle color support + +Easily enable/disable colors. + +```js +const c = require('ansi-colors'); + +// disable colors manually +c.enabled = false; + +// or use a library to automatically detect support +c.enabled = require('color-support').hasBasic; + +console.log(c.red('I will only be colored red if the terminal supports colors')); +``` + +## Strip ANSI codes + +Use the `.unstyle` method to strip ANSI codes from a string. + +```js +console.log(c.unstyle(c.blue.bold('foo bar baz'))); +//=> 'foo bar baz' +``` + +## Available styles + +**Note** that bright and bright-background colors are not always supported. + +| Colors | Background Colors | Bright Colors | Bright Background Colors | +| ------- | ----------------- | ------------- | ------------------------ | +| black | bgBlack | blackBright | bgBlackBright | +| red | bgRed | redBright | bgRedBright | +| green | bgGreen | greenBright | bgGreenBright | +| yellow | bgYellow | yellowBright | bgYellowBright | +| blue | bgBlue | blueBright | bgBlueBright | +| magenta | bgMagenta | magentaBright | bgMagentaBright | +| cyan | bgCyan | cyanBright | bgCyanBright | +| white | bgWhite | whiteBright | bgWhiteBright | +| gray | | | | +| grey | | | | + +_(`gray` is the U.S. spelling, `grey` is more commonly used in the Canada and U.K.)_ + +### Style modifiers + +* dim +* **bold** + +* hidden +* _italic_ + +* underline +* inverse +* ~~strikethrough~~ + +* reset + +## Aliases + +Create custom aliases for styles. + +```js +const colors = require('ansi-colors'); + +colors.alias('primary', colors.yellow); +colors.alias('secondary', colors.bold); + +console.log(colors.primary.secondary('Foo')); +``` + +## Themes + +A theme is an object of custom aliases. + +```js +const colors = require('ansi-colors'); + +colors.theme({ + danger: colors.red, + dark: colors.dim.gray, + disabled: colors.gray, + em: colors.italic, + heading: colors.bold.underline, + info: colors.cyan, + muted: colors.dim, + primary: colors.blue, + strong: colors.bold, + success: colors.green, + underline: colors.underline, + warning: colors.yellow +}); + +// Now, we can use our custom styles alongside the built-in styles! +console.log(colors.danger.strong.em('Error!')); +console.log(colors.warning('Heads up!')); +console.log(colors.info('Did you know...')); +console.log(colors.success.bold('It worked!')); +``` + +## Performance + +**Libraries tested** + +* ansi-colors v3.0.4 +* chalk v2.4.1 + +### Mac + +> MacBook Pro, Intel Core i7, 2.3 GHz, 16 GB. + +**Load time** + +Time it takes to load the first time `require()` is called: + +* ansi-colors - `1.915ms` +* chalk - `12.437ms` + +**Benchmarks** + +``` +# All Colors + ansi-colors x 173,851 ops/sec ±0.42% (91 runs sampled) + chalk x 9,944 ops/sec ±2.53% (81 runs sampled))) + +# Chained colors + ansi-colors x 20,791 ops/sec ±0.60% (88 runs sampled) + chalk x 2,111 ops/sec ±2.34% (83 runs sampled) + +# Nested colors + ansi-colors x 59,304 ops/sec ±0.98% (92 runs sampled) + chalk x 4,590 ops/sec ±2.08% (82 runs sampled) +``` + +### Windows + +> Windows 10, Intel Core i7-7700k CPU @ 4.2 GHz, 32 GB + +**Load time** + +Time it takes to load the first time `require()` is called: + +* ansi-colors - `1.494ms` +* chalk - `11.523ms` + +**Benchmarks** + +``` +# All Colors + ansi-colors x 193,088 ops/sec ±0.51% (95 runs sampled)) + chalk x 9,612 ops/sec ±3.31% (77 runs sampled))) + +# Chained colors + ansi-colors x 26,093 ops/sec ±1.13% (94 runs sampled) + chalk x 2,267 ops/sec ±2.88% (80 runs sampled)) + +# Nested colors + ansi-colors x 67,747 ops/sec ±0.49% (93 runs sampled) + chalk x 4,446 ops/sec ±3.01% (82 runs sampled)) +``` + +## About + +
+Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +
+ +
+Running Tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +
+ +
+Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +
+ +### Related projects + +You might also be interested in these projects: + +* [ansi-wrap](https://www.npmjs.com/package/ansi-wrap): Create ansi colors by passing the open and close codes. | [homepage](https://github.com/jonschlinkert/ansi-wrap "Create ansi colors by passing the open and close codes.") +* [strip-color](https://www.npmjs.com/package/strip-color): Strip ANSI color codes from a string. No dependencies. | [homepage](https://github.com/jonschlinkert/strip-color "Strip ANSI color codes from a string. No dependencies.") + +### Contributors + +| **Commits** | **Contributor** | +| --- | --- | +| 48 | [jonschlinkert](https://github.com/jonschlinkert) | +| 42 | [doowb](https://github.com/doowb) | +| 6 | [lukeed](https://github.com/lukeed) | +| 2 | [Silic0nS0ldier](https://github.com/Silic0nS0ldier) | +| 1 | [dwieeb](https://github.com/dwieeb) | +| 1 | [jorgebucaran](https://github.com/jorgebucaran) | +| 1 | [madhavarshney](https://github.com/madhavarshney) | +| 1 | [chapterjason](https://github.com/chapterjason) | + +### Author + +**Brian Woodward** + +* [GitHub Profile](https://github.com/doowb) +* [Twitter Profile](https://twitter.com/doowb) +* [LinkedIn Profile](https://linkedin.com/in/woodwardbrian) + +### License + +Copyright © 2019, [Brian Woodward](https://github.com/doowb). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on July 01, 2019._ \ No newline at end of file diff --git a/node_modules/ansi-colors/index.js b/node_modules/ansi-colors/index.js new file mode 100644 index 0000000..8e26419 --- /dev/null +++ b/node_modules/ansi-colors/index.js @@ -0,0 +1,177 @@ +'use strict'; + +const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); +const identity = val => val; + +/* eslint-disable no-control-regex */ +// this is a modified version of https://github.com/chalk/ansi-regex (MIT License) +const ANSI_REGEX = /[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g; + +const create = () => { + const colors = { enabled: true, visible: true, styles: {}, keys: {} }; + + if ('FORCE_COLOR' in process.env) { + colors.enabled = process.env.FORCE_COLOR !== '0'; + } + + const ansi = style => { + let open = style.open = `\u001b[${style.codes[0]}m`; + let close = style.close = `\u001b[${style.codes[1]}m`; + let regex = style.regex = new RegExp(`\\u001b\\[${style.codes[1]}m`, 'g'); + style.wrap = (input, newline) => { + if (input.includes(close)) input = input.replace(regex, close + open); + let output = open + input + close; + // see https://github.com/chalk/chalk/pull/92, thanks to the + // chalk contributors for this fix. However, we've confirmed that + // this issue is also present in Windows terminals + return newline ? output.replace(/\r*\n/g, `${close}$&${open}`) : output; + }; + return style; + }; + + const wrap = (style, input, newline) => { + return typeof style === 'function' ? style(input) : style.wrap(input, newline); + }; + + const style = (input, stack) => { + if (input === '' || input == null) return ''; + if (colors.enabled === false) return input; + if (colors.visible === false) return ''; + let str = '' + input; + let nl = str.includes('\n'); + let n = stack.length; + if (n > 0 && stack.includes('unstyle')) { + stack = [...new Set(['unstyle', ...stack])].reverse(); + } + while (n-- > 0) str = wrap(colors.styles[stack[n]], str, nl); + return str; + }; + + const define = (name, codes, type) => { + colors.styles[name] = ansi({ name, codes }); + let keys = colors.keys[type] || (colors.keys[type] = []); + keys.push(name); + + Reflect.defineProperty(colors, name, { + configurable: true, + enumerable: true, + set(value) { + colors.alias(name, value); + }, + get() { + let color = input => style(input, color.stack); + Reflect.setPrototypeOf(color, colors); + color.stack = this.stack ? this.stack.concat(name) : [name]; + return color; + } + }); + }; + + define('reset', [0, 0], 'modifier'); + define('bold', [1, 22], 'modifier'); + define('dim', [2, 22], 'modifier'); + define('italic', [3, 23], 'modifier'); + define('underline', [4, 24], 'modifier'); + define('inverse', [7, 27], 'modifier'); + define('hidden', [8, 28], 'modifier'); + define('strikethrough', [9, 29], 'modifier'); + + define('black', [30, 39], 'color'); + define('red', [31, 39], 'color'); + define('green', [32, 39], 'color'); + define('yellow', [33, 39], 'color'); + define('blue', [34, 39], 'color'); + define('magenta', [35, 39], 'color'); + define('cyan', [36, 39], 'color'); + define('white', [37, 39], 'color'); + define('gray', [90, 39], 'color'); + define('grey', [90, 39], 'color'); + + define('bgBlack', [40, 49], 'bg'); + define('bgRed', [41, 49], 'bg'); + define('bgGreen', [42, 49], 'bg'); + define('bgYellow', [43, 49], 'bg'); + define('bgBlue', [44, 49], 'bg'); + define('bgMagenta', [45, 49], 'bg'); + define('bgCyan', [46, 49], 'bg'); + define('bgWhite', [47, 49], 'bg'); + + define('blackBright', [90, 39], 'bright'); + define('redBright', [91, 39], 'bright'); + define('greenBright', [92, 39], 'bright'); + define('yellowBright', [93, 39], 'bright'); + define('blueBright', [94, 39], 'bright'); + define('magentaBright', [95, 39], 'bright'); + define('cyanBright', [96, 39], 'bright'); + define('whiteBright', [97, 39], 'bright'); + + define('bgBlackBright', [100, 49], 'bgBright'); + define('bgRedBright', [101, 49], 'bgBright'); + define('bgGreenBright', [102, 49], 'bgBright'); + define('bgYellowBright', [103, 49], 'bgBright'); + define('bgBlueBright', [104, 49], 'bgBright'); + define('bgMagentaBright', [105, 49], 'bgBright'); + define('bgCyanBright', [106, 49], 'bgBright'); + define('bgWhiteBright', [107, 49], 'bgBright'); + + colors.ansiRegex = ANSI_REGEX; + colors.hasColor = colors.hasAnsi = str => { + colors.ansiRegex.lastIndex = 0; + return typeof str === 'string' && str !== '' && colors.ansiRegex.test(str); + }; + + colors.alias = (name, color) => { + let fn = typeof color === 'string' ? colors[color] : color; + + if (typeof fn !== 'function') { + throw new TypeError('Expected alias to be the name of an existing color (string) or a function'); + } + + if (!fn.stack) { + Reflect.defineProperty(fn, 'name', { value: name }); + colors.styles[name] = fn; + fn.stack = [name]; + } + + Reflect.defineProperty(colors, name, { + configurable: true, + enumerable: true, + set(value) { + colors.alias(name, value); + }, + get() { + let color = input => style(input, color.stack); + Reflect.setPrototypeOf(color, colors); + color.stack = this.stack ? this.stack.concat(fn.stack) : fn.stack; + return color; + } + }); + }; + + colors.theme = custom => { + if (!isObject(custom)) throw new TypeError('Expected theme to be an object'); + for (let name of Object.keys(custom)) { + colors.alias(name, custom[name]); + } + return colors; + }; + + colors.alias('unstyle', str => { + if (typeof str === 'string' && str !== '') { + colors.ansiRegex.lastIndex = 0; + return str.replace(colors.ansiRegex, ''); + } + return ''; + }); + + colors.alias('noop', str => str); + colors.none = colors.clear = colors.noop; + + colors.stripColor = colors.unstyle; + colors.symbols = require('./symbols'); + colors.define = define; + return colors; +}; + +module.exports = create(); +module.exports.create = create; diff --git a/node_modules/ansi-colors/package.json b/node_modules/ansi-colors/package.json new file mode 100644 index 0000000..e110931 --- /dev/null +++ b/node_modules/ansi-colors/package.json @@ -0,0 +1,109 @@ +{ + "name": "ansi-colors", + "description": "Easily add ANSI colors to your text and symbols in the terminal. A faster drop-in replacement for chalk, kleur and turbocolor (without the dependencies and rendering bugs).", + "version": "4.1.1", + "homepage": "https://github.com/doowb/ansi-colors", + "author": "Brian Woodward (https://github.com/doowb)", + "contributors": [ + "Brian Woodward (https://twitter.com/doowb)", + "Jason Schilling (https://sourecode.de)", + "Jon Schlinkert (http://twitter.com/jonschlinkert)", + "Jordan (https://github.com/Silic0nS0ldier)" + ], + "repository": "doowb/ansi-colors", + "bugs": { + "url": "https://github.com/doowb/ansi-colors/issues" + }, + "license": "MIT", + "files": [ + "index.js", + "symbols.js", + "types/index.d.ts" + ], + "main": "index.js", + "types": "./types/index.d.ts", + "engines": { + "node": ">=6" + }, + "scripts": { + "test": "mocha" + }, + "devDependencies": { + "decache": "^4.5.1", + "gulp-format-md": "^2.0.0", + "justified": "^1.0.1", + "mocha": "^6.1.4", + "text-table": "^0.2.0" + }, + "keywords": [ + "ansi", + "bgblack", + "bgBlack", + "bgblue", + "bgBlue", + "bgcyan", + "bgCyan", + "bggreen", + "bgGreen", + "bgmagenta", + "bgMagenta", + "bgred", + "bgRed", + "bgwhite", + "bgWhite", + "bgyellow", + "bgYellow", + "black", + "blue", + "bold", + "clorox", + "colors", + "cyan", + "dim", + "gray", + "green", + "grey", + "hidden", + "inverse", + "italic", + "kleur", + "magenta", + "red", + "reset", + "strikethrough", + "underline", + "white", + "yellow" + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "data": { + "author": { + "linkedin": "woodwardbrian", + "twitter": "doowb" + } + }, + "plugins": [ + "gulp-format-md" + ], + "lint": { + "reflinks": true + }, + "related": { + "list": [ + "ansi-wrap", + "strip-color" + ] + }, + "reflinks": [ + "chalk", + "colorette", + "colors", + "kleur" + ] + } +} diff --git a/node_modules/ansi-colors/symbols.js b/node_modules/ansi-colors/symbols.js new file mode 100644 index 0000000..ee15945 --- /dev/null +++ b/node_modules/ansi-colors/symbols.js @@ -0,0 +1,70 @@ +'use strict'; + +const isHyper = process.env.TERM_PROGRAM === 'Hyper'; +const isWindows = process.platform === 'win32'; +const isLinux = process.platform === 'linux'; + +const common = { + ballotDisabled: '☒', + ballotOff: '☐', + ballotOn: '☑', + bullet: '•', + bulletWhite: '◦', + fullBlock: '█', + heart: '❤', + identicalTo: '≡', + line: '─', + mark: '※', + middot: '·', + minus: '-', + multiplication: '×', + obelus: '÷', + pencilDownRight: '✎', + pencilRight: '✏', + pencilUpRight: '✐', + percent: '%', + pilcrow2: '❡', + pilcrow: '¶', + plusMinus: '±', + section: '§', + starsOff: '☆', + starsOn: '★', + upDownArrow: '↕' +}; + +const windows = Object.assign({}, common, { + check: '√', + cross: '×', + ellipsisLarge: '...', + ellipsis: '...', + info: 'i', + question: '?', + questionSmall: '?', + pointer: '>', + pointerSmall: '»', + radioOff: '( )', + radioOn: '(*)', + warning: '‼' +}); + +const other = Object.assign({}, common, { + ballotCross: '✘', + check: '✔', + cross: '✖', + ellipsisLarge: '⋯', + ellipsis: '…', + info: 'ℹ', + question: '?', + questionFull: '?', + questionSmall: '﹖', + pointer: isLinux ? '▸' : '❯', + pointerSmall: isLinux ? '‣' : '›', + radioOff: '◯', + radioOn: '◉', + warning: '⚠' +}); + +module.exports = (isWindows && !isHyper) ? windows : other; +Reflect.defineProperty(module.exports, 'common', { enumerable: false, value: common }); +Reflect.defineProperty(module.exports, 'windows', { enumerable: false, value: windows }); +Reflect.defineProperty(module.exports, 'other', { enumerable: false, value: other }); diff --git a/node_modules/ansi-colors/types/index.d.ts b/node_modules/ansi-colors/types/index.d.ts new file mode 100644 index 0000000..ca2d24a --- /dev/null +++ b/node_modules/ansi-colors/types/index.d.ts @@ -0,0 +1,161 @@ +// Imported from DefinitelyTyped project. +// TypeScript definitions for ansi-colors +// Definitions by: Rogier Schouten +// Integrated by: Jordan Mele + +interface SymbolsType { + check: string; + cross: string; + info: string; + line: string; + pointer: string; + pointerSmall: string; + question: string; + warning: string; +} + +type StyleArrayStructure = [number, number]; +interface StyleArrayProperties { + open: string; + close: string; + closeRe: string; +} + +type StyleType = StyleArrayStructure & StyleArrayProperties; + +export interface StyleFunction extends StylesType { + (s: string): string; +} + +interface StylesType { + // modifiers + reset: T; + bold: T; + dim: T; + italic: T; + underline: T; + inverse: T; + hidden: T; + strikethrough: T; + + // colors + black: T; + red: T; + green: T; + yellow: T; + blue: T; + magenta: T; + cyan: T; + white: T; + gray: T; + grey: T; + + // bright colors + blackBright: T; + redBright: T; + greenBright: T; + yellowBright: T; + blueBright: T; + magentaBright: T; + cyanBright: T; + whiteBright: T; + + // background colors + bgBlack: T; + bgRed: T; + bgGreen: T; + bgYellow: T; + bgBlue: T; + bgMagenta: T; + bgCyan: T; + bgWhite: T; + + // bright background colors + bgBlackBright: T; + bgRedBright: T; + bgGreenBright: T; + bgYellowBright: T; + bgBlueBright: T; + bgMagentaBright: T; + bgCyanBright: T; + bgWhiteBright: T; +} + +// modifiers +export const reset: StyleFunction; +export const bold: StyleFunction; +export const dim: StyleFunction; +export const italic: StyleFunction; +export const underline: StyleFunction; +export const inverse: StyleFunction; +export const hidden: StyleFunction; +export const strikethrough: StyleFunction; + +// colors +export const black: StyleFunction; +export const red: StyleFunction; +export const green: StyleFunction; +export const yellow: StyleFunction; +export const blue: StyleFunction; +export const magenta: StyleFunction; +export const cyan: StyleFunction; +export const white: StyleFunction; +export const gray: StyleFunction; +export const grey: StyleFunction; + +// bright colors +export const blackBright: StyleFunction; +export const redBright: StyleFunction; +export const greenBright: StyleFunction; +export const yellowBright: StyleFunction; +export const blueBright: StyleFunction; +export const magentaBright: StyleFunction; +export const cyanBright: StyleFunction; +export const whiteBright: StyleFunction; + +// background colors +export const bgBlack: StyleFunction; +export const bgRed: StyleFunction; +export const bgGreen: StyleFunction; +export const bgYellow: StyleFunction; +export const bgBlue: StyleFunction; +export const bgMagenta: StyleFunction; +export const bgCyan: StyleFunction; +export const bgWhite: StyleFunction; + +// bright background colors +export const bgBlackBright: StyleFunction; +export const bgRedBright: StyleFunction; +export const bgGreenBright: StyleFunction; +export const bgYellowBright: StyleFunction; +export const bgBlueBright: StyleFunction; +export const bgMagentaBright: StyleFunction; +export const bgCyanBright: StyleFunction; +export const bgWhiteBright: StyleFunction; + +export let enabled: boolean; +export let visible: boolean; +export const ansiRegex: RegExp; + +/** + * Remove styles from string + */ +export function stripColor(s: string): string; + +/** + * Remove styles from string + */ +export function strip(s: string): string; + +/** + * Remove styles from string + */ +export function unstyle(s: string): string; + +export const styles: StylesType; +export const symbols: SymbolsType; + +/** + * Outputs a string with check-symbol as prefix + */ +export function ok(...args: string[]): string; diff --git a/node_modules/ansi-regex/index.d.ts b/node_modules/ansi-regex/index.d.ts new file mode 100644 index 0000000..2dbf6af --- /dev/null +++ b/node_modules/ansi-regex/index.d.ts @@ -0,0 +1,37 @@ +declare namespace ansiRegex { + interface Options { + /** + Match only the first ANSI escape. + + @default false + */ + onlyFirst: boolean; + } +} + +/** +Regular expression for matching ANSI escape codes. + +@example +``` +import ansiRegex = require('ansi-regex'); + +ansiRegex().test('\u001B[4mcake\u001B[0m'); +//=> true + +ansiRegex().test('cake'); +//=> false + +'\u001B[4mcake\u001B[0m'.match(ansiRegex()); +//=> ['\u001B[4m', '\u001B[0m'] + +'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true})); +//=> ['\u001B[4m'] + +'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex()); +//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007'] +``` +*/ +declare function ansiRegex(options?: ansiRegex.Options): RegExp; + +export = ansiRegex; diff --git a/node_modules/ansi-regex/index.js b/node_modules/ansi-regex/index.js new file mode 100644 index 0000000..616ff83 --- /dev/null +++ b/node_modules/ansi-regex/index.js @@ -0,0 +1,10 @@ +'use strict'; + +module.exports = ({onlyFirst = false} = {}) => { + const pattern = [ + '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', + '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))' + ].join('|'); + + return new RegExp(pattern, onlyFirst ? undefined : 'g'); +}; diff --git a/node_modules/ansi-regex/license b/node_modules/ansi-regex/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/node_modules/ansi-regex/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (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/node_modules/ansi-regex/package.json b/node_modules/ansi-regex/package.json new file mode 100644 index 0000000..017f531 --- /dev/null +++ b/node_modules/ansi-regex/package.json @@ -0,0 +1,55 @@ +{ + "name": "ansi-regex", + "version": "5.0.1", + "description": "Regular expression for matching ANSI escape codes", + "license": "MIT", + "repository": "chalk/ansi-regex", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd", + "view-supported": "node fixtures/view-codes.js" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "text", + "regex", + "regexp", + "re", + "match", + "test", + "find", + "pattern" + ], + "devDependencies": { + "ava": "^2.4.0", + "tsd": "^0.9.0", + "xo": "^0.25.3" + } +} diff --git a/node_modules/ansi-regex/readme.md b/node_modules/ansi-regex/readme.md new file mode 100644 index 0000000..4d848bc --- /dev/null +++ b/node_modules/ansi-regex/readme.md @@ -0,0 +1,78 @@ +# ansi-regex + +> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +``` +$ npm install ansi-regex +``` + + +## Usage + +```js +const ansiRegex = require('ansi-regex'); + +ansiRegex().test('\u001B[4mcake\u001B[0m'); +//=> true + +ansiRegex().test('cake'); +//=> false + +'\u001B[4mcake\u001B[0m'.match(ansiRegex()); +//=> ['\u001B[4m', '\u001B[0m'] + +'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true})); +//=> ['\u001B[4m'] + +'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex()); +//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007'] +``` + + +## API + +### ansiRegex(options?) + +Returns a regex for matching ANSI escape codes. + +#### options + +Type: `object` + +##### onlyFirst + +Type: `boolean`
+Default: `false` *(Matches any ANSI escape codes in a string)* + +Match only the first ANSI escape. + + +## FAQ + +### Why do you test for codes not in the ECMA 48 standard? + +Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. We test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them. + +On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out. + + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/argparse/CHANGELOG.md b/node_modules/argparse/CHANGELOG.md new file mode 100644 index 0000000..dc39ed6 --- /dev/null +++ b/node_modules/argparse/CHANGELOG.md @@ -0,0 +1,216 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + + +## [2.0.1] - 2020-08-29 +### Fixed +- Fix issue with `process.argv` when used with interpreters (`coffee`, `ts-node`, etc.), #150. + + +## [2.0.0] - 2020-08-14 +### Changed +- Full rewrite. Now port from python 3.9.0 & more precise following. + See [doc](./doc) for difference and migration info. +- node.js 10+ required +- Removed most of local docs in favour of original ones. + + +## [1.0.10] - 2018-02-15 +### Fixed +- Use .concat instead of + for arrays, #122. + + +## [1.0.9] - 2016-09-29 +### Changed +- Rerelease after 1.0.8 - deps cleanup. + + +## [1.0.8] - 2016-09-29 +### Changed +- Maintenance (deps bump, fix node 6.5+ tests, coverage report). + + +## [1.0.7] - 2016-03-17 +### Changed +- Teach `addArgument` to accept string arg names. #97, @tomxtobin. + + +## [1.0.6] - 2016-02-06 +### Changed +- Maintenance: moved to eslint & updated CS. + + +## [1.0.5] - 2016-02-05 +### Changed +- Removed lodash dependency to significantly reduce install size. + Thanks to @mourner. + + +## [1.0.4] - 2016-01-17 +### Changed +- Maintenance: lodash update to 4.0.0. + + +## [1.0.3] - 2015-10-27 +### Fixed +- Fix parse `=` in args: `--examplepath="C:\myfolder\env=x64"`. #84, @CatWithApple. + + +## [1.0.2] - 2015-03-22 +### Changed +- Relaxed lodash version dependency. + + +## [1.0.1] - 2015-02-20 +### Changed +- Changed dependencies to be compatible with ancient nodejs. + + +## [1.0.0] - 2015-02-19 +### Changed +- Maintenance release. +- Replaced `underscore` with `lodash`. +- Bumped version to 1.0.0 to better reflect semver meaning. +- HISTORY.md -> CHANGELOG.md + + +## [0.1.16] - 2013-12-01 +### Changed +- Maintenance release. Updated dependencies and docs. + + +## [0.1.15] - 2013-05-13 +### Fixed +- Fixed #55, @trebor89 + + +## [0.1.14] - 2013-05-12 +### Fixed +- Fixed #62, @maxtaco + + +## [0.1.13] - 2013-04-08 +### Changed +- Added `.npmignore` to reduce package size + + +## [0.1.12] - 2013-02-10 +### Fixed +- Fixed conflictHandler (#46), @hpaulj + + +## [0.1.11] - 2013-02-07 +### Added +- Added 70+ tests (ported from python), @hpaulj +- Added conflictHandler, @applepicke +- Added fromfilePrefixChar, @hpaulj + +### Fixed +- Multiple bugfixes, @hpaulj + + +## [0.1.10] - 2012-12-30 +### Added +- Added [mutual exclusion](http://docs.python.org/dev/library/argparse.html#mutual-exclusion) + support, thanks to @hpaulj + +### Fixed +- Fixed options check for `storeConst` & `appendConst` actions, thanks to @hpaulj + + +## [0.1.9] - 2012-12-27 +### Fixed +- Fixed option dest interferens with other options (issue #23), thanks to @hpaulj +- Fixed default value behavior with `*` positionals, thanks to @hpaulj +- Improve `getDefault()` behavior, thanks to @hpaulj +- Improve negative argument parsing, thanks to @hpaulj + + +## [0.1.8] - 2012-12-01 +### Fixed +- Fixed parser parents (issue #19), thanks to @hpaulj +- Fixed negative argument parse (issue #20), thanks to @hpaulj + + +## [0.1.7] - 2012-10-14 +### Fixed +- Fixed 'choices' argument parse (issue #16) +- Fixed stderr output (issue #15) + + +## [0.1.6] - 2012-09-09 +### Fixed +- Fixed check for conflict of options (thanks to @tomxtobin) + + +## [0.1.5] - 2012-09-03 +### Fixed +- Fix parser #setDefaults method (thanks to @tomxtobin) + + +## [0.1.4] - 2012-07-30 +### Fixed +- Fixed pseudo-argument support (thanks to @CGamesPlay) +- Fixed addHelp default (should be true), if not set (thanks to @benblank) + + +## [0.1.3] - 2012-06-27 +### Fixed +- Fixed formatter api name: Formatter -> HelpFormatter + + +## [0.1.2] - 2012-05-29 +### Fixed +- Removed excess whitespace in help +- Fixed error reporting, when parcer with subcommands + called with empty arguments + +### Added +- Added basic tests + + +## [0.1.1] - 2012-05-23 +### Fixed +- Fixed line wrapping in help formatter +- Added better error reporting on invalid arguments + + +## [0.1.0] - 2012-05-16 +### Added +- First release. + + +[2.0.1]: https://github.com/nodeca/argparse/compare/2.0.0...2.0.1 +[2.0.0]: https://github.com/nodeca/argparse/compare/1.0.10...2.0.0 +[1.0.10]: https://github.com/nodeca/argparse/compare/1.0.9...1.0.10 +[1.0.9]: https://github.com/nodeca/argparse/compare/1.0.8...1.0.9 +[1.0.8]: https://github.com/nodeca/argparse/compare/1.0.7...1.0.8 +[1.0.7]: https://github.com/nodeca/argparse/compare/1.0.6...1.0.7 +[1.0.6]: https://github.com/nodeca/argparse/compare/1.0.5...1.0.6 +[1.0.5]: https://github.com/nodeca/argparse/compare/1.0.4...1.0.5 +[1.0.4]: https://github.com/nodeca/argparse/compare/1.0.3...1.0.4 +[1.0.3]: https://github.com/nodeca/argparse/compare/1.0.2...1.0.3 +[1.0.2]: https://github.com/nodeca/argparse/compare/1.0.1...1.0.2 +[1.0.1]: https://github.com/nodeca/argparse/compare/1.0.0...1.0.1 +[1.0.0]: https://github.com/nodeca/argparse/compare/0.1.16...1.0.0 +[0.1.16]: https://github.com/nodeca/argparse/compare/0.1.15...0.1.16 +[0.1.15]: https://github.com/nodeca/argparse/compare/0.1.14...0.1.15 +[0.1.14]: https://github.com/nodeca/argparse/compare/0.1.13...0.1.14 +[0.1.13]: https://github.com/nodeca/argparse/compare/0.1.12...0.1.13 +[0.1.12]: https://github.com/nodeca/argparse/compare/0.1.11...0.1.12 +[0.1.11]: https://github.com/nodeca/argparse/compare/0.1.10...0.1.11 +[0.1.10]: https://github.com/nodeca/argparse/compare/0.1.9...0.1.10 +[0.1.9]: https://github.com/nodeca/argparse/compare/0.1.8...0.1.9 +[0.1.8]: https://github.com/nodeca/argparse/compare/0.1.7...0.1.8 +[0.1.7]: https://github.com/nodeca/argparse/compare/0.1.6...0.1.7 +[0.1.6]: https://github.com/nodeca/argparse/compare/0.1.5...0.1.6 +[0.1.5]: https://github.com/nodeca/argparse/compare/0.1.4...0.1.5 +[0.1.4]: https://github.com/nodeca/argparse/compare/0.1.3...0.1.4 +[0.1.3]: https://github.com/nodeca/argparse/compare/0.1.2...0.1.3 +[0.1.2]: https://github.com/nodeca/argparse/compare/0.1.1...0.1.2 +[0.1.1]: https://github.com/nodeca/argparse/compare/0.1.0...0.1.1 +[0.1.0]: https://github.com/nodeca/argparse/releases/tag/0.1.0 diff --git a/node_modules/argparse/LICENSE b/node_modules/argparse/LICENSE new file mode 100644 index 0000000..66a3ac8 --- /dev/null +++ b/node_modules/argparse/LICENSE @@ -0,0 +1,254 @@ +A. HISTORY OF THE SOFTWARE +========================== + +Python was created in the early 1990s by Guido van Rossum at Stichting +Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands +as a successor of a language called ABC. Guido remains Python's +principal author, although it includes many contributions from others. + +In 1995, Guido continued his work on Python at the Corporation for +National Research Initiatives (CNRI, see http://www.cnri.reston.va.us) +in Reston, Virginia where he released several versions of the +software. + +In May 2000, Guido and the Python core development team moved to +BeOpen.com to form the BeOpen PythonLabs team. In October of the same +year, the PythonLabs team moved to Digital Creations, which became +Zope Corporation. In 2001, the Python Software Foundation (PSF, see +https://www.python.org/psf/) was formed, a non-profit organization +created specifically to own Python-related Intellectual Property. +Zope Corporation was a sponsoring member of the PSF. + +All Python releases are Open Source (see http://www.opensource.org for +the Open Source Definition). Historically, most, but not all, Python +releases have also been GPL-compatible; the table below summarizes +the various releases. + + Release Derived Year Owner GPL- + from compatible? (1) + + 0.9.0 thru 1.2 1991-1995 CWI yes + 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes + 1.6 1.5.2 2000 CNRI no + 2.0 1.6 2000 BeOpen.com no + 1.6.1 1.6 2001 CNRI yes (2) + 2.1 2.0+1.6.1 2001 PSF no + 2.0.1 2.0+1.6.1 2001 PSF yes + 2.1.1 2.1+2.0.1 2001 PSF yes + 2.1.2 2.1.1 2002 PSF yes + 2.1.3 2.1.2 2002 PSF yes + 2.2 and above 2.1.1 2001-now PSF yes + +Footnotes: + +(1) GPL-compatible doesn't mean that we're distributing Python under + the GPL. All Python licenses, unlike the GPL, let you distribute + a modified version without making your changes open source. The + GPL-compatible licenses make it possible to combine Python with + other software that is released under the GPL; the others don't. + +(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, + because its license has a choice of law clause. According to + CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1 + is "not incompatible" with the GPL. + +Thanks to the many outside volunteers who have worked under Guido's +direction to make these releases possible. + + +B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON +=============================================================== + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Python Software Foundation; +All Rights Reserved" are retained in Python alone or in any derivative version +prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 +------------------------------------------- + +BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 + +1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an +office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the +Individual or Organization ("Licensee") accessing and otherwise using +this software in source or binary form and its associated +documentation ("the Software"). + +2. Subject to the terms and conditions of this BeOpen Python License +Agreement, BeOpen hereby grants Licensee a non-exclusive, +royalty-free, world-wide license to reproduce, analyze, test, perform +and/or display publicly, prepare derivative works, distribute, and +otherwise use the Software alone or in any derivative version, +provided, however, that the BeOpen Python License is retained in the +Software, alone or in any derivative version prepared by Licensee. + +3. BeOpen is making the Software available to Licensee on an "AS IS" +basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +5. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +6. This License Agreement shall be governed by and interpreted in all +respects by the law of the State of California, excluding conflict of +law provisions. Nothing in this License Agreement shall be deemed to +create any relationship of agency, partnership, or joint venture +between BeOpen and Licensee. This License Agreement does not grant +permission to use BeOpen trademarks or trade names in a trademark +sense to endorse or promote products or services of Licensee, or any +third party. As an exception, the "BeOpen Python" logos available at +http://www.pythonlabs.com/logos.html may be used according to the +permissions granted on that web page. + +7. By copying, installing or otherwise using the software, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 +--------------------------------------- + +1. This LICENSE AGREEMENT is between the Corporation for National +Research Initiatives, having an office at 1895 Preston White Drive, +Reston, VA 20191 ("CNRI"), and the Individual or Organization +("Licensee") accessing and otherwise using Python 1.6.1 software in +source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, CNRI +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python 1.6.1 +alone or in any derivative version, provided, however, that CNRI's +License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) +1995-2001 Corporation for National Research Initiatives; All Rights +Reserved" are retained in Python 1.6.1 alone or in any derivative +version prepared by Licensee. Alternately, in lieu of CNRI's License +Agreement, Licensee may substitute the following text (omitting the +quotes): "Python 1.6.1 is made available subject to the terms and +conditions in CNRI's License Agreement. This Agreement together with +Python 1.6.1 may be located on the Internet using the following +unique, persistent identifier (known as a handle): 1895.22/1013. This +Agreement may also be obtained from a proxy server on the Internet +using the following URL: http://hdl.handle.net/1895.22/1013". + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python 1.6.1 or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python 1.6.1. + +4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" +basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. This License Agreement shall be governed by the federal +intellectual property law of the United States, including without +limitation the federal copyright law, and, to the extent such +U.S. federal law does not apply, by the law of the Commonwealth of +Virginia, excluding Virginia's conflict of law provisions. +Notwithstanding the foregoing, with regard to derivative works based +on Python 1.6.1 that incorporate non-separable material that was +previously distributed under the GNU General Public License (GPL), the +law of the Commonwealth of Virginia shall govern this License +Agreement only as to issues arising under or with respect to +Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this +License Agreement shall be deemed to create any relationship of +agency, partnership, or joint venture between CNRI and Licensee. This +License Agreement does not grant permission to use CNRI trademarks or +trade name in a trademark sense to endorse or promote products or +services of Licensee, or any third party. + +8. By clicking on the "ACCEPT" button where indicated, or by copying, +installing or otherwise using Python 1.6.1, Licensee agrees to be +bound by the terms and conditions of this License Agreement. + + ACCEPT + + +CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, +The Netherlands. All rights reserved. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, 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/node_modules/argparse/README.md b/node_modules/argparse/README.md new file mode 100644 index 0000000..550b5c9 --- /dev/null +++ b/node_modules/argparse/README.md @@ -0,0 +1,84 @@ +argparse +======== + +[![Build Status](https://secure.travis-ci.org/nodeca/argparse.svg?branch=master)](http://travis-ci.org/nodeca/argparse) +[![NPM version](https://img.shields.io/npm/v/argparse.svg)](https://www.npmjs.org/package/argparse) + +CLI arguments parser for node.js, with [sub-commands](https://docs.python.org/3.9/library/argparse.html#sub-commands) support. Port of python's [argparse](http://docs.python.org/dev/library/argparse.html) (version [3.9.0](https://github.com/python/cpython/blob/v3.9.0rc1/Lib/argparse.py)). + +**Difference with original.** + +- JS has no keyword arguments support. + - Pass options instead: `new ArgumentParser({ description: 'example', add_help: true })`. +- JS has no python's types `int`, `float`, ... + - Use string-typed names: `.add_argument('-b', { type: 'int', help: 'help' })`. +- `%r` format specifier uses `require('util').inspect()`. + +More details in [doc](./doc). + + +Example +------- + +`test.js` file: + +```javascript +#!/usr/bin/env node +'use strict'; + +const { ArgumentParser } = require('argparse'); +const { version } = require('./package.json'); + +const parser = new ArgumentParser({ + description: 'Argparse example' +}); + +parser.add_argument('-v', '--version', { action: 'version', version }); +parser.add_argument('-f', '--foo', { help: 'foo bar' }); +parser.add_argument('-b', '--bar', { help: 'bar foo' }); +parser.add_argument('--baz', { help: 'baz bar' }); + +console.dir(parser.parse_args()); +``` + +Display help: + +``` +$ ./test.js -h +usage: test.js [-h] [-v] [-f FOO] [-b BAR] [--baz BAZ] + +Argparse example + +optional arguments: + -h, --help show this help message and exit + -v, --version show program's version number and exit + -f FOO, --foo FOO foo bar + -b BAR, --bar BAR bar foo + --baz BAZ baz bar +``` + +Parse arguments: + +``` +$ ./test.js -f=3 --bar=4 --baz 5 +{ foo: '3', bar: '4', baz: '5' } +``` + + +API docs +-------- + +Since this is a port with minimal divergence, there's no separate documentation. +Use original one instead, with notes about difference. + +1. [Original doc](https://docs.python.org/3.9/library/argparse.html). +2. [Original tutorial](https://docs.python.org/3.9/howto/argparse.html). +3. [Difference with python](./doc). + + +argparse for enterprise +----------------------- + +Available as part of the Tidelift Subscription + +The maintainers of argparse and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-argparse?utm_source=npm-argparse&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/node_modules/argparse/argparse.js b/node_modules/argparse/argparse.js new file mode 100644 index 0000000..2b8c8c6 --- /dev/null +++ b/node_modules/argparse/argparse.js @@ -0,0 +1,3707 @@ +// Port of python's argparse module, version 3.9.0: +// https://github.com/python/cpython/blob/v3.9.0rc1/Lib/argparse.py + +'use strict' + +// Copyright (C) 2010-2020 Python Software Foundation. +// Copyright (C) 2020 argparse.js authors + +/* + * Command-line parsing library + * + * This module is an optparse-inspired command-line parsing library that: + * + * - handles both optional and positional arguments + * - produces highly informative usage messages + * - supports parsers that dispatch to sub-parsers + * + * The following is a simple usage example that sums integers from the + * command-line and writes the result to a file:: + * + * parser = argparse.ArgumentParser( + * description='sum the integers at the command line') + * parser.add_argument( + * 'integers', metavar='int', nargs='+', type=int, + * help='an integer to be summed') + * parser.add_argument( + * '--log', default=sys.stdout, type=argparse.FileType('w'), + * help='the file where the sum should be written') + * args = parser.parse_args() + * args.log.write('%s' % sum(args.integers)) + * args.log.close() + * + * The module contains the following public classes: + * + * - ArgumentParser -- The main entry point for command-line parsing. As the + * example above shows, the add_argument() method is used to populate + * the parser with actions for optional and positional arguments. Then + * the parse_args() method is invoked to convert the args at the + * command-line into an object with attributes. + * + * - ArgumentError -- The exception raised by ArgumentParser objects when + * there are errors with the parser's actions. Errors raised while + * parsing the command-line are caught by ArgumentParser and emitted + * as command-line messages. + * + * - FileType -- A factory for defining types of files to be created. As the + * example above shows, instances of FileType are typically passed as + * the type= argument of add_argument() calls. + * + * - Action -- The base class for parser actions. Typically actions are + * selected by passing strings like 'store_true' or 'append_const' to + * the action= argument of add_argument(). However, for greater + * customization of ArgumentParser actions, subclasses of Action may + * be defined and passed as the action= argument. + * + * - HelpFormatter, RawDescriptionHelpFormatter, RawTextHelpFormatter, + * ArgumentDefaultsHelpFormatter -- Formatter classes which + * may be passed as the formatter_class= argument to the + * ArgumentParser constructor. HelpFormatter is the default, + * RawDescriptionHelpFormatter and RawTextHelpFormatter tell the parser + * not to change the formatting for help text, and + * ArgumentDefaultsHelpFormatter adds information about argument defaults + * to the help. + * + * All other classes in this module are considered implementation details. + * (Also note that HelpFormatter and RawDescriptionHelpFormatter are only + * considered public as object names -- the API of the formatter objects is + * still considered an implementation detail.) + */ + +const SUPPRESS = '==SUPPRESS==' + +const OPTIONAL = '?' +const ZERO_OR_MORE = '*' +const ONE_OR_MORE = '+' +const PARSER = 'A...' +const REMAINDER = '...' +const _UNRECOGNIZED_ARGS_ATTR = '_unrecognized_args' + + +// ================================== +// Utility functions used for porting +// ================================== +const assert = require('assert') +const util = require('util') +const fs = require('fs') +const sub = require('./lib/sub') +const path = require('path') +const repr = util.inspect + +function get_argv() { + // omit first argument (which is assumed to be interpreter - `node`, `coffee`, `ts-node`, etc.) + return process.argv.slice(1) +} + +function get_terminal_size() { + return { + columns: +process.env.COLUMNS || process.stdout.columns || 80 + } +} + +function hasattr(object, name) { + return Object.prototype.hasOwnProperty.call(object, name) +} + +function getattr(object, name, value) { + return hasattr(object, name) ? object[name] : value +} + +function setattr(object, name, value) { + object[name] = value +} + +function setdefault(object, name, value) { + if (!hasattr(object, name)) object[name] = value + return object[name] +} + +function delattr(object, name) { + delete object[name] +} + +function range(from, to, step=1) { + // range(10) is equivalent to range(0, 10) + if (arguments.length === 1) [ to, from ] = [ from, 0 ] + if (typeof from !== 'number' || typeof to !== 'number' || typeof step !== 'number') { + throw new TypeError('argument cannot be interpreted as an integer') + } + if (step === 0) throw new TypeError('range() arg 3 must not be zero') + + let result = [] + if (step > 0) { + for (let i = from; i < to; i += step) result.push(i) + } else { + for (let i = from; i > to; i += step) result.push(i) + } + return result +} + +function splitlines(str, keepends = false) { + let result + if (!keepends) { + result = str.split(/\r\n|[\n\r\v\f\x1c\x1d\x1e\x85\u2028\u2029]/) + } else { + result = [] + let parts = str.split(/(\r\n|[\n\r\v\f\x1c\x1d\x1e\x85\u2028\u2029])/) + for (let i = 0; i < parts.length; i += 2) { + result.push(parts[i] + (i + 1 < parts.length ? parts[i + 1] : '')) + } + } + if (!result[result.length - 1]) result.pop() + return result +} + +function _string_lstrip(string, prefix_chars) { + let idx = 0 + while (idx < string.length && prefix_chars.includes(string[idx])) idx++ + return idx ? string.slice(idx) : string +} + +function _string_split(string, sep, maxsplit) { + let result = string.split(sep) + if (result.length > maxsplit) { + result = result.slice(0, maxsplit).concat([ result.slice(maxsplit).join(sep) ]) + } + return result +} + +function _array_equal(array1, array2) { + if (array1.length !== array2.length) return false + for (let i = 0; i < array1.length; i++) { + if (array1[i] !== array2[i]) return false + } + return true +} + +function _array_remove(array, item) { + let idx = array.indexOf(item) + if (idx === -1) throw new TypeError(sub('%r not in list', item)) + array.splice(idx, 1) +} + +// normalize choices to array; +// this isn't required in python because `in` and `map` operators work with anything, +// but in js dealing with multiple types here is too clunky +function _choices_to_array(choices) { + if (choices === undefined) { + return [] + } else if (Array.isArray(choices)) { + return choices + } else if (choices !== null && typeof choices[Symbol.iterator] === 'function') { + return Array.from(choices) + } else if (typeof choices === 'object' && choices !== null) { + return Object.keys(choices) + } else { + throw new Error(sub('invalid choices value: %r', choices)) + } +} + +// decorator that allows a class to be called without new +function _callable(cls) { + let result = { // object is needed for inferred class name + [cls.name]: function (...args) { + let this_class = new.target === result || !new.target + return Reflect.construct(cls, args, this_class ? cls : new.target) + } + } + result[cls.name].prototype = cls.prototype + // fix default tag for toString, e.g. [object Action] instead of [object Object] + cls.prototype[Symbol.toStringTag] = cls.name + return result[cls.name] +} + +function _alias(object, from, to) { + try { + let name = object.constructor.name + Object.defineProperty(object, from, { + value: util.deprecate(object[to], sub('%s.%s() is renamed to %s.%s()', + name, from, name, to)), + enumerable: false + }) + } catch {} +} + +// decorator that allows snake_case class methods to be called with camelCase and vice versa +function _camelcase_alias(_class) { + for (let name of Object.getOwnPropertyNames(_class.prototype)) { + let camelcase = name.replace(/\w_[a-z]/g, s => s[0] + s[2].toUpperCase()) + if (camelcase !== name) _alias(_class.prototype, camelcase, name) + } + return _class +} + +function _to_legacy_name(key) { + key = key.replace(/\w_[a-z]/g, s => s[0] + s[2].toUpperCase()) + if (key === 'default') key = 'defaultValue' + if (key === 'const') key = 'constant' + return key +} + +function _to_new_name(key) { + if (key === 'defaultValue') key = 'default' + if (key === 'constant') key = 'const' + key = key.replace(/[A-Z]/g, c => '_' + c.toLowerCase()) + return key +} + +// parse options +let no_default = Symbol('no_default_value') +function _parse_opts(args, descriptor) { + function get_name() { + let stack = new Error().stack.split('\n') + .map(x => x.match(/^ at (.*) \(.*\)$/)) + .filter(Boolean) + .map(m => m[1]) + .map(fn => fn.match(/[^ .]*$/)[0]) + + if (stack.length && stack[0] === get_name.name) stack.shift() + if (stack.length && stack[0] === _parse_opts.name) stack.shift() + return stack.length ? stack[0] : '' + } + + args = Array.from(args) + let kwargs = {} + let result = [] + let last_opt = args.length && args[args.length - 1] + + if (typeof last_opt === 'object' && last_opt !== null && !Array.isArray(last_opt) && + (!last_opt.constructor || last_opt.constructor.name === 'Object')) { + kwargs = Object.assign({}, args.pop()) + } + + // LEGACY (v1 compatibility): camelcase + let renames = [] + for (let key of Object.keys(descriptor)) { + let old_name = _to_legacy_name(key) + if (old_name !== key && (old_name in kwargs)) { + if (key in kwargs) { + // default and defaultValue specified at the same time, happens often in old tests + //throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), key)) + } else { + kwargs[key] = kwargs[old_name] + } + renames.push([ old_name, key ]) + delete kwargs[old_name] + } + } + if (renames.length) { + let name = get_name() + deprecate('camelcase_' + name, sub('%s(): following options are renamed: %s', + name, renames.map(([ a, b ]) => sub('%r -> %r', a, b)))) + } + // end + + let missing_positionals = [] + let positional_count = args.length + + for (let [ key, def ] of Object.entries(descriptor)) { + if (key[0] === '*') { + if (key.length > 0 && key[1] === '*') { + // LEGACY (v1 compatibility): camelcase + let renames = [] + for (let key of Object.keys(kwargs)) { + let new_name = _to_new_name(key) + if (new_name !== key && (key in kwargs)) { + if (new_name in kwargs) { + // default and defaultValue specified at the same time, happens often in old tests + //throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), new_name)) + } else { + kwargs[new_name] = kwargs[key] + } + renames.push([ key, new_name ]) + delete kwargs[key] + } + } + if (renames.length) { + let name = get_name() + deprecate('camelcase_' + name, sub('%s(): following options are renamed: %s', + name, renames.map(([ a, b ]) => sub('%r -> %r', a, b)))) + } + // end + result.push(kwargs) + kwargs = {} + } else { + result.push(args) + args = [] + } + } else if (key in kwargs && args.length > 0) { + throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), key)) + } else if (key in kwargs) { + result.push(kwargs[key]) + delete kwargs[key] + } else if (args.length > 0) { + result.push(args.shift()) + } else if (def !== no_default) { + result.push(def) + } else { + missing_positionals.push(key) + } + } + + if (Object.keys(kwargs).length) { + throw new TypeError(sub('%s() got an unexpected keyword argument %r', + get_name(), Object.keys(kwargs)[0])) + } + + if (args.length) { + let from = Object.entries(descriptor).filter(([ k, v ]) => k[0] !== '*' && v !== no_default).length + let to = Object.entries(descriptor).filter(([ k ]) => k[0] !== '*').length + throw new TypeError(sub('%s() takes %s positional argument%s but %s %s given', + get_name(), + from === to ? sub('from %s to %s', from, to) : to, + from === to && to === 1 ? '' : 's', + positional_count, + positional_count === 1 ? 'was' : 'were')) + } + + if (missing_positionals.length) { + let strs = missing_positionals.map(repr) + if (strs.length > 1) strs[strs.length - 1] = 'and ' + strs[strs.length - 1] + let str_joined = strs.join(strs.length === 2 ? '' : ', ') + throw new TypeError(sub('%s() missing %i required positional argument%s: %s', + get_name(), strs.length, strs.length === 1 ? '' : 's', str_joined)) + } + + return result +} + +let _deprecations = {} +function deprecate(id, string) { + _deprecations[id] = _deprecations[id] || util.deprecate(() => {}, string) + _deprecations[id]() +} + + +// ============================= +// Utility functions and classes +// ============================= +function _AttributeHolder(cls = Object) { + /* + * Abstract base class that provides __repr__. + * + * The __repr__ method returns a string in the format:: + * ClassName(attr=name, attr=name, ...) + * The attributes are determined either by a class-level attribute, + * '_kwarg_names', or by inspecting the instance __dict__. + */ + + return class _AttributeHolder extends cls { + [util.inspect.custom]() { + let type_name = this.constructor.name + let arg_strings = [] + let star_args = {} + for (let arg of this._get_args()) { + arg_strings.push(repr(arg)) + } + for (let [ name, value ] of this._get_kwargs()) { + if (/^[a-z_][a-z0-9_$]*$/i.test(name)) { + arg_strings.push(sub('%s=%r', name, value)) + } else { + star_args[name] = value + } + } + if (Object.keys(star_args).length) { + arg_strings.push(sub('**%s', repr(star_args))) + } + return sub('%s(%s)', type_name, arg_strings.join(', ')) + } + + toString() { + return this[util.inspect.custom]() + } + + _get_kwargs() { + return Object.entries(this) + } + + _get_args() { + return [] + } + } +} + + +function _copy_items(items) { + if (items === undefined) { + return [] + } + return items.slice(0) +} + + +// =============== +// Formatting Help +// =============== +const HelpFormatter = _camelcase_alias(_callable(class HelpFormatter { + /* + * Formatter for generating usage messages and argument help strings. + * + * Only the name of this class is considered a public API. All the methods + * provided by the class are considered an implementation detail. + */ + + constructor() { + let [ + prog, + indent_increment, + max_help_position, + width + ] = _parse_opts(arguments, { + prog: no_default, + indent_increment: 2, + max_help_position: 24, + width: undefined + }) + + // default setting for width + if (width === undefined) { + width = get_terminal_size().columns + width -= 2 + } + + this._prog = prog + this._indent_increment = indent_increment + this._max_help_position = Math.min(max_help_position, + Math.max(width - 20, indent_increment * 2)) + this._width = width + + this._current_indent = 0 + this._level = 0 + this._action_max_length = 0 + + this._root_section = this._Section(this, undefined) + this._current_section = this._root_section + + this._whitespace_matcher = /[ \t\n\r\f\v]+/g // equivalent to python /\s+/ with ASCII flag + this._long_break_matcher = /\n\n\n+/g + } + + // =============================== + // Section and indentation methods + // =============================== + _indent() { + this._current_indent += this._indent_increment + this._level += 1 + } + + _dedent() { + this._current_indent -= this._indent_increment + assert(this._current_indent >= 0, 'Indent decreased below 0.') + this._level -= 1 + } + + _add_item(func, args) { + this._current_section.items.push([ func, args ]) + } + + // ======================== + // Message building methods + // ======================== + start_section(heading) { + this._indent() + let section = this._Section(this, this._current_section, heading) + this._add_item(section.format_help.bind(section), []) + this._current_section = section + } + + end_section() { + this._current_section = this._current_section.parent + this._dedent() + } + + add_text(text) { + if (text !== SUPPRESS && text !== undefined) { + this._add_item(this._format_text.bind(this), [text]) + } + } + + add_usage(usage, actions, groups, prefix = undefined) { + if (usage !== SUPPRESS) { + let args = [ usage, actions, groups, prefix ] + this._add_item(this._format_usage.bind(this), args) + } + } + + add_argument(action) { + if (action.help !== SUPPRESS) { + + // find all invocations + let invocations = [this._format_action_invocation(action)] + for (let subaction of this._iter_indented_subactions(action)) { + invocations.push(this._format_action_invocation(subaction)) + } + + // update the maximum item length + let invocation_length = Math.max(...invocations.map(invocation => invocation.length)) + let action_length = invocation_length + this._current_indent + this._action_max_length = Math.max(this._action_max_length, + action_length) + + // add the item to the list + this._add_item(this._format_action.bind(this), [action]) + } + } + + add_arguments(actions) { + for (let action of actions) { + this.add_argument(action) + } + } + + // ======================= + // Help-formatting methods + // ======================= + format_help() { + let help = this._root_section.format_help() + if (help) { + help = help.replace(this._long_break_matcher, '\n\n') + help = help.replace(/^\n+|\n+$/g, '') + '\n' + } + return help + } + + _join_parts(part_strings) { + return part_strings.filter(part => part && part !== SUPPRESS).join('') + } + + _format_usage(usage, actions, groups, prefix) { + if (prefix === undefined) { + prefix = 'usage: ' + } + + // if usage is specified, use that + if (usage !== undefined) { + usage = sub(usage, { prog: this._prog }) + + // if no optionals or positionals are available, usage is just prog + } else if (usage === undefined && !actions.length) { + usage = sub('%(prog)s', { prog: this._prog }) + + // if optionals and positionals are available, calculate usage + } else if (usage === undefined) { + let prog = sub('%(prog)s', { prog: this._prog }) + + // split optionals from positionals + let optionals = [] + let positionals = [] + for (let action of actions) { + if (action.option_strings.length) { + optionals.push(action) + } else { + positionals.push(action) + } + } + + // build full usage string + let action_usage = this._format_actions_usage([].concat(optionals).concat(positionals), groups) + usage = [ prog, action_usage ].map(String).join(' ') + + // wrap the usage parts if it's too long + let text_width = this._width - this._current_indent + if (prefix.length + usage.length > text_width) { + + // break usage into wrappable parts + let part_regexp = /\(.*?\)+(?=\s|$)|\[.*?\]+(?=\s|$)|\S+/g + let opt_usage = this._format_actions_usage(optionals, groups) + let pos_usage = this._format_actions_usage(positionals, groups) + let opt_parts = opt_usage.match(part_regexp) || [] + let pos_parts = pos_usage.match(part_regexp) || [] + assert(opt_parts.join(' ') === opt_usage) + assert(pos_parts.join(' ') === pos_usage) + + // helper for wrapping lines + let get_lines = (parts, indent, prefix = undefined) => { + let lines = [] + let line = [] + let line_len + if (prefix !== undefined) { + line_len = prefix.length - 1 + } else { + line_len = indent.length - 1 + } + for (let part of parts) { + if (line_len + 1 + part.length > text_width && line) { + lines.push(indent + line.join(' ')) + line = [] + line_len = indent.length - 1 + } + line.push(part) + line_len += part.length + 1 + } + if (line.length) { + lines.push(indent + line.join(' ')) + } + if (prefix !== undefined) { + lines[0] = lines[0].slice(indent.length) + } + return lines + } + + let lines + + // if prog is short, follow it with optionals or positionals + if (prefix.length + prog.length <= 0.75 * text_width) { + let indent = ' '.repeat(prefix.length + prog.length + 1) + if (opt_parts.length) { + lines = get_lines([prog].concat(opt_parts), indent, prefix) + lines = lines.concat(get_lines(pos_parts, indent)) + } else if (pos_parts.length) { + lines = get_lines([prog].concat(pos_parts), indent, prefix) + } else { + lines = [prog] + } + + // if prog is long, put it on its own line + } else { + let indent = ' '.repeat(prefix.length) + let parts = [].concat(opt_parts).concat(pos_parts) + lines = get_lines(parts, indent) + if (lines.length > 1) { + lines = [] + lines = lines.concat(get_lines(opt_parts, indent)) + lines = lines.concat(get_lines(pos_parts, indent)) + } + lines = [prog].concat(lines) + } + + // join lines into usage + usage = lines.join('\n') + } + } + + // prefix with 'usage:' + return sub('%s%s\n\n', prefix, usage) + } + + _format_actions_usage(actions, groups) { + // find group indices and identify actions in groups + let group_actions = new Set() + let inserts = {} + for (let group of groups) { + let start = actions.indexOf(group._group_actions[0]) + if (start === -1) { + continue + } else { + let end = start + group._group_actions.length + if (_array_equal(actions.slice(start, end), group._group_actions)) { + for (let action of group._group_actions) { + group_actions.add(action) + } + if (!group.required) { + if (start in inserts) { + inserts[start] += ' [' + } else { + inserts[start] = '[' + } + if (end in inserts) { + inserts[end] += ']' + } else { + inserts[end] = ']' + } + } else { + if (start in inserts) { + inserts[start] += ' (' + } else { + inserts[start] = '(' + } + if (end in inserts) { + inserts[end] += ')' + } else { + inserts[end] = ')' + } + } + for (let i of range(start + 1, end)) { + inserts[i] = '|' + } + } + } + } + + // collect all actions format strings + let parts = [] + for (let [ i, action ] of Object.entries(actions)) { + + // suppressed arguments are marked with None + // remove | separators for suppressed arguments + if (action.help === SUPPRESS) { + parts.push(undefined) + if (inserts[+i] === '|') { + delete inserts[+i] + } else if (inserts[+i + 1] === '|') { + delete inserts[+i + 1] + } + + // produce all arg strings + } else if (!action.option_strings.length) { + let default_value = this._get_default_metavar_for_positional(action) + let part = this._format_args(action, default_value) + + // if it's in a group, strip the outer [] + if (group_actions.has(action)) { + if (part[0] === '[' && part[part.length - 1] === ']') { + part = part.slice(1, -1) + } + } + + // add the action string to the list + parts.push(part) + + // produce the first way to invoke the option in brackets + } else { + let option_string = action.option_strings[0] + let part + + // if the Optional doesn't take a value, format is: + // -s or --long + if (action.nargs === 0) { + part = action.format_usage() + + // if the Optional takes a value, format is: + // -s ARGS or --long ARGS + } else { + let default_value = this._get_default_metavar_for_optional(action) + let args_string = this._format_args(action, default_value) + part = sub('%s %s', option_string, args_string) + } + + // make it look optional if it's not required or in a group + if (!action.required && !group_actions.has(action)) { + part = sub('[%s]', part) + } + + // add the action string to the list + parts.push(part) + } + } + + // insert things at the necessary indices + for (let i of Object.keys(inserts).map(Number).sort((a, b) => b - a)) { + parts.splice(+i, 0, inserts[+i]) + } + + // join all the action items with spaces + let text = parts.filter(Boolean).join(' ') + + // clean up separators for mutually exclusive groups + text = text.replace(/([\[(]) /g, '$1') + text = text.replace(/ ([\])])/g, '$1') + text = text.replace(/[\[(] *[\])]/g, '') + text = text.replace(/\(([^|]*)\)/g, '$1', text) + text = text.trim() + + // return the text + return text + } + + _format_text(text) { + if (text.includes('%(prog)')) { + text = sub(text, { prog: this._prog }) + } + let text_width = Math.max(this._width - this._current_indent, 11) + let indent = ' '.repeat(this._current_indent) + return this._fill_text(text, text_width, indent) + '\n\n' + } + + _format_action(action) { + // determine the required width and the entry label + let help_position = Math.min(this._action_max_length + 2, + this._max_help_position) + let help_width = Math.max(this._width - help_position, 11) + let action_width = help_position - this._current_indent - 2 + let action_header = this._format_action_invocation(action) + let indent_first + + // no help; start on same line and add a final newline + if (!action.help) { + let tup = [ this._current_indent, '', action_header ] + action_header = sub('%*s%s\n', ...tup) + + // short action name; start on the same line and pad two spaces + } else if (action_header.length <= action_width) { + let tup = [ this._current_indent, '', action_width, action_header ] + action_header = sub('%*s%-*s ', ...tup) + indent_first = 0 + + // long action name; start on the next line + } else { + let tup = [ this._current_indent, '', action_header ] + action_header = sub('%*s%s\n', ...tup) + indent_first = help_position + } + + // collect the pieces of the action help + let parts = [action_header] + + // if there was help for the action, add lines of help text + if (action.help) { + let help_text = this._expand_help(action) + let help_lines = this._split_lines(help_text, help_width) + parts.push(sub('%*s%s\n', indent_first, '', help_lines[0])) + for (let line of help_lines.slice(1)) { + parts.push(sub('%*s%s\n', help_position, '', line)) + } + + // or add a newline if the description doesn't end with one + } else if (!action_header.endsWith('\n')) { + parts.push('\n') + } + + // if there are any sub-actions, add their help as well + for (let subaction of this._iter_indented_subactions(action)) { + parts.push(this._format_action(subaction)) + } + + // return a single string + return this._join_parts(parts) + } + + _format_action_invocation(action) { + if (!action.option_strings.length) { + let default_value = this._get_default_metavar_for_positional(action) + let metavar = this._metavar_formatter(action, default_value)(1)[0] + return metavar + + } else { + let parts = [] + + // if the Optional doesn't take a value, format is: + // -s, --long + if (action.nargs === 0) { + parts = parts.concat(action.option_strings) + + // if the Optional takes a value, format is: + // -s ARGS, --long ARGS + } else { + let default_value = this._get_default_metavar_for_optional(action) + let args_string = this._format_args(action, default_value) + for (let option_string of action.option_strings) { + parts.push(sub('%s %s', option_string, args_string)) + } + } + + return parts.join(', ') + } + } + + _metavar_formatter(action, default_metavar) { + let result + if (action.metavar !== undefined) { + result = action.metavar + } else if (action.choices !== undefined) { + let choice_strs = _choices_to_array(action.choices).map(String) + result = sub('{%s}', choice_strs.join(',')) + } else { + result = default_metavar + } + + function format(tuple_size) { + if (Array.isArray(result)) { + return result + } else { + return Array(tuple_size).fill(result) + } + } + return format + } + + _format_args(action, default_metavar) { + let get_metavar = this._metavar_formatter(action, default_metavar) + let result + if (action.nargs === undefined) { + result = sub('%s', ...get_metavar(1)) + } else if (action.nargs === OPTIONAL) { + result = sub('[%s]', ...get_metavar(1)) + } else if (action.nargs === ZERO_OR_MORE) { + let metavar = get_metavar(1) + if (metavar.length === 2) { + result = sub('[%s [%s ...]]', ...metavar) + } else { + result = sub('[%s ...]', ...metavar) + } + } else if (action.nargs === ONE_OR_MORE) { + result = sub('%s [%s ...]', ...get_metavar(2)) + } else if (action.nargs === REMAINDER) { + result = '...' + } else if (action.nargs === PARSER) { + result = sub('%s ...', ...get_metavar(1)) + } else if (action.nargs === SUPPRESS) { + result = '' + } else { + let formats + try { + formats = range(action.nargs).map(() => '%s') + } catch (err) { + throw new TypeError('invalid nargs value') + } + result = sub(formats.join(' '), ...get_metavar(action.nargs)) + } + return result + } + + _expand_help(action) { + let params = Object.assign({ prog: this._prog }, action) + for (let name of Object.keys(params)) { + if (params[name] === SUPPRESS) { + delete params[name] + } + } + for (let name of Object.keys(params)) { + if (params[name] && params[name].name) { + params[name] = params[name].name + } + } + if (params.choices !== undefined) { + let choices_str = _choices_to_array(params.choices).map(String).join(', ') + params.choices = choices_str + } + // LEGACY (v1 compatibility): camelcase + for (let key of Object.keys(params)) { + let old_name = _to_legacy_name(key) + if (old_name !== key) { + params[old_name] = params[key] + } + } + // end + return sub(this._get_help_string(action), params) + } + + * _iter_indented_subactions(action) { + if (typeof action._get_subactions === 'function') { + this._indent() + yield* action._get_subactions() + this._dedent() + } + } + + _split_lines(text, width) { + text = text.replace(this._whitespace_matcher, ' ').trim() + // The textwrap module is used only for formatting help. + // Delay its import for speeding up the common usage of argparse. + let textwrap = require('./lib/textwrap') + return textwrap.wrap(text, { width }) + } + + _fill_text(text, width, indent) { + text = text.replace(this._whitespace_matcher, ' ').trim() + let textwrap = require('./lib/textwrap') + return textwrap.fill(text, { width, + initial_indent: indent, + subsequent_indent: indent }) + } + + _get_help_string(action) { + return action.help + } + + _get_default_metavar_for_optional(action) { + return action.dest.toUpperCase() + } + + _get_default_metavar_for_positional(action) { + return action.dest + } +})) + +HelpFormatter.prototype._Section = _callable(class _Section { + + constructor(formatter, parent, heading = undefined) { + this.formatter = formatter + this.parent = parent + this.heading = heading + this.items = [] + } + + format_help() { + // format the indented section + if (this.parent !== undefined) { + this.formatter._indent() + } + let item_help = this.formatter._join_parts(this.items.map(([ func, args ]) => func.apply(null, args))) + if (this.parent !== undefined) { + this.formatter._dedent() + } + + // return nothing if the section was empty + if (!item_help) { + return '' + } + + // add the heading if the section was non-empty + let heading + if (this.heading !== SUPPRESS && this.heading !== undefined) { + let current_indent = this.formatter._current_indent + heading = sub('%*s%s:\n', current_indent, '', this.heading) + } else { + heading = '' + } + + // join the section-initial newline, the heading and the help + return this.formatter._join_parts(['\n', heading, item_help, '\n']) + } +}) + + +const RawDescriptionHelpFormatter = _camelcase_alias(_callable(class RawDescriptionHelpFormatter extends HelpFormatter { + /* + * Help message formatter which retains any formatting in descriptions. + * + * Only the name of this class is considered a public API. All the methods + * provided by the class are considered an implementation detail. + */ + + _fill_text(text, width, indent) { + return splitlines(text, true).map(line => indent + line).join('') + } +})) + + +const RawTextHelpFormatter = _camelcase_alias(_callable(class RawTextHelpFormatter extends RawDescriptionHelpFormatter { + /* + * Help message formatter which retains formatting of all help text. + * + * Only the name of this class is considered a public API. All the methods + * provided by the class are considered an implementation detail. + */ + + _split_lines(text/*, width*/) { + return splitlines(text) + } +})) + + +const ArgumentDefaultsHelpFormatter = _camelcase_alias(_callable(class ArgumentDefaultsHelpFormatter extends HelpFormatter { + /* + * Help message formatter which adds default values to argument help. + * + * Only the name of this class is considered a public API. All the methods + * provided by the class are considered an implementation detail. + */ + + _get_help_string(action) { + let help = action.help + // LEGACY (v1 compatibility): additional check for defaultValue needed + if (!action.help.includes('%(default)') && !action.help.includes('%(defaultValue)')) { + if (action.default !== SUPPRESS) { + let defaulting_nargs = [OPTIONAL, ZERO_OR_MORE] + if (action.option_strings.length || defaulting_nargs.includes(action.nargs)) { + help += ' (default: %(default)s)' + } + } + } + return help + } +})) + + +const MetavarTypeHelpFormatter = _camelcase_alias(_callable(class MetavarTypeHelpFormatter extends HelpFormatter { + /* + * Help message formatter which uses the argument 'type' as the default + * metavar value (instead of the argument 'dest') + * + * Only the name of this class is considered a public API. All the methods + * provided by the class are considered an implementation detail. + */ + + _get_default_metavar_for_optional(action) { + return typeof action.type === 'function' ? action.type.name : action.type + } + + _get_default_metavar_for_positional(action) { + return typeof action.type === 'function' ? action.type.name : action.type + } +})) + + +// ===================== +// Options and Arguments +// ===================== +function _get_action_name(argument) { + if (argument === undefined) { + return undefined + } else if (argument.option_strings.length) { + return argument.option_strings.join('/') + } else if (![ undefined, SUPPRESS ].includes(argument.metavar)) { + return argument.metavar + } else if (![ undefined, SUPPRESS ].includes(argument.dest)) { + return argument.dest + } else { + return undefined + } +} + + +const ArgumentError = _callable(class ArgumentError extends Error { + /* + * An error from creating or using an argument (optional or positional). + * + * The string value of this exception is the message, augmented with + * information about the argument that caused it. + */ + + constructor(argument, message) { + super() + this.name = 'ArgumentError' + this._argument_name = _get_action_name(argument) + this._message = message + this.message = this.str() + } + + str() { + let format + if (this._argument_name === undefined) { + format = '%(message)s' + } else { + format = 'argument %(argument_name)s: %(message)s' + } + return sub(format, { message: this._message, + argument_name: this._argument_name }) + } +}) + + +const ArgumentTypeError = _callable(class ArgumentTypeError extends Error { + /* + * An error from trying to convert a command line string to a type. + */ + + constructor(message) { + super(message) + this.name = 'ArgumentTypeError' + } +}) + + +// ============== +// Action classes +// ============== +const Action = _camelcase_alias(_callable(class Action extends _AttributeHolder(Function) { + /* + * Information about how to convert command line strings to Python objects. + * + * Action objects are used by an ArgumentParser to represent the information + * needed to parse a single argument from one or more strings from the + * command line. The keyword arguments to the Action constructor are also + * all attributes of Action instances. + * + * Keyword Arguments: + * + * - option_strings -- A list of command-line option strings which + * should be associated with this action. + * + * - dest -- The name of the attribute to hold the created object(s) + * + * - nargs -- The number of command-line arguments that should be + * consumed. By default, one argument will be consumed and a single + * value will be produced. Other values include: + * - N (an integer) consumes N arguments (and produces a list) + * - '?' consumes zero or one arguments + * - '*' consumes zero or more arguments (and produces a list) + * - '+' consumes one or more arguments (and produces a list) + * Note that the difference between the default and nargs=1 is that + * with the default, a single value will be produced, while with + * nargs=1, a list containing a single value will be produced. + * + * - const -- The value to be produced if the option is specified and the + * option uses an action that takes no values. + * + * - default -- The value to be produced if the option is not specified. + * + * - type -- A callable that accepts a single string argument, and + * returns the converted value. The standard Python types str, int, + * float, and complex are useful examples of such callables. If None, + * str is used. + * + * - choices -- A container of values that should be allowed. If not None, + * after a command-line argument has been converted to the appropriate + * type, an exception will be raised if it is not a member of this + * collection. + * + * - required -- True if the action must always be specified at the + * command line. This is only meaningful for optional command-line + * arguments. + * + * - help -- The help string describing the argument. + * + * - metavar -- The name to be used for the option's argument with the + * help string. If None, the 'dest' value will be used as the name. + */ + + constructor() { + let [ + option_strings, + dest, + nargs, + const_value, + default_value, + type, + choices, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + nargs: undefined, + const: undefined, + default: undefined, + type: undefined, + choices: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + // when this class is called as a function, redirect it to .call() method of itself + super('return arguments.callee.call.apply(arguments.callee, arguments)') + + this.option_strings = option_strings + this.dest = dest + this.nargs = nargs + this.const = const_value + this.default = default_value + this.type = type + this.choices = choices + this.required = required + this.help = help + this.metavar = metavar + } + + _get_kwargs() { + let names = [ + 'option_strings', + 'dest', + 'nargs', + 'const', + 'default', + 'type', + 'choices', + 'help', + 'metavar' + ] + return names.map(name => [ name, getattr(this, name) ]) + } + + format_usage() { + return this.option_strings[0] + } + + call(/*parser, namespace, values, option_string = undefined*/) { + throw new Error('.call() not defined') + } +})) + + +const BooleanOptionalAction = _camelcase_alias(_callable(class BooleanOptionalAction extends Action { + + constructor() { + let [ + option_strings, + dest, + default_value, + type, + choices, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + default: undefined, + type: undefined, + choices: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + let _option_strings = [] + for (let option_string of option_strings) { + _option_strings.push(option_string) + + if (option_string.startsWith('--')) { + option_string = '--no-' + option_string.slice(2) + _option_strings.push(option_string) + } + } + + if (help !== undefined && default_value !== undefined) { + help += ` (default: ${default_value})` + } + + super({ + option_strings: _option_strings, + dest, + nargs: 0, + default: default_value, + type, + choices, + required, + help, + metavar + }) + } + + call(parser, namespace, values, option_string = undefined) { + if (this.option_strings.includes(option_string)) { + setattr(namespace, this.dest, !option_string.startsWith('--no-')) + } + } + + format_usage() { + return this.option_strings.join(' | ') + } +})) + + +const _StoreAction = _callable(class _StoreAction extends Action { + + constructor() { + let [ + option_strings, + dest, + nargs, + const_value, + default_value, + type, + choices, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + nargs: undefined, + const: undefined, + default: undefined, + type: undefined, + choices: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + if (nargs === 0) { + throw new TypeError('nargs for store actions must be != 0; if you ' + + 'have nothing to store, actions such as store ' + + 'true or store const may be more appropriate') + } + if (const_value !== undefined && nargs !== OPTIONAL) { + throw new TypeError(sub('nargs must be %r to supply const', OPTIONAL)) + } + super({ + option_strings, + dest, + nargs, + const: const_value, + default: default_value, + type, + choices, + required, + help, + metavar + }) + } + + call(parser, namespace, values/*, option_string = undefined*/) { + setattr(namespace, this.dest, values) + } +}) + + +const _StoreConstAction = _callable(class _StoreConstAction extends Action { + + constructor() { + let [ + option_strings, + dest, + const_value, + default_value, + required, + help + //, metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + const: no_default, + default: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + super({ + option_strings, + dest, + nargs: 0, + const: const_value, + default: default_value, + required, + help + }) + } + + call(parser, namespace/*, values, option_string = undefined*/) { + setattr(namespace, this.dest, this.const) + } +}) + + +const _StoreTrueAction = _callable(class _StoreTrueAction extends _StoreConstAction { + + constructor() { + let [ + option_strings, + dest, + default_value, + required, + help + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + default: false, + required: false, + help: undefined + }) + + super({ + option_strings, + dest, + const: true, + default: default_value, + required, + help + }) + } +}) + + +const _StoreFalseAction = _callable(class _StoreFalseAction extends _StoreConstAction { + + constructor() { + let [ + option_strings, + dest, + default_value, + required, + help + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + default: true, + required: false, + help: undefined + }) + + super({ + option_strings, + dest, + const: false, + default: default_value, + required, + help + }) + } +}) + + +const _AppendAction = _callable(class _AppendAction extends Action { + + constructor() { + let [ + option_strings, + dest, + nargs, + const_value, + default_value, + type, + choices, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + nargs: undefined, + const: undefined, + default: undefined, + type: undefined, + choices: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + if (nargs === 0) { + throw new TypeError('nargs for append actions must be != 0; if arg ' + + 'strings are not supplying the value to append, ' + + 'the append const action may be more appropriate') + } + if (const_value !== undefined && nargs !== OPTIONAL) { + throw new TypeError(sub('nargs must be %r to supply const', OPTIONAL)) + } + super({ + option_strings, + dest, + nargs, + const: const_value, + default: default_value, + type, + choices, + required, + help, + metavar + }) + } + + call(parser, namespace, values/*, option_string = undefined*/) { + let items = getattr(namespace, this.dest, undefined) + items = _copy_items(items) + items.push(values) + setattr(namespace, this.dest, items) + } +}) + + +const _AppendConstAction = _callable(class _AppendConstAction extends Action { + + constructor() { + let [ + option_strings, + dest, + const_value, + default_value, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + const: no_default, + default: undefined, + required: false, + help: undefined, + metavar: undefined + }) + + super({ + option_strings, + dest, + nargs: 0, + const: const_value, + default: default_value, + required, + help, + metavar + }) + } + + call(parser, namespace/*, values, option_string = undefined*/) { + let items = getattr(namespace, this.dest, undefined) + items = _copy_items(items) + items.push(this.const) + setattr(namespace, this.dest, items) + } +}) + + +const _CountAction = _callable(class _CountAction extends Action { + + constructor() { + let [ + option_strings, + dest, + default_value, + required, + help + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: no_default, + default: undefined, + required: false, + help: undefined + }) + + super({ + option_strings, + dest, + nargs: 0, + default: default_value, + required, + help + }) + } + + call(parser, namespace/*, values, option_string = undefined*/) { + let count = getattr(namespace, this.dest, undefined) + if (count === undefined) { + count = 0 + } + setattr(namespace, this.dest, count + 1) + } +}) + + +const _HelpAction = _callable(class _HelpAction extends Action { + + constructor() { + let [ + option_strings, + dest, + default_value, + help + ] = _parse_opts(arguments, { + option_strings: no_default, + dest: SUPPRESS, + default: SUPPRESS, + help: undefined + }) + + super({ + option_strings, + dest, + default: default_value, + nargs: 0, + help + }) + } + + call(parser/*, namespace, values, option_string = undefined*/) { + parser.print_help() + parser.exit() + } +}) + + +const _VersionAction = _callable(class _VersionAction extends Action { + + constructor() { + let [ + option_strings, + version, + dest, + default_value, + help + ] = _parse_opts(arguments, { + option_strings: no_default, + version: undefined, + dest: SUPPRESS, + default: SUPPRESS, + help: "show program's version number and exit" + }) + + super({ + option_strings, + dest, + default: default_value, + nargs: 0, + help + }) + this.version = version + } + + call(parser/*, namespace, values, option_string = undefined*/) { + let version = this.version + if (version === undefined) { + version = parser.version + } + let formatter = parser._get_formatter() + formatter.add_text(version) + parser._print_message(formatter.format_help(), process.stdout) + parser.exit() + } +}) + + +const _SubParsersAction = _camelcase_alias(_callable(class _SubParsersAction extends Action { + + constructor() { + let [ + option_strings, + prog, + parser_class, + dest, + required, + help, + metavar + ] = _parse_opts(arguments, { + option_strings: no_default, + prog: no_default, + parser_class: no_default, + dest: SUPPRESS, + required: false, + help: undefined, + metavar: undefined + }) + + let name_parser_map = {} + + super({ + option_strings, + dest, + nargs: PARSER, + choices: name_parser_map, + required, + help, + metavar + }) + + this._prog_prefix = prog + this._parser_class = parser_class + this._name_parser_map = name_parser_map + this._choices_actions = [] + } + + add_parser() { + let [ + name, + kwargs + ] = _parse_opts(arguments, { + name: no_default, + '**kwargs': no_default + }) + + // set prog from the existing prefix + if (kwargs.prog === undefined) { + kwargs.prog = sub('%s %s', this._prog_prefix, name) + } + + let aliases = getattr(kwargs, 'aliases', []) + delete kwargs.aliases + + // create a pseudo-action to hold the choice help + if ('help' in kwargs) { + let help = kwargs.help + delete kwargs.help + let choice_action = this._ChoicesPseudoAction(name, aliases, help) + this._choices_actions.push(choice_action) + } + + // create the parser and add it to the map + let parser = new this._parser_class(kwargs) + this._name_parser_map[name] = parser + + // make parser available under aliases also + for (let alias of aliases) { + this._name_parser_map[alias] = parser + } + + return parser + } + + _get_subactions() { + return this._choices_actions + } + + call(parser, namespace, values/*, option_string = undefined*/) { + let parser_name = values[0] + let arg_strings = values.slice(1) + + // set the parser name if requested + if (this.dest !== SUPPRESS) { + setattr(namespace, this.dest, parser_name) + } + + // select the parser + if (hasattr(this._name_parser_map, parser_name)) { + parser = this._name_parser_map[parser_name] + } else { + let args = {parser_name, + choices: this._name_parser_map.join(', ')} + let msg = sub('unknown parser %(parser_name)r (choices: %(choices)s)', args) + throw new ArgumentError(this, msg) + } + + // parse all the remaining options into the namespace + // store any unrecognized options on the object, so that the top + // level parser can decide what to do with them + + // In case this subparser defines new defaults, we parse them + // in a new namespace object and then update the original + // namespace for the relevant parts. + let subnamespace + [ subnamespace, arg_strings ] = parser.parse_known_args(arg_strings, undefined) + for (let [ key, value ] of Object.entries(subnamespace)) { + setattr(namespace, key, value) + } + + if (arg_strings.length) { + setdefault(namespace, _UNRECOGNIZED_ARGS_ATTR, []) + getattr(namespace, _UNRECOGNIZED_ARGS_ATTR).push(...arg_strings) + } + } +})) + + +_SubParsersAction.prototype._ChoicesPseudoAction = _callable(class _ChoicesPseudoAction extends Action { + constructor(name, aliases, help) { + let metavar = name, dest = name + if (aliases.length) { + metavar += sub(' (%s)', aliases.join(', ')) + } + super({ option_strings: [], dest, help, metavar }) + } +}) + + +const _ExtendAction = _callable(class _ExtendAction extends _AppendAction { + call(parser, namespace, values/*, option_string = undefined*/) { + let items = getattr(namespace, this.dest, undefined) + items = _copy_items(items) + items = items.concat(values) + setattr(namespace, this.dest, items) + } +}) + + +// ============== +// Type classes +// ============== +const FileType = _callable(class FileType extends Function { + /* + * Factory for creating file object types + * + * Instances of FileType are typically passed as type= arguments to the + * ArgumentParser add_argument() method. + * + * Keyword Arguments: + * - mode -- A string indicating how the file is to be opened. Accepts the + * same values as the builtin open() function. + * - bufsize -- The file's desired buffer size. Accepts the same values as + * the builtin open() function. + * - encoding -- The file's encoding. Accepts the same values as the + * builtin open() function. + * - errors -- A string indicating how encoding and decoding errors are to + * be handled. Accepts the same value as the builtin open() function. + */ + + constructor() { + let [ + flags, + encoding, + mode, + autoClose, + emitClose, + start, + end, + highWaterMark, + fs + ] = _parse_opts(arguments, { + flags: 'r', + encoding: undefined, + mode: undefined, // 0o666 + autoClose: undefined, // true + emitClose: undefined, // false + start: undefined, // 0 + end: undefined, // Infinity + highWaterMark: undefined, // 64 * 1024 + fs: undefined + }) + + // when this class is called as a function, redirect it to .call() method of itself + super('return arguments.callee.call.apply(arguments.callee, arguments)') + + Object.defineProperty(this, 'name', { + get() { + return sub('FileType(%r)', flags) + } + }) + this._flags = flags + this._options = {} + if (encoding !== undefined) this._options.encoding = encoding + if (mode !== undefined) this._options.mode = mode + if (autoClose !== undefined) this._options.autoClose = autoClose + if (emitClose !== undefined) this._options.emitClose = emitClose + if (start !== undefined) this._options.start = start + if (end !== undefined) this._options.end = end + if (highWaterMark !== undefined) this._options.highWaterMark = highWaterMark + if (fs !== undefined) this._options.fs = fs + } + + call(string) { + // the special argument "-" means sys.std{in,out} + if (string === '-') { + if (this._flags.includes('r')) { + return process.stdin + } else if (this._flags.includes('w')) { + return process.stdout + } else { + let msg = sub('argument "-" with mode %r', this._flags) + throw new TypeError(msg) + } + } + + // all other arguments are used as file names + let fd + try { + fd = fs.openSync(string, this._flags, this._options.mode) + } catch (e) { + let args = { filename: string, error: e.message } + let message = "can't open '%(filename)s': %(error)s" + throw new ArgumentTypeError(sub(message, args)) + } + + let options = Object.assign({ fd, flags: this._flags }, this._options) + if (this._flags.includes('r')) { + return fs.createReadStream(undefined, options) + } else if (this._flags.includes('w')) { + return fs.createWriteStream(undefined, options) + } else { + let msg = sub('argument "%s" with mode %r', string, this._flags) + throw new TypeError(msg) + } + } + + [util.inspect.custom]() { + let args = [ this._flags ] + let kwargs = Object.entries(this._options).map(([ k, v ]) => { + if (k === 'mode') v = { value: v, [util.inspect.custom]() { return '0o' + this.value.toString(8) } } + return [ k, v ] + }) + let args_str = [] + .concat(args.filter(arg => arg !== -1).map(repr)) + .concat(kwargs.filter(([/*kw*/, arg]) => arg !== undefined) + .map(([kw, arg]) => sub('%s=%r', kw, arg))) + .join(', ') + return sub('%s(%s)', this.constructor.name, args_str) + } + + toString() { + return this[util.inspect.custom]() + } +}) + +// =========================== +// Optional and Positional Parsing +// =========================== +const Namespace = _callable(class Namespace extends _AttributeHolder() { + /* + * Simple object for storing attributes. + * + * Implements equality by attribute names and values, and provides a simple + * string representation. + */ + + constructor(options = {}) { + super() + Object.assign(this, options) + } +}) + +// unset string tag to mimic plain object +Namespace.prototype[Symbol.toStringTag] = undefined + + +const _ActionsContainer = _camelcase_alias(_callable(class _ActionsContainer { + + constructor() { + let [ + description, + prefix_chars, + argument_default, + conflict_handler + ] = _parse_opts(arguments, { + description: no_default, + prefix_chars: no_default, + argument_default: no_default, + conflict_handler: no_default + }) + + this.description = description + this.argument_default = argument_default + this.prefix_chars = prefix_chars + this.conflict_handler = conflict_handler + + // set up registries + this._registries = {} + + // register actions + this.register('action', undefined, _StoreAction) + this.register('action', 'store', _StoreAction) + this.register('action', 'store_const', _StoreConstAction) + this.register('action', 'store_true', _StoreTrueAction) + this.register('action', 'store_false', _StoreFalseAction) + this.register('action', 'append', _AppendAction) + this.register('action', 'append_const', _AppendConstAction) + this.register('action', 'count', _CountAction) + this.register('action', 'help', _HelpAction) + this.register('action', 'version', _VersionAction) + this.register('action', 'parsers', _SubParsersAction) + this.register('action', 'extend', _ExtendAction) + // LEGACY (v1 compatibility): camelcase variants + ;[ 'storeConst', 'storeTrue', 'storeFalse', 'appendConst' ].forEach(old_name => { + let new_name = _to_new_name(old_name) + this.register('action', old_name, util.deprecate(this._registry_get('action', new_name), + sub('{action: "%s"} is renamed to {action: "%s"}', old_name, new_name))) + }) + // end + + // raise an exception if the conflict handler is invalid + this._get_handler() + + // action storage + this._actions = [] + this._option_string_actions = {} + + // groups + this._action_groups = [] + this._mutually_exclusive_groups = [] + + // defaults storage + this._defaults = {} + + // determines whether an "option" looks like a negative number + this._negative_number_matcher = /^-\d+$|^-\d*\.\d+$/ + + // whether or not there are any optionals that look like negative + // numbers -- uses a list so it can be shared and edited + this._has_negative_number_optionals = [] + } + + // ==================== + // Registration methods + // ==================== + register(registry_name, value, object) { + let registry = setdefault(this._registries, registry_name, {}) + registry[value] = object + } + + _registry_get(registry_name, value, default_value = undefined) { + return getattr(this._registries[registry_name], value, default_value) + } + + // ================================== + // Namespace default accessor methods + // ================================== + set_defaults(kwargs) { + Object.assign(this._defaults, kwargs) + + // if these defaults match any existing arguments, replace + // the previous default on the object with the new one + for (let action of this._actions) { + if (action.dest in kwargs) { + action.default = kwargs[action.dest] + } + } + } + + get_default(dest) { + for (let action of this._actions) { + if (action.dest === dest && action.default !== undefined) { + return action.default + } + } + return this._defaults[dest] + } + + + // ======================= + // Adding argument actions + // ======================= + add_argument() { + /* + * add_argument(dest, ..., name=value, ...) + * add_argument(option_string, option_string, ..., name=value, ...) + */ + let [ + args, + kwargs + ] = _parse_opts(arguments, { + '*args': no_default, + '**kwargs': no_default + }) + // LEGACY (v1 compatibility), old-style add_argument([ args ], { options }) + if (args.length === 1 && Array.isArray(args[0])) { + args = args[0] + deprecate('argument-array', + sub('use add_argument(%(args)s, {...}) instead of add_argument([ %(args)s ], { ... })', { + args: args.map(repr).join(', ') + })) + } + // end + + // if no positional args are supplied or only one is supplied and + // it doesn't look like an option string, parse a positional + // argument + let chars = this.prefix_chars + if (!args.length || args.length === 1 && !chars.includes(args[0][0])) { + if (args.length && 'dest' in kwargs) { + throw new TypeError('dest supplied twice for positional argument') + } + kwargs = this._get_positional_kwargs(...args, kwargs) + + // otherwise, we're adding an optional argument + } else { + kwargs = this._get_optional_kwargs(...args, kwargs) + } + + // if no default was supplied, use the parser-level default + if (!('default' in kwargs)) { + let dest = kwargs.dest + if (dest in this._defaults) { + kwargs.default = this._defaults[dest] + } else if (this.argument_default !== undefined) { + kwargs.default = this.argument_default + } + } + + // create the action object, and add it to the parser + let action_class = this._pop_action_class(kwargs) + if (typeof action_class !== 'function') { + throw new TypeError(sub('unknown action "%s"', action_class)) + } + // eslint-disable-next-line new-cap + let action = new action_class(kwargs) + + // raise an error if the action type is not callable + let type_func = this._registry_get('type', action.type, action.type) + if (typeof type_func !== 'function') { + throw new TypeError(sub('%r is not callable', type_func)) + } + + if (type_func === FileType) { + throw new TypeError(sub('%r is a FileType class object, instance of it' + + ' must be passed', type_func)) + } + + // raise an error if the metavar does not match the type + if ('_get_formatter' in this) { + try { + this._get_formatter()._format_args(action, undefined) + } catch (err) { + // check for 'invalid nargs value' is an artifact of TypeError and ValueError in js being the same + if (err instanceof TypeError && err.message !== 'invalid nargs value') { + throw new TypeError('length of metavar tuple does not match nargs') + } else { + throw err + } + } + } + + return this._add_action(action) + } + + add_argument_group() { + let group = _ArgumentGroup(this, ...arguments) + this._action_groups.push(group) + return group + } + + add_mutually_exclusive_group() { + // eslint-disable-next-line no-use-before-define + let group = _MutuallyExclusiveGroup(this, ...arguments) + this._mutually_exclusive_groups.push(group) + return group + } + + _add_action(action) { + // resolve any conflicts + this._check_conflict(action) + + // add to actions list + this._actions.push(action) + action.container = this + + // index the action by any option strings it has + for (let option_string of action.option_strings) { + this._option_string_actions[option_string] = action + } + + // set the flag if any option strings look like negative numbers + for (let option_string of action.option_strings) { + if (this._negative_number_matcher.test(option_string)) { + if (!this._has_negative_number_optionals.length) { + this._has_negative_number_optionals.push(true) + } + } + } + + // return the created action + return action + } + + _remove_action(action) { + _array_remove(this._actions, action) + } + + _add_container_actions(container) { + // collect groups by titles + let title_group_map = {} + for (let group of this._action_groups) { + if (group.title in title_group_map) { + let msg = 'cannot merge actions - two groups are named %r' + throw new TypeError(sub(msg, group.title)) + } + title_group_map[group.title] = group + } + + // map each action to its group + let group_map = new Map() + for (let group of container._action_groups) { + + // if a group with the title exists, use that, otherwise + // create a new group matching the container's group + if (!(group.title in title_group_map)) { + title_group_map[group.title] = this.add_argument_group({ + title: group.title, + description: group.description, + conflict_handler: group.conflict_handler + }) + } + + // map the actions to their new group + for (let action of group._group_actions) { + group_map.set(action, title_group_map[group.title]) + } + } + + // add container's mutually exclusive groups + // NOTE: if add_mutually_exclusive_group ever gains title= and + // description= then this code will need to be expanded as above + for (let group of container._mutually_exclusive_groups) { + let mutex_group = this.add_mutually_exclusive_group({ + required: group.required + }) + + // map the actions to their new mutex group + for (let action of group._group_actions) { + group_map.set(action, mutex_group) + } + } + + // add all actions to this container or their group + for (let action of container._actions) { + group_map.get(action)._add_action(action) + } + } + + _get_positional_kwargs() { + let [ + dest, + kwargs + ] = _parse_opts(arguments, { + dest: no_default, + '**kwargs': no_default + }) + + // make sure required is not specified + if ('required' in kwargs) { + let msg = "'required' is an invalid argument for positionals" + throw new TypeError(msg) + } + + // mark positional arguments as required if at least one is + // always required + if (![OPTIONAL, ZERO_OR_MORE].includes(kwargs.nargs)) { + kwargs.required = true + } + if (kwargs.nargs === ZERO_OR_MORE && !('default' in kwargs)) { + kwargs.required = true + } + + // return the keyword arguments with no option strings + return Object.assign(kwargs, { dest, option_strings: [] }) + } + + _get_optional_kwargs() { + let [ + args, + kwargs + ] = _parse_opts(arguments, { + '*args': no_default, + '**kwargs': no_default + }) + + // determine short and long option strings + let option_strings = [] + let long_option_strings = [] + let option_string + for (option_string of args) { + // error on strings that don't start with an appropriate prefix + if (!this.prefix_chars.includes(option_string[0])) { + let args = {option: option_string, + prefix_chars: this.prefix_chars} + let msg = 'invalid option string %(option)r: ' + + 'must start with a character %(prefix_chars)r' + throw new TypeError(sub(msg, args)) + } + + // strings starting with two prefix characters are long options + option_strings.push(option_string) + if (option_string.length > 1 && this.prefix_chars.includes(option_string[1])) { + long_option_strings.push(option_string) + } + } + + // infer destination, '--foo-bar' -> 'foo_bar' and '-x' -> 'x' + let dest = kwargs.dest + delete kwargs.dest + if (dest === undefined) { + let dest_option_string + if (long_option_strings.length) { + dest_option_string = long_option_strings[0] + } else { + dest_option_string = option_strings[0] + } + dest = _string_lstrip(dest_option_string, this.prefix_chars) + if (!dest) { + let msg = 'dest= is required for options like %r' + throw new TypeError(sub(msg, option_string)) + } + dest = dest.replace(/-/g, '_') + } + + // return the updated keyword arguments + return Object.assign(kwargs, { dest, option_strings }) + } + + _pop_action_class(kwargs, default_value = undefined) { + let action = getattr(kwargs, 'action', default_value) + delete kwargs.action + return this._registry_get('action', action, action) + } + + _get_handler() { + // determine function from conflict handler string + let handler_func_name = sub('_handle_conflict_%s', this.conflict_handler) + if (typeof this[handler_func_name] === 'function') { + return this[handler_func_name] + } else { + let msg = 'invalid conflict_resolution value: %r' + throw new TypeError(sub(msg, this.conflict_handler)) + } + } + + _check_conflict(action) { + + // find all options that conflict with this option + let confl_optionals = [] + for (let option_string of action.option_strings) { + if (hasattr(this._option_string_actions, option_string)) { + let confl_optional = this._option_string_actions[option_string] + confl_optionals.push([ option_string, confl_optional ]) + } + } + + // resolve any conflicts + if (confl_optionals.length) { + let conflict_handler = this._get_handler() + conflict_handler.call(this, action, confl_optionals) + } + } + + _handle_conflict_error(action, conflicting_actions) { + let message = conflicting_actions.length === 1 ? + 'conflicting option string: %s' : + 'conflicting option strings: %s' + let conflict_string = conflicting_actions.map(([ option_string/*, action*/ ]) => option_string).join(', ') + throw new ArgumentError(action, sub(message, conflict_string)) + } + + _handle_conflict_resolve(action, conflicting_actions) { + + // remove all conflicting options + for (let [ option_string, action ] of conflicting_actions) { + + // remove the conflicting option + _array_remove(action.option_strings, option_string) + delete this._option_string_actions[option_string] + + // if the option now has no option string, remove it from the + // container holding it + if (!action.option_strings.length) { + action.container._remove_action(action) + } + } + } +})) + + +const _ArgumentGroup = _callable(class _ArgumentGroup extends _ActionsContainer { + + constructor() { + let [ + container, + title, + description, + kwargs + ] = _parse_opts(arguments, { + container: no_default, + title: undefined, + description: undefined, + '**kwargs': no_default + }) + + // add any missing keyword arguments by checking the container + setdefault(kwargs, 'conflict_handler', container.conflict_handler) + setdefault(kwargs, 'prefix_chars', container.prefix_chars) + setdefault(kwargs, 'argument_default', container.argument_default) + super(Object.assign({ description }, kwargs)) + + // group attributes + this.title = title + this._group_actions = [] + + // share most attributes with the container + this._registries = container._registries + this._actions = container._actions + this._option_string_actions = container._option_string_actions + this._defaults = container._defaults + this._has_negative_number_optionals = + container._has_negative_number_optionals + this._mutually_exclusive_groups = container._mutually_exclusive_groups + } + + _add_action(action) { + action = super._add_action(action) + this._group_actions.push(action) + return action + } + + _remove_action(action) { + super._remove_action(action) + _array_remove(this._group_actions, action) + } +}) + + +const _MutuallyExclusiveGroup = _callable(class _MutuallyExclusiveGroup extends _ArgumentGroup { + + constructor() { + let [ + container, + required + ] = _parse_opts(arguments, { + container: no_default, + required: false + }) + + super(container) + this.required = required + this._container = container + } + + _add_action(action) { + if (action.required) { + let msg = 'mutually exclusive arguments must be optional' + throw new TypeError(msg) + } + action = this._container._add_action(action) + this._group_actions.push(action) + return action + } + + _remove_action(action) { + this._container._remove_action(action) + _array_remove(this._group_actions, action) + } +}) + + +const ArgumentParser = _camelcase_alias(_callable(class ArgumentParser extends _AttributeHolder(_ActionsContainer) { + /* + * Object for parsing command line strings into Python objects. + * + * Keyword Arguments: + * - prog -- The name of the program (default: sys.argv[0]) + * - usage -- A usage message (default: auto-generated from arguments) + * - description -- A description of what the program does + * - epilog -- Text following the argument descriptions + * - parents -- Parsers whose arguments should be copied into this one + * - formatter_class -- HelpFormatter class for printing help messages + * - prefix_chars -- Characters that prefix optional arguments + * - fromfile_prefix_chars -- Characters that prefix files containing + * additional arguments + * - argument_default -- The default value for all arguments + * - conflict_handler -- String indicating how to handle conflicts + * - add_help -- Add a -h/-help option + * - allow_abbrev -- Allow long options to be abbreviated unambiguously + * - exit_on_error -- Determines whether or not ArgumentParser exits with + * error info when an error occurs + */ + + constructor() { + let [ + prog, + usage, + description, + epilog, + parents, + formatter_class, + prefix_chars, + fromfile_prefix_chars, + argument_default, + conflict_handler, + add_help, + allow_abbrev, + exit_on_error, + debug, // LEGACY (v1 compatibility), debug mode + version // LEGACY (v1 compatibility), version + ] = _parse_opts(arguments, { + prog: undefined, + usage: undefined, + description: undefined, + epilog: undefined, + parents: [], + formatter_class: HelpFormatter, + prefix_chars: '-', + fromfile_prefix_chars: undefined, + argument_default: undefined, + conflict_handler: 'error', + add_help: true, + allow_abbrev: true, + exit_on_error: true, + debug: undefined, // LEGACY (v1 compatibility), debug mode + version: undefined // LEGACY (v1 compatibility), version + }) + + // LEGACY (v1 compatibility) + if (debug !== undefined) { + deprecate('debug', + 'The "debug" argument to ArgumentParser is deprecated. Please ' + + 'override ArgumentParser.exit function instead.' + ) + } + + if (version !== undefined) { + deprecate('version', + 'The "version" argument to ArgumentParser is deprecated. Please use ' + + "add_argument(..., { action: 'version', version: 'N', ... }) instead." + ) + } + // end + + super({ + description, + prefix_chars, + argument_default, + conflict_handler + }) + + // default setting for prog + if (prog === undefined) { + prog = path.basename(get_argv()[0] || '') + } + + this.prog = prog + this.usage = usage + this.epilog = epilog + this.formatter_class = formatter_class + this.fromfile_prefix_chars = fromfile_prefix_chars + this.add_help = add_help + this.allow_abbrev = allow_abbrev + this.exit_on_error = exit_on_error + // LEGACY (v1 compatibility), debug mode + this.debug = debug + // end + + this._positionals = this.add_argument_group('positional arguments') + this._optionals = this.add_argument_group('optional arguments') + this._subparsers = undefined + + // register types + function identity(string) { + return string + } + this.register('type', undefined, identity) + this.register('type', null, identity) + this.register('type', 'auto', identity) + this.register('type', 'int', function (x) { + let result = Number(x) + if (!Number.isInteger(result)) { + throw new TypeError(sub('could not convert string to int: %r', x)) + } + return result + }) + this.register('type', 'float', function (x) { + let result = Number(x) + if (isNaN(result)) { + throw new TypeError(sub('could not convert string to float: %r', x)) + } + return result + }) + this.register('type', 'str', String) + // LEGACY (v1 compatibility): custom types + this.register('type', 'string', + util.deprecate(String, 'use {type:"str"} or {type:String} instead of {type:"string"}')) + // end + + // add help argument if necessary + // (using explicit default to override global argument_default) + let default_prefix = prefix_chars.includes('-') ? '-' : prefix_chars[0] + if (this.add_help) { + this.add_argument( + default_prefix + 'h', + default_prefix.repeat(2) + 'help', + { + action: 'help', + default: SUPPRESS, + help: 'show this help message and exit' + } + ) + } + // LEGACY (v1 compatibility), version + if (version) { + this.add_argument( + default_prefix + 'v', + default_prefix.repeat(2) + 'version', + { + action: 'version', + default: SUPPRESS, + version: this.version, + help: "show program's version number and exit" + } + ) + } + // end + + // add parent arguments and defaults + for (let parent of parents) { + this._add_container_actions(parent) + Object.assign(this._defaults, parent._defaults) + } + } + + // ======================= + // Pretty __repr__ methods + // ======================= + _get_kwargs() { + let names = [ + 'prog', + 'usage', + 'description', + 'formatter_class', + 'conflict_handler', + 'add_help' + ] + return names.map(name => [ name, getattr(this, name) ]) + } + + // ================================== + // Optional/Positional adding methods + // ================================== + add_subparsers() { + let [ + kwargs + ] = _parse_opts(arguments, { + '**kwargs': no_default + }) + + if (this._subparsers !== undefined) { + this.error('cannot have multiple subparser arguments') + } + + // add the parser class to the arguments if it's not present + setdefault(kwargs, 'parser_class', this.constructor) + + if ('title' in kwargs || 'description' in kwargs) { + let title = getattr(kwargs, 'title', 'subcommands') + let description = getattr(kwargs, 'description', undefined) + delete kwargs.title + delete kwargs.description + this._subparsers = this.add_argument_group(title, description) + } else { + this._subparsers = this._positionals + } + + // prog defaults to the usage message of this parser, skipping + // optional arguments and with no "usage:" prefix + if (kwargs.prog === undefined) { + let formatter = this._get_formatter() + let positionals = this._get_positional_actions() + let groups = this._mutually_exclusive_groups + formatter.add_usage(this.usage, positionals, groups, '') + kwargs.prog = formatter.format_help().trim() + } + + // create the parsers action and add it to the positionals list + let parsers_class = this._pop_action_class(kwargs, 'parsers') + // eslint-disable-next-line new-cap + let action = new parsers_class(Object.assign({ option_strings: [] }, kwargs)) + this._subparsers._add_action(action) + + // return the created parsers action + return action + } + + _add_action(action) { + if (action.option_strings.length) { + this._optionals._add_action(action) + } else { + this._positionals._add_action(action) + } + return action + } + + _get_optional_actions() { + return this._actions.filter(action => action.option_strings.length) + } + + _get_positional_actions() { + return this._actions.filter(action => !action.option_strings.length) + } + + // ===================================== + // Command line argument parsing methods + // ===================================== + parse_args(args = undefined, namespace = undefined) { + let argv + [ args, argv ] = this.parse_known_args(args, namespace) + if (argv && argv.length > 0) { + let msg = 'unrecognized arguments: %s' + this.error(sub(msg, argv.join(' '))) + } + return args + } + + parse_known_args(args = undefined, namespace = undefined) { + if (args === undefined) { + args = get_argv().slice(1) + } + + // default Namespace built from parser defaults + if (namespace === undefined) { + namespace = new Namespace() + } + + // add any action defaults that aren't present + for (let action of this._actions) { + if (action.dest !== SUPPRESS) { + if (!hasattr(namespace, action.dest)) { + if (action.default !== SUPPRESS) { + setattr(namespace, action.dest, action.default) + } + } + } + } + + // add any parser defaults that aren't present + for (let dest of Object.keys(this._defaults)) { + if (!hasattr(namespace, dest)) { + setattr(namespace, dest, this._defaults[dest]) + } + } + + // parse the arguments and exit if there are any errors + if (this.exit_on_error) { + try { + [ namespace, args ] = this._parse_known_args(args, namespace) + } catch (err) { + if (err instanceof ArgumentError) { + this.error(err.message) + } else { + throw err + } + } + } else { + [ namespace, args ] = this._parse_known_args(args, namespace) + } + + if (hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR)) { + args = args.concat(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR)) + delattr(namespace, _UNRECOGNIZED_ARGS_ATTR) + } + + return [ namespace, args ] + } + + _parse_known_args(arg_strings, namespace) { + // replace arg strings that are file references + if (this.fromfile_prefix_chars !== undefined) { + arg_strings = this._read_args_from_files(arg_strings) + } + + // map all mutually exclusive arguments to the other arguments + // they can't occur with + let action_conflicts = new Map() + for (let mutex_group of this._mutually_exclusive_groups) { + let group_actions = mutex_group._group_actions + for (let [ i, mutex_action ] of Object.entries(mutex_group._group_actions)) { + let conflicts = action_conflicts.get(mutex_action) || [] + conflicts = conflicts.concat(group_actions.slice(0, +i)) + conflicts = conflicts.concat(group_actions.slice(+i + 1)) + action_conflicts.set(mutex_action, conflicts) + } + } + + // find all option indices, and determine the arg_string_pattern + // which has an 'O' if there is an option at an index, + // an 'A' if there is an argument, or a '-' if there is a '--' + let option_string_indices = {} + let arg_string_pattern_parts = [] + let arg_strings_iter = Object.entries(arg_strings)[Symbol.iterator]() + for (let [ i, arg_string ] of arg_strings_iter) { + + // all args after -- are non-options + if (arg_string === '--') { + arg_string_pattern_parts.push('-') + for ([ i, arg_string ] of arg_strings_iter) { + arg_string_pattern_parts.push('A') + } + + // otherwise, add the arg to the arg strings + // and note the index if it was an option + } else { + let option_tuple = this._parse_optional(arg_string) + let pattern + if (option_tuple === undefined) { + pattern = 'A' + } else { + option_string_indices[i] = option_tuple + pattern = 'O' + } + arg_string_pattern_parts.push(pattern) + } + } + + // join the pieces together to form the pattern + let arg_strings_pattern = arg_string_pattern_parts.join('') + + // converts arg strings to the appropriate and then takes the action + let seen_actions = new Set() + let seen_non_default_actions = new Set() + let extras + + let take_action = (action, argument_strings, option_string = undefined) => { + seen_actions.add(action) + let argument_values = this._get_values(action, argument_strings) + + // error if this argument is not allowed with other previously + // seen arguments, assuming that actions that use the default + // value don't really count as "present" + if (argument_values !== action.default) { + seen_non_default_actions.add(action) + for (let conflict_action of action_conflicts.get(action) || []) { + if (seen_non_default_actions.has(conflict_action)) { + let msg = 'not allowed with argument %s' + let action_name = _get_action_name(conflict_action) + throw new ArgumentError(action, sub(msg, action_name)) + } + } + } + + // take the action if we didn't receive a SUPPRESS value + // (e.g. from a default) + if (argument_values !== SUPPRESS) { + action(this, namespace, argument_values, option_string) + } + } + + // function to convert arg_strings into an optional action + let consume_optional = start_index => { + + // get the optional identified at this index + let option_tuple = option_string_indices[start_index] + let [ action, option_string, explicit_arg ] = option_tuple + + // identify additional optionals in the same arg string + // (e.g. -xyz is the same as -x -y -z if no args are required) + let action_tuples = [] + let stop + for (;;) { + + // if we found no optional action, skip it + if (action === undefined) { + extras.push(arg_strings[start_index]) + return start_index + 1 + } + + // if there is an explicit argument, try to match the + // optional's string arguments to only this + if (explicit_arg !== undefined) { + let arg_count = this._match_argument(action, 'A') + + // if the action is a single-dash option and takes no + // arguments, try to parse more single-dash options out + // of the tail of the option string + let chars = this.prefix_chars + if (arg_count === 0 && !chars.includes(option_string[1])) { + action_tuples.push([ action, [], option_string ]) + let char = option_string[0] + option_string = char + explicit_arg[0] + let new_explicit_arg = explicit_arg.slice(1) || undefined + let optionals_map = this._option_string_actions + if (hasattr(optionals_map, option_string)) { + action = optionals_map[option_string] + explicit_arg = new_explicit_arg + } else { + let msg = 'ignored explicit argument %r' + throw new ArgumentError(action, sub(msg, explicit_arg)) + } + + // if the action expect exactly one argument, we've + // successfully matched the option; exit the loop + } else if (arg_count === 1) { + stop = start_index + 1 + let args = [ explicit_arg ] + action_tuples.push([ action, args, option_string ]) + break + + // error if a double-dash option did not use the + // explicit argument + } else { + let msg = 'ignored explicit argument %r' + throw new ArgumentError(action, sub(msg, explicit_arg)) + } + + // if there is no explicit argument, try to match the + // optional's string arguments with the following strings + // if successful, exit the loop + } else { + let start = start_index + 1 + let selected_patterns = arg_strings_pattern.slice(start) + let arg_count = this._match_argument(action, selected_patterns) + stop = start + arg_count + let args = arg_strings.slice(start, stop) + action_tuples.push([ action, args, option_string ]) + break + } + } + + // add the Optional to the list and return the index at which + // the Optional's string args stopped + assert(action_tuples.length) + for (let [ action, args, option_string ] of action_tuples) { + take_action(action, args, option_string) + } + return stop + } + + // the list of Positionals left to be parsed; this is modified + // by consume_positionals() + let positionals = this._get_positional_actions() + + // function to convert arg_strings into positional actions + let consume_positionals = start_index => { + // match as many Positionals as possible + let selected_pattern = arg_strings_pattern.slice(start_index) + let arg_counts = this._match_arguments_partial(positionals, selected_pattern) + + // slice off the appropriate arg strings for each Positional + // and add the Positional and its args to the list + for (let i = 0; i < positionals.length && i < arg_counts.length; i++) { + let action = positionals[i] + let arg_count = arg_counts[i] + let args = arg_strings.slice(start_index, start_index + arg_count) + start_index += arg_count + take_action(action, args) + } + + // slice off the Positionals that we just parsed and return the + // index at which the Positionals' string args stopped + positionals = positionals.slice(arg_counts.length) + return start_index + } + + // consume Positionals and Optionals alternately, until we have + // passed the last option string + extras = [] + let start_index = 0 + let max_option_string_index = Math.max(-1, ...Object.keys(option_string_indices).map(Number)) + while (start_index <= max_option_string_index) { + + // consume any Positionals preceding the next option + let next_option_string_index = Math.min( + // eslint-disable-next-line no-loop-func + ...Object.keys(option_string_indices).map(Number).filter(index => index >= start_index) + ) + if (start_index !== next_option_string_index) { + let positionals_end_index = consume_positionals(start_index) + + // only try to parse the next optional if we didn't consume + // the option string during the positionals parsing + if (positionals_end_index > start_index) { + start_index = positionals_end_index + continue + } else { + start_index = positionals_end_index + } + } + + // if we consumed all the positionals we could and we're not + // at the index of an option string, there were extra arguments + if (!(start_index in option_string_indices)) { + let strings = arg_strings.slice(start_index, next_option_string_index) + extras = extras.concat(strings) + start_index = next_option_string_index + } + + // consume the next optional and any arguments for it + start_index = consume_optional(start_index) + } + + // consume any positionals following the last Optional + let stop_index = consume_positionals(start_index) + + // if we didn't consume all the argument strings, there were extras + extras = extras.concat(arg_strings.slice(stop_index)) + + // make sure all required actions were present and also convert + // action defaults which were not given as arguments + let required_actions = [] + for (let action of this._actions) { + if (!seen_actions.has(action)) { + if (action.required) { + required_actions.push(_get_action_name(action)) + } else { + // Convert action default now instead of doing it before + // parsing arguments to avoid calling convert functions + // twice (which may fail) if the argument was given, but + // only if it was defined already in the namespace + if (action.default !== undefined && + typeof action.default === 'string' && + hasattr(namespace, action.dest) && + action.default === getattr(namespace, action.dest)) { + setattr(namespace, action.dest, + this._get_value(action, action.default)) + } + } + } + } + + if (required_actions.length) { + this.error(sub('the following arguments are required: %s', + required_actions.join(', '))) + } + + // make sure all required groups had one option present + for (let group of this._mutually_exclusive_groups) { + if (group.required) { + let no_actions_used = true + for (let action of group._group_actions) { + if (seen_non_default_actions.has(action)) { + no_actions_used = false + break + } + } + + // if no actions were used, report the error + if (no_actions_used) { + let names = group._group_actions + .filter(action => action.help !== SUPPRESS) + .map(action => _get_action_name(action)) + let msg = 'one of the arguments %s is required' + this.error(sub(msg, names.join(' '))) + } + } + } + + // return the updated namespace and the extra arguments + return [ namespace, extras ] + } + + _read_args_from_files(arg_strings) { + // expand arguments referencing files + let new_arg_strings = [] + for (let arg_string of arg_strings) { + + // for regular arguments, just add them back into the list + if (!arg_string || !this.fromfile_prefix_chars.includes(arg_string[0])) { + new_arg_strings.push(arg_string) + + // replace arguments referencing files with the file content + } else { + try { + let args_file = fs.readFileSync(arg_string.slice(1), 'utf8') + let arg_strings = [] + for (let arg_line of splitlines(args_file)) { + for (let arg of this.convert_arg_line_to_args(arg_line)) { + arg_strings.push(arg) + } + } + arg_strings = this._read_args_from_files(arg_strings) + new_arg_strings = new_arg_strings.concat(arg_strings) + } catch (err) { + this.error(err.message) + } + } + } + + // return the modified argument list + return new_arg_strings + } + + convert_arg_line_to_args(arg_line) { + return [arg_line] + } + + _match_argument(action, arg_strings_pattern) { + // match the pattern for this action to the arg strings + let nargs_pattern = this._get_nargs_pattern(action) + let match = arg_strings_pattern.match(new RegExp('^' + nargs_pattern)) + + // raise an exception if we weren't able to find a match + if (match === null) { + let nargs_errors = { + undefined: 'expected one argument', + [OPTIONAL]: 'expected at most one argument', + [ONE_OR_MORE]: 'expected at least one argument' + } + let msg = nargs_errors[action.nargs] + if (msg === undefined) { + msg = sub(action.nargs === 1 ? 'expected %s argument' : 'expected %s arguments', action.nargs) + } + throw new ArgumentError(action, msg) + } + + // return the number of arguments matched + return match[1].length + } + + _match_arguments_partial(actions, arg_strings_pattern) { + // progressively shorten the actions list by slicing off the + // final actions until we find a match + let result = [] + for (let i of range(actions.length, 0, -1)) { + let actions_slice = actions.slice(0, i) + let pattern = actions_slice.map(action => this._get_nargs_pattern(action)).join('') + let match = arg_strings_pattern.match(new RegExp('^' + pattern)) + if (match !== null) { + result = result.concat(match.slice(1).map(string => string.length)) + break + } + } + + // return the list of arg string counts + return result + } + + _parse_optional(arg_string) { + // if it's an empty string, it was meant to be a positional + if (!arg_string) { + return undefined + } + + // if it doesn't start with a prefix, it was meant to be positional + if (!this.prefix_chars.includes(arg_string[0])) { + return undefined + } + + // if the option string is present in the parser, return the action + if (arg_string in this._option_string_actions) { + let action = this._option_string_actions[arg_string] + return [ action, arg_string, undefined ] + } + + // if it's just a single character, it was meant to be positional + if (arg_string.length === 1) { + return undefined + } + + // if the option string before the "=" is present, return the action + if (arg_string.includes('=')) { + let [ option_string, explicit_arg ] = _string_split(arg_string, '=', 1) + if (option_string in this._option_string_actions) { + let action = this._option_string_actions[option_string] + return [ action, option_string, explicit_arg ] + } + } + + // search through all possible prefixes of the option string + // and all actions in the parser for possible interpretations + let option_tuples = this._get_option_tuples(arg_string) + + // if multiple actions match, the option string was ambiguous + if (option_tuples.length > 1) { + let options = option_tuples.map(([ /*action*/, option_string/*, explicit_arg*/ ]) => option_string).join(', ') + let args = {option: arg_string, matches: options} + let msg = 'ambiguous option: %(option)s could match %(matches)s' + this.error(sub(msg, args)) + + // if exactly one action matched, this segmentation is good, + // so return the parsed action + } else if (option_tuples.length === 1) { + let [ option_tuple ] = option_tuples + return option_tuple + } + + // if it was not found as an option, but it looks like a negative + // number, it was meant to be positional + // unless there are negative-number-like options + if (this._negative_number_matcher.test(arg_string)) { + if (!this._has_negative_number_optionals.length) { + return undefined + } + } + + // if it contains a space, it was meant to be a positional + if (arg_string.includes(' ')) { + return undefined + } + + // it was meant to be an optional but there is no such option + // in this parser (though it might be a valid option in a subparser) + return [ undefined, arg_string, undefined ] + } + + _get_option_tuples(option_string) { + let result = [] + + // option strings starting with two prefix characters are only + // split at the '=' + let chars = this.prefix_chars + if (chars.includes(option_string[0]) && chars.includes(option_string[1])) { + if (this.allow_abbrev) { + let option_prefix, explicit_arg + if (option_string.includes('=')) { + [ option_prefix, explicit_arg ] = _string_split(option_string, '=', 1) + } else { + option_prefix = option_string + explicit_arg = undefined + } + for (let option_string of Object.keys(this._option_string_actions)) { + if (option_string.startsWith(option_prefix)) { + let action = this._option_string_actions[option_string] + let tup = [ action, option_string, explicit_arg ] + result.push(tup) + } + } + } + + // single character options can be concatenated with their arguments + // but multiple character options always have to have their argument + // separate + } else if (chars.includes(option_string[0]) && !chars.includes(option_string[1])) { + let option_prefix = option_string + let explicit_arg = undefined + let short_option_prefix = option_string.slice(0, 2) + let short_explicit_arg = option_string.slice(2) + + for (let option_string of Object.keys(this._option_string_actions)) { + if (option_string === short_option_prefix) { + let action = this._option_string_actions[option_string] + let tup = [ action, option_string, short_explicit_arg ] + result.push(tup) + } else if (option_string.startsWith(option_prefix)) { + let action = this._option_string_actions[option_string] + let tup = [ action, option_string, explicit_arg ] + result.push(tup) + } + } + + // shouldn't ever get here + } else { + this.error(sub('unexpected option string: %s', option_string)) + } + + // return the collected option tuples + return result + } + + _get_nargs_pattern(action) { + // in all examples below, we have to allow for '--' args + // which are represented as '-' in the pattern + let nargs = action.nargs + let nargs_pattern + + // the default (None) is assumed to be a single argument + if (nargs === undefined) { + nargs_pattern = '(-*A-*)' + + // allow zero or one arguments + } else if (nargs === OPTIONAL) { + nargs_pattern = '(-*A?-*)' + + // allow zero or more arguments + } else if (nargs === ZERO_OR_MORE) { + nargs_pattern = '(-*[A-]*)' + + // allow one or more arguments + } else if (nargs === ONE_OR_MORE) { + nargs_pattern = '(-*A[A-]*)' + + // allow any number of options or arguments + } else if (nargs === REMAINDER) { + nargs_pattern = '([-AO]*)' + + // allow one argument followed by any number of options or arguments + } else if (nargs === PARSER) { + nargs_pattern = '(-*A[-AO]*)' + + // suppress action, like nargs=0 + } else if (nargs === SUPPRESS) { + nargs_pattern = '(-*-*)' + + // all others should be integers + } else { + nargs_pattern = sub('(-*%s-*)', 'A'.repeat(nargs).split('').join('-*')) + } + + // if this is an optional action, -- is not allowed + if (action.option_strings.length) { + nargs_pattern = nargs_pattern.replace(/-\*/g, '') + nargs_pattern = nargs_pattern.replace(/-/g, '') + } + + // return the pattern + return nargs_pattern + } + + // ======================== + // Alt command line argument parsing, allowing free intermix + // ======================== + + parse_intermixed_args(args = undefined, namespace = undefined) { + let argv + [ args, argv ] = this.parse_known_intermixed_args(args, namespace) + if (argv.length) { + let msg = 'unrecognized arguments: %s' + this.error(sub(msg, argv.join(' '))) + } + return args + } + + parse_known_intermixed_args(args = undefined, namespace = undefined) { + // returns a namespace and list of extras + // + // positional can be freely intermixed with optionals. optionals are + // first parsed with all positional arguments deactivated. The 'extras' + // are then parsed. If the parser definition is incompatible with the + // intermixed assumptions (e.g. use of REMAINDER, subparsers) a + // TypeError is raised. + // + // positionals are 'deactivated' by setting nargs and default to + // SUPPRESS. This blocks the addition of that positional to the + // namespace + + let extras + let positionals = this._get_positional_actions() + let a = positionals.filter(action => [ PARSER, REMAINDER ].includes(action.nargs)) + if (a.length) { + throw new TypeError(sub('parse_intermixed_args: positional arg' + + ' with nargs=%s', a[0].nargs)) + } + + for (let group of this._mutually_exclusive_groups) { + for (let action of group._group_actions) { + if (positionals.includes(action)) { + throw new TypeError('parse_intermixed_args: positional in' + + ' mutuallyExclusiveGroup') + } + } + } + + let save_usage + try { + save_usage = this.usage + let remaining_args + try { + if (this.usage === undefined) { + // capture the full usage for use in error messages + this.usage = this.format_usage().slice(7) + } + for (let action of positionals) { + // deactivate positionals + action.save_nargs = action.nargs + // action.nargs = 0 + action.nargs = SUPPRESS + action.save_default = action.default + action.default = SUPPRESS + } + [ namespace, remaining_args ] = this.parse_known_args(args, + namespace) + for (let action of positionals) { + // remove the empty positional values from namespace + let attr = getattr(namespace, action.dest) + if (Array.isArray(attr) && attr.length === 0) { + // eslint-disable-next-line no-console + console.warn(sub('Do not expect %s in %s', action.dest, namespace)) + delattr(namespace, action.dest) + } + } + } finally { + // restore nargs and usage before exiting + for (let action of positionals) { + action.nargs = action.save_nargs + action.default = action.save_default + } + } + let optionals = this._get_optional_actions() + try { + // parse positionals. optionals aren't normally required, but + // they could be, so make sure they aren't. + for (let action of optionals) { + action.save_required = action.required + action.required = false + } + for (let group of this._mutually_exclusive_groups) { + group.save_required = group.required + group.required = false + } + [ namespace, extras ] = this.parse_known_args(remaining_args, + namespace) + } finally { + // restore parser values before exiting + for (let action of optionals) { + action.required = action.save_required + } + for (let group of this._mutually_exclusive_groups) { + group.required = group.save_required + } + } + } finally { + this.usage = save_usage + } + return [ namespace, extras ] + } + + // ======================== + // Value conversion methods + // ======================== + _get_values(action, arg_strings) { + // for everything but PARSER, REMAINDER args, strip out first '--' + if (![PARSER, REMAINDER].includes(action.nargs)) { + try { + _array_remove(arg_strings, '--') + } catch (err) {} + } + + let value + // optional argument produces a default when not present + if (!arg_strings.length && action.nargs === OPTIONAL) { + if (action.option_strings.length) { + value = action.const + } else { + value = action.default + } + if (typeof value === 'string') { + value = this._get_value(action, value) + this._check_value(action, value) + } + + // when nargs='*' on a positional, if there were no command-line + // args, use the default if it is anything other than None + } else if (!arg_strings.length && action.nargs === ZERO_OR_MORE && + !action.option_strings.length) { + if (action.default !== undefined) { + value = action.default + } else { + value = arg_strings + } + this._check_value(action, value) + + // single argument or optional argument produces a single value + } else if (arg_strings.length === 1 && [undefined, OPTIONAL].includes(action.nargs)) { + let arg_string = arg_strings[0] + value = this._get_value(action, arg_string) + this._check_value(action, value) + + // REMAINDER arguments convert all values, checking none + } else if (action.nargs === REMAINDER) { + value = arg_strings.map(v => this._get_value(action, v)) + + // PARSER arguments convert all values, but check only the first + } else if (action.nargs === PARSER) { + value = arg_strings.map(v => this._get_value(action, v)) + this._check_value(action, value[0]) + + // SUPPRESS argument does not put anything in the namespace + } else if (action.nargs === SUPPRESS) { + value = SUPPRESS + + // all other types of nargs produce a list + } else { + value = arg_strings.map(v => this._get_value(action, v)) + for (let v of value) { + this._check_value(action, v) + } + } + + // return the converted value + return value + } + + _get_value(action, arg_string) { + let type_func = this._registry_get('type', action.type, action.type) + if (typeof type_func !== 'function') { + let msg = '%r is not callable' + throw new ArgumentError(action, sub(msg, type_func)) + } + + // convert the value to the appropriate type + let result + try { + try { + result = type_func(arg_string) + } catch (err) { + // Dear TC39, why would you ever consider making es6 classes not callable? + // We had one universal interface, [[Call]], which worked for anything + // (with familiar this-instanceof guard for classes). Now we have two. + if (err instanceof TypeError && + /Class constructor .* cannot be invoked without 'new'/.test(err.message)) { + // eslint-disable-next-line new-cap + result = new type_func(arg_string) + } else { + throw err + } + } + + } catch (err) { + // ArgumentTypeErrors indicate errors + if (err instanceof ArgumentTypeError) { + //let name = getattr(action.type, 'name', repr(action.type)) + let msg = err.message + throw new ArgumentError(action, msg) + + // TypeErrors or ValueErrors also indicate errors + } else if (err instanceof TypeError) { + let name = getattr(action.type, 'name', repr(action.type)) + let args = {type: name, value: arg_string} + let msg = 'invalid %(type)s value: %(value)r' + throw new ArgumentError(action, sub(msg, args)) + } else { + throw err + } + } + + // return the converted value + return result + } + + _check_value(action, value) { + // converted value must be one of the choices (if specified) + if (action.choices !== undefined && !_choices_to_array(action.choices).includes(value)) { + let args = {value, + choices: _choices_to_array(action.choices).map(repr).join(', ')} + let msg = 'invalid choice: %(value)r (choose from %(choices)s)' + throw new ArgumentError(action, sub(msg, args)) + } + } + + // ======================= + // Help-formatting methods + // ======================= + format_usage() { + let formatter = this._get_formatter() + formatter.add_usage(this.usage, this._actions, + this._mutually_exclusive_groups) + return formatter.format_help() + } + + format_help() { + let formatter = this._get_formatter() + + // usage + formatter.add_usage(this.usage, this._actions, + this._mutually_exclusive_groups) + + // description + formatter.add_text(this.description) + + // positionals, optionals and user-defined groups + for (let action_group of this._action_groups) { + formatter.start_section(action_group.title) + formatter.add_text(action_group.description) + formatter.add_arguments(action_group._group_actions) + formatter.end_section() + } + + // epilog + formatter.add_text(this.epilog) + + // determine help from format above + return formatter.format_help() + } + + _get_formatter() { + // eslint-disable-next-line new-cap + return new this.formatter_class({ prog: this.prog }) + } + + // ===================== + // Help-printing methods + // ===================== + print_usage(file = undefined) { + if (file === undefined) file = process.stdout + this._print_message(this.format_usage(), file) + } + + print_help(file = undefined) { + if (file === undefined) file = process.stdout + this._print_message(this.format_help(), file) + } + + _print_message(message, file = undefined) { + if (message) { + if (file === undefined) file = process.stderr + file.write(message) + } + } + + // =============== + // Exiting methods + // =============== + exit(status = 0, message = undefined) { + if (message) { + this._print_message(message, process.stderr) + } + process.exit(status) + } + + error(message) { + /* + * error(message: string) + * + * Prints a usage message incorporating the message to stderr and + * exits. + * + * If you override this in a subclass, it should not return -- it + * should either exit or raise an exception. + */ + + // LEGACY (v1 compatibility), debug mode + if (this.debug === true) throw new Error(message) + // end + this.print_usage(process.stderr) + let args = {prog: this.prog, message: message} + this.exit(2, sub('%(prog)s: error: %(message)s\n', args)) + } +})) + + +module.exports = { + ArgumentParser, + ArgumentError, + ArgumentTypeError, + BooleanOptionalAction, + FileType, + HelpFormatter, + ArgumentDefaultsHelpFormatter, + RawDescriptionHelpFormatter, + RawTextHelpFormatter, + MetavarTypeHelpFormatter, + Namespace, + Action, + ONE_OR_MORE, + OPTIONAL, + PARSER, + REMAINDER, + SUPPRESS, + ZERO_OR_MORE +} + +// LEGACY (v1 compatibility), Const alias +Object.defineProperty(module.exports, 'Const', { + get() { + let result = {} + Object.entries({ ONE_OR_MORE, OPTIONAL, PARSER, REMAINDER, SUPPRESS, ZERO_OR_MORE }).forEach(([ n, v ]) => { + Object.defineProperty(result, n, { + get() { + deprecate(n, sub('use argparse.%s instead of argparse.Const.%s', n, n)) + return v + } + }) + }) + Object.entries({ _UNRECOGNIZED_ARGS_ATTR }).forEach(([ n, v ]) => { + Object.defineProperty(result, n, { + get() { + deprecate(n, sub('argparse.Const.%s is an internal symbol and will no longer be available', n)) + return v + } + }) + }) + return result + }, + enumerable: false +}) +// end diff --git a/node_modules/argparse/lib/sub.js b/node_modules/argparse/lib/sub.js new file mode 100644 index 0000000..e3eb321 --- /dev/null +++ b/node_modules/argparse/lib/sub.js @@ -0,0 +1,67 @@ +// Limited implementation of python % string operator, supports only %s and %r for now +// (other formats are not used here, but may appear in custom templates) + +'use strict' + +const { inspect } = require('util') + + +module.exports = function sub(pattern, ...values) { + let regex = /%(?:(%)|(-)?(\*)?(?:\((\w+)\))?([A-Za-z]))/g + + let result = pattern.replace(regex, function (_, is_literal, is_left_align, is_padded, name, format) { + if (is_literal) return '%' + + let padded_count = 0 + if (is_padded) { + if (values.length === 0) throw new TypeError('not enough arguments for format string') + padded_count = values.shift() + if (!Number.isInteger(padded_count)) throw new TypeError('* wants int') + } + + let str + if (name !== undefined) { + let dict = values[0] + if (typeof dict !== 'object' || dict === null) throw new TypeError('format requires a mapping') + if (!(name in dict)) throw new TypeError(`no such key: '${name}'`) + str = dict[name] + } else { + if (values.length === 0) throw new TypeError('not enough arguments for format string') + str = values.shift() + } + + switch (format) { + case 's': + str = String(str) + break + case 'r': + str = inspect(str) + break + case 'd': + case 'i': + if (typeof str !== 'number') { + throw new TypeError(`%${format} format: a number is required, not ${typeof str}`) + } + str = String(str.toFixed(0)) + break + default: + throw new TypeError(`unsupported format character '${format}'`) + } + + if (padded_count > 0) { + return is_left_align ? str.padEnd(padded_count) : str.padStart(padded_count) + } else { + return str + } + }) + + if (values.length) { + if (values.length === 1 && typeof values[0] === 'object' && values[0] !== null) { + // mapping + } else { + throw new TypeError('not all arguments converted during string formatting') + } + } + + return result +} diff --git a/node_modules/argparse/lib/textwrap.js b/node_modules/argparse/lib/textwrap.js new file mode 100644 index 0000000..23d51cd --- /dev/null +++ b/node_modules/argparse/lib/textwrap.js @@ -0,0 +1,440 @@ +// Partial port of python's argparse module, version 3.9.0 (only wrap and fill functions): +// https://github.com/python/cpython/blob/v3.9.0b4/Lib/textwrap.py + +'use strict' + +/* + * Text wrapping and filling. + */ + +// Copyright (C) 1999-2001 Gregory P. Ward. +// Copyright (C) 2002, 2003 Python Software Foundation. +// Copyright (C) 2020 argparse.js authors +// Originally written by Greg Ward + +// Hardcode the recognized whitespace characters to the US-ASCII +// whitespace characters. The main reason for doing this is that +// some Unicode spaces (like \u00a0) are non-breaking whitespaces. +// +// This less funky little regex just split on recognized spaces. E.g. +// "Hello there -- you goof-ball, use the -b option!" +// splits into +// Hello/ /there/ /--/ /you/ /goof-ball,/ /use/ /the/ /-b/ /option!/ +const wordsep_simple_re = /([\t\n\x0b\x0c\r ]+)/ + +class TextWrapper { + /* + * Object for wrapping/filling text. The public interface consists of + * the wrap() and fill() methods; the other methods are just there for + * subclasses to override in order to tweak the default behaviour. + * If you want to completely replace the main wrapping algorithm, + * you'll probably have to override _wrap_chunks(). + * + * Several instance attributes control various aspects of wrapping: + * width (default: 70) + * the maximum width of wrapped lines (unless break_long_words + * is false) + * initial_indent (default: "") + * string that will be prepended to the first line of wrapped + * output. Counts towards the line's width. + * subsequent_indent (default: "") + * string that will be prepended to all lines save the first + * of wrapped output; also counts towards each line's width. + * expand_tabs (default: true) + * Expand tabs in input text to spaces before further processing. + * Each tab will become 0 .. 'tabsize' spaces, depending on its position + * in its line. If false, each tab is treated as a single character. + * tabsize (default: 8) + * Expand tabs in input text to 0 .. 'tabsize' spaces, unless + * 'expand_tabs' is false. + * replace_whitespace (default: true) + * Replace all whitespace characters in the input text by spaces + * after tab expansion. Note that if expand_tabs is false and + * replace_whitespace is true, every tab will be converted to a + * single space! + * fix_sentence_endings (default: false) + * Ensure that sentence-ending punctuation is always followed + * by two spaces. Off by default because the algorithm is + * (unavoidably) imperfect. + * break_long_words (default: true) + * Break words longer than 'width'. If false, those words will not + * be broken, and some lines might be longer than 'width'. + * break_on_hyphens (default: true) + * Allow breaking hyphenated words. If true, wrapping will occur + * preferably on whitespaces and right after hyphens part of + * compound words. + * drop_whitespace (default: true) + * Drop leading and trailing whitespace from lines. + * max_lines (default: None) + * Truncate wrapped lines. + * placeholder (default: ' [...]') + * Append to the last line of truncated text. + */ + + constructor(options = {}) { + let { + width = 70, + initial_indent = '', + subsequent_indent = '', + expand_tabs = true, + replace_whitespace = true, + fix_sentence_endings = false, + break_long_words = true, + drop_whitespace = true, + break_on_hyphens = true, + tabsize = 8, + max_lines = undefined, + placeholder=' [...]' + } = options + + this.width = width + this.initial_indent = initial_indent + this.subsequent_indent = subsequent_indent + this.expand_tabs = expand_tabs + this.replace_whitespace = replace_whitespace + this.fix_sentence_endings = fix_sentence_endings + this.break_long_words = break_long_words + this.drop_whitespace = drop_whitespace + this.break_on_hyphens = break_on_hyphens + this.tabsize = tabsize + this.max_lines = max_lines + this.placeholder = placeholder + } + + + // -- Private methods ----------------------------------------------- + // (possibly useful for subclasses to override) + + _munge_whitespace(text) { + /* + * _munge_whitespace(text : string) -> string + * + * Munge whitespace in text: expand tabs and convert all other + * whitespace characters to spaces. Eg. " foo\\tbar\\n\\nbaz" + * becomes " foo bar baz". + */ + if (this.expand_tabs) { + text = text.replace(/\t/g, ' '.repeat(this.tabsize)) // not strictly correct in js + } + if (this.replace_whitespace) { + text = text.replace(/[\t\n\x0b\x0c\r]/g, ' ') + } + return text + } + + _split(text) { + /* + * _split(text : string) -> [string] + * + * Split the text to wrap into indivisible chunks. Chunks are + * not quite the same as words; see _wrap_chunks() for full + * details. As an example, the text + * Look, goof-ball -- use the -b option! + * breaks into the following chunks: + * 'Look,', ' ', 'goof-', 'ball', ' ', '--', ' ', + * 'use', ' ', 'the', ' ', '-b', ' ', 'option!' + * if break_on_hyphens is True, or in: + * 'Look,', ' ', 'goof-ball', ' ', '--', ' ', + * 'use', ' ', 'the', ' ', '-b', ' ', option!' + * otherwise. + */ + let chunks = text.split(wordsep_simple_re) + chunks = chunks.filter(Boolean) + return chunks + } + + _handle_long_word(reversed_chunks, cur_line, cur_len, width) { + /* + * _handle_long_word(chunks : [string], + * cur_line : [string], + * cur_len : int, width : int) + * + * Handle a chunk of text (most likely a word, not whitespace) that + * is too long to fit in any line. + */ + // Figure out when indent is larger than the specified width, and make + // sure at least one character is stripped off on every pass + let space_left + if (width < 1) { + space_left = 1 + } else { + space_left = width - cur_len + } + + // If we're allowed to break long words, then do so: put as much + // of the next chunk onto the current line as will fit. + if (this.break_long_words) { + cur_line.push(reversed_chunks[reversed_chunks.length - 1].slice(0, space_left)) + reversed_chunks[reversed_chunks.length - 1] = reversed_chunks[reversed_chunks.length - 1].slice(space_left) + + // Otherwise, we have to preserve the long word intact. Only add + // it to the current line if there's nothing already there -- + // that minimizes how much we violate the width constraint. + } else if (!cur_line) { + cur_line.push(...reversed_chunks.pop()) + } + + // If we're not allowed to break long words, and there's already + // text on the current line, do nothing. Next time through the + // main loop of _wrap_chunks(), we'll wind up here again, but + // cur_len will be zero, so the next line will be entirely + // devoted to the long word that we can't handle right now. + } + + _wrap_chunks(chunks) { + /* + * _wrap_chunks(chunks : [string]) -> [string] + * + * Wrap a sequence of text chunks and return a list of lines of + * length 'self.width' or less. (If 'break_long_words' is false, + * some lines may be longer than this.) Chunks correspond roughly + * to words and the whitespace between them: each chunk is + * indivisible (modulo 'break_long_words'), but a line break can + * come between any two chunks. Chunks should not have internal + * whitespace; ie. a chunk is either all whitespace or a "word". + * Whitespace chunks will be removed from the beginning and end of + * lines, but apart from that whitespace is preserved. + */ + let lines = [] + let indent + if (this.width <= 0) { + throw Error(`invalid width ${this.width} (must be > 0)`) + } + if (this.max_lines !== undefined) { + if (this.max_lines > 1) { + indent = this.subsequent_indent + } else { + indent = this.initial_indent + } + if (indent.length + this.placeholder.trimStart().length > this.width) { + throw Error('placeholder too large for max width') + } + } + + // Arrange in reverse order so items can be efficiently popped + // from a stack of chucks. + chunks = chunks.reverse() + + while (chunks.length > 0) { + + // Start the list of chunks that will make up the current line. + // cur_len is just the length of all the chunks in cur_line. + let cur_line = [] + let cur_len = 0 + + // Figure out which static string will prefix this line. + let indent + if (lines) { + indent = this.subsequent_indent + } else { + indent = this.initial_indent + } + + // Maximum width for this line. + let width = this.width - indent.length + + // First chunk on line is whitespace -- drop it, unless this + // is the very beginning of the text (ie. no lines started yet). + if (this.drop_whitespace && chunks[chunks.length - 1].trim() === '' && lines.length > 0) { + chunks.pop() + } + + while (chunks.length > 0) { + let l = chunks[chunks.length - 1].length + + // Can at least squeeze this chunk onto the current line. + if (cur_len + l <= width) { + cur_line.push(chunks.pop()) + cur_len += l + + // Nope, this line is full. + } else { + break + } + } + + // The current line is full, and the next chunk is too big to + // fit on *any* line (not just this one). + if (chunks.length && chunks[chunks.length - 1].length > width) { + this._handle_long_word(chunks, cur_line, cur_len, width) + cur_len = cur_line.map(l => l.length).reduce((a, b) => a + b, 0) + } + + // If the last chunk on this line is all whitespace, drop it. + if (this.drop_whitespace && cur_line.length > 0 && cur_line[cur_line.length - 1].trim() === '') { + cur_len -= cur_line[cur_line.length - 1].length + cur_line.pop() + } + + if (cur_line) { + if (this.max_lines === undefined || + lines.length + 1 < this.max_lines || + (chunks.length === 0 || + this.drop_whitespace && + chunks.length === 1 && + !chunks[0].trim()) && cur_len <= width) { + // Convert current line back to a string and store it in + // list of all lines (return value). + lines.push(indent + cur_line.join('')) + } else { + let had_break = false + while (cur_line) { + if (cur_line[cur_line.length - 1].trim() && + cur_len + this.placeholder.length <= width) { + cur_line.push(this.placeholder) + lines.push(indent + cur_line.join('')) + had_break = true + break + } + cur_len -= cur_line[-1].length + cur_line.pop() + } + if (!had_break) { + if (lines) { + let prev_line = lines[lines.length - 1].trimEnd() + if (prev_line.length + this.placeholder.length <= + this.width) { + lines[lines.length - 1] = prev_line + this.placeholder + break + } + } + lines.push(indent + this.placeholder.lstrip()) + } + break + } + } + } + + return lines + } + + _split_chunks(text) { + text = this._munge_whitespace(text) + return this._split(text) + } + + // -- Public interface ---------------------------------------------- + + wrap(text) { + /* + * wrap(text : string) -> [string] + * + * Reformat the single paragraph in 'text' so it fits in lines of + * no more than 'self.width' columns, and return a list of wrapped + * lines. Tabs in 'text' are expanded with string.expandtabs(), + * and all other whitespace characters (including newline) are + * converted to space. + */ + let chunks = this._split_chunks(text) + // not implemented in js + //if (this.fix_sentence_endings) { + // this._fix_sentence_endings(chunks) + //} + return this._wrap_chunks(chunks) + } + + fill(text) { + /* + * fill(text : string) -> string + * + * Reformat the single paragraph in 'text' to fit in lines of no + * more than 'self.width' columns, and return a new string + * containing the entire wrapped paragraph. + */ + return this.wrap(text).join('\n') + } +} + + +// -- Convenience interface --------------------------------------------- + +function wrap(text, options = {}) { + /* + * Wrap a single paragraph of text, returning a list of wrapped lines. + * + * Reformat the single paragraph in 'text' so it fits in lines of no + * more than 'width' columns, and return a list of wrapped lines. By + * default, tabs in 'text' are expanded with string.expandtabs(), and + * all other whitespace characters (including newline) are converted to + * space. See TextWrapper class for available keyword args to customize + * wrapping behaviour. + */ + let { width = 70, ...kwargs } = options + let w = new TextWrapper(Object.assign({ width }, kwargs)) + return w.wrap(text) +} + +function fill(text, options = {}) { + /* + * Fill a single paragraph of text, returning a new string. + * + * Reformat the single paragraph in 'text' to fit in lines of no more + * than 'width' columns, and return a new string containing the entire + * wrapped paragraph. As with wrap(), tabs are expanded and other + * whitespace characters converted to space. See TextWrapper class for + * available keyword args to customize wrapping behaviour. + */ + let { width = 70, ...kwargs } = options + let w = new TextWrapper(Object.assign({ width }, kwargs)) + return w.fill(text) +} + +// -- Loosely related functionality ------------------------------------- + +let _whitespace_only_re = /^[ \t]+$/mg +let _leading_whitespace_re = /(^[ \t]*)(?:[^ \t\n])/mg + +function dedent(text) { + /* + * Remove any common leading whitespace from every line in `text`. + * + * This can be used to make triple-quoted strings line up with the left + * edge of the display, while still presenting them in the source code + * in indented form. + * + * Note that tabs and spaces are both treated as whitespace, but they + * are not equal: the lines " hello" and "\\thello" are + * considered to have no common leading whitespace. + * + * Entirely blank lines are normalized to a newline character. + */ + // Look for the longest leading string of spaces and tabs common to + // all lines. + let margin = undefined + text = text.replace(_whitespace_only_re, '') + let indents = text.match(_leading_whitespace_re) || [] + for (let indent of indents) { + indent = indent.slice(0, -1) + + if (margin === undefined) { + margin = indent + + // Current line more deeply indented than previous winner: + // no change (previous winner is still on top). + } else if (indent.startsWith(margin)) { + // pass + + // Current line consistent with and no deeper than previous winner: + // it's the new winner. + } else if (margin.startsWith(indent)) { + margin = indent + + // Find the largest common whitespace between current line and previous + // winner. + } else { + for (let i = 0; i < margin.length && i < indent.length; i++) { + if (margin[i] !== indent[i]) { + margin = margin.slice(0, i) + break + } + } + } + } + + if (margin) { + text = text.replace(new RegExp('^' + margin, 'mg'), '') + } + return text +} + +module.exports = { wrap, fill, dedent } diff --git a/node_modules/argparse/package.json b/node_modules/argparse/package.json new file mode 100644 index 0000000..647d2af --- /dev/null +++ b/node_modules/argparse/package.json @@ -0,0 +1,31 @@ +{ + "name": "argparse", + "description": "CLI arguments parser. Native port of python's argparse.", + "version": "2.0.1", + "keywords": [ + "cli", + "parser", + "argparse", + "option", + "args" + ], + "main": "argparse.js", + "files": [ + "argparse.js", + "lib/" + ], + "license": "Python-2.0", + "repository": "nodeca/argparse", + "scripts": { + "lint": "eslint .", + "test": "npm run lint && nyc mocha", + "coverage": "npm run test && nyc report --reporter html" + }, + "devDependencies": { + "@babel/eslint-parser": "^7.11.0", + "@babel/plugin-syntax-class-properties": "^7.10.4", + "eslint": "^7.5.0", + "mocha": "^8.0.1", + "nyc": "^15.1.0" + } +} diff --git a/node_modules/browser-stdout/LICENSE b/node_modules/browser-stdout/LICENSE new file mode 100644 index 0000000..775f6ce --- /dev/null +++ b/node_modules/browser-stdout/LICENSE @@ -0,0 +1,5 @@ +Copyright 2018 kumavis + +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/node_modules/browser-stdout/README.md b/node_modules/browser-stdout/README.md new file mode 100644 index 0000000..f32028a --- /dev/null +++ b/node_modules/browser-stdout/README.md @@ -0,0 +1,40 @@ +### wat? + +`process.stdout` in your browser. + +### wai? + +iono. cuz hakz. + +### hau? + +```js +var BrowserStdout = require('browser-stdout') + +myStream.pipe(BrowserStdout()) +``` + +### monkey + +You can monkey-patch `process.stdout` for your dependency graph like this: + +``` +process.stdout = require('browser-stdout')() +var coolTool = require('module-that-uses-stdout-somewhere-in-its-depths') +``` + +### opts + +opts are passed directly to `stream.Writable`. +additionally, a label arg can be used to label console output. + +```js +BrowserStdout({ + objectMode: true, + label: 'dataz', +}) +``` + +### ur doin it rong + +i accept pr's. \ No newline at end of file diff --git a/node_modules/browser-stdout/index.js b/node_modules/browser-stdout/index.js new file mode 100644 index 0000000..daf39c3 --- /dev/null +++ b/node_modules/browser-stdout/index.js @@ -0,0 +1,25 @@ +var WritableStream = require('stream').Writable +var inherits = require('util').inherits + +module.exports = BrowserStdout + + +inherits(BrowserStdout, WritableStream) + +function BrowserStdout(opts) { + if (!(this instanceof BrowserStdout)) return new BrowserStdout(opts) + + opts = opts || {} + WritableStream.call(this, opts) + this.label = (opts.label !== undefined) ? opts.label : 'stdout' +} + +BrowserStdout.prototype._write = function(chunks, encoding, cb) { + var output = chunks.toString ? chunks.toString() : chunks + if (this.label === false) { + console.log(output) + } else { + console.log(this.label+':', output) + } + process.nextTick(cb) +} diff --git a/node_modules/browser-stdout/package.json b/node_modules/browser-stdout/package.json new file mode 100644 index 0000000..66a054e --- /dev/null +++ b/node_modules/browser-stdout/package.json @@ -0,0 +1,15 @@ +{ + "name": "browser-stdout", + "version": "1.3.1", + "description": "", + "repository": { + "type": "git", + "url": "http://github.com/kumavis/browser-stdout.git" + }, + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "kumavis", + "license": "ISC" +} diff --git a/node_modules/camelcase/index.d.ts b/node_modules/camelcase/index.d.ts new file mode 100644 index 0000000..9db94e5 --- /dev/null +++ b/node_modules/camelcase/index.d.ts @@ -0,0 +1,103 @@ +declare namespace camelcase { + interface Options { + /** + Uppercase the first character: `foo-bar` → `FooBar`. + + @default false + */ + readonly pascalCase?: boolean; + + /** + Preserve the consecutive uppercase characters: `foo-BAR` → `FooBAR`. + + @default false + */ + readonly preserveConsecutiveUppercase?: boolean; + + /** + The locale parameter indicates the locale to be used to convert to upper/lower case according to any locale-specific case mappings. If multiple locales are given in an array, the best available locale is used. + + Setting `locale: false` ignores the platform locale and uses the [Unicode Default Case Conversion](https://unicode-org.github.io/icu/userguide/transforms/casemappings.html#simple-single-character-case-mapping) algorithm. + + Default: The host environment’s current locale. + + @example + ``` + import camelCase = require('camelcase'); + + camelCase('lorem-ipsum', {locale: 'en-US'}); + //=> 'loremIpsum' + camelCase('lorem-ipsum', {locale: 'tr-TR'}); + //=> 'loremİpsum' + camelCase('lorem-ipsum', {locale: ['en-US', 'en-GB']}); + //=> 'loremIpsum' + camelCase('lorem-ipsum', {locale: ['tr', 'TR', 'tr-TR']}); + //=> 'loremİpsum' + ``` + */ + readonly locale?: false | string | readonly string[]; + } +} + +/** +Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`. + +Correctly handles Unicode strings. + +@param input - String to convert to camel case. + +@example +``` +import camelCase = require('camelcase'); + +camelCase('foo-bar'); +//=> 'fooBar' + +camelCase('foo_bar'); +//=> 'fooBar' + +camelCase('Foo-Bar'); +//=> 'fooBar' + +camelCase('розовый_пушистый_единорог'); +//=> 'розовыйПушистыйЕдинорог' + +camelCase('Foo-Bar', {pascalCase: true}); +//=> 'FooBar' + +camelCase('--foo.bar', {pascalCase: false}); +//=> 'fooBar' + +camelCase('Foo-BAR', {preserveConsecutiveUppercase: true}); +//=> 'fooBAR' + +camelCase('fooBAR', {pascalCase: true, preserveConsecutiveUppercase: true})); +//=> 'FooBAR' + +camelCase('foo bar'); +//=> 'fooBar' + +console.log(process.argv[3]); +//=> '--foo-bar' +camelCase(process.argv[3]); +//=> 'fooBar' + +camelCase(['foo', 'bar']); +//=> 'fooBar' + +camelCase(['__foo__', '--bar'], {pascalCase: true}); +//=> 'FooBar' + +camelCase(['foo', 'BAR'], {pascalCase: true, preserveConsecutiveUppercase: true}) +//=> 'FooBAR' + +camelCase('lorem-ipsum', {locale: 'en-US'}); +//=> 'loremIpsum' +``` +*/ +declare function camelcase( + input: string | readonly string[], + options?: camelcase.Options +): string; + +export = camelcase; diff --git a/node_modules/camelcase/index.js b/node_modules/camelcase/index.js new file mode 100644 index 0000000..6ff4ee8 --- /dev/null +++ b/node_modules/camelcase/index.js @@ -0,0 +1,113 @@ +'use strict'; + +const UPPERCASE = /[\p{Lu}]/u; +const LOWERCASE = /[\p{Ll}]/u; +const LEADING_CAPITAL = /^[\p{Lu}](?![\p{Lu}])/gu; +const IDENTIFIER = /([\p{Alpha}\p{N}_]|$)/u; +const SEPARATORS = /[_.\- ]+/; + +const LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source); +const SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu'); +const NUMBERS_AND_IDENTIFIER = new RegExp('\\d+' + IDENTIFIER.source, 'gu'); + +const preserveCamelCase = (string, toLowerCase, toUpperCase) => { + let isLastCharLower = false; + let isLastCharUpper = false; + let isLastLastCharUpper = false; + + for (let i = 0; i < string.length; i++) { + const character = string[i]; + + if (isLastCharLower && UPPERCASE.test(character)) { + string = string.slice(0, i) + '-' + string.slice(i); + isLastCharLower = false; + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = true; + i++; + } else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) { + string = string.slice(0, i - 1) + '-' + string.slice(i - 1); + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = false; + isLastCharLower = true; + } else { + isLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character; + isLastLastCharUpper = isLastCharUpper; + isLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character; + } + } + + return string; +}; + +const preserveConsecutiveUppercase = (input, toLowerCase) => { + LEADING_CAPITAL.lastIndex = 0; + + return input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1)); +}; + +const postProcess = (input, toUpperCase) => { + SEPARATORS_AND_IDENTIFIER.lastIndex = 0; + NUMBERS_AND_IDENTIFIER.lastIndex = 0; + + return input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier)) + .replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m)); +}; + +const camelCase = (input, options) => { + if (!(typeof input === 'string' || Array.isArray(input))) { + throw new TypeError('Expected the input to be `string | string[]`'); + } + + options = { + pascalCase: false, + preserveConsecutiveUppercase: false, + ...options + }; + + if (Array.isArray(input)) { + input = input.map(x => x.trim()) + .filter(x => x.length) + .join('-'); + } else { + input = input.trim(); + } + + if (input.length === 0) { + return ''; + } + + const toLowerCase = options.locale === false ? + string => string.toLowerCase() : + string => string.toLocaleLowerCase(options.locale); + const toUpperCase = options.locale === false ? + string => string.toUpperCase() : + string => string.toLocaleUpperCase(options.locale); + + if (input.length === 1) { + return options.pascalCase ? toUpperCase(input) : toLowerCase(input); + } + + const hasUpperCase = input !== toLowerCase(input); + + if (hasUpperCase) { + input = preserveCamelCase(input, toLowerCase, toUpperCase); + } + + input = input.replace(LEADING_SEPARATORS, ''); + + if (options.preserveConsecutiveUppercase) { + input = preserveConsecutiveUppercase(input, toLowerCase); + } else { + input = toLowerCase(input); + } + + if (options.pascalCase) { + input = toUpperCase(input.charAt(0)) + input.slice(1); + } + + return postProcess(input, toUpperCase); +}; + +module.exports = camelCase; +// TODO: Remove this for the next major release +module.exports.default = camelCase; diff --git a/node_modules/camelcase/license b/node_modules/camelcase/license new file mode 100644 index 0000000..fa7ceba --- /dev/null +++ b/node_modules/camelcase/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://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/node_modules/camelcase/package.json b/node_modules/camelcase/package.json new file mode 100644 index 0000000..c433579 --- /dev/null +++ b/node_modules/camelcase/package.json @@ -0,0 +1,44 @@ +{ + "name": "camelcase", + "version": "6.3.0", + "description": "Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`", + "license": "MIT", + "repository": "sindresorhus/camelcase", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "camelcase", + "camel-case", + "camel", + "case", + "dash", + "hyphen", + "dot", + "underscore", + "separator", + "string", + "text", + "convert", + "pascalcase", + "pascal-case" + ], + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.11.0", + "xo": "^0.28.3" + } +} diff --git a/node_modules/camelcase/readme.md b/node_modules/camelcase/readme.md new file mode 100644 index 0000000..0ff8f9e --- /dev/null +++ b/node_modules/camelcase/readme.md @@ -0,0 +1,144 @@ +# camelcase + +> Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar` + +Correctly handles Unicode strings. + +If you use this on untrusted user input, don't forget to limit the length to something reasonable. + +## Install + +``` +$ npm install camelcase +``` + +*If you need to support Firefox < 78, stay on version 5 as version 6 uses regex features not available in Firefox < 78.* + +## Usage + +```js +const camelCase = require('camelcase'); + +camelCase('foo-bar'); +//=> 'fooBar' + +camelCase('foo_bar'); +//=> 'fooBar' + +camelCase('Foo-Bar'); +//=> 'fooBar' + +camelCase('розовый_пушистый_единорог'); +//=> 'розовыйПушистыйЕдинорог' + +camelCase('Foo-Bar', {pascalCase: true}); +//=> 'FooBar' + +camelCase('--foo.bar', {pascalCase: false}); +//=> 'fooBar' + +camelCase('Foo-BAR', {preserveConsecutiveUppercase: true}); +//=> 'fooBAR' + +camelCase('fooBAR', {pascalCase: true, preserveConsecutiveUppercase: true})); +//=> 'FooBAR' + +camelCase('foo bar'); +//=> 'fooBar' + +console.log(process.argv[3]); +//=> '--foo-bar' +camelCase(process.argv[3]); +//=> 'fooBar' + +camelCase(['foo', 'bar']); +//=> 'fooBar' + +camelCase(['__foo__', '--bar'], {pascalCase: true}); +//=> 'FooBar' + +camelCase(['foo', 'BAR'], {pascalCase: true, preserveConsecutiveUppercase: true}) +//=> 'FooBAR' + +camelCase('lorem-ipsum', {locale: 'en-US'}); +//=> 'loremIpsum' +``` + +## API + +### camelCase(input, options?) + +#### input + +Type: `string | string[]` + +String to convert to camel case. + +#### options + +Type: `object` + +##### pascalCase + +Type: `boolean`\ +Default: `false` + +Uppercase the first character: `foo-bar` → `FooBar` + +##### preserveConsecutiveUppercase + +Type: `boolean`\ +Default: `false` + +Preserve the consecutive uppercase characters: `foo-BAR` → `FooBAR`. + +##### locale + +Type: `false | string | string[]`\ +Default: The host environment’s current locale. + +The locale parameter indicates the locale to be used to convert to upper/lower case according to any locale-specific case mappings. If multiple locales are given in an array, the best available locale is used. + +```js +const camelCase = require('camelcase'); + +camelCase('lorem-ipsum', {locale: 'en-US'}); +//=> 'loremIpsum' + +camelCase('lorem-ipsum', {locale: 'tr-TR'}); +//=> 'loremİpsum' + +camelCase('lorem-ipsum', {locale: ['en-US', 'en-GB']}); +//=> 'loremIpsum' + +camelCase('lorem-ipsum', {locale: ['tr', 'TR', 'tr-TR']}); +//=> 'loremİpsum' +``` + +Setting `locale: false` ignores the platform locale and uses the [Unicode Default Case Conversion](https://unicode-org.github.io/icu/userguide/transforms/casemappings.html#simple-single-character-case-mapping) algorithm: + +```js +const camelCase = require('camelcase'); + +// On a platform with 'tr-TR' + +camelCase('lorem-ipsum'); +//=> 'loremİpsum' + +camelCase('lorem-ipsum', {locale: false}); +//=> 'loremIpsum' +``` + +## camelcase for enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of camelcase and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-camelcase?utm_source=npm-camelcase&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) + +## Related + +- [decamelize](https://github.com/sindresorhus/decamelize) - The inverse of this module +- [uppercamelcase](https://github.com/SamVerschueren/uppercamelcase) - Like this module, but to PascalCase instead of camelCase +- [titleize](https://github.com/sindresorhus/titleize) - Capitalize every word in string +- [humanize-string](https://github.com/sindresorhus/humanize-string) - Convert a camelized/dasherized/underscored string into a humanized one +- [camelcase-keys](https://github.com/sindresorhus/camelcase-keys) - Convert object keys to camel case diff --git a/node_modules/cliui/CHANGELOG.md b/node_modules/cliui/CHANGELOG.md new file mode 100644 index 0000000..d6a7e3f --- /dev/null +++ b/node_modules/cliui/CHANGELOG.md @@ -0,0 +1,121 @@ +# Change Log + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +### [7.0.4](https://www.github.com/yargs/cliui/compare/v7.0.3...v7.0.4) (2020-11-08) + + +### Bug Fixes + +* **deno:** import UIOptions from definitions ([#97](https://www.github.com/yargs/cliui/issues/97)) ([f04f343](https://www.github.com/yargs/cliui/commit/f04f3439bc78114c7e90f82ff56f5acf16268ea8)) + +### [7.0.3](https://www.github.com/yargs/cliui/compare/v7.0.2...v7.0.3) (2020-10-16) + + +### Bug Fixes + +* **exports:** node 13.0 and 13.1 require the dotted object form _with_ a string fallback ([#93](https://www.github.com/yargs/cliui/issues/93)) ([eca16fc](https://www.github.com/yargs/cliui/commit/eca16fc05d26255df3280906c36d7f0e5b05c6e9)) + +### [7.0.2](https://www.github.com/yargs/cliui/compare/v7.0.1...v7.0.2) (2020-10-14) + + +### Bug Fixes + +* **exports:** node 13.0-13.6 require a string fallback ([#91](https://www.github.com/yargs/cliui/issues/91)) ([b529d7e](https://www.github.com/yargs/cliui/commit/b529d7e432901af1af7848b23ed6cf634497d961)) + +### [7.0.1](https://www.github.com/yargs/cliui/compare/v7.0.0...v7.0.1) (2020-08-16) + + +### Bug Fixes + +* **build:** main should be build/index.cjs ([dc29a3c](https://www.github.com/yargs/cliui/commit/dc29a3cc617a410aa850e06337b5954b04f2cb4d)) + +## [7.0.0](https://www.github.com/yargs/cliui/compare/v6.0.0...v7.0.0) (2020-08-16) + + +### ⚠ BREAKING CHANGES + +* tsc/ESM/Deno support (#82) +* modernize deps and build (#80) + +### Build System + +* modernize deps and build ([#80](https://www.github.com/yargs/cliui/issues/80)) ([339d08d](https://www.github.com/yargs/cliui/commit/339d08dc71b15a3928aeab09042af94db2f43743)) + + +### Code Refactoring + +* tsc/ESM/Deno support ([#82](https://www.github.com/yargs/cliui/issues/82)) ([4b777a5](https://www.github.com/yargs/cliui/commit/4b777a5fe01c5d8958c6708695d6aab7dbe5706c)) + +## [6.0.0](https://www.github.com/yargs/cliui/compare/v5.0.0...v6.0.0) (2019-11-10) + + +### ⚠ BREAKING CHANGES + +* update deps, drop Node 6 + +### Code Refactoring + +* update deps, drop Node 6 ([62056df](https://www.github.com/yargs/cliui/commit/62056df)) + +## [5.0.0](https://github.com/yargs/cliui/compare/v4.1.0...v5.0.0) (2019-04-10) + + +### Bug Fixes + +* Update wrap-ansi to fix compatibility with latest versions of chalk. ([#60](https://github.com/yargs/cliui/issues/60)) ([7bf79ae](https://github.com/yargs/cliui/commit/7bf79ae)) + + +### BREAKING CHANGES + +* Drop support for node < 6. + + + + +## [4.1.0](https://github.com/yargs/cliui/compare/v4.0.0...v4.1.0) (2018-04-23) + + +### Features + +* add resetOutput method ([#57](https://github.com/yargs/cliui/issues/57)) ([7246902](https://github.com/yargs/cliui/commit/7246902)) + + + + +## [4.0.0](https://github.com/yargs/cliui/compare/v3.2.0...v4.0.0) (2017-12-18) + + +### Bug Fixes + +* downgrades strip-ansi to version 3.0.1 ([#54](https://github.com/yargs/cliui/issues/54)) ([5764c46](https://github.com/yargs/cliui/commit/5764c46)) +* set env variable FORCE_COLOR. ([#56](https://github.com/yargs/cliui/issues/56)) ([7350e36](https://github.com/yargs/cliui/commit/7350e36)) + + +### Chores + +* drop support for node < 4 ([#53](https://github.com/yargs/cliui/issues/53)) ([b105376](https://github.com/yargs/cliui/commit/b105376)) + + +### Features + +* add fallback for window width ([#45](https://github.com/yargs/cliui/issues/45)) ([d064922](https://github.com/yargs/cliui/commit/d064922)) + + +### BREAKING CHANGES + +* officially drop support for Node < 4 + + + + +## [3.2.0](https://github.com/yargs/cliui/compare/v3.1.2...v3.2.0) (2016-04-11) + + +### Bug Fixes + +* reduces tarball size ([acc6c33](https://github.com/yargs/cliui/commit/acc6c33)) + +### Features + +* adds standard-version for release management ([ff84e32](https://github.com/yargs/cliui/commit/ff84e32)) diff --git a/node_modules/cliui/LICENSE.txt b/node_modules/cliui/LICENSE.txt new file mode 100644 index 0000000..c7e2747 --- /dev/null +++ b/node_modules/cliui/LICENSE.txt @@ -0,0 +1,14 @@ +Copyright (c) 2015, 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/node_modules/cliui/README.md b/node_modules/cliui/README.md new file mode 100644 index 0000000..65b5672 --- /dev/null +++ b/node_modules/cliui/README.md @@ -0,0 +1,141 @@ +# cliui + +![ci](https://github.com/yargs/cliui/workflows/ci/badge.svg) +[![NPM version](https://img.shields.io/npm/v/cliui.svg)](https://www.npmjs.com/package/cliui) +[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) +![nycrc config on GitHub](https://img.shields.io/nycrc/yargs/cliui) + +easily create complex multi-column command-line-interfaces. + +## Example + +```js +const ui = require('cliui')() + +ui.div('Usage: $0 [command] [options]') + +ui.div({ + text: 'Options:', + padding: [2, 0, 1, 0] +}) + +ui.div( + { + text: "-f, --file", + width: 20, + padding: [0, 4, 0, 4] + }, + { + text: "the file to load." + + chalk.green("(if this description is long it wraps).") + , + width: 20 + }, + { + text: chalk.red("[required]"), + align: 'right' + } +) + +console.log(ui.toString()) +``` + +## Deno/ESM Support + +As of `v7` `cliui` supports [Deno](https://github.com/denoland/deno) and +[ESM](https://nodejs.org/api/esm.html#esm_ecmascript_modules): + +```typescript +import cliui from "https://deno.land/x/cliui/deno.ts"; + +const ui = cliui({}) + +ui.div('Usage: $0 [command] [options]') + +ui.div({ + text: 'Options:', + padding: [2, 0, 1, 0] +}) + +ui.div({ + text: "-f, --file", + width: 20, + padding: [0, 4, 0, 4] +}) + +console.log(ui.toString()) +``` + + + +## Layout DSL + +cliui exposes a simple layout DSL: + +If you create a single `ui.div`, passing a string rather than an +object: + +* `\n`: characters will be interpreted as new rows. +* `\t`: characters will be interpreted as new columns. +* `\s`: characters will be interpreted as padding. + +**as an example...** + +```js +var ui = require('./')({ + width: 60 +}) + +ui.div( + 'Usage: node ./bin/foo.js\n' + + ' \t provide a regex\n' + + ' \t provide a glob\t [required]' +) + +console.log(ui.toString()) +``` + +**will output:** + +```shell +Usage: node ./bin/foo.js + provide a regex + provide a glob [required] +``` + +## Methods + +```js +cliui = require('cliui') +``` + +### cliui({width: integer}) + +Specify the maximum width of the UI being generated. +If no width is provided, cliui will try to get the current window's width and use it, and if that doesn't work, width will be set to `80`. + +### cliui({wrap: boolean}) + +Enable or disable the wrapping of text in a column. + +### cliui.div(column, column, column) + +Create a row with any number of columns, a column +can either be a string, or an object with the following +options: + +* **text:** some text to place in the column. +* **width:** the width of a column. +* **align:** alignment, `right` or `center`. +* **padding:** `[top, right, bottom, left]`. +* **border:** should a border be placed around the div? + +### cliui.span(column, column, column) + +Similar to `div`, except the next row will be appended without +a new line being created. + +### cliui.resetOutput() + +Resets the UI elements of the current cliui instance, maintaining the values +set for `width` and `wrap`. diff --git a/node_modules/cliui/build/index.cjs b/node_modules/cliui/build/index.cjs new file mode 100644 index 0000000..82126b6 --- /dev/null +++ b/node_modules/cliui/build/index.cjs @@ -0,0 +1,302 @@ +'use strict'; + +const align = { + right: alignRight, + center: alignCenter +}; +const top = 0; +const right = 1; +const bottom = 2; +const left = 3; +class UI { + constructor(opts) { + var _a; + this.width = opts.width; + this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true; + this.rows = []; + } + span(...args) { + const cols = this.div(...args); + cols.span = true; + } + resetOutput() { + this.rows = []; + } + div(...args) { + if (args.length === 0) { + this.div(''); + } + if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === 'string') { + return this.applyLayoutDSL(args[0]); + } + const cols = args.map(arg => { + if (typeof arg === 'string') { + return this.colFromString(arg); + } + return arg; + }); + this.rows.push(cols); + return cols; + } + shouldApplyLayoutDSL(...args) { + return args.length === 1 && typeof args[0] === 'string' && + /[\t\n]/.test(args[0]); + } + applyLayoutDSL(str) { + const rows = str.split('\n').map(row => row.split('\t')); + let leftColumnWidth = 0; + // simple heuristic for layout, make sure the + // second column lines up along the left-hand. + // don't allow the first column to take up more + // than 50% of the screen. + rows.forEach(columns => { + if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { + leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); + } + }); + // generate a table: + // replacing ' ' with padding calculations. + // using the algorithmically generated width. + rows.forEach(columns => { + this.div(...columns.map((r, i) => { + return { + text: r.trim(), + padding: this.measurePadding(r), + width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined + }; + })); + }); + return this.rows[this.rows.length - 1]; + } + colFromString(text) { + return { + text, + padding: this.measurePadding(text) + }; + } + measurePadding(str) { + // measure padding without ansi escape codes + const noAnsi = mixin.stripAnsi(str); + return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; + } + toString() { + const lines = []; + this.rows.forEach(row => { + this.rowToString(row, lines); + }); + // don't display any lines with the + // hidden flag set. + return lines + .filter(line => !line.hidden) + .map(line => line.text) + .join('\n'); + } + rowToString(row, lines) { + this.rasterize(row).forEach((rrow, r) => { + let str = ''; + rrow.forEach((col, c) => { + const { width } = row[c]; // the width with padding. + const wrapWidth = this.negatePadding(row[c]); // the width without padding. + let ts = col; // temporary string used during alignment/padding. + if (wrapWidth > mixin.stringWidth(col)) { + ts += ' '.repeat(wrapWidth - mixin.stringWidth(col)); + } + // align the string within its column. + if (row[c].align && row[c].align !== 'left' && this.wrap) { + const fn = align[row[c].align]; + ts = fn(ts, wrapWidth); + if (mixin.stringWidth(ts) < wrapWidth) { + ts += ' '.repeat((width || 0) - mixin.stringWidth(ts) - 1); + } + } + // apply border and padding to string. + const padding = row[c].padding || [0, 0, 0, 0]; + if (padding[left]) { + str += ' '.repeat(padding[left]); + } + str += addBorder(row[c], ts, '| '); + str += ts; + str += addBorder(row[c], ts, ' |'); + if (padding[right]) { + str += ' '.repeat(padding[right]); + } + // if prior row is span, try to render the + // current row on the prior line. + if (r === 0 && lines.length > 0) { + str = this.renderInline(str, lines[lines.length - 1]); + } + }); + // remove trailing whitespace. + lines.push({ + text: str.replace(/ +$/, ''), + span: row.span + }); + }); + return lines; + } + // if the full 'source' can render in + // the target line, do so. + renderInline(source, previousLine) { + const match = source.match(/^ */); + const leadingWhitespace = match ? match[0].length : 0; + const target = previousLine.text; + const targetTextWidth = mixin.stringWidth(target.trimRight()); + if (!previousLine.span) { + return source; + } + // if we're not applying wrapping logic, + // just always append to the span. + if (!this.wrap) { + previousLine.hidden = true; + return target + source; + } + if (leadingWhitespace < targetTextWidth) { + return source; + } + previousLine.hidden = true; + return target.trimRight() + ' '.repeat(leadingWhitespace - targetTextWidth) + source.trimLeft(); + } + rasterize(row) { + const rrows = []; + const widths = this.columnWidths(row); + let wrapped; + // word wrap all columns, and create + // a data-structure that is easy to rasterize. + row.forEach((col, c) => { + // leave room for left and right padding. + col.width = widths[c]; + if (this.wrap) { + wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split('\n'); + } + else { + wrapped = col.text.split('\n'); + } + if (col.border) { + wrapped.unshift('.' + '-'.repeat(this.negatePadding(col) + 2) + '.'); + wrapped.push("'" + '-'.repeat(this.negatePadding(col) + 2) + "'"); + } + // add top and bottom padding. + if (col.padding) { + wrapped.unshift(...new Array(col.padding[top] || 0).fill('')); + wrapped.push(...new Array(col.padding[bottom] || 0).fill('')); + } + wrapped.forEach((str, r) => { + if (!rrows[r]) { + rrows.push([]); + } + const rrow = rrows[r]; + for (let i = 0; i < c; i++) { + if (rrow[i] === undefined) { + rrow.push(''); + } + } + rrow.push(str); + }); + }); + return rrows; + } + negatePadding(col) { + let wrapWidth = col.width || 0; + if (col.padding) { + wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); + } + if (col.border) { + wrapWidth -= 4; + } + return wrapWidth; + } + columnWidths(row) { + if (!this.wrap) { + return row.map(col => { + return col.width || mixin.stringWidth(col.text); + }); + } + let unset = row.length; + let remainingWidth = this.width; + // column widths can be set in config. + const widths = row.map(col => { + if (col.width) { + unset--; + remainingWidth -= col.width; + return col.width; + } + return undefined; + }); + // any unset widths should be calculated. + const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; + return widths.map((w, i) => { + if (w === undefined) { + return Math.max(unsetWidth, _minWidth(row[i])); + } + return w; + }); + } +} +function addBorder(col, ts, style) { + if (col.border) { + if (/[.']-+[.']/.test(ts)) { + return ''; + } + if (ts.trim().length !== 0) { + return style; + } + return ' '; + } + return ''; +} +// calculates the minimum width of +// a column, based on padding preferences. +function _minWidth(col) { + const padding = col.padding || []; + const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); + if (col.border) { + return minWidth + 4; + } + return minWidth; +} +function getWindowWidth() { + /* istanbul ignore next: depends on terminal */ + if (typeof process === 'object' && process.stdout && process.stdout.columns) { + return process.stdout.columns; + } + return 80; +} +function alignRight(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + if (strWidth < width) { + return ' '.repeat(width - strWidth) + str; + } + return str; +} +function alignCenter(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + /* istanbul ignore next */ + if (strWidth >= width) { + return str; + } + return ' '.repeat((width - strWidth) >> 1) + str; +} +let mixin; +function cliui(opts, _mixin) { + mixin = _mixin; + return new UI({ + width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(), + wrap: opts === null || opts === void 0 ? void 0 : opts.wrap + }); +} + +// Bootstrap cliui with CommonJS dependencies: +const stringWidth = require('string-width'); +const stripAnsi = require('strip-ansi'); +const wrap = require('wrap-ansi'); +function ui(opts) { + return cliui(opts, { + stringWidth, + stripAnsi, + wrap + }); +} + +module.exports = ui; diff --git a/node_modules/cliui/build/lib/index.js b/node_modules/cliui/build/lib/index.js new file mode 100644 index 0000000..b6eb054 --- /dev/null +++ b/node_modules/cliui/build/lib/index.js @@ -0,0 +1,287 @@ +'use strict'; +const align = { + right: alignRight, + center: alignCenter +}; +const top = 0; +const right = 1; +const bottom = 2; +const left = 3; +export class UI { + constructor(opts) { + var _a; + this.width = opts.width; + this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true; + this.rows = []; + } + span(...args) { + const cols = this.div(...args); + cols.span = true; + } + resetOutput() { + this.rows = []; + } + div(...args) { + if (args.length === 0) { + this.div(''); + } + if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === 'string') { + return this.applyLayoutDSL(args[0]); + } + const cols = args.map(arg => { + if (typeof arg === 'string') { + return this.colFromString(arg); + } + return arg; + }); + this.rows.push(cols); + return cols; + } + shouldApplyLayoutDSL(...args) { + return args.length === 1 && typeof args[0] === 'string' && + /[\t\n]/.test(args[0]); + } + applyLayoutDSL(str) { + const rows = str.split('\n').map(row => row.split('\t')); + let leftColumnWidth = 0; + // simple heuristic for layout, make sure the + // second column lines up along the left-hand. + // don't allow the first column to take up more + // than 50% of the screen. + rows.forEach(columns => { + if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { + leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); + } + }); + // generate a table: + // replacing ' ' with padding calculations. + // using the algorithmically generated width. + rows.forEach(columns => { + this.div(...columns.map((r, i) => { + return { + text: r.trim(), + padding: this.measurePadding(r), + width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined + }; + })); + }); + return this.rows[this.rows.length - 1]; + } + colFromString(text) { + return { + text, + padding: this.measurePadding(text) + }; + } + measurePadding(str) { + // measure padding without ansi escape codes + const noAnsi = mixin.stripAnsi(str); + return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; + } + toString() { + const lines = []; + this.rows.forEach(row => { + this.rowToString(row, lines); + }); + // don't display any lines with the + // hidden flag set. + return lines + .filter(line => !line.hidden) + .map(line => line.text) + .join('\n'); + } + rowToString(row, lines) { + this.rasterize(row).forEach((rrow, r) => { + let str = ''; + rrow.forEach((col, c) => { + const { width } = row[c]; // the width with padding. + const wrapWidth = this.negatePadding(row[c]); // the width without padding. + let ts = col; // temporary string used during alignment/padding. + if (wrapWidth > mixin.stringWidth(col)) { + ts += ' '.repeat(wrapWidth - mixin.stringWidth(col)); + } + // align the string within its column. + if (row[c].align && row[c].align !== 'left' && this.wrap) { + const fn = align[row[c].align]; + ts = fn(ts, wrapWidth); + if (mixin.stringWidth(ts) < wrapWidth) { + ts += ' '.repeat((width || 0) - mixin.stringWidth(ts) - 1); + } + } + // apply border and padding to string. + const padding = row[c].padding || [0, 0, 0, 0]; + if (padding[left]) { + str += ' '.repeat(padding[left]); + } + str += addBorder(row[c], ts, '| '); + str += ts; + str += addBorder(row[c], ts, ' |'); + if (padding[right]) { + str += ' '.repeat(padding[right]); + } + // if prior row is span, try to render the + // current row on the prior line. + if (r === 0 && lines.length > 0) { + str = this.renderInline(str, lines[lines.length - 1]); + } + }); + // remove trailing whitespace. + lines.push({ + text: str.replace(/ +$/, ''), + span: row.span + }); + }); + return lines; + } + // if the full 'source' can render in + // the target line, do so. + renderInline(source, previousLine) { + const match = source.match(/^ */); + const leadingWhitespace = match ? match[0].length : 0; + const target = previousLine.text; + const targetTextWidth = mixin.stringWidth(target.trimRight()); + if (!previousLine.span) { + return source; + } + // if we're not applying wrapping logic, + // just always append to the span. + if (!this.wrap) { + previousLine.hidden = true; + return target + source; + } + if (leadingWhitespace < targetTextWidth) { + return source; + } + previousLine.hidden = true; + return target.trimRight() + ' '.repeat(leadingWhitespace - targetTextWidth) + source.trimLeft(); + } + rasterize(row) { + const rrows = []; + const widths = this.columnWidths(row); + let wrapped; + // word wrap all columns, and create + // a data-structure that is easy to rasterize. + row.forEach((col, c) => { + // leave room for left and right padding. + col.width = widths[c]; + if (this.wrap) { + wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split('\n'); + } + else { + wrapped = col.text.split('\n'); + } + if (col.border) { + wrapped.unshift('.' + '-'.repeat(this.negatePadding(col) + 2) + '.'); + wrapped.push("'" + '-'.repeat(this.negatePadding(col) + 2) + "'"); + } + // add top and bottom padding. + if (col.padding) { + wrapped.unshift(...new Array(col.padding[top] || 0).fill('')); + wrapped.push(...new Array(col.padding[bottom] || 0).fill('')); + } + wrapped.forEach((str, r) => { + if (!rrows[r]) { + rrows.push([]); + } + const rrow = rrows[r]; + for (let i = 0; i < c; i++) { + if (rrow[i] === undefined) { + rrow.push(''); + } + } + rrow.push(str); + }); + }); + return rrows; + } + negatePadding(col) { + let wrapWidth = col.width || 0; + if (col.padding) { + wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); + } + if (col.border) { + wrapWidth -= 4; + } + return wrapWidth; + } + columnWidths(row) { + if (!this.wrap) { + return row.map(col => { + return col.width || mixin.stringWidth(col.text); + }); + } + let unset = row.length; + let remainingWidth = this.width; + // column widths can be set in config. + const widths = row.map(col => { + if (col.width) { + unset--; + remainingWidth -= col.width; + return col.width; + } + return undefined; + }); + // any unset widths should be calculated. + const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; + return widths.map((w, i) => { + if (w === undefined) { + return Math.max(unsetWidth, _minWidth(row[i])); + } + return w; + }); + } +} +function addBorder(col, ts, style) { + if (col.border) { + if (/[.']-+[.']/.test(ts)) { + return ''; + } + if (ts.trim().length !== 0) { + return style; + } + return ' '; + } + return ''; +} +// calculates the minimum width of +// a column, based on padding preferences. +function _minWidth(col) { + const padding = col.padding || []; + const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); + if (col.border) { + return minWidth + 4; + } + return minWidth; +} +function getWindowWidth() { + /* istanbul ignore next: depends on terminal */ + if (typeof process === 'object' && process.stdout && process.stdout.columns) { + return process.stdout.columns; + } + return 80; +} +function alignRight(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + if (strWidth < width) { + return ' '.repeat(width - strWidth) + str; + } + return str; +} +function alignCenter(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + /* istanbul ignore next */ + if (strWidth >= width) { + return str; + } + return ' '.repeat((width - strWidth) >> 1) + str; +} +let mixin; +export function cliui(opts, _mixin) { + mixin = _mixin; + return new UI({ + width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(), + wrap: opts === null || opts === void 0 ? void 0 : opts.wrap + }); +} diff --git a/node_modules/cliui/build/lib/string-utils.js b/node_modules/cliui/build/lib/string-utils.js new file mode 100644 index 0000000..4b87453 --- /dev/null +++ b/node_modules/cliui/build/lib/string-utils.js @@ -0,0 +1,27 @@ +// Minimal replacement for ansi string helpers "wrap-ansi" and "strip-ansi". +// to facilitate ESM and Deno modules. +// TODO: look at porting https://www.npmjs.com/package/wrap-ansi to ESM. +// The npm application +// Copyright (c) npm, Inc. and Contributors +// Licensed on the terms of The Artistic License 2.0 +// See: https://github.com/npm/cli/blob/4c65cd952bc8627811735bea76b9b110cc4fc80e/lib/utils/ansi-trim.js +const ansi = new RegExp('\x1b(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|' + + '\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)', 'g'); +export function stripAnsi(str) { + return str.replace(ansi, ''); +} +export function wrap(str, width) { + const [start, end] = str.match(ansi) || ['', '']; + str = stripAnsi(str); + let wrapped = ''; + for (let i = 0; i < str.length; i++) { + if (i !== 0 && (i % width) === 0) { + wrapped += '\n'; + } + wrapped += str.charAt(i); + } + if (start && end) { + wrapped = `${start}${wrapped}${end}`; + } + return wrapped; +} diff --git a/node_modules/cliui/index.mjs b/node_modules/cliui/index.mjs new file mode 100644 index 0000000..bc7a022 --- /dev/null +++ b/node_modules/cliui/index.mjs @@ -0,0 +1,13 @@ +// Bootstrap cliui with CommonJS dependencies: +import { cliui } from './build/lib/index.js' +import { wrap, stripAnsi } from './build/lib/string-utils.js' + +export default function ui (opts) { + return cliui(opts, { + stringWidth: (str) => { + return [...str].length + }, + stripAnsi, + wrap + }) +} diff --git a/node_modules/cliui/package.json b/node_modules/cliui/package.json new file mode 100644 index 0000000..3426665 --- /dev/null +++ b/node_modules/cliui/package.json @@ -0,0 +1,83 @@ +{ + "name": "cliui", + "version": "7.0.4", + "description": "easily create complex multi-column command-line-interfaces", + "main": "build/index.cjs", + "exports": { + ".": [ + { + "import": "./index.mjs", + "require": "./build/index.cjs" + }, + "./build/index.cjs" + ] + }, + "type": "module", + "module": "./index.mjs", + "scripts": { + "check": "standardx '**/*.ts' && standardx '**/*.js' && standardx '**/*.cjs'", + "fix": "standardx --fix '**/*.ts' && standardx --fix '**/*.js' && standardx --fix '**/*.cjs'", + "pretest": "rimraf build && tsc -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs", + "test": "c8 mocha ./test/*.cjs", + "test:esm": "c8 mocha ./test/esm/cliui-test.mjs", + "postest": "check", + "coverage": "c8 report --check-coverage", + "precompile": "rimraf build", + "compile": "tsc", + "postcompile": "npm run build:cjs", + "build:cjs": "rollup -c", + "prepare": "npm run compile" + }, + "repository": "yargs/cliui", + "standard": { + "ignore": [ + "**/example/**" + ], + "globals": [ + "it" + ] + }, + "keywords": [ + "cli", + "command-line", + "layout", + "design", + "console", + "wrap", + "table" + ], + "author": "Ben Coe ", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "devDependencies": { + "@types/node": "^14.0.27", + "@typescript-eslint/eslint-plugin": "^4.0.0", + "@typescript-eslint/parser": "^4.0.0", + "@wessberg/rollup-plugin-ts": "^1.3.2", + "c8": "^7.3.0", + "chai": "^4.2.0", + "chalk": "^4.1.0", + "cross-env": "^7.0.2", + "eslint": "^7.6.0", + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-node": "^11.1.0", + "gts": "^3.0.0", + "mocha": "^8.1.1", + "rimraf": "^3.0.2", + "rollup": "^2.23.1", + "standardx": "^7.0.0", + "typescript": "^4.0.0" + }, + "files": [ + "build", + "index.mjs", + "!*.d.ts" + ], + "engine": { + "node": ">=10" + } +} diff --git a/node_modules/decamelize/index.d.ts b/node_modules/decamelize/index.d.ts new file mode 100644 index 0000000..a751feb --- /dev/null +++ b/node_modules/decamelize/index.d.ts @@ -0,0 +1,20 @@ +/** +Convert a camelized string into a lowercased one with a custom separator: `unicornRainbow` → `unicorn_rainbow`. + +@param string - The camelcase string to decamelize. +@param separator - The separator to use to put in between the words from `string`. Default: `'_'`. + +@example +``` +import decamelize = require('decamelize'); + +decamelize('unicornRainbow'); +//=> 'unicorn_rainbow' + +decamelize('unicornRainbow', '-'); +//=> 'unicorn-rainbow' +``` +*/ +declare function decamelize(string: string, separator?: string): string; + +export = decamelize; diff --git a/node_modules/decamelize/index.js b/node_modules/decamelize/index.js new file mode 100644 index 0000000..702e270 --- /dev/null +++ b/node_modules/decamelize/index.js @@ -0,0 +1,12 @@ +'use strict'; + +module.exports = (text, separator = '_') => { + if (!(typeof text === 'string' && typeof separator === 'string')) { + throw new TypeError('The `text` and `separator` arguments should be of type `string`'); + } + + return text + .replace(/([\p{Lowercase_Letter}\d])(\p{Uppercase_Letter})/gu, `$1${separator}$2`) + .replace(/(\p{Uppercase_Letter}+)(\p{Uppercase_Letter}\p{Lowercase_Letter}+)/gu, `$1${separator}$2`) + .toLowerCase(); +}; diff --git a/node_modules/decamelize/license b/node_modules/decamelize/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/node_modules/decamelize/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (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/node_modules/decamelize/package.json b/node_modules/decamelize/package.json new file mode 100644 index 0000000..116ae7a --- /dev/null +++ b/node_modules/decamelize/package.json @@ -0,0 +1,40 @@ +{ + "name": "decamelize", + "version": "4.0.0", + "description": "Convert a camelized string into a lowercased one with a custom separator: unicornRainbow → unicorn_rainbow", + "license": "MIT", + "repository": "sindresorhus/decamelize", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "decamelize", + "decamelcase", + "camelcase", + "lowercase", + "case", + "dash", + "hyphen", + "string", + "text", + "convert" + ], + "devDependencies": { + "ava": "^2.4.0", + "tsd": "^0.11.0", + "xo": "^0.24.0" + } +} diff --git a/node_modules/decamelize/readme.md b/node_modules/decamelize/readme.md new file mode 100644 index 0000000..4fd4e2c --- /dev/null +++ b/node_modules/decamelize/readme.md @@ -0,0 +1,51 @@ +# decamelize [![Build Status](https://travis-ci.org/sindresorhus/decamelize.svg?branch=master)](https://travis-ci.org/sindresorhus/decamelize) + +> Convert a camelized string into a lowercased one with a custom separator
+> Example: `unicornRainbow` → `unicorn_rainbow` + +## Install + +``` +$ npm install decamelize +``` + +## Usage + +```js +const decamelize = require('decamelize'); + +decamelize('unicornRainbow'); +//=> 'unicorn_rainbow' + +decamelize('unicornRainbow', '-'); +//=> 'unicorn-rainbow' +``` + +## API + +### decamelize(input, separator?) + +#### input + +Type: `string` + +#### separator + +Type: `string`\ +Default: `'_'` + +## Related + +See [`camelcase`](https://github.com/sindresorhus/camelcase) for the inverse. + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/diff/CONTRIBUTING.md b/node_modules/diff/CONTRIBUTING.md new file mode 100644 index 0000000..c8c4fe6 --- /dev/null +++ b/node_modules/diff/CONTRIBUTING.md @@ -0,0 +1,39 @@ +# How to Contribute + +## Pull Requests + +We also accept [pull requests][pull-request]! + +Generally we like to see pull requests that + +- Maintain the existing code style +- Are focused on a single change (i.e. avoid large refactoring or style adjustments in untouched code if not the primary goal of the pull request) +- Have [good commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) +- Have tests +- Don't decrease the current code coverage (see coverage/lcov-report/index.html) + +## Building + +``` +npm install +npm test +``` + +The `npm test -- dev` implements watching for tests within Node and `karma start` may be used for manual testing in browsers. + +If you notice any problems, please report them to the GitHub issue tracker at +[http://github.com/kpdecker/jsdiff/issues](http://github.com/kpdecker/jsdiff/issues). + +## Releasing + +JsDiff utilizes the [release yeoman generator][generator-release] to perform most release tasks. + +A full release may be completed with the following: + +``` +yo release +npm publish +``` + +[generator-release]: https://github.com/walmartlabs/generator-release +[pull-request]: https://github.com/kpdecker/jsdiff/pull/new/master diff --git a/node_modules/diff/LICENSE b/node_modules/diff/LICENSE new file mode 100644 index 0000000..4e7146e --- /dev/null +++ b/node_modules/diff/LICENSE @@ -0,0 +1,31 @@ +Software License Agreement (BSD License) + +Copyright (c) 2009-2015, Kevin Decker + +All rights reserved. + +Redistribution and use of this software in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of Kevin Decker nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/node_modules/diff/README.md b/node_modules/diff/README.md new file mode 100644 index 0000000..be7b4ec --- /dev/null +++ b/node_modules/diff/README.md @@ -0,0 +1,208 @@ +# jsdiff + +[![Build Status](https://secure.travis-ci.org/kpdecker/jsdiff.svg)](http://travis-ci.org/kpdecker/jsdiff) +[![Sauce Test Status](https://saucelabs.com/buildstatus/jsdiff)](https://saucelabs.com/u/jsdiff) + +A javascript text differencing implementation. + +Based on the algorithm proposed in +["An O(ND) Difference Algorithm and its Variations" (Myers, 1986)](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927). + +## Installation +```bash +npm install diff --save +``` + +## API + +* `Diff.diffChars(oldStr, newStr[, options])` - diffs two blocks of text, comparing character by character. + + Returns a list of change objects (See below). + + Options + * `ignoreCase`: `true` to ignore casing difference. Defaults to `false`. + +* `Diff.diffWords(oldStr, newStr[, options])` - diffs two blocks of text, comparing word by word, ignoring whitespace. + + Returns a list of change objects (See below). + + Options + * `ignoreCase`: Same as in `diffChars`. + +* `Diff.diffWordsWithSpace(oldStr, newStr[, options])` - diffs two blocks of text, comparing word by word, treating whitespace as significant. + + Returns a list of change objects (See below). + +* `Diff.diffLines(oldStr, newStr[, options])` - diffs two blocks of text, comparing line by line. + + Options + * `ignoreWhitespace`: `true` to ignore leading and trailing whitespace. This is the same as `diffTrimmedLines` + * `newlineIsToken`: `true` to treat newline characters as separate tokens. This allows for changes to the newline structure to occur independently of the line content and to be treated as such. In general this is the more human friendly form of `diffLines` and `diffLines` is better suited for patches and other computer friendly output. + + Returns a list of change objects (See below). + +* `Diff.diffTrimmedLines(oldStr, newStr[, options])` - diffs two blocks of text, comparing line by line, ignoring leading and trailing whitespace. + + Returns a list of change objects (See below). + +* `Diff.diffSentences(oldStr, newStr[, options])` - diffs two blocks of text, comparing sentence by sentence. + + Returns a list of change objects (See below). + +* `Diff.diffCss(oldStr, newStr[, options])` - diffs two blocks of text, comparing CSS tokens. + + Returns a list of change objects (See below). + +* `Diff.diffJson(oldObj, newObj[, options])` - diffs two JSON objects, comparing the fields defined on each. The order of fields, etc does not matter in this comparison. + + Returns a list of change objects (See below). + +* `Diff.diffArrays(oldArr, newArr[, options])` - diffs two arrays, comparing each item for strict equality (===). + + Options + * `comparator`: `function(left, right)` for custom equality checks + + Returns a list of change objects (See below). + +* `Diff.createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader)` - creates a unified diff patch. + + Parameters: + * `oldFileName` : String to be output in the filename section of the patch for the removals + * `newFileName` : String to be output in the filename section of the patch for the additions + * `oldStr` : Original string value + * `newStr` : New string value + * `oldHeader` : Additional information to include in the old file header + * `newHeader` : Additional information to include in the new file header + * `options` : An object with options. Currently, only `context` is supported and describes how many lines of context should be included. + +* `Diff.createPatch(fileName, oldStr, newStr, oldHeader, newHeader)` - creates a unified diff patch. + + Just like Diff.createTwoFilesPatch, but with oldFileName being equal to newFileName. + + +* `Diff.structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)` - returns an object with an array of hunk objects. + + This method is similar to createTwoFilesPatch, but returns a data structure + suitable for further processing. Parameters are the same as createTwoFilesPatch. The data structure returned may look like this: + + ```js + { + oldFileName: 'oldfile', newFileName: 'newfile', + oldHeader: 'header1', newHeader: 'header2', + hunks: [{ + oldStart: 1, oldLines: 3, newStart: 1, newLines: 3, + lines: [' line2', ' line3', '-line4', '+line5', '\\ No newline at end of file'], + }] + } + ``` + +* `Diff.applyPatch(source, patch[, options])` - applies a unified diff patch. + + Return a string containing new version of provided data. `patch` may be a string diff or the output from the `parsePatch` or `structuredPatch` methods. + + The optional `options` object may have the following keys: + + - `fuzzFactor`: Number of lines that are allowed to differ before rejecting a patch. Defaults to 0. + - `compareLine(lineNumber, line, operation, patchContent)`: Callback used to compare to given lines to determine if they should be considered equal when patching. Defaults to strict equality but may be overridden to provide fuzzier comparison. Should return false if the lines should be rejected. + +* `Diff.applyPatches(patch, options)` - applies one or more patches. + + This method will iterate over the contents of the patch and apply to data provided through callbacks. The general flow for each patch index is: + + - `options.loadFile(index, callback)` is called. The caller should then load the contents of the file and then pass that to the `callback(err, data)` callback. Passing an `err` will terminate further patch execution. + - `options.patched(index, content, callback)` is called once the patch has been applied. `content` will be the return value from `applyPatch`. When it's ready, the caller should call `callback(err)` callback. Passing an `err` will terminate further patch execution. + + Once all patches have been applied or an error occurs, the `options.complete(err)` callback is made. + +* `Diff.parsePatch(diffStr)` - Parses a patch into structured data + + Return a JSON object representation of the a patch, suitable for use with the `applyPatch` method. This parses to the same structure returned by `Diff.structuredPatch`. + +* `convertChangesToXML(changes)` - converts a list of changes to a serialized XML format + + +All methods above which accept the optional `callback` method will run in sync mode when that parameter is omitted and in async mode when supplied. This allows for larger diffs without blocking the event loop. This may be passed either directly as the final parameter or as the `callback` field in the `options` object. + +### Change Objects +Many of the methods above return change objects. These objects consist of the following fields: + +* `value`: Text content +* `added`: True if the value was inserted into the new string +* `removed`: True if the value was removed from the old string + +Note that some cases may omit a particular flag field. Comparison on the flag fields should always be done in a truthy or falsy manner. + +## Examples + +Basic example in Node + +```js +require('colors'); +const Diff = require('diff'); + +const one = 'beep boop'; +const other = 'beep boob blah'; + +const diff = Diff.diffChars(one, other); + +diff.forEach((part) => { + // green for additions, red for deletions + // grey for common parts + const color = part.added ? 'green' : + part.removed ? 'red' : 'grey'; + process.stderr.write(part.value[color]); +}); + +console.log(); +``` +Running the above program should yield + +Node Example + +Basic example in a web page + +```html +

+
+
+```
+
+Open the above .html file in a browser and you should see
+
+Node Example
+
+**[Full online demo](http://kpdecker.github.com/jsdiff)**
+
+## Compatibility
+
+[![Sauce Test Status](https://saucelabs.com/browser-matrix/jsdiff.svg)](https://saucelabs.com/u/jsdiff)
+
+jsdiff supports all ES3 environments with some known issues on IE8 and below. Under these browsers some diff algorithms such as word diff and others may fail due to lack of support for capturing groups in the `split` operation.
+
+## License
+
+See [LICENSE](https://github.com/kpdecker/jsdiff/blob/master/LICENSE).
diff --git a/node_modules/diff/dist/diff.js b/node_modules/diff/dist/diff.js
new file mode 100644
index 0000000..bba9195
--- /dev/null
+++ b/node_modules/diff/dist/diff.js
@@ -0,0 +1,1582 @@
+(function (global, factory) {
+  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+  typeof define === 'function' && define.amd ? define(['exports'], factory) :
+  (global = global || self, factory(global.Diff = {}));
+}(this, (function (exports) { 'use strict';
+
+  function Diff() {}
+  Diff.prototype = {
+    diff: function diff(oldString, newString) {
+      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+      var callback = options.callback;
+
+      if (typeof options === 'function') {
+        callback = options;
+        options = {};
+      }
+
+      this.options = options;
+      var self = this;
+
+      function done(value) {
+        if (callback) {
+          setTimeout(function () {
+            callback(undefined, value);
+          }, 0);
+          return true;
+        } else {
+          return value;
+        }
+      } // Allow subclasses to massage the input prior to running
+
+
+      oldString = this.castInput(oldString);
+      newString = this.castInput(newString);
+      oldString = this.removeEmpty(this.tokenize(oldString));
+      newString = this.removeEmpty(this.tokenize(newString));
+      var newLen = newString.length,
+          oldLen = oldString.length;
+      var editLength = 1;
+      var maxEditLength = newLen + oldLen;
+      var bestPath = [{
+        newPos: -1,
+        components: []
+      }]; // Seed editLength = 0, i.e. the content starts with the same values
+
+      var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
+
+      if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+        // Identity per the equality and tokenizer
+        return done([{
+          value: this.join(newString),
+          count: newString.length
+        }]);
+      } // Main worker method. checks all permutations of a given edit length for acceptance.
+
+
+      function execEditLength() {
+        for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
+          var basePath = void 0;
+
+          var addPath = bestPath[diagonalPath - 1],
+              removePath = bestPath[diagonalPath + 1],
+              _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+
+          if (addPath) {
+            // No one else is going to attempt to use this value, clear it
+            bestPath[diagonalPath - 1] = undefined;
+          }
+
+          var canAdd = addPath && addPath.newPos + 1 < newLen,
+              canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
+
+          if (!canAdd && !canRemove) {
+            // If this path is a terminal then prune
+            bestPath[diagonalPath] = undefined;
+            continue;
+          } // Select the diagonal that we want to branch from. We select the prior
+          // path whose position in the new string is the farthest from the origin
+          // and does not pass the bounds of the diff graph
+
+
+          if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
+            basePath = clonePath(removePath);
+            self.pushComponent(basePath.components, undefined, true);
+          } else {
+            basePath = addPath; // No need to clone, we've pulled it from the list
+
+            basePath.newPos++;
+            self.pushComponent(basePath.components, true, undefined);
+          }
+
+          _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done
+
+          if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
+            return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
+          } else {
+            // Otherwise track this path as a potential candidate and continue.
+            bestPath[diagonalPath] = basePath;
+          }
+        }
+
+        editLength++;
+      } // Performs the length of edit iteration. Is a bit fugly as this has to support the
+      // sync and async mode which is never fun. Loops over execEditLength until a value
+      // is produced.
+
+
+      if (callback) {
+        (function exec() {
+          setTimeout(function () {
+            // This should not happen, but we want to be safe.
+
+            /* istanbul ignore next */
+            if (editLength > maxEditLength) {
+              return callback();
+            }
+
+            if (!execEditLength()) {
+              exec();
+            }
+          }, 0);
+        })();
+      } else {
+        while (editLength <= maxEditLength) {
+          var ret = execEditLength();
+
+          if (ret) {
+            return ret;
+          }
+        }
+      }
+    },
+    pushComponent: function pushComponent(components, added, removed) {
+      var last = components[components.length - 1];
+
+      if (last && last.added === added && last.removed === removed) {
+        // We need to clone here as the component clone operation is just
+        // as shallow array clone
+        components[components.length - 1] = {
+          count: last.count + 1,
+          added: added,
+          removed: removed
+        };
+      } else {
+        components.push({
+          count: 1,
+          added: added,
+          removed: removed
+        });
+      }
+    },
+    extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
+      var newLen = newString.length,
+          oldLen = oldString.length,
+          newPos = basePath.newPos,
+          oldPos = newPos - diagonalPath,
+          commonCount = 0;
+
+      while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
+        newPos++;
+        oldPos++;
+        commonCount++;
+      }
+
+      if (commonCount) {
+        basePath.components.push({
+          count: commonCount
+        });
+      }
+
+      basePath.newPos = newPos;
+      return oldPos;
+    },
+    equals: function equals(left, right) {
+      if (this.options.comparator) {
+        return this.options.comparator(left, right);
+      } else {
+        return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
+      }
+    },
+    removeEmpty: function removeEmpty(array) {
+      var ret = [];
+
+      for (var i = 0; i < array.length; i++) {
+        if (array[i]) {
+          ret.push(array[i]);
+        }
+      }
+
+      return ret;
+    },
+    castInput: function castInput(value) {
+      return value;
+    },
+    tokenize: function tokenize(value) {
+      return value.split('');
+    },
+    join: function join(chars) {
+      return chars.join('');
+    }
+  };
+
+  function buildValues(diff, components, newString, oldString, useLongestToken) {
+    var componentPos = 0,
+        componentLen = components.length,
+        newPos = 0,
+        oldPos = 0;
+
+    for (; componentPos < componentLen; componentPos++) {
+      var component = components[componentPos];
+
+      if (!component.removed) {
+        if (!component.added && useLongestToken) {
+          var value = newString.slice(newPos, newPos + component.count);
+          value = value.map(function (value, i) {
+            var oldValue = oldString[oldPos + i];
+            return oldValue.length > value.length ? oldValue : value;
+          });
+          component.value = diff.join(value);
+        } else {
+          component.value = diff.join(newString.slice(newPos, newPos + component.count));
+        }
+
+        newPos += component.count; // Common case
+
+        if (!component.added) {
+          oldPos += component.count;
+        }
+      } else {
+        component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));
+        oldPos += component.count; // Reverse add and remove so removes are output first to match common convention
+        // The diffing algorithm is tied to add then remove output and this is the simplest
+        // route to get the desired output with minimal overhead.
+
+        if (componentPos && components[componentPos - 1].added) {
+          var tmp = components[componentPos - 1];
+          components[componentPos - 1] = components[componentPos];
+          components[componentPos] = tmp;
+        }
+      }
+    } // Special case handle for when one terminal is ignored (i.e. whitespace).
+    // For this case we merge the terminal into the prior string and drop the change.
+    // This is only available for string mode.
+
+
+    var lastComponent = components[componentLen - 1];
+
+    if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
+      components[componentLen - 2].value += lastComponent.value;
+      components.pop();
+    }
+
+    return components;
+  }
+
+  function clonePath(path) {
+    return {
+      newPos: path.newPos,
+      components: path.components.slice(0)
+    };
+  }
+
+  var characterDiff = new Diff();
+  function diffChars(oldStr, newStr, options) {
+    return characterDiff.diff(oldStr, newStr, options);
+  }
+
+  function generateOptions(options, defaults) {
+    if (typeof options === 'function') {
+      defaults.callback = options;
+    } else if (options) {
+      for (var name in options) {
+        /* istanbul ignore else */
+        if (options.hasOwnProperty(name)) {
+          defaults[name] = options[name];
+        }
+      }
+    }
+
+    return defaults;
+  }
+
+  //
+  // Ranges and exceptions:
+  // Latin-1 Supplement, 0080–00FF
+  //  - U+00D7  × Multiplication sign
+  //  - U+00F7  ÷ Division sign
+  // Latin Extended-A, 0100–017F
+  // Latin Extended-B, 0180–024F
+  // IPA Extensions, 0250–02AF
+  // Spacing Modifier Letters, 02B0–02FF
+  //  - U+02C7  ˇ ˇ  Caron
+  //  - U+02D8  ˘ ˘  Breve
+  //  - U+02D9  ˙ ˙  Dot Above
+  //  - U+02DA  ˚ ˚  Ring Above
+  //  - U+02DB  ˛ ˛  Ogonek
+  //  - U+02DC  ˜ ˜  Small Tilde
+  //  - U+02DD  ˝ ˝  Double Acute Accent
+  // Latin Extended Additional, 1E00–1EFF
+
+  var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
+  var reWhitespace = /\S/;
+  var wordDiff = new Diff();
+
+  wordDiff.equals = function (left, right) {
+    if (this.options.ignoreCase) {
+      left = left.toLowerCase();
+      right = right.toLowerCase();
+    }
+
+    return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
+  };
+
+  wordDiff.tokenize = function (value) {
+    // All whitespace symbols except newline group into one token, each newline - in separate token
+    var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
+
+    for (var i = 0; i < tokens.length - 1; i++) {
+      // If we have an empty string in the next field and we have only word chars before and after, merge
+      if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
+        tokens[i] += tokens[i + 2];
+        tokens.splice(i + 1, 2);
+        i--;
+      }
+    }
+
+    return tokens;
+  };
+
+  function diffWords(oldStr, newStr, options) {
+    options = generateOptions(options, {
+      ignoreWhitespace: true
+    });
+    return wordDiff.diff(oldStr, newStr, options);
+  }
+  function diffWordsWithSpace(oldStr, newStr, options) {
+    return wordDiff.diff(oldStr, newStr, options);
+  }
+
+  var lineDiff = new Diff();
+
+  lineDiff.tokenize = function (value) {
+    var retLines = [],
+        linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line
+
+    if (!linesAndNewlines[linesAndNewlines.length - 1]) {
+      linesAndNewlines.pop();
+    } // Merge the content and line separators into single tokens
+
+
+    for (var i = 0; i < linesAndNewlines.length; i++) {
+      var line = linesAndNewlines[i];
+
+      if (i % 2 && !this.options.newlineIsToken) {
+        retLines[retLines.length - 1] += line;
+      } else {
+        if (this.options.ignoreWhitespace) {
+          line = line.trim();
+        }
+
+        retLines.push(line);
+      }
+    }
+
+    return retLines;
+  };
+
+  function diffLines(oldStr, newStr, callback) {
+    return lineDiff.diff(oldStr, newStr, callback);
+  }
+  function diffTrimmedLines(oldStr, newStr, callback) {
+    var options = generateOptions(callback, {
+      ignoreWhitespace: true
+    });
+    return lineDiff.diff(oldStr, newStr, options);
+  }
+
+  var sentenceDiff = new Diff();
+
+  sentenceDiff.tokenize = function (value) {
+    return value.split(/(\S.+?[.!?])(?=\s+|$)/);
+  };
+
+  function diffSentences(oldStr, newStr, callback) {
+    return sentenceDiff.diff(oldStr, newStr, callback);
+  }
+
+  var cssDiff = new Diff();
+
+  cssDiff.tokenize = function (value) {
+    return value.split(/([{}:;,]|\s+)/);
+  };
+
+  function diffCss(oldStr, newStr, callback) {
+    return cssDiff.diff(oldStr, newStr, callback);
+  }
+
+  function _typeof(obj) {
+    "@babel/helpers - typeof";
+
+    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+      _typeof = function (obj) {
+        return typeof obj;
+      };
+    } else {
+      _typeof = function (obj) {
+        return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+      };
+    }
+
+    return _typeof(obj);
+  }
+
+  function _toConsumableArray(arr) {
+    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
+  }
+
+  function _arrayWithoutHoles(arr) {
+    if (Array.isArray(arr)) return _arrayLikeToArray(arr);
+  }
+
+  function _iterableToArray(iter) {
+    if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
+  }
+
+  function _unsupportedIterableToArray(o, minLen) {
+    if (!o) return;
+    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
+    var n = Object.prototype.toString.call(o).slice(8, -1);
+    if (n === "Object" && o.constructor) n = o.constructor.name;
+    if (n === "Map" || n === "Set") return Array.from(o);
+    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
+  }
+
+  function _arrayLikeToArray(arr, len) {
+    if (len == null || len > arr.length) len = arr.length;
+
+    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
+
+    return arr2;
+  }
+
+  function _nonIterableSpread() {
+    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+  }
+
+  var objectPrototypeToString = Object.prototype.toString;
+  var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
+  // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
+
+  jsonDiff.useLongestToken = true;
+  jsonDiff.tokenize = lineDiff.tokenize;
+
+  jsonDiff.castInput = function (value) {
+    var _this$options = this.options,
+        undefinedReplacement = _this$options.undefinedReplacement,
+        _this$options$stringi = _this$options.stringifyReplacer,
+        stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {
+      return typeof v === 'undefined' ? undefinedReplacement : v;
+    } : _this$options$stringi;
+    return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, '  ');
+  };
+
+  jsonDiff.equals = function (left, right) {
+    return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'));
+  };
+
+  function diffJson(oldObj, newObj, options) {
+    return jsonDiff.diff(oldObj, newObj, options);
+  } // This function handles the presence of circular references by bailing out when encountering an
+  // object that is already on the "stack" of items being processed. Accepts an optional replacer
+
+  function canonicalize(obj, stack, replacementStack, replacer, key) {
+    stack = stack || [];
+    replacementStack = replacementStack || [];
+
+    if (replacer) {
+      obj = replacer(key, obj);
+    }
+
+    var i;
+
+    for (i = 0; i < stack.length; i += 1) {
+      if (stack[i] === obj) {
+        return replacementStack[i];
+      }
+    }
+
+    var canonicalizedObj;
+
+    if ('[object Array]' === objectPrototypeToString.call(obj)) {
+      stack.push(obj);
+      canonicalizedObj = new Array(obj.length);
+      replacementStack.push(canonicalizedObj);
+
+      for (i = 0; i < obj.length; i += 1) {
+        canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);
+      }
+
+      stack.pop();
+      replacementStack.pop();
+      return canonicalizedObj;
+    }
+
+    if (obj && obj.toJSON) {
+      obj = obj.toJSON();
+    }
+
+    if (_typeof(obj) === 'object' && obj !== null) {
+      stack.push(obj);
+      canonicalizedObj = {};
+      replacementStack.push(canonicalizedObj);
+
+      var sortedKeys = [],
+          _key;
+
+      for (_key in obj) {
+        /* istanbul ignore else */
+        if (obj.hasOwnProperty(_key)) {
+          sortedKeys.push(_key);
+        }
+      }
+
+      sortedKeys.sort();
+
+      for (i = 0; i < sortedKeys.length; i += 1) {
+        _key = sortedKeys[i];
+        canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
+      }
+
+      stack.pop();
+      replacementStack.pop();
+    } else {
+      canonicalizedObj = obj;
+    }
+
+    return canonicalizedObj;
+  }
+
+  var arrayDiff = new Diff();
+
+  arrayDiff.tokenize = function (value) {
+    return value.slice();
+  };
+
+  arrayDiff.join = arrayDiff.removeEmpty = function (value) {
+    return value;
+  };
+
+  function diffArrays(oldArr, newArr, callback) {
+    return arrayDiff.diff(oldArr, newArr, callback);
+  }
+
+  function parsePatch(uniDiff) {
+    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+    var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/),
+        delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+        list = [],
+        i = 0;
+
+    function parseIndex() {
+      var index = {};
+      list.push(index); // Parse diff metadata
+
+      while (i < diffstr.length) {
+        var line = diffstr[i]; // File header found, end parsing diff metadata
+
+        if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
+          break;
+        } // Diff index
+
+
+        var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
+
+        if (header) {
+          index.index = header[1];
+        }
+
+        i++;
+      } // Parse file headers if they are defined. Unified diff requires them, but
+      // there's no technical issues to have an isolated hunk without file header
+
+
+      parseFileHeader(index);
+      parseFileHeader(index); // Parse hunks
+
+      index.hunks = [];
+
+      while (i < diffstr.length) {
+        var _line = diffstr[i];
+
+        if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
+          break;
+        } else if (/^@@/.test(_line)) {
+          index.hunks.push(parseHunk());
+        } else if (_line && options.strict) {
+          // Ignore unexpected content unless in strict mode
+          throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
+        } else {
+          i++;
+        }
+      }
+    } // Parses the --- and +++ headers, if none are found, no lines
+    // are consumed.
+
+
+    function parseFileHeader(index) {
+      var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]);
+
+      if (fileHeader) {
+        var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
+        var data = fileHeader[2].split('\t', 2);
+        var fileName = data[0].replace(/\\\\/g, '\\');
+
+        if (/^".*"$/.test(fileName)) {
+          fileName = fileName.substr(1, fileName.length - 2);
+        }
+
+        index[keyPrefix + 'FileName'] = fileName;
+        index[keyPrefix + 'Header'] = (data[1] || '').trim();
+        i++;
+      }
+    } // Parses a hunk
+    // This assumes that we are at the start of a hunk.
+
+
+    function parseHunk() {
+      var chunkHeaderIndex = i,
+          chunkHeaderLine = diffstr[i++],
+          chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
+      var hunk = {
+        oldStart: +chunkHeader[1],
+        oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],
+        newStart: +chunkHeader[3],
+        newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],
+        lines: [],
+        linedelimiters: []
+      }; // Unified Diff Format quirk: If the chunk size is 0,
+      // the first number is one lower than one would expect.
+      // https://www.artima.com/weblogs/viewpost.jsp?thread=164293
+
+      if (hunk.oldLines === 0) {
+        hunk.oldStart += 1;
+      }
+
+      if (hunk.newLines === 0) {
+        hunk.newStart += 1;
+      }
+
+      var addCount = 0,
+          removeCount = 0;
+
+      for (; i < diffstr.length; i++) {
+        // Lines starting with '---' could be mistaken for the "remove line" operation
+        // But they could be the header for the next file. Therefore prune such cases out.
+        if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {
+          break;
+        }
+
+        var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];
+
+        if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
+          hunk.lines.push(diffstr[i]);
+          hunk.linedelimiters.push(delimiters[i] || '\n');
+
+          if (operation === '+') {
+            addCount++;
+          } else if (operation === '-') {
+            removeCount++;
+          } else if (operation === ' ') {
+            addCount++;
+            removeCount++;
+          }
+        } else {
+          break;
+        }
+      } // Handle the empty block count case
+
+
+      if (!addCount && hunk.newLines === 1) {
+        hunk.newLines = 0;
+      }
+
+      if (!removeCount && hunk.oldLines === 1) {
+        hunk.oldLines = 0;
+      } // Perform optional sanity checking
+
+
+      if (options.strict) {
+        if (addCount !== hunk.newLines) {
+          throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+        }
+
+        if (removeCount !== hunk.oldLines) {
+          throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+        }
+      }
+
+      return hunk;
+    }
+
+    while (i < diffstr.length) {
+      parseIndex();
+    }
+
+    return list;
+  }
+
+  // Iterator that traverses in the range of [min, max], stepping
+  // by distance from a given start position. I.e. for [0, 4], with
+  // start of 2, this will iterate 2, 3, 1, 4, 0.
+  function distanceIterator (start, minLine, maxLine) {
+    var wantForward = true,
+        backwardExhausted = false,
+        forwardExhausted = false,
+        localOffset = 1;
+    return function iterator() {
+      if (wantForward && !forwardExhausted) {
+        if (backwardExhausted) {
+          localOffset++;
+        } else {
+          wantForward = false;
+        } // Check if trying to fit beyond text length, and if not, check it fits
+        // after offset location (or desired location on first iteration)
+
+
+        if (start + localOffset <= maxLine) {
+          return localOffset;
+        }
+
+        forwardExhausted = true;
+      }
+
+      if (!backwardExhausted) {
+        if (!forwardExhausted) {
+          wantForward = true;
+        } // Check if trying to fit before text beginning, and if not, check it fits
+        // before offset location
+
+
+        if (minLine <= start - localOffset) {
+          return -localOffset++;
+        }
+
+        backwardExhausted = true;
+        return iterator();
+      } // We tried to fit hunk before text beginning and beyond text length, then
+      // hunk can't fit on the text. Return undefined
+
+    };
+  }
+
+  function applyPatch(source, uniDiff) {
+    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+    if (typeof uniDiff === 'string') {
+      uniDiff = parsePatch(uniDiff);
+    }
+
+    if (Array.isArray(uniDiff)) {
+      if (uniDiff.length > 1) {
+        throw new Error('applyPatch only works with a single input.');
+      }
+
+      uniDiff = uniDiff[0];
+    } // Apply the diff to the input
+
+
+    var lines = source.split(/\r\n|[\n\v\f\r\x85]/),
+        delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+        hunks = uniDiff.hunks,
+        compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {
+      return line === patchContent;
+    },
+        errorCount = 0,
+        fuzzFactor = options.fuzzFactor || 0,
+        minLine = 0,
+        offset = 0,
+        removeEOFNL,
+        addEOFNL;
+    /**
+     * Checks if the hunk exactly fits on the provided location
+     */
+
+
+    function hunkFits(hunk, toPos) {
+      for (var j = 0; j < hunk.lines.length; j++) {
+        var line = hunk.lines[j],
+            operation = line.length > 0 ? line[0] : ' ',
+            content = line.length > 0 ? line.substr(1) : line;
+
+        if (operation === ' ' || operation === '-') {
+          // Context sanity check
+          if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
+            errorCount++;
+
+            if (errorCount > fuzzFactor) {
+              return false;
+            }
+          }
+
+          toPos++;
+        }
+      }
+
+      return true;
+    } // Search best fit offsets for each hunk based on the previous ones
+
+
+    for (var i = 0; i < hunks.length; i++) {
+      var hunk = hunks[i],
+          maxLine = lines.length - hunk.oldLines,
+          localOffset = 0,
+          toPos = offset + hunk.oldStart - 1;
+      var iterator = distanceIterator(toPos, minLine, maxLine);
+
+      for (; localOffset !== undefined; localOffset = iterator()) {
+        if (hunkFits(hunk, toPos + localOffset)) {
+          hunk.offset = offset += localOffset;
+          break;
+        }
+      }
+
+      if (localOffset === undefined) {
+        return false;
+      } // Set lower text limit to end of the current hunk, so next ones don't try
+      // to fit over already patched text
+
+
+      minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
+    } // Apply patch hunks
+
+
+    var diffOffset = 0;
+
+    for (var _i = 0; _i < hunks.length; _i++) {
+      var _hunk = hunks[_i],
+          _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;
+
+      diffOffset += _hunk.newLines - _hunk.oldLines;
+
+      for (var j = 0; j < _hunk.lines.length; j++) {
+        var line = _hunk.lines[j],
+            operation = line.length > 0 ? line[0] : ' ',
+            content = line.length > 0 ? line.substr(1) : line,
+            delimiter = _hunk.linedelimiters[j];
+
+        if (operation === ' ') {
+          _toPos++;
+        } else if (operation === '-') {
+          lines.splice(_toPos, 1);
+          delimiters.splice(_toPos, 1);
+          /* istanbul ignore else */
+        } else if (operation === '+') {
+          lines.splice(_toPos, 0, content);
+          delimiters.splice(_toPos, 0, delimiter);
+          _toPos++;
+        } else if (operation === '\\') {
+          var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
+
+          if (previousOperation === '+') {
+            removeEOFNL = true;
+          } else if (previousOperation === '-') {
+            addEOFNL = true;
+          }
+        }
+      }
+    } // Handle EOFNL insertion/removal
+
+
+    if (removeEOFNL) {
+      while (!lines[lines.length - 1]) {
+        lines.pop();
+        delimiters.pop();
+      }
+    } else if (addEOFNL) {
+      lines.push('');
+      delimiters.push('\n');
+    }
+
+    for (var _k = 0; _k < lines.length - 1; _k++) {
+      lines[_k] = lines[_k] + delimiters[_k];
+    }
+
+    return lines.join('');
+  } // Wrapper that supports multiple file patches via callbacks.
+
+  function applyPatches(uniDiff, options) {
+    if (typeof uniDiff === 'string') {
+      uniDiff = parsePatch(uniDiff);
+    }
+
+    var currentIndex = 0;
+
+    function processIndex() {
+      var index = uniDiff[currentIndex++];
+
+      if (!index) {
+        return options.complete();
+      }
+
+      options.loadFile(index, function (err, data) {
+        if (err) {
+          return options.complete(err);
+        }
+
+        var updatedContent = applyPatch(data, index, options);
+        options.patched(index, updatedContent, function (err) {
+          if (err) {
+            return options.complete(err);
+          }
+
+          processIndex();
+        });
+      });
+    }
+
+    processIndex();
+  }
+
+  function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+    if (!options) {
+      options = {};
+    }
+
+    if (typeof options.context === 'undefined') {
+      options.context = 4;
+    }
+
+    var diff = diffLines(oldStr, newStr, options);
+    diff.push({
+      value: '',
+      lines: []
+    }); // Append an empty value to make cleanup easier
+
+    function contextLines(lines) {
+      return lines.map(function (entry) {
+        return ' ' + entry;
+      });
+    }
+
+    var hunks = [];
+    var oldRangeStart = 0,
+        newRangeStart = 0,
+        curRange = [],
+        oldLine = 1,
+        newLine = 1;
+
+    var _loop = function _loop(i) {
+      var current = diff[i],
+          lines = current.lines || current.value.replace(/\n$/, '').split('\n');
+      current.lines = lines;
+
+      if (current.added || current.removed) {
+        var _curRange;
+
+        // If we have previous context, start with that
+        if (!oldRangeStart) {
+          var prev = diff[i - 1];
+          oldRangeStart = oldLine;
+          newRangeStart = newLine;
+
+          if (prev) {
+            curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
+            oldRangeStart -= curRange.length;
+            newRangeStart -= curRange.length;
+          }
+        } // Output our changes
+
+
+        (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {
+          return (current.added ? '+' : '-') + entry;
+        }))); // Track the updated file position
+
+
+        if (current.added) {
+          newLine += lines.length;
+        } else {
+          oldLine += lines.length;
+        }
+      } else {
+        // Identical context lines. Track line changes
+        if (oldRangeStart) {
+          // Close out any changes that have been output (or join overlapping)
+          if (lines.length <= options.context * 2 && i < diff.length - 2) {
+            var _curRange2;
+
+            // Overlapping
+            (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));
+          } else {
+            var _curRange3;
+
+            // end the range and output
+            var contextSize = Math.min(lines.length, options.context);
+
+            (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));
+
+            var hunk = {
+              oldStart: oldRangeStart,
+              oldLines: oldLine - oldRangeStart + contextSize,
+              newStart: newRangeStart,
+              newLines: newLine - newRangeStart + contextSize,
+              lines: curRange
+            };
+
+            if (i >= diff.length - 2 && lines.length <= options.context) {
+              // EOF is inside this hunk
+              var oldEOFNewline = /\n$/.test(oldStr);
+              var newEOFNewline = /\n$/.test(newStr);
+              var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;
+
+              if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {
+                // special case: old has no eol and no trailing context; no-nl can end up before adds
+                // however, if the old file is empty, do not output the no-nl line
+                curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
+              }
+
+              if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {
+                curRange.push('\\ No newline at end of file');
+              }
+            }
+
+            hunks.push(hunk);
+            oldRangeStart = 0;
+            newRangeStart = 0;
+            curRange = [];
+          }
+        }
+
+        oldLine += lines.length;
+        newLine += lines.length;
+      }
+    };
+
+    for (var i = 0; i < diff.length; i++) {
+      _loop(i);
+    }
+
+    return {
+      oldFileName: oldFileName,
+      newFileName: newFileName,
+      oldHeader: oldHeader,
+      newHeader: newHeader,
+      hunks: hunks
+    };
+  }
+  function formatPatch(diff) {
+    var ret = [];
+
+    if (diff.oldFileName == diff.newFileName) {
+      ret.push('Index: ' + diff.oldFileName);
+    }
+
+    ret.push('===================================================================');
+    ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
+    ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
+
+    for (var i = 0; i < diff.hunks.length; i++) {
+      var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,
+      // the first number is one lower than one would expect.
+      // https://www.artima.com/weblogs/viewpost.jsp?thread=164293
+
+      if (hunk.oldLines === 0) {
+        hunk.oldStart -= 1;
+      }
+
+      if (hunk.newLines === 0) {
+        hunk.newStart -= 1;
+      }
+
+      ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
+      ret.push.apply(ret, hunk.lines);
+    }
+
+    return ret.join('\n') + '\n';
+  }
+  function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+    return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));
+  }
+  function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
+    return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
+  }
+
+  function arrayEqual(a, b) {
+    if (a.length !== b.length) {
+      return false;
+    }
+
+    return arrayStartsWith(a, b);
+  }
+  function arrayStartsWith(array, start) {
+    if (start.length > array.length) {
+      return false;
+    }
+
+    for (var i = 0; i < start.length; i++) {
+      if (start[i] !== array[i]) {
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+  function calcLineCount(hunk) {
+    var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),
+        oldLines = _calcOldNewLineCount.oldLines,
+        newLines = _calcOldNewLineCount.newLines;
+
+    if (oldLines !== undefined) {
+      hunk.oldLines = oldLines;
+    } else {
+      delete hunk.oldLines;
+    }
+
+    if (newLines !== undefined) {
+      hunk.newLines = newLines;
+    } else {
+      delete hunk.newLines;
+    }
+  }
+  function merge(mine, theirs, base) {
+    mine = loadPatch(mine, base);
+    theirs = loadPatch(theirs, base);
+    var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.
+    // Leaving sanity checks on this to the API consumer that may know more about the
+    // meaning in their own context.
+
+    if (mine.index || theirs.index) {
+      ret.index = mine.index || theirs.index;
+    }
+
+    if (mine.newFileName || theirs.newFileName) {
+      if (!fileNameChanged(mine)) {
+        // No header or no change in ours, use theirs (and ours if theirs does not exist)
+        ret.oldFileName = theirs.oldFileName || mine.oldFileName;
+        ret.newFileName = theirs.newFileName || mine.newFileName;
+        ret.oldHeader = theirs.oldHeader || mine.oldHeader;
+        ret.newHeader = theirs.newHeader || mine.newHeader;
+      } else if (!fileNameChanged(theirs)) {
+        // No header or no change in theirs, use ours
+        ret.oldFileName = mine.oldFileName;
+        ret.newFileName = mine.newFileName;
+        ret.oldHeader = mine.oldHeader;
+        ret.newHeader = mine.newHeader;
+      } else {
+        // Both changed... figure it out
+        ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
+        ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
+        ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
+        ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
+      }
+    }
+
+    ret.hunks = [];
+    var mineIndex = 0,
+        theirsIndex = 0,
+        mineOffset = 0,
+        theirsOffset = 0;
+
+    while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
+      var mineCurrent = mine.hunks[mineIndex] || {
+        oldStart: Infinity
+      },
+          theirsCurrent = theirs.hunks[theirsIndex] || {
+        oldStart: Infinity
+      };
+
+      if (hunkBefore(mineCurrent, theirsCurrent)) {
+        // This patch does not overlap with any of the others, yay.
+        ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
+        mineIndex++;
+        theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
+      } else if (hunkBefore(theirsCurrent, mineCurrent)) {
+        // This patch does not overlap with any of the others, yay.
+        ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
+        theirsIndex++;
+        mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
+      } else {
+        // Overlap, merge as best we can
+        var mergedHunk = {
+          oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
+          oldLines: 0,
+          newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
+          newLines: 0,
+          lines: []
+        };
+        mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
+        theirsIndex++;
+        mineIndex++;
+        ret.hunks.push(mergedHunk);
+      }
+    }
+
+    return ret;
+  }
+
+  function loadPatch(param, base) {
+    if (typeof param === 'string') {
+      if (/^@@/m.test(param) || /^Index:/m.test(param)) {
+        return parsePatch(param)[0];
+      }
+
+      if (!base) {
+        throw new Error('Must provide a base reference or pass in a patch');
+      }
+
+      return structuredPatch(undefined, undefined, base, param);
+    }
+
+    return param;
+  }
+
+  function fileNameChanged(patch) {
+    return patch.newFileName && patch.newFileName !== patch.oldFileName;
+  }
+
+  function selectField(index, mine, theirs) {
+    if (mine === theirs) {
+      return mine;
+    } else {
+      index.conflict = true;
+      return {
+        mine: mine,
+        theirs: theirs
+      };
+    }
+  }
+
+  function hunkBefore(test, check) {
+    return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
+  }
+
+  function cloneHunk(hunk, offset) {
+    return {
+      oldStart: hunk.oldStart,
+      oldLines: hunk.oldLines,
+      newStart: hunk.newStart + offset,
+      newLines: hunk.newLines,
+      lines: hunk.lines
+    };
+  }
+
+  function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
+    // This will generally result in a conflicted hunk, but there are cases where the context
+    // is the only overlap where we can successfully merge the content here.
+    var mine = {
+      offset: mineOffset,
+      lines: mineLines,
+      index: 0
+    },
+        their = {
+      offset: theirOffset,
+      lines: theirLines,
+      index: 0
+    }; // Handle any leading content
+
+    insertLeading(hunk, mine, their);
+    insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.
+
+    while (mine.index < mine.lines.length && their.index < their.lines.length) {
+      var mineCurrent = mine.lines[mine.index],
+          theirCurrent = their.lines[their.index];
+
+      if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
+        // Both modified ...
+        mutualChange(hunk, mine, their);
+      } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
+        var _hunk$lines;
+
+        // Mine inserted
+        (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));
+      } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
+        var _hunk$lines2;
+
+        // Theirs inserted
+        (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));
+      } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
+        // Mine removed or edited
+        removal(hunk, mine, their);
+      } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
+        // Their removed or edited
+        removal(hunk, their, mine, true);
+      } else if (mineCurrent === theirCurrent) {
+        // Context identity
+        hunk.lines.push(mineCurrent);
+        mine.index++;
+        their.index++;
+      } else {
+        // Context mismatch
+        conflict(hunk, collectChange(mine), collectChange(their));
+      }
+    } // Now push anything that may be remaining
+
+
+    insertTrailing(hunk, mine);
+    insertTrailing(hunk, their);
+    calcLineCount(hunk);
+  }
+
+  function mutualChange(hunk, mine, their) {
+    var myChanges = collectChange(mine),
+        theirChanges = collectChange(their);
+
+    if (allRemoves(myChanges) && allRemoves(theirChanges)) {
+      // Special case for remove changes that are supersets of one another
+      if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
+        var _hunk$lines3;
+
+        (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));
+
+        return;
+      } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
+        var _hunk$lines4;
+
+        (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));
+
+        return;
+      }
+    } else if (arrayEqual(myChanges, theirChanges)) {
+      var _hunk$lines5;
+
+      (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));
+
+      return;
+    }
+
+    conflict(hunk, myChanges, theirChanges);
+  }
+
+  function removal(hunk, mine, their, swap) {
+    var myChanges = collectChange(mine),
+        theirChanges = collectContext(their, myChanges);
+
+    if (theirChanges.merged) {
+      var _hunk$lines6;
+
+      (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));
+    } else {
+      conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
+    }
+  }
+
+  function conflict(hunk, mine, their) {
+    hunk.conflict = true;
+    hunk.lines.push({
+      conflict: true,
+      mine: mine,
+      theirs: their
+    });
+  }
+
+  function insertLeading(hunk, insert, their) {
+    while (insert.offset < their.offset && insert.index < insert.lines.length) {
+      var line = insert.lines[insert.index++];
+      hunk.lines.push(line);
+      insert.offset++;
+    }
+  }
+
+  function insertTrailing(hunk, insert) {
+    while (insert.index < insert.lines.length) {
+      var line = insert.lines[insert.index++];
+      hunk.lines.push(line);
+    }
+  }
+
+  function collectChange(state) {
+    var ret = [],
+        operation = state.lines[state.index][0];
+
+    while (state.index < state.lines.length) {
+      var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
+
+      if (operation === '-' && line[0] === '+') {
+        operation = '+';
+      }
+
+      if (operation === line[0]) {
+        ret.push(line);
+        state.index++;
+      } else {
+        break;
+      }
+    }
+
+    return ret;
+  }
+
+  function collectContext(state, matchChanges) {
+    var changes = [],
+        merged = [],
+        matchIndex = 0,
+        contextChanges = false,
+        conflicted = false;
+
+    while (matchIndex < matchChanges.length && state.index < state.lines.length) {
+      var change = state.lines[state.index],
+          match = matchChanges[matchIndex]; // Once we've hit our add, then we are done
+
+      if (match[0] === '+') {
+        break;
+      }
+
+      contextChanges = contextChanges || change[0] !== ' ';
+      merged.push(match);
+      matchIndex++; // Consume any additions in the other block as a conflict to attempt
+      // to pull in the remaining context after this
+
+      if (change[0] === '+') {
+        conflicted = true;
+
+        while (change[0] === '+') {
+          changes.push(change);
+          change = state.lines[++state.index];
+        }
+      }
+
+      if (match.substr(1) === change.substr(1)) {
+        changes.push(change);
+        state.index++;
+      } else {
+        conflicted = true;
+      }
+    }
+
+    if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
+      conflicted = true;
+    }
+
+    if (conflicted) {
+      return changes;
+    }
+
+    while (matchIndex < matchChanges.length) {
+      merged.push(matchChanges[matchIndex++]);
+    }
+
+    return {
+      merged: merged,
+      changes: changes
+    };
+  }
+
+  function allRemoves(changes) {
+    return changes.reduce(function (prev, change) {
+      return prev && change[0] === '-';
+    }, true);
+  }
+
+  function skipRemoveSuperset(state, removeChanges, delta) {
+    for (var i = 0; i < delta; i++) {
+      var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
+
+      if (state.lines[state.index + i] !== ' ' + changeContent) {
+        return false;
+      }
+    }
+
+    state.index += delta;
+    return true;
+  }
+
+  function calcOldNewLineCount(lines) {
+    var oldLines = 0;
+    var newLines = 0;
+    lines.forEach(function (line) {
+      if (typeof line !== 'string') {
+        var myCount = calcOldNewLineCount(line.mine);
+        var theirCount = calcOldNewLineCount(line.theirs);
+
+        if (oldLines !== undefined) {
+          if (myCount.oldLines === theirCount.oldLines) {
+            oldLines += myCount.oldLines;
+          } else {
+            oldLines = undefined;
+          }
+        }
+
+        if (newLines !== undefined) {
+          if (myCount.newLines === theirCount.newLines) {
+            newLines += myCount.newLines;
+          } else {
+            newLines = undefined;
+          }
+        }
+      } else {
+        if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {
+          newLines++;
+        }
+
+        if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {
+          oldLines++;
+        }
+      }
+    });
+    return {
+      oldLines: oldLines,
+      newLines: newLines
+    };
+  }
+
+  // See: http://code.google.com/p/google-diff-match-patch/wiki/API
+  function convertChangesToDMP(changes) {
+    var ret = [],
+        change,
+        operation;
+
+    for (var i = 0; i < changes.length; i++) {
+      change = changes[i];
+
+      if (change.added) {
+        operation = 1;
+      } else if (change.removed) {
+        operation = -1;
+      } else {
+        operation = 0;
+      }
+
+      ret.push([operation, change.value]);
+    }
+
+    return ret;
+  }
+
+  function convertChangesToXML(changes) {
+    var ret = [];
+
+    for (var i = 0; i < changes.length; i++) {
+      var change = changes[i];
+
+      if (change.added) {
+        ret.push('');
+      } else if (change.removed) {
+        ret.push('');
+      }
+
+      ret.push(escapeHTML(change.value));
+
+      if (change.added) {
+        ret.push('');
+      } else if (change.removed) {
+        ret.push('');
+      }
+    }
+
+    return ret.join('');
+  }
+
+  function escapeHTML(s) {
+    var n = s;
+    n = n.replace(/&/g, '&');
+    n = n.replace(//g, '>');
+    n = n.replace(/"/g, '"');
+    return n;
+  }
+
+  exports.Diff = Diff;
+  exports.applyPatch = applyPatch;
+  exports.applyPatches = applyPatches;
+  exports.canonicalize = canonicalize;
+  exports.convertChangesToDMP = convertChangesToDMP;
+  exports.convertChangesToXML = convertChangesToXML;
+  exports.createPatch = createPatch;
+  exports.createTwoFilesPatch = createTwoFilesPatch;
+  exports.diffArrays = diffArrays;
+  exports.diffChars = diffChars;
+  exports.diffCss = diffCss;
+  exports.diffJson = diffJson;
+  exports.diffLines = diffLines;
+  exports.diffSentences = diffSentences;
+  exports.diffTrimmedLines = diffTrimmedLines;
+  exports.diffWords = diffWords;
+  exports.diffWordsWithSpace = diffWordsWithSpace;
+  exports.merge = merge;
+  exports.parsePatch = parsePatch;
+  exports.structuredPatch = structuredPatch;
+
+  Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
diff --git a/node_modules/diff/lib/convert/dmp.js b/node_modules/diff/lib/convert/dmp.js
new file mode 100644
index 0000000..91ff40a
--- /dev/null
+++ b/node_modules/diff/lib/convert/dmp.js
@@ -0,0 +1,32 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.convertChangesToDMP = convertChangesToDMP;
+
+/*istanbul ignore end*/
+// See: http://code.google.com/p/google-diff-match-patch/wiki/API
+function convertChangesToDMP(changes) {
+  var ret = [],
+      change,
+      operation;
+
+  for (var i = 0; i < changes.length; i++) {
+    change = changes[i];
+
+    if (change.added) {
+      operation = 1;
+    } else if (change.removed) {
+      operation = -1;
+    } else {
+      operation = 0;
+    }
+
+    ret.push([operation, change.value]);
+  }
+
+  return ret;
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWO0FBQUEsTUFDSUMsTUFESjtBQUFBLE1BRUlDLFNBRko7O0FBR0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixPQUFPLENBQUNLLE1BQTVCLEVBQW9DRCxDQUFDLEVBQXJDLEVBQXlDO0FBQ3ZDRixJQUFBQSxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0ksQ0FBRCxDQUFoQjs7QUFDQSxRQUFJRixNQUFNLENBQUNJLEtBQVgsRUFBa0I7QUFDaEJILE1BQUFBLFNBQVMsR0FBRyxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE1BQU0sQ0FBQ0ssT0FBWCxFQUFvQjtBQUN6QkosTUFBQUEsU0FBUyxHQUFHLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxNQUFBQSxTQUFTLEdBQUcsQ0FBWjtBQUNEOztBQUVERixJQUFBQSxHQUFHLENBQUNPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE1BQU0sQ0FBQ08sS0FBbkIsQ0FBVDtBQUNEOztBQUNELFNBQU9SLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNlZTogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1kaWZmLW1hdGNoLXBhdGNoL3dpa2kvQVBJXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb0RNUChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXSxcbiAgICAgIGNoYW5nZSxcbiAgICAgIG9wZXJhdGlvbjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAxO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIG9wZXJhdGlvbiA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcGVyYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHJldC5wdXNoKFtvcGVyYXRpb24sIGNoYW5nZS52YWx1ZV0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
diff --git a/node_modules/diff/lib/convert/xml.js b/node_modules/diff/lib/convert/xml.js
new file mode 100644
index 0000000..69ec60c
--- /dev/null
+++ b/node_modules/diff/lib/convert/xml.js
@@ -0,0 +1,42 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.convertChangesToXML = convertChangesToXML;
+
+/*istanbul ignore end*/
+function convertChangesToXML(changes) {
+  var ret = [];
+
+  for (var i = 0; i < changes.length; i++) {
+    var change = changes[i];
+
+    if (change.added) {
+      ret.push('');
+    } else if (change.removed) {
+      ret.push('');
+    }
+
+    ret.push(escapeHTML(change.value));
+
+    if (change.added) {
+      ret.push('');
+    } else if (change.removed) {
+      ret.push('');
+    }
+  }
+
+  return ret.join('');
+}
+
+function escapeHTML(s) {
+  var n = s;
+  n = n.replace(/&/g, '&');
+  n = n.replace(//g, '>');
+  n = n.replace(/"/g, '"');
+  return n;
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2hhbmdlcyIsInJldCIsImkiLCJsZW5ndGgiLCJjaGFuZ2UiLCJhZGRlZCIsInB1c2giLCJyZW1vdmVkIiwiZXNjYXBlSFRNTCIsInZhbHVlIiwiam9pbiIsInMiLCJuIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUE1QixFQUFvQ0QsQ0FBQyxFQUFyQyxFQUF5QztBQUN2QyxRQUFJRSxNQUFNLEdBQUdKLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFwQjs7QUFDQSxRQUFJRSxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLE9BQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxPQUFUO0FBQ0Q7O0FBRURMLElBQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTRSxVQUFVLENBQUNKLE1BQU0sQ0FBQ0ssS0FBUixDQUFuQjs7QUFFQSxRQUFJTCxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLFFBQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxRQUFUO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPTCxHQUFHLENBQUNTLElBQUosQ0FBUyxFQUFULENBQVA7QUFDRDs7QUFFRCxTQUFTRixVQUFULENBQW9CRyxDQUFwQixFQUF1QjtBQUNyQixNQUFJQyxDQUFDLEdBQUdELENBQVI7QUFDQUMsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE9BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLFFBQWhCLENBQUo7QUFFQSxTQUFPRCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb1hNTChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUhUTUwocykge1xuICBsZXQgbiA9IHM7XG4gIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICBuID0gbi5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgcmV0dXJuIG47XG59XG4iXX0=
diff --git a/node_modules/diff/lib/diff/array.js b/node_modules/diff/lib/diff/array.js
new file mode 100644
index 0000000..19e3680
--- /dev/null
+++ b/node_modules/diff/lib/diff/array.js
@@ -0,0 +1,45 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.diffArrays = diffArrays;
+exports.arrayDiff = void 0;
+
+/*istanbul ignore end*/
+var
+/*istanbul ignore start*/
+_base = _interopRequireDefault(require("./base"))
+/*istanbul ignore end*/
+;
+
+/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+/*istanbul ignore end*/
+var arrayDiff = new
+/*istanbul ignore start*/
+_base
+/*istanbul ignore end*/
+[
+/*istanbul ignore start*/
+"default"
+/*istanbul ignore end*/
+]();
+
+/*istanbul ignore start*/
+exports.arrayDiff = arrayDiff;
+
+/*istanbul ignore end*/
+arrayDiff.tokenize = function (value) {
+  return value.slice();
+};
+
+arrayDiff.join = arrayDiff.removeEmpty = function (value) {
+  return value;
+};
+
+function diffArrays(oldArr, newArr, callback) {
+  return arrayDiff.diff(oldArr, newArr, callback);
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJkaWZmQXJyYXlzIiwib2xkQXJyIiwibmV3QXJyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFsQjs7Ozs7O0FBQ1BELFNBQVMsQ0FBQ0UsUUFBVixHQUFxQixVQUFTQyxLQUFULEVBQWdCO0FBQ25DLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixFQUFQO0FBQ0QsQ0FGRDs7QUFHQUosU0FBUyxDQUFDSyxJQUFWLEdBQWlCTCxTQUFTLENBQUNNLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1YsU0FBUyxDQUFDVyxJQUFWLENBQWVILE1BQWYsRUFBdUJDLE1BQXZCLEVBQStCQyxRQUEvQixDQUFQO0FBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGFycmF5RGlmZiA9IG5ldyBEaWZmKCk7XG5hcnJheURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoKTtcbn07XG5hcnJheURpZmYuam9pbiA9IGFycmF5RGlmZi5yZW1vdmVFbXB0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXJyYXlzKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjaykgeyByZXR1cm4gYXJyYXlEaWZmLmRpZmYob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKTsgfVxuIl19
diff --git a/node_modules/diff/lib/diff/base.js b/node_modules/diff/lib/diff/base.js
new file mode 100644
index 0000000..48bbe23
--- /dev/null
+++ b/node_modules/diff/lib/diff/base.js
@@ -0,0 +1,304 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports["default"] = Diff;
+
+/*istanbul ignore end*/
+function Diff() {}
+
+Diff.prototype = {
+  /*istanbul ignore start*/
+
+  /*istanbul ignore end*/
+  diff: function diff(oldString, newString) {
+    /*istanbul ignore start*/
+    var
+    /*istanbul ignore end*/
+    options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+    var callback = options.callback;
+
+    if (typeof options === 'function') {
+      callback = options;
+      options = {};
+    }
+
+    this.options = options;
+    var self = this;
+
+    function done(value) {
+      if (callback) {
+        setTimeout(function () {
+          callback(undefined, value);
+        }, 0);
+        return true;
+      } else {
+        return value;
+      }
+    } // Allow subclasses to massage the input prior to running
+
+
+    oldString = this.castInput(oldString);
+    newString = this.castInput(newString);
+    oldString = this.removeEmpty(this.tokenize(oldString));
+    newString = this.removeEmpty(this.tokenize(newString));
+    var newLen = newString.length,
+        oldLen = oldString.length;
+    var editLength = 1;
+    var maxEditLength = newLen + oldLen;
+    var bestPath = [{
+      newPos: -1,
+      components: []
+    }]; // Seed editLength = 0, i.e. the content starts with the same values
+
+    var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
+
+    if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+      // Identity per the equality and tokenizer
+      return done([{
+        value: this.join(newString),
+        count: newString.length
+      }]);
+    } // Main worker method. checks all permutations of a given edit length for acceptance.
+
+
+    function execEditLength() {
+      for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
+        var basePath =
+        /*istanbul ignore start*/
+        void 0
+        /*istanbul ignore end*/
+        ;
+
+        var addPath = bestPath[diagonalPath - 1],
+            removePath = bestPath[diagonalPath + 1],
+            _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+
+        if (addPath) {
+          // No one else is going to attempt to use this value, clear it
+          bestPath[diagonalPath - 1] = undefined;
+        }
+
+        var canAdd = addPath && addPath.newPos + 1 < newLen,
+            canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
+
+        if (!canAdd && !canRemove) {
+          // If this path is a terminal then prune
+          bestPath[diagonalPath] = undefined;
+          continue;
+        } // Select the diagonal that we want to branch from. We select the prior
+        // path whose position in the new string is the farthest from the origin
+        // and does not pass the bounds of the diff graph
+
+
+        if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
+          basePath = clonePath(removePath);
+          self.pushComponent(basePath.components, undefined, true);
+        } else {
+          basePath = addPath; // No need to clone, we've pulled it from the list
+
+          basePath.newPos++;
+          self.pushComponent(basePath.components, true, undefined);
+        }
+
+        _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done
+
+        if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
+          return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
+        } else {
+          // Otherwise track this path as a potential candidate and continue.
+          bestPath[diagonalPath] = basePath;
+        }
+      }
+
+      editLength++;
+    } // Performs the length of edit iteration. Is a bit fugly as this has to support the
+    // sync and async mode which is never fun. Loops over execEditLength until a value
+    // is produced.
+
+
+    if (callback) {
+      (function exec() {
+        setTimeout(function () {
+          // This should not happen, but we want to be safe.
+
+          /* istanbul ignore next */
+          if (editLength > maxEditLength) {
+            return callback();
+          }
+
+          if (!execEditLength()) {
+            exec();
+          }
+        }, 0);
+      })();
+    } else {
+      while (editLength <= maxEditLength) {
+        var ret = execEditLength();
+
+        if (ret) {
+          return ret;
+        }
+      }
+    }
+  },
+
+  /*istanbul ignore start*/
+
+  /*istanbul ignore end*/
+  pushComponent: function pushComponent(components, added, removed) {
+    var last = components[components.length - 1];
+
+    if (last && last.added === added && last.removed === removed) {
+      // We need to clone here as the component clone operation is just
+      // as shallow array clone
+      components[components.length - 1] = {
+        count: last.count + 1,
+        added: added,
+        removed: removed
+      };
+    } else {
+      components.push({
+        count: 1,
+        added: added,
+        removed: removed
+      });
+    }
+  },
+
+  /*istanbul ignore start*/
+
+  /*istanbul ignore end*/
+  extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
+    var newLen = newString.length,
+        oldLen = oldString.length,
+        newPos = basePath.newPos,
+        oldPos = newPos - diagonalPath,
+        commonCount = 0;
+
+    while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
+      newPos++;
+      oldPos++;
+      commonCount++;
+    }
+
+    if (commonCount) {
+      basePath.components.push({
+        count: commonCount
+      });
+    }
+
+    basePath.newPos = newPos;
+    return oldPos;
+  },
+
+  /*istanbul ignore start*/
+
+  /*istanbul ignore end*/
+  equals: function equals(left, right) {
+    if (this.options.comparator) {
+      return this.options.comparator(left, right);
+    } else {
+      return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
+    }
+  },
+
+  /*istanbul ignore start*/
+
+  /*istanbul ignore end*/
+  removeEmpty: function removeEmpty(array) {
+    var ret = [];
+
+    for (var i = 0; i < array.length; i++) {
+      if (array[i]) {
+        ret.push(array[i]);
+      }
+    }
+
+    return ret;
+  },
+
+  /*istanbul ignore start*/
+
+  /*istanbul ignore end*/
+  castInput: function castInput(value) {
+    return value;
+  },
+
+  /*istanbul ignore start*/
+
+  /*istanbul ignore end*/
+  tokenize: function tokenize(value) {
+    return value.split('');
+  },
+
+  /*istanbul ignore start*/
+
+  /*istanbul ignore end*/
+  join: function join(chars) {
+    return chars.join('');
+  }
+};
+
+function buildValues(diff, components, newString, oldString, useLongestToken) {
+  var componentPos = 0,
+      componentLen = components.length,
+      newPos = 0,
+      oldPos = 0;
+
+  for (; componentPos < componentLen; componentPos++) {
+    var component = components[componentPos];
+
+    if (!component.removed) {
+      if (!component.added && useLongestToken) {
+        var value = newString.slice(newPos, newPos + component.count);
+        value = value.map(function (value, i) {
+          var oldValue = oldString[oldPos + i];
+          return oldValue.length > value.length ? oldValue : value;
+        });
+        component.value = diff.join(value);
+      } else {
+        component.value = diff.join(newString.slice(newPos, newPos + component.count));
+      }
+
+      newPos += component.count; // Common case
+
+      if (!component.added) {
+        oldPos += component.count;
+      }
+    } else {
+      component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));
+      oldPos += component.count; // Reverse add and remove so removes are output first to match common convention
+      // The diffing algorithm is tied to add then remove output and this is the simplest
+      // route to get the desired output with minimal overhead.
+
+      if (componentPos && components[componentPos - 1].added) {
+        var tmp = components[componentPos - 1];
+        components[componentPos - 1] = components[componentPos];
+        components[componentPos] = tmp;
+      }
+    }
+  } // Special case handle for when one terminal is ignored (i.e. whitespace).
+  // For this case we merge the terminal into the prior string and drop the change.
+  // This is only available for string mode.
+
+
+  var lastComponent = components[componentLen - 1];
+
+  if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
+    components[componentLen - 2].value += lastComponent.value;
+    components.pop();
+  }
+
+  return components;
+}
+
+function clonePath(path) {
+  return {
+    newPos: path.newPos,
+    components: path.components.slice(0)
+  };
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsImJlc3RQYXRoIiwibmV3UG9zIiwiY29tcG9uZW50cyIsIm9sZFBvcyIsImV4dHJhY3RDb21tb24iLCJqb2luIiwiY291bnQiLCJleGVjRWRpdExlbmd0aCIsImRpYWdvbmFsUGF0aCIsImJhc2VQYXRoIiwiYWRkUGF0aCIsInJlbW92ZVBhdGgiLCJjYW5BZGQiLCJjYW5SZW1vdmUiLCJjbG9uZVBhdGgiLCJwdXNoQ29tcG9uZW50IiwiYnVpbGRWYWx1ZXMiLCJ1c2VMb25nZXN0VG9rZW4iLCJleGVjIiwicmV0IiwiYWRkZWQiLCJyZW1vdmVkIiwibGFzdCIsInB1c2giLCJjb21tb25Db3VudCIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNvbXBhcmF0b3IiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJhcnJheSIsImkiLCJzcGxpdCIsImNoYXJzIiwiY29tcG9uZW50UG9zIiwiY29tcG9uZW50TGVuIiwiY29tcG9uZW50Iiwic2xpY2UiLCJtYXAiLCJvbGRWYWx1ZSIsInRtcCIsImxhc3RDb21wb25lbnQiLCJwb3AiLCJwYXRoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBZSxTQUFTQSxJQUFULEdBQWdCLENBQUU7O0FBRWpDQSxJQUFJLENBQUNDLFNBQUwsR0FBaUI7QUFBQTs7QUFBQTtBQUNmQyxFQUFBQSxJQURlLGdCQUNWQyxTQURVLEVBQ0NDLFNBREQsRUFDMEI7QUFBQTtBQUFBO0FBQUE7QUFBZEMsSUFBQUEsT0FBYyx1RUFBSixFQUFJO0FBQ3ZDLFFBQUlDLFFBQVEsR0FBR0QsT0FBTyxDQUFDQyxRQUF2Qjs7QUFDQSxRQUFJLE9BQU9ELE9BQVAsS0FBbUIsVUFBdkIsRUFBbUM7QUFDakNDLE1BQUFBLFFBQVEsR0FBR0QsT0FBWDtBQUNBQSxNQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNEOztBQUNELFNBQUtBLE9BQUwsR0FBZUEsT0FBZjtBQUVBLFFBQUlFLElBQUksR0FBRyxJQUFYOztBQUVBLGFBQVNDLElBQVQsQ0FBY0MsS0FBZCxFQUFxQjtBQUNuQixVQUFJSCxRQUFKLEVBQWM7QUFDWkksUUFBQUEsVUFBVSxDQUFDLFlBQVc7QUFBRUosVUFBQUEsUUFBUSxDQUFDSyxTQUFELEVBQVlGLEtBQVosQ0FBUjtBQUE2QixTQUEzQyxFQUE2QyxDQUE3QyxDQUFWO0FBQ0EsZUFBTyxJQUFQO0FBQ0QsT0FIRCxNQUdPO0FBQ0wsZUFBT0EsS0FBUDtBQUNEO0FBQ0YsS0FqQnNDLENBbUJ2Qzs7O0FBQ0FOLElBQUFBLFNBQVMsR0FBRyxLQUFLUyxTQUFMLENBQWVULFNBQWYsQ0FBWjtBQUNBQyxJQUFBQSxTQUFTLEdBQUcsS0FBS1EsU0FBTCxDQUFlUixTQUFmLENBQVo7QUFFQUQsSUFBQUEsU0FBUyxHQUFHLEtBQUtVLFdBQUwsQ0FBaUIsS0FBS0MsUUFBTCxDQUFjWCxTQUFkLENBQWpCLENBQVo7QUFDQUMsSUFBQUEsU0FBUyxHQUFHLEtBQUtTLFdBQUwsQ0FBaUIsS0FBS0MsUUFBTCxDQUFjVixTQUFkLENBQWpCLENBQVo7QUFFQSxRQUFJVyxNQUFNLEdBQUdYLFNBQVMsQ0FBQ1ksTUFBdkI7QUFBQSxRQUErQkMsTUFBTSxHQUFHZCxTQUFTLENBQUNhLE1BQWxEO0FBQ0EsUUFBSUUsVUFBVSxHQUFHLENBQWpCO0FBQ0EsUUFBSUMsYUFBYSxHQUFHSixNQUFNLEdBQUdFLE1BQTdCO0FBQ0EsUUFBSUcsUUFBUSxHQUFHLENBQUM7QUFBRUMsTUFBQUEsTUFBTSxFQUFFLENBQUMsQ0FBWDtBQUFjQyxNQUFBQSxVQUFVLEVBQUU7QUFBMUIsS0FBRCxDQUFmLENBN0J1QyxDQStCdkM7O0FBQ0EsUUFBSUMsTUFBTSxHQUFHLEtBQUtDLGFBQUwsQ0FBbUJKLFFBQVEsQ0FBQyxDQUFELENBQTNCLEVBQWdDaEIsU0FBaEMsRUFBMkNELFNBQTNDLEVBQXNELENBQXRELENBQWI7O0FBQ0EsUUFBSWlCLFFBQVEsQ0FBQyxDQUFELENBQVIsQ0FBWUMsTUFBWixHQUFxQixDQUFyQixJQUEwQk4sTUFBMUIsSUFBb0NRLE1BQU0sR0FBRyxDQUFULElBQWNOLE1BQXRELEVBQThEO0FBQzVEO0FBQ0EsYUFBT1QsSUFBSSxDQUFDLENBQUM7QUFBQ0MsUUFBQUEsS0FBSyxFQUFFLEtBQUtnQixJQUFMLENBQVVyQixTQUFWLENBQVI7QUFBOEJzQixRQUFBQSxLQUFLLEVBQUV0QixTQUFTLENBQUNZO0FBQS9DLE9BQUQsQ0FBRCxDQUFYO0FBQ0QsS0FwQ3NDLENBc0N2Qzs7O0FBQ0EsYUFBU1csY0FBVCxHQUEwQjtBQUN4QixXQUFLLElBQUlDLFlBQVksR0FBRyxDQUFDLENBQUQsR0FBS1YsVUFBN0IsRUFBeUNVLFlBQVksSUFBSVYsVUFBekQsRUFBcUVVLFlBQVksSUFBSSxDQUFyRixFQUF3RjtBQUN0RixZQUFJQyxRQUFRO0FBQUE7QUFBQTtBQUFaO0FBQUE7O0FBQ0EsWUFBSUMsT0FBTyxHQUFHVixRQUFRLENBQUNRLFlBQVksR0FBRyxDQUFoQixDQUF0QjtBQUFBLFlBQ0lHLFVBQVUsR0FBR1gsUUFBUSxDQUFDUSxZQUFZLEdBQUcsQ0FBaEIsQ0FEekI7QUFBQSxZQUVJTCxPQUFNLEdBQUcsQ0FBQ1EsVUFBVSxHQUFHQSxVQUFVLENBQUNWLE1BQWQsR0FBdUIsQ0FBbEMsSUFBdUNPLFlBRnBEOztBQUdBLFlBQUlFLE9BQUosRUFBYTtBQUNYO0FBQ0FWLFVBQUFBLFFBQVEsQ0FBQ1EsWUFBWSxHQUFHLENBQWhCLENBQVIsR0FBNkJqQixTQUE3QjtBQUNEOztBQUVELFlBQUlxQixNQUFNLEdBQUdGLE9BQU8sSUFBSUEsT0FBTyxDQUFDVCxNQUFSLEdBQWlCLENBQWpCLEdBQXFCTixNQUE3QztBQUFBLFlBQ0lrQixTQUFTLEdBQUdGLFVBQVUsSUFBSSxLQUFLUixPQUFuQixJQUE2QkEsT0FBTSxHQUFHTixNQUR0RDs7QUFFQSxZQUFJLENBQUNlLE1BQUQsSUFBVyxDQUFDQyxTQUFoQixFQUEyQjtBQUN6QjtBQUNBYixVQUFBQSxRQUFRLENBQUNRLFlBQUQsQ0FBUixHQUF5QmpCLFNBQXpCO0FBQ0E7QUFDRCxTQWhCcUYsQ0FrQnRGO0FBQ0E7QUFDQTs7O0FBQ0EsWUFBSSxDQUFDcUIsTUFBRCxJQUFZQyxTQUFTLElBQUlILE9BQU8sQ0FBQ1QsTUFBUixHQUFpQlUsVUFBVSxDQUFDVixNQUF6RCxFQUFrRTtBQUNoRVEsVUFBQUEsUUFBUSxHQUFHSyxTQUFTLENBQUNILFVBQUQsQ0FBcEI7QUFDQXhCLFVBQUFBLElBQUksQ0FBQzRCLGFBQUwsQ0FBbUJOLFFBQVEsQ0FBQ1AsVUFBNUIsRUFBd0NYLFNBQXhDLEVBQW1ELElBQW5EO0FBQ0QsU0FIRCxNQUdPO0FBQ0xrQixVQUFBQSxRQUFRLEdBQUdDLE9BQVgsQ0FESyxDQUNlOztBQUNwQkQsVUFBQUEsUUFBUSxDQUFDUixNQUFUO0FBQ0FkLFVBQUFBLElBQUksQ0FBQzRCLGFBQUwsQ0FBbUJOLFFBQVEsQ0FBQ1AsVUFBNUIsRUFBd0MsSUFBeEMsRUFBOENYLFNBQTlDO0FBQ0Q7O0FBRURZLFFBQUFBLE9BQU0sR0FBR2hCLElBQUksQ0FBQ2lCLGFBQUwsQ0FBbUJLLFFBQW5CLEVBQTZCekIsU0FBN0IsRUFBd0NELFNBQXhDLEVBQW1EeUIsWUFBbkQsQ0FBVCxDQTlCc0YsQ0FnQ3RGOztBQUNBLFlBQUlDLFFBQVEsQ0FBQ1IsTUFBVCxHQUFrQixDQUFsQixJQUF1Qk4sTUFBdkIsSUFBaUNRLE9BQU0sR0FBRyxDQUFULElBQWNOLE1BQW5ELEVBQTJEO0FBQ3pELGlCQUFPVCxJQUFJLENBQUM0QixXQUFXLENBQUM3QixJQUFELEVBQU9zQixRQUFRLENBQUNQLFVBQWhCLEVBQTRCbEIsU0FBNUIsRUFBdUNELFNBQXZDLEVBQWtESSxJQUFJLENBQUM4QixlQUF2RCxDQUFaLENBQVg7QUFDRCxTQUZELE1BRU87QUFDTDtBQUNBakIsVUFBQUEsUUFBUSxDQUFDUSxZQUFELENBQVIsR0FBeUJDLFFBQXpCO0FBQ0Q7QUFDRjs7QUFFRFgsTUFBQUEsVUFBVTtBQUNYLEtBbEZzQyxDQW9GdkM7QUFDQTtBQUNBOzs7QUFDQSxRQUFJWixRQUFKLEVBQWM7QUFDWCxnQkFBU2dDLElBQVQsR0FBZ0I7QUFDZjVCLFFBQUFBLFVBQVUsQ0FBQyxZQUFXO0FBQ3BCOztBQUNBO0FBQ0EsY0FBSVEsVUFBVSxHQUFHQyxhQUFqQixFQUFnQztBQUM5QixtQkFBT2IsUUFBUSxFQUFmO0FBQ0Q7O0FBRUQsY0FBSSxDQUFDcUIsY0FBYyxFQUFuQixFQUF1QjtBQUNyQlcsWUFBQUEsSUFBSTtBQUNMO0FBQ0YsU0FWUyxFQVVQLENBVk8sQ0FBVjtBQVdELE9BWkEsR0FBRDtBQWFELEtBZEQsTUFjTztBQUNMLGFBQU9wQixVQUFVLElBQUlDLGFBQXJCLEVBQW9DO0FBQ2xDLFlBQUlvQixHQUFHLEdBQUdaLGNBQWMsRUFBeEI7O0FBQ0EsWUFBSVksR0FBSixFQUFTO0FBQ1AsaUJBQU9BLEdBQVA7QUFDRDtBQUNGO0FBQ0Y7QUFDRixHQTlHYzs7QUFBQTs7QUFBQTtBQWdIZkosRUFBQUEsYUFoSGUseUJBZ0hEYixVQWhIQyxFQWdIV2tCLEtBaEhYLEVBZ0hrQkMsT0FoSGxCLEVBZ0gyQjtBQUN4QyxRQUFJQyxJQUFJLEdBQUdwQixVQUFVLENBQUNBLFVBQVUsQ0FBQ04sTUFBWCxHQUFvQixDQUFyQixDQUFyQjs7QUFDQSxRQUFJMEIsSUFBSSxJQUFJQSxJQUFJLENBQUNGLEtBQUwsS0FBZUEsS0FBdkIsSUFBZ0NFLElBQUksQ0FBQ0QsT0FBTCxLQUFpQkEsT0FBckQsRUFBOEQ7QUFDNUQ7QUFDQTtBQUNBbkIsTUFBQUEsVUFBVSxDQUFDQSxVQUFVLENBQUNOLE1BQVgsR0FBb0IsQ0FBckIsQ0FBVixHQUFvQztBQUFDVSxRQUFBQSxLQUFLLEVBQUVnQixJQUFJLENBQUNoQixLQUFMLEdBQWEsQ0FBckI7QUFBd0JjLFFBQUFBLEtBQUssRUFBRUEsS0FBL0I7QUFBc0NDLFFBQUFBLE9BQU8sRUFBRUE7QUFBL0MsT0FBcEM7QUFDRCxLQUpELE1BSU87QUFDTG5CLE1BQUFBLFVBQVUsQ0FBQ3FCLElBQVgsQ0FBZ0I7QUFBQ2pCLFFBQUFBLEtBQUssRUFBRSxDQUFSO0FBQVdjLFFBQUFBLEtBQUssRUFBRUEsS0FBbEI7QUFBeUJDLFFBQUFBLE9BQU8sRUFBRUE7QUFBbEMsT0FBaEI7QUFDRDtBQUNGLEdBekhjOztBQUFBOztBQUFBO0FBMEhmakIsRUFBQUEsYUExSGUseUJBMEhESyxRQTFIQyxFQTBIU3pCLFNBMUhULEVBMEhvQkQsU0ExSHBCLEVBMEgrQnlCLFlBMUgvQixFQTBINkM7QUFDMUQsUUFBSWIsTUFBTSxHQUFHWCxTQUFTLENBQUNZLE1BQXZCO0FBQUEsUUFDSUMsTUFBTSxHQUFHZCxTQUFTLENBQUNhLE1BRHZCO0FBQUEsUUFFSUssTUFBTSxHQUFHUSxRQUFRLENBQUNSLE1BRnRCO0FBQUEsUUFHSUUsTUFBTSxHQUFHRixNQUFNLEdBQUdPLFlBSHRCO0FBQUEsUUFLSWdCLFdBQVcsR0FBRyxDQUxsQjs7QUFNQSxXQUFPdkIsTUFBTSxHQUFHLENBQVQsR0FBYU4sTUFBYixJQUF1QlEsTUFBTSxHQUFHLENBQVQsR0FBYU4sTUFBcEMsSUFBOEMsS0FBSzRCLE1BQUwsQ0FBWXpDLFNBQVMsQ0FBQ2lCLE1BQU0sR0FBRyxDQUFWLENBQXJCLEVBQW1DbEIsU0FBUyxDQUFDb0IsTUFBTSxHQUFHLENBQVYsQ0FBNUMsQ0FBckQsRUFBZ0g7QUFDOUdGLE1BQUFBLE1BQU07QUFDTkUsTUFBQUEsTUFBTTtBQUNOcUIsTUFBQUEsV0FBVztBQUNaOztBQUVELFFBQUlBLFdBQUosRUFBaUI7QUFDZmYsTUFBQUEsUUFBUSxDQUFDUCxVQUFULENBQW9CcUIsSUFBcEIsQ0FBeUI7QUFBQ2pCLFFBQUFBLEtBQUssRUFBRWtCO0FBQVIsT0FBekI7QUFDRDs7QUFFRGYsSUFBQUEsUUFBUSxDQUFDUixNQUFULEdBQWtCQSxNQUFsQjtBQUNBLFdBQU9FLE1BQVA7QUFDRCxHQTdJYzs7QUFBQTs7QUFBQTtBQStJZnNCLEVBQUFBLE1BL0llLGtCQStJUkMsSUEvSVEsRUErSUZDLEtBL0lFLEVBK0lLO0FBQ2xCLFFBQUksS0FBSzFDLE9BQUwsQ0FBYTJDLFVBQWpCLEVBQTZCO0FBQzNCLGFBQU8sS0FBSzNDLE9BQUwsQ0FBYTJDLFVBQWIsQ0FBd0JGLElBQXhCLEVBQThCQyxLQUE5QixDQUFQO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsYUFBT0QsSUFBSSxLQUFLQyxLQUFULElBQ0QsS0FBSzFDLE9BQUwsQ0FBYTRDLFVBQWIsSUFBMkJILElBQUksQ0FBQ0ksV0FBTCxPQUF1QkgsS0FBSyxDQUFDRyxXQUFOLEVBRHhEO0FBRUQ7QUFDRixHQXRKYzs7QUFBQTs7QUFBQTtBQXVKZnJDLEVBQUFBLFdBdkplLHVCQXVKSHNDLEtBdkpHLEVBdUpJO0FBQ2pCLFFBQUlaLEdBQUcsR0FBRyxFQUFWOztBQUNBLFNBQUssSUFBSWEsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsS0FBSyxDQUFDbkMsTUFBMUIsRUFBa0NvQyxDQUFDLEVBQW5DLEVBQXVDO0FBQ3JDLFVBQUlELEtBQUssQ0FBQ0MsQ0FBRCxDQUFULEVBQWM7QUFDWmIsUUFBQUEsR0FBRyxDQUFDSSxJQUFKLENBQVNRLEtBQUssQ0FBQ0MsQ0FBRCxDQUFkO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPYixHQUFQO0FBQ0QsR0EvSmM7O0FBQUE7O0FBQUE7QUFnS2YzQixFQUFBQSxTQWhLZSxxQkFnS0xILEtBaEtLLEVBZ0tFO0FBQ2YsV0FBT0EsS0FBUDtBQUNELEdBbEtjOztBQUFBOztBQUFBO0FBbUtmSyxFQUFBQSxRQW5LZSxvQkFtS05MLEtBbktNLEVBbUtDO0FBQ2QsV0FBT0EsS0FBSyxDQUFDNEMsS0FBTixDQUFZLEVBQVosQ0FBUDtBQUNELEdBcktjOztBQUFBOztBQUFBO0FBc0tmNUIsRUFBQUEsSUF0S2UsZ0JBc0tWNkIsS0F0S1UsRUFzS0g7QUFDVixXQUFPQSxLQUFLLENBQUM3QixJQUFOLENBQVcsRUFBWCxDQUFQO0FBQ0Q7QUF4S2MsQ0FBakI7O0FBMktBLFNBQVNXLFdBQVQsQ0FBcUJsQyxJQUFyQixFQUEyQm9CLFVBQTNCLEVBQXVDbEIsU0FBdkMsRUFBa0RELFNBQWxELEVBQTZEa0MsZUFBN0QsRUFBOEU7QUFDNUUsTUFBSWtCLFlBQVksR0FBRyxDQUFuQjtBQUFBLE1BQ0lDLFlBQVksR0FBR2xDLFVBQVUsQ0FBQ04sTUFEOUI7QUFBQSxNQUVJSyxNQUFNLEdBQUcsQ0FGYjtBQUFBLE1BR0lFLE1BQU0sR0FBRyxDQUhiOztBQUtBLFNBQU9nQyxZQUFZLEdBQUdDLFlBQXRCLEVBQW9DRCxZQUFZLEVBQWhELEVBQW9EO0FBQ2xELFFBQUlFLFNBQVMsR0FBR25DLFVBQVUsQ0FBQ2lDLFlBQUQsQ0FBMUI7O0FBQ0EsUUFBSSxDQUFDRSxTQUFTLENBQUNoQixPQUFmLEVBQXdCO0FBQ3RCLFVBQUksQ0FBQ2dCLFNBQVMsQ0FBQ2pCLEtBQVgsSUFBb0JILGVBQXhCLEVBQXlDO0FBQ3ZDLFlBQUk1QixLQUFLLEdBQUdMLFNBQVMsQ0FBQ3NELEtBQVYsQ0FBZ0JyQyxNQUFoQixFQUF3QkEsTUFBTSxHQUFHb0MsU0FBUyxDQUFDL0IsS0FBM0MsQ0FBWjtBQUNBakIsUUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNrRCxHQUFOLENBQVUsVUFBU2xELEtBQVQsRUFBZ0IyQyxDQUFoQixFQUFtQjtBQUNuQyxjQUFJUSxRQUFRLEdBQUd6RCxTQUFTLENBQUNvQixNQUFNLEdBQUc2QixDQUFWLENBQXhCO0FBQ0EsaUJBQU9RLFFBQVEsQ0FBQzVDLE1BQVQsR0FBa0JQLEtBQUssQ0FBQ08sTUFBeEIsR0FBaUM0QyxRQUFqQyxHQUE0Q25ELEtBQW5EO0FBQ0QsU0FITyxDQUFSO0FBS0FnRCxRQUFBQSxTQUFTLENBQUNoRCxLQUFWLEdBQWtCUCxJQUFJLENBQUN1QixJQUFMLENBQVVoQixLQUFWLENBQWxCO0FBQ0QsT0FSRCxNQVFPO0FBQ0xnRCxRQUFBQSxTQUFTLENBQUNoRCxLQUFWLEdBQWtCUCxJQUFJLENBQUN1QixJQUFMLENBQVVyQixTQUFTLENBQUNzRCxLQUFWLENBQWdCckMsTUFBaEIsRUFBd0JBLE1BQU0sR0FBR29DLFNBQVMsQ0FBQy9CLEtBQTNDLENBQVYsQ0FBbEI7QUFDRDs7QUFDREwsTUFBQUEsTUFBTSxJQUFJb0MsU0FBUyxDQUFDL0IsS0FBcEIsQ0Fac0IsQ0FjdEI7O0FBQ0EsVUFBSSxDQUFDK0IsU0FBUyxDQUFDakIsS0FBZixFQUFzQjtBQUNwQmpCLFFBQUFBLE1BQU0sSUFBSWtDLFNBQVMsQ0FBQy9CLEtBQXBCO0FBQ0Q7QUFDRixLQWxCRCxNQWtCTztBQUNMK0IsTUFBQUEsU0FBUyxDQUFDaEQsS0FBVixHQUFrQlAsSUFBSSxDQUFDdUIsSUFBTCxDQUFVdEIsU0FBUyxDQUFDdUQsS0FBVixDQUFnQm5DLE1BQWhCLEVBQXdCQSxNQUFNLEdBQUdrQyxTQUFTLENBQUMvQixLQUEzQyxDQUFWLENBQWxCO0FBQ0FILE1BQUFBLE1BQU0sSUFBSWtDLFNBQVMsQ0FBQy9CLEtBQXBCLENBRkssQ0FJTDtBQUNBO0FBQ0E7O0FBQ0EsVUFBSTZCLFlBQVksSUFBSWpDLFVBQVUsQ0FBQ2lDLFlBQVksR0FBRyxDQUFoQixDQUFWLENBQTZCZixLQUFqRCxFQUF3RDtBQUN0RCxZQUFJcUIsR0FBRyxHQUFHdkMsVUFBVSxDQUFDaUMsWUFBWSxHQUFHLENBQWhCLENBQXBCO0FBQ0FqQyxRQUFBQSxVQUFVLENBQUNpQyxZQUFZLEdBQUcsQ0FBaEIsQ0FBVixHQUErQmpDLFVBQVUsQ0FBQ2lDLFlBQUQsQ0FBekM7QUFDQWpDLFFBQUFBLFVBQVUsQ0FBQ2lDLFlBQUQsQ0FBVixHQUEyQk0sR0FBM0I7QUFDRDtBQUNGO0FBQ0YsR0F2QzJFLENBeUM1RTtBQUNBO0FBQ0E7OztBQUNBLE1BQUlDLGFBQWEsR0FBR3hDLFVBQVUsQ0FBQ2tDLFlBQVksR0FBRyxDQUFoQixDQUE5Qjs7QUFDQSxNQUFJQSxZQUFZLEdBQUcsQ0FBZixJQUNHLE9BQU9NLGFBQWEsQ0FBQ3JELEtBQXJCLEtBQStCLFFBRGxDLEtBRUlxRCxhQUFhLENBQUN0QixLQUFkLElBQXVCc0IsYUFBYSxDQUFDckIsT0FGekMsS0FHR3ZDLElBQUksQ0FBQzJDLE1BQUwsQ0FBWSxFQUFaLEVBQWdCaUIsYUFBYSxDQUFDckQsS0FBOUIsQ0FIUCxFQUc2QztBQUMzQ2EsSUFBQUEsVUFBVSxDQUFDa0MsWUFBWSxHQUFHLENBQWhCLENBQVYsQ0FBNkIvQyxLQUE3QixJQUFzQ3FELGFBQWEsQ0FBQ3JELEtBQXBEO0FBQ0FhLElBQUFBLFVBQVUsQ0FBQ3lDLEdBQVg7QUFDRDs7QUFFRCxTQUFPekMsVUFBUDtBQUNEOztBQUVELFNBQVNZLFNBQVQsQ0FBbUI4QixJQUFuQixFQUF5QjtBQUN2QixTQUFPO0FBQUUzQyxJQUFBQSxNQUFNLEVBQUUyQyxJQUFJLENBQUMzQyxNQUFmO0FBQXVCQyxJQUFBQSxVQUFVLEVBQUUwQyxJQUFJLENBQUMxQyxVQUFMLENBQWdCb0MsS0FBaEIsQ0FBc0IsQ0FBdEI7QUFBbkMsR0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGlmZigpIHt9XG5cbkRpZmYucHJvdG90eXBlID0ge1xuICBkaWZmKG9sZFN0cmluZywgbmV3U3RyaW5nLCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgY2FsbGJhY2sgPSBvcHRpb25zLmNhbGxiYWNrO1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgbGV0IHNlbGYgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gZG9uZSh2YWx1ZSkge1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGNhbGxiYWNrKHVuZGVmaW5lZCwgdmFsdWUpOyB9LCAwKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWxsb3cgc3ViY2xhc3NlcyB0byBtYXNzYWdlIHRoZSBpbnB1dCBwcmlvciB0byBydW5uaW5nXG4gICAgb2xkU3RyaW5nID0gdGhpcy5jYXN0SW5wdXQob2xkU3RyaW5nKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLmNhc3RJbnB1dChuZXdTdHJpbmcpO1xuXG4gICAgb2xkU3RyaW5nID0gdGhpcy5yZW1vdmVFbXB0eSh0aGlzLnRva2VuaXplKG9sZFN0cmluZykpO1xuICAgIG5ld1N0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShuZXdTdHJpbmcpKTtcblxuICAgIGxldCBuZXdMZW4gPSBuZXdTdHJpbmcubGVuZ3RoLCBvbGRMZW4gPSBvbGRTdHJpbmcubGVuZ3RoO1xuICAgIGxldCBlZGl0TGVuZ3RoID0gMTtcbiAgICBsZXQgbWF4RWRpdExlbmd0aCA9IG5ld0xlbiArIG9sZExlbjtcbiAgICBsZXQgYmVzdFBhdGggPSBbeyBuZXdQb3M6IC0xLCBjb21wb25lbnRzOiBbXSB9XTtcblxuICAgIC8vIFNlZWQgZWRpdExlbmd0aCA9IDAsIGkuZS4gdGhlIGNvbnRlbnQgc3RhcnRzIHdpdGggdGhlIHNhbWUgdmFsdWVzXG4gICAgbGV0IG9sZFBvcyA9IHRoaXMuZXh0cmFjdENvbW1vbihiZXN0UGF0aFswXSwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIDApO1xuICAgIGlmIChiZXN0UGF0aFswXS5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBvbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgLy8gSWRlbnRpdHkgcGVyIHRoZSBlcXVhbGl0eSBhbmQgdG9rZW5pemVyXG4gICAgICByZXR1cm4gZG9uZShbe3ZhbHVlOiB0aGlzLmpvaW4obmV3U3RyaW5nKSwgY291bnQ6IG5ld1N0cmluZy5sZW5ndGh9XSk7XG4gICAgfVxuXG4gICAgLy8gTWFpbiB3b3JrZXIgbWV0aG9kLiBjaGVja3MgYWxsIHBlcm11dGF0aW9ucyBvZiBhIGdpdmVuIGVkaXQgbGVuZ3RoIGZvciBhY2NlcHRhbmNlLlxuICAgIGZ1bmN0aW9uIGV4ZWNFZGl0TGVuZ3RoKCkge1xuICAgICAgZm9yIChsZXQgZGlhZ29uYWxQYXRoID0gLTEgKiBlZGl0TGVuZ3RoOyBkaWFnb25hbFBhdGggPD0gZWRpdExlbmd0aDsgZGlhZ29uYWxQYXRoICs9IDIpIHtcbiAgICAgICAgbGV0IGJhc2VQYXRoO1xuICAgICAgICBsZXQgYWRkUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdLFxuICAgICAgICAgICAgcmVtb3ZlUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aCArIDFdLFxuICAgICAgICAgICAgb2xkUG9zID0gKHJlbW92ZVBhdGggPyByZW1vdmVQYXRoLm5ld1BvcyA6IDApIC0gZGlhZ29uYWxQYXRoO1xuICAgICAgICBpZiAoYWRkUGF0aCkge1xuICAgICAgICAgIC8vIE5vIG9uZSBlbHNlIGlzIGdvaW5nIHRvIGF0dGVtcHQgdG8gdXNlIHRoaXMgdmFsdWUsIGNsZWFyIGl0XG4gICAgICAgICAgYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2FuQWRkID0gYWRkUGF0aCAmJiBhZGRQYXRoLm5ld1BvcyArIDEgPCBuZXdMZW4sXG4gICAgICAgICAgICBjYW5SZW1vdmUgPSByZW1vdmVQYXRoICYmIDAgPD0gb2xkUG9zICYmIG9sZFBvcyA8IG9sZExlbjtcbiAgICAgICAgaWYgKCFjYW5BZGQgJiYgIWNhblJlbW92ZSkge1xuICAgICAgICAgIC8vIElmIHRoaXMgcGF0aCBpcyBhIHRlcm1pbmFsIHRoZW4gcHJ1bmVcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VsZWN0IHRoZSBkaWFnb25hbCB0aGF0IHdlIHdhbnQgdG8gYnJhbmNoIGZyb20uIFdlIHNlbGVjdCB0aGUgcHJpb3JcbiAgICAgICAgLy8gcGF0aCB3aG9zZSBwb3NpdGlvbiBpbiB0aGUgbmV3IHN0cmluZyBpcyB0aGUgZmFydGhlc3QgZnJvbSB0aGUgb3JpZ2luXG4gICAgICAgIC8vIGFuZCBkb2VzIG5vdCBwYXNzIHRoZSBib3VuZHMgb2YgdGhlIGRpZmYgZ3JhcGhcbiAgICAgICAgaWYgKCFjYW5BZGQgfHwgKGNhblJlbW92ZSAmJiBhZGRQYXRoLm5ld1BvcyA8IHJlbW92ZVBhdGgubmV3UG9zKSkge1xuICAgICAgICAgIGJhc2VQYXRoID0gY2xvbmVQYXRoKHJlbW92ZVBhdGgpO1xuICAgICAgICAgIHNlbGYucHVzaENvbXBvbmVudChiYXNlUGF0aC5jb21wb25lbnRzLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2VQYXRoID0gYWRkUGF0aDsgLy8gTm8gbmVlZCB0byBjbG9uZSwgd2UndmUgcHVsbGVkIGl0IGZyb20gdGhlIGxpc3RcbiAgICAgICAgICBiYXNlUGF0aC5uZXdQb3MrKztcbiAgICAgICAgICBzZWxmLnB1c2hDb21wb25lbnQoYmFzZVBhdGguY29tcG9uZW50cywgdHJ1ZSwgdW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9sZFBvcyA9IHNlbGYuZXh0cmFjdENvbW1vbihiYXNlUGF0aCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIGRpYWdvbmFsUGF0aCk7XG5cbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBoaXQgdGhlIGVuZCBvZiBib3RoIHN0cmluZ3MsIHRoZW4gd2UgYXJlIGRvbmVcbiAgICAgICAgaWYgKGJhc2VQYXRoLm5ld1BvcyArIDEgPj0gbmV3TGVuICYmIG9sZFBvcyArIDEgPj0gb2xkTGVuKSB7XG4gICAgICAgICAgcmV0dXJuIGRvbmUoYnVpbGRWYWx1ZXMoc2VsZiwgYmFzZVBhdGguY29tcG9uZW50cywgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIHNlbGYudXNlTG9uZ2VzdFRva2VuKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIHRyYWNrIHRoaXMgcGF0aCBhcyBhIHBvdGVudGlhbCBjYW5kaWRhdGUgYW5kIGNvbnRpbnVlLlxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSBiYXNlUGF0aDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBlZGl0TGVuZ3RoKys7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybXMgdGhlIGxlbmd0aCBvZiBlZGl0IGl0ZXJhdGlvbi4gSXMgYSBiaXQgZnVnbHkgYXMgdGhpcyBoYXMgdG8gc3VwcG9ydCB0aGVcbiAgICAvLyBzeW5jIGFuZCBhc3luYyBtb2RlIHdoaWNoIGlzIG5ldmVyIGZ1bi4gTG9vcHMgb3ZlciBleGVjRWRpdExlbmd0aCB1bnRpbCBhIHZhbHVlXG4gICAgLy8gaXMgcHJvZHVjZWQuXG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAoZnVuY3Rpb24gZXhlYygpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgd2Ugd2FudCB0byBiZSBzYWZlLlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgaWYgKGVkaXRMZW5ndGggPiBtYXhFZGl0TGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWV4ZWNFZGl0TGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIGV4ZWMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2hpbGUgKGVkaXRMZW5ndGggPD0gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICBsZXQgcmV0ID0gZXhlY0VkaXRMZW5ndGgoKTtcbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgcHVzaENvbXBvbmVudChjb21wb25lbnRzLCBhZGRlZCwgcmVtb3ZlZCkge1xuICAgIGxldCBsYXN0ID0gY29tcG9uZW50c1tjb21wb25lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChsYXN0ICYmIGxhc3QuYWRkZWQgPT09IGFkZGVkICYmIGxhc3QucmVtb3ZlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgLy8gV2UgbmVlZCB0byBjbG9uZSBoZXJlIGFzIHRoZSBjb21wb25lbnQgY2xvbmUgb3BlcmF0aW9uIGlzIGp1c3RcbiAgICAgIC8vIGFzIHNoYWxsb3cgYXJyYXkgY2xvbmVcbiAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXSA9IHtjb3VudDogbGFzdC5jb3VudCArIDEsIGFkZGVkOiBhZGRlZCwgcmVtb3ZlZDogcmVtb3ZlZCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21wb25lbnRzLnB1c2goe2NvdW50OiAxLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92ZWQgfSk7XG4gICAgfVxuICB9LFxuICBleHRyYWN0Q29tbW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoKSB7XG4gICAgbGV0IG5ld0xlbiA9IG5ld1N0cmluZy5sZW5ndGgsXG4gICAgICAgIG9sZExlbiA9IG9sZFN0cmluZy5sZW5ndGgsXG4gICAgICAgIG5ld1BvcyA9IGJhc2VQYXRoLm5ld1BvcyxcbiAgICAgICAgb2xkUG9zID0gbmV3UG9zIC0gZGlhZ29uYWxQYXRoLFxuXG4gICAgICAgIGNvbW1vbkNvdW50ID0gMDtcbiAgICB3aGlsZSAobmV3UG9zICsgMSA8IG5ld0xlbiAmJiBvbGRQb3MgKyAxIDwgb2xkTGVuICYmIHRoaXMuZXF1YWxzKG5ld1N0cmluZ1tuZXdQb3MgKyAxXSwgb2xkU3RyaW5nW29sZFBvcyArIDFdKSkge1xuICAgICAgbmV3UG9zKys7XG4gICAgICBvbGRQb3MrKztcbiAgICAgIGNvbW1vbkNvdW50Kys7XG4gICAgfVxuXG4gICAgaWYgKGNvbW1vbkNvdW50KSB7XG4gICAgICBiYXNlUGF0aC5jb21wb25lbnRzLnB1c2goe2NvdW50OiBjb21tb25Db3VudH0pO1xuICAgIH1cblxuICAgIGJhc2VQYXRoLm5ld1BvcyA9IG5ld1BvcztcbiAgICByZXR1cm4gb2xkUG9zO1xuICB9LFxuXG4gIGVxdWFscyhsZWZ0LCByaWdodCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb21wYXJhdG9yKGxlZnQsIHJpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0XG4gICAgICAgIHx8ICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSAmJiBsZWZ0LnRvTG93ZXJDYXNlKCkgPT09IHJpZ2h0LnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgfSxcbiAgcmVtb3ZlRW1wdHkoYXJyYXkpIHtcbiAgICBsZXQgcmV0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFycmF5W2ldKSB7XG4gICAgICAgIHJldC5wdXNoKGFycmF5W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcbiAgY2FzdElucHV0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuICB0b2tlbml6ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5zcGxpdCgnJyk7XG4gIH0sXG4gIGpvaW4oY2hhcnMpIHtcbiAgICByZXR1cm4gY2hhcnMuam9pbignJyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGJ1aWxkVmFsdWVzKGRpZmYsIGNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCB1c2VMb25nZXN0VG9rZW4pIHtcbiAgbGV0IGNvbXBvbmVudFBvcyA9IDAsXG4gICAgICBjb21wb25lbnRMZW4gPSBjb21wb25lbnRzLmxlbmd0aCxcbiAgICAgIG5ld1BvcyA9IDAsXG4gICAgICBvbGRQb3MgPSAwO1xuXG4gIGZvciAoOyBjb21wb25lbnRQb3MgPCBjb21wb25lbnRMZW47IGNvbXBvbmVudFBvcysrKSB7XG4gICAgbGV0IGNvbXBvbmVudCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zXTtcbiAgICBpZiAoIWNvbXBvbmVudC5yZW1vdmVkKSB7XG4gICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCAmJiB1c2VMb25nZXN0VG9rZW4pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbmV3U3RyaW5nLnNsaWNlKG5ld1BvcywgbmV3UG9zICsgY29tcG9uZW50LmNvdW50KTtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5tYXAoZnVuY3Rpb24odmFsdWUsIGkpIHtcbiAgICAgICAgICBsZXQgb2xkVmFsdWUgPSBvbGRTdHJpbmdbb2xkUG9zICsgaV07XG4gICAgICAgICAgcmV0dXJuIG9sZFZhbHVlLmxlbmd0aCA+IHZhbHVlLmxlbmd0aCA/IG9sZFZhbHVlIDogdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbih2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4obmV3U3RyaW5nLnNsaWNlKG5ld1BvcywgbmV3UG9zICsgY29tcG9uZW50LmNvdW50KSk7XG4gICAgICB9XG4gICAgICBuZXdQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBDb21tb24gY2FzZVxuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQpIHtcbiAgICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG9sZFN0cmluZy5zbGljZShvbGRQb3MsIG9sZFBvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcblxuICAgICAgLy8gUmV2ZXJzZSBhZGQgYW5kIHJlbW92ZSBzbyByZW1vdmVzIGFyZSBvdXRwdXQgZmlyc3QgdG8gbWF0Y2ggY29tbW9uIGNvbnZlbnRpb25cbiAgICAgIC8vIFRoZSBkaWZmaW5nIGFsZ29yaXRobSBpcyB0aWVkIHRvIGFkZCB0aGVuIHJlbW92ZSBvdXRwdXQgYW5kIHRoaXMgaXMgdGhlIHNpbXBsZXN0XG4gICAgICAvLyByb3V0ZSB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0IHdpdGggbWluaW1hbCBvdmVyaGVhZC5cbiAgICAgIGlmIChjb21wb25lbnRQb3MgJiYgY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXS5hZGRlZCkge1xuICAgICAgICBsZXQgdG1wID0gY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXTtcbiAgICAgICAgY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXSA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zXTtcbiAgICAgICAgY29tcG9uZW50c1tjb21wb25lbnRQb3NdID0gdG1wO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNwZWNpYWwgY2FzZSBoYW5kbGUgZm9yIHdoZW4gb25lIHRlcm1pbmFsIGlzIGlnbm9yZWQgKGkuZS4gd2hpdGVzcGFjZSkuXG4gIC8vIEZvciB0aGlzIGNhc2Ugd2UgbWVyZ2UgdGhlIHRlcm1pbmFsIGludG8gdGhlIHByaW9yIHN0cmluZyBhbmQgZHJvcCB0aGUgY2hhbmdlLlxuICAvLyBUaGlzIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBzdHJpbmcgbW9kZS5cbiAgbGV0IGxhc3RDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuICBpZiAoY29tcG9uZW50TGVuID4gMVxuICAgICAgJiYgdHlwZW9mIGxhc3RDb21wb25lbnQudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAmJiAobGFzdENvbXBvbmVudC5hZGRlZCB8fCBsYXN0Q29tcG9uZW50LnJlbW92ZWQpXG4gICAgICAmJiBkaWZmLmVxdWFscygnJywgbGFzdENvbXBvbmVudC52YWx1ZSkpIHtcbiAgICBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDJdLnZhbHVlICs9IGxhc3RDb21wb25lbnQudmFsdWU7XG4gICAgY29tcG9uZW50cy5wb3AoKTtcbiAgfVxuXG4gIHJldHVybiBjb21wb25lbnRzO1xufVxuXG5mdW5jdGlvbiBjbG9uZVBhdGgocGF0aCkge1xuICByZXR1cm4geyBuZXdQb3M6IHBhdGgubmV3UG9zLCBjb21wb25lbnRzOiBwYXRoLmNvbXBvbmVudHMuc2xpY2UoMCkgfTtcbn1cbiJdfQ==
diff --git a/node_modules/diff/lib/diff/character.js b/node_modules/diff/lib/diff/character.js
new file mode 100644
index 0000000..7ddfa20
--- /dev/null
+++ b/node_modules/diff/lib/diff/character.js
@@ -0,0 +1,37 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.diffChars = diffChars;
+exports.characterDiff = void 0;
+
+/*istanbul ignore end*/
+var
+/*istanbul ignore start*/
+_base = _interopRequireDefault(require("./base"))
+/*istanbul ignore end*/
+;
+
+/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+/*istanbul ignore end*/
+var characterDiff = new
+/*istanbul ignore start*/
+_base
+/*istanbul ignore end*/
+[
+/*istanbul ignore start*/
+"default"
+/*istanbul ignore end*/
+]();
+
+/*istanbul ignore start*/
+exports.characterDiff = characterDiff;
+
+/*istanbul ignore end*/
+function diffChars(oldStr, newStr, options) {
+  return characterDiff.diff(oldStr, newStr, options);
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJjaGFyYWN0ZXJEaWZmIiwiRGlmZiIsImRpZmZDaGFycyIsIm9sZFN0ciIsIm5ld1N0ciIsIm9wdGlvbnMiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUF0Qjs7Ozs7O0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxFQUE0QztBQUFFLFNBQU9MLGFBQWEsQ0FBQ00sSUFBZCxDQUFtQkgsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxDQUFQO0FBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19
diff --git a/node_modules/diff/lib/diff/css.js b/node_modules/diff/lib/diff/css.js
new file mode 100644
index 0000000..e3ad1fc
--- /dev/null
+++ b/node_modules/diff/lib/diff/css.js
@@ -0,0 +1,41 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.diffCss = diffCss;
+exports.cssDiff = void 0;
+
+/*istanbul ignore end*/
+var
+/*istanbul ignore start*/
+_base = _interopRequireDefault(require("./base"))
+/*istanbul ignore end*/
+;
+
+/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+/*istanbul ignore end*/
+var cssDiff = new
+/*istanbul ignore start*/
+_base
+/*istanbul ignore end*/
+[
+/*istanbul ignore start*/
+"default"
+/*istanbul ignore end*/
+]();
+
+/*istanbul ignore start*/
+exports.cssDiff = cssDiff;
+
+/*istanbul ignore end*/
+cssDiff.tokenize = function (value) {
+  return value.split(/([{}:;,]|\s+)/);
+};
+
+function diffCss(oldStr, newStr, callback) {
+  return cssDiff.diff(oldStr, newStr, callback);
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJjc3NEaWZmIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsImRpZmZDc3MiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7OztBQUVPLElBQU1BLE9BQU8sR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWhCOzs7Ozs7QUFDUEQsT0FBTyxDQUFDRSxRQUFSLEdBQW1CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDakMsU0FBT0EsS0FBSyxDQUFDQyxLQUFOLENBQVksZUFBWixDQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUF5QkMsTUFBekIsRUFBaUNDLFFBQWpDLEVBQTJDO0FBQUUsU0FBT1IsT0FBTyxDQUFDUyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNzc0RpZmYgPSBuZXcgRGlmZigpO1xuY3NzRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvKFt7fTo7LF18XFxzKykvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ3NzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gY3NzRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==
diff --git a/node_modules/diff/lib/diff/json.js b/node_modules/diff/lib/diff/json.js
new file mode 100644
index 0000000..67c2f17
--- /dev/null
+++ b/node_modules/diff/lib/diff/json.js
@@ -0,0 +1,163 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.diffJson = diffJson;
+exports.canonicalize = canonicalize;
+exports.jsonDiff = void 0;
+
+/*istanbul ignore end*/
+var
+/*istanbul ignore start*/
+_base = _interopRequireDefault(require("./base"))
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_line = require("./line")
+/*istanbul ignore end*/
+;
+
+/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+/*istanbul ignore end*/
+var objectPrototypeToString = Object.prototype.toString;
+var jsonDiff = new
+/*istanbul ignore start*/
+_base
+/*istanbul ignore end*/
+[
+/*istanbul ignore start*/
+"default"
+/*istanbul ignore end*/
+](); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
+// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
+
+/*istanbul ignore start*/
+exports.jsonDiff = jsonDiff;
+
+/*istanbul ignore end*/
+jsonDiff.useLongestToken = true;
+jsonDiff.tokenize =
+/*istanbul ignore start*/
+_line
+/*istanbul ignore end*/
+.
+/*istanbul ignore start*/
+lineDiff
+/*istanbul ignore end*/
+.tokenize;
+
+jsonDiff.castInput = function (value) {
+  /*istanbul ignore start*/
+  var _this$options =
+  /*istanbul ignore end*/
+  this.options,
+      undefinedReplacement = _this$options.undefinedReplacement,
+      _this$options$stringi = _this$options.stringifyReplacer,
+      stringifyReplacer = _this$options$stringi === void 0 ? function (k, v)
+  /*istanbul ignore start*/
+  {
+    return (
+      /*istanbul ignore end*/
+      typeof v === 'undefined' ? undefinedReplacement : v
+    );
+  } : _this$options$stringi;
+  return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, '  ');
+};
+
+jsonDiff.equals = function (left, right) {
+  return (
+    /*istanbul ignore start*/
+    _base
+    /*istanbul ignore end*/
+    [
+    /*istanbul ignore start*/
+    "default"
+    /*istanbul ignore end*/
+    ].prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'))
+  );
+};
+
+function diffJson(oldObj, newObj, options) {
+  return jsonDiff.diff(oldObj, newObj, options);
+} // This function handles the presence of circular references by bailing out when encountering an
+// object that is already on the "stack" of items being processed. Accepts an optional replacer
+
+
+function canonicalize(obj, stack, replacementStack, replacer, key) {
+  stack = stack || [];
+  replacementStack = replacementStack || [];
+
+  if (replacer) {
+    obj = replacer(key, obj);
+  }
+
+  var i;
+
+  for (i = 0; i < stack.length; i += 1) {
+    if (stack[i] === obj) {
+      return replacementStack[i];
+    }
+  }
+
+  var canonicalizedObj;
+
+  if ('[object Array]' === objectPrototypeToString.call(obj)) {
+    stack.push(obj);
+    canonicalizedObj = new Array(obj.length);
+    replacementStack.push(canonicalizedObj);
+
+    for (i = 0; i < obj.length; i += 1) {
+      canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);
+    }
+
+    stack.pop();
+    replacementStack.pop();
+    return canonicalizedObj;
+  }
+
+  if (obj && obj.toJSON) {
+    obj = obj.toJSON();
+  }
+
+  if (
+  /*istanbul ignore start*/
+  _typeof(
+  /*istanbul ignore end*/
+  obj) === 'object' && obj !== null) {
+    stack.push(obj);
+    canonicalizedObj = {};
+    replacementStack.push(canonicalizedObj);
+
+    var sortedKeys = [],
+        _key;
+
+    for (_key in obj) {
+      /* istanbul ignore else */
+      if (obj.hasOwnProperty(_key)) {
+        sortedKeys.push(_key);
+      }
+    }
+
+    sortedKeys.sort();
+
+    for (i = 0; i < sortedKeys.length; i += 1) {
+      _key = sortedKeys[i];
+      canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
+    }
+
+    stack.pop();
+    replacementStack.pop();
+  } else {
+    canonicalizedObj = obj;
+  }
+
+  return canonicalizedObj;
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsib2JqZWN0UHJvdG90eXBlVG9TdHJpbmciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImpzb25EaWZmIiwiRGlmZiIsInVzZUxvbmdlc3RUb2tlbiIsInRva2VuaXplIiwibGluZURpZmYiLCJjYXN0SW5wdXQiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJ1bmRlZmluZWRSZXBsYWNlbWVudCIsInN0cmluZ2lmeVJlcGxhY2VyIiwiayIsInYiLCJKU09OIiwic3RyaW5naWZ5IiwiY2Fub25pY2FsaXplIiwiZXF1YWxzIiwibGVmdCIsInJpZ2h0IiwiY2FsbCIsInJlcGxhY2UiLCJkaWZmSnNvbiIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsR0FBR0MsTUFBTSxDQUFDQyxTQUFQLENBQWlCQyxRQUFqRDtBQUdPLElBQU1DLFFBQVEsR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWpCLEMsQ0FDUDtBQUNBOzs7Ozs7QUFDQUQsUUFBUSxDQUFDRSxlQUFULEdBQTJCLElBQTNCO0FBRUFGLFFBQVEsQ0FBQ0csUUFBVDtBQUFvQkM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLENBQVNELFFBQTdCOztBQUNBSCxRQUFRLENBQUNLLFNBQVQsR0FBcUIsVUFBU0MsS0FBVCxFQUFnQjtBQUFBO0FBQUE7QUFBQTtBQUMrRSxPQUFLQyxPQURwRjtBQUFBLE1BQzVCQyxvQkFENEIsaUJBQzVCQSxvQkFENEI7QUFBQSw0Q0FDTkMsaUJBRE07QUFBQSxNQUNOQSxpQkFETSxzQ0FDYyxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFVLGFBQU9BLENBQVAsS0FBYSxXQUFiLEdBQTJCSCxvQkFBM0IsR0FBa0RHO0FBQTVEO0FBQUEsR0FEZDtBQUduQyxTQUFPLE9BQU9MLEtBQVAsS0FBaUIsUUFBakIsR0FBNEJBLEtBQTVCLEdBQW9DTSxJQUFJLENBQUNDLFNBQUwsQ0FBZUMsWUFBWSxDQUFDUixLQUFELEVBQVEsSUFBUixFQUFjLElBQWQsRUFBb0JHLGlCQUFwQixDQUEzQixFQUFtRUEsaUJBQW5FLEVBQXNGLElBQXRGLENBQTNDO0FBQ0QsQ0FKRDs7QUFLQVQsUUFBUSxDQUFDZSxNQUFULEdBQWtCLFVBQVNDLElBQVQsRUFBZUMsS0FBZixFQUFzQjtBQUN0QyxTQUFPaEI7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsTUFBS0gsU0FBTCxDQUFlaUIsTUFBZixDQUFzQkcsSUFBdEIsQ0FBMkJsQixRQUEzQixFQUFxQ2dCLElBQUksQ0FBQ0csT0FBTCxDQUFhLFlBQWIsRUFBMkIsSUFBM0IsQ0FBckMsRUFBdUVGLEtBQUssQ0FBQ0UsT0FBTixDQUFjLFlBQWQsRUFBNEIsSUFBNUIsQ0FBdkU7QUFBUDtBQUNELENBRkQ7O0FBSU8sU0FBU0MsUUFBVCxDQUFrQkMsTUFBbEIsRUFBMEJDLE1BQTFCLEVBQWtDZixPQUFsQyxFQUEyQztBQUFFLFNBQU9QLFFBQVEsQ0FBQ3VCLElBQVQsQ0FBY0YsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJmLE9BQTlCLENBQVA7QUFBZ0QsQyxDQUVwRztBQUNBOzs7QUFDTyxTQUFTTyxZQUFULENBQXNCVSxHQUF0QixFQUEyQkMsS0FBM0IsRUFBa0NDLGdCQUFsQyxFQUFvREMsUUFBcEQsRUFBOERDLEdBQTlELEVBQW1FO0FBQ3hFSCxFQUFBQSxLQUFLLEdBQUdBLEtBQUssSUFBSSxFQUFqQjtBQUNBQyxFQUFBQSxnQkFBZ0IsR0FBR0EsZ0JBQWdCLElBQUksRUFBdkM7O0FBRUEsTUFBSUMsUUFBSixFQUFjO0FBQ1pILElBQUFBLEdBQUcsR0FBR0csUUFBUSxDQUFDQyxHQUFELEVBQU1KLEdBQU4sQ0FBZDtBQUNEOztBQUVELE1BQUlLLENBQUo7O0FBRUEsT0FBS0EsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHSixLQUFLLENBQUNLLE1BQXRCLEVBQThCRCxDQUFDLElBQUksQ0FBbkMsRUFBc0M7QUFDcEMsUUFBSUosS0FBSyxDQUFDSSxDQUFELENBQUwsS0FBYUwsR0FBakIsRUFBc0I7QUFDcEIsYUFBT0UsZ0JBQWdCLENBQUNHLENBQUQsQ0FBdkI7QUFDRDtBQUNGOztBQUVELE1BQUlFLGdCQUFKOztBQUVBLE1BQUkscUJBQXFCbkMsdUJBQXVCLENBQUNzQixJQUF4QixDQUE2Qk0sR0FBN0IsQ0FBekIsRUFBNEQ7QUFDMURDLElBQUFBLEtBQUssQ0FBQ08sSUFBTixDQUFXUixHQUFYO0FBQ0FPLElBQUFBLGdCQUFnQixHQUFHLElBQUlFLEtBQUosQ0FBVVQsR0FBRyxDQUFDTSxNQUFkLENBQW5CO0FBQ0FKLElBQUFBLGdCQUFnQixDQUFDTSxJQUFqQixDQUFzQkQsZ0JBQXRCOztBQUNBLFNBQUtGLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBR0wsR0FBRyxDQUFDTSxNQUFwQixFQUE0QkQsQ0FBQyxJQUFJLENBQWpDLEVBQW9DO0FBQ2xDRSxNQUFBQSxnQkFBZ0IsQ0FBQ0YsQ0FBRCxDQUFoQixHQUFzQmYsWUFBWSxDQUFDVSxHQUFHLENBQUNLLENBQUQsQ0FBSixFQUFTSixLQUFULEVBQWdCQyxnQkFBaEIsRUFBa0NDLFFBQWxDLEVBQTRDQyxHQUE1QyxDQUFsQztBQUNEOztBQUNESCxJQUFBQSxLQUFLLENBQUNTLEdBQU47QUFDQVIsSUFBQUEsZ0JBQWdCLENBQUNRLEdBQWpCO0FBQ0EsV0FBT0gsZ0JBQVA7QUFDRDs7QUFFRCxNQUFJUCxHQUFHLElBQUlBLEdBQUcsQ0FBQ1csTUFBZixFQUF1QjtBQUNyQlgsSUFBQUEsR0FBRyxHQUFHQSxHQUFHLENBQUNXLE1BQUosRUFBTjtBQUNEOztBQUVEO0FBQUk7QUFBQTtBQUFBO0FBQU9YLEVBQUFBLEdBQVAsTUFBZSxRQUFmLElBQTJCQSxHQUFHLEtBQUssSUFBdkMsRUFBNkM7QUFDM0NDLElBQUFBLEtBQUssQ0FBQ08sSUFBTixDQUFXUixHQUFYO0FBQ0FPLElBQUFBLGdCQUFnQixHQUFHLEVBQW5CO0FBQ0FMLElBQUFBLGdCQUFnQixDQUFDTSxJQUFqQixDQUFzQkQsZ0JBQXRCOztBQUNBLFFBQUlLLFVBQVUsR0FBRyxFQUFqQjtBQUFBLFFBQ0lSLElBREo7O0FBRUEsU0FBS0EsSUFBTCxJQUFZSixHQUFaLEVBQWlCO0FBQ2Y7QUFDQSxVQUFJQSxHQUFHLENBQUNhLGNBQUosQ0FBbUJULElBQW5CLENBQUosRUFBNkI7QUFDM0JRLFFBQUFBLFVBQVUsQ0FBQ0osSUFBWCxDQUFnQkosSUFBaEI7QUFDRDtBQUNGOztBQUNEUSxJQUFBQSxVQUFVLENBQUNFLElBQVg7O0FBQ0EsU0FBS1QsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHTyxVQUFVLENBQUNOLE1BQTNCLEVBQW1DRCxDQUFDLElBQUksQ0FBeEMsRUFBMkM7QUFDekNELE1BQUFBLElBQUcsR0FBR1EsVUFBVSxDQUFDUCxDQUFELENBQWhCO0FBQ0FFLE1BQUFBLGdCQUFnQixDQUFDSCxJQUFELENBQWhCLEdBQXdCZCxZQUFZLENBQUNVLEdBQUcsQ0FBQ0ksSUFBRCxDQUFKLEVBQVdILEtBQVgsRUFBa0JDLGdCQUFsQixFQUFvQ0MsUUFBcEMsRUFBOENDLElBQTlDLENBQXBDO0FBQ0Q7O0FBQ0RILElBQUFBLEtBQUssQ0FBQ1MsR0FBTjtBQUNBUixJQUFBQSxnQkFBZ0IsQ0FBQ1EsR0FBakI7QUFDRCxHQW5CRCxNQW1CTztBQUNMSCxJQUFBQSxnQkFBZ0IsR0FBR1AsR0FBbkI7QUFDRDs7QUFDRCxTQUFPTyxnQkFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0=
diff --git a/node_modules/diff/lib/diff/line.js b/node_modules/diff/lib/diff/line.js
new file mode 100644
index 0000000..855fe30
--- /dev/null
+++ b/node_modules/diff/lib/diff/line.js
@@ -0,0 +1,89 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.diffLines = diffLines;
+exports.diffTrimmedLines = diffTrimmedLines;
+exports.lineDiff = void 0;
+
+/*istanbul ignore end*/
+var
+/*istanbul ignore start*/
+_base = _interopRequireDefault(require("./base"))
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_params = require("../util/params")
+/*istanbul ignore end*/
+;
+
+/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+/*istanbul ignore end*/
+var lineDiff = new
+/*istanbul ignore start*/
+_base
+/*istanbul ignore end*/
+[
+/*istanbul ignore start*/
+"default"
+/*istanbul ignore end*/
+]();
+
+/*istanbul ignore start*/
+exports.lineDiff = lineDiff;
+
+/*istanbul ignore end*/
+lineDiff.tokenize = function (value) {
+  var retLines = [],
+      linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line
+
+  if (!linesAndNewlines[linesAndNewlines.length - 1]) {
+    linesAndNewlines.pop();
+  } // Merge the content and line separators into single tokens
+
+
+  for (var i = 0; i < linesAndNewlines.length; i++) {
+    var line = linesAndNewlines[i];
+
+    if (i % 2 && !this.options.newlineIsToken) {
+      retLines[retLines.length - 1] += line;
+    } else {
+      if (this.options.ignoreWhitespace) {
+        line = line.trim();
+      }
+
+      retLines.push(line);
+    }
+  }
+
+  return retLines;
+};
+
+function diffLines(oldStr, newStr, callback) {
+  return lineDiff.diff(oldStr, newStr, callback);
+}
+
+function diffTrimmedLines(oldStr, newStr, callback) {
+  var options =
+  /*istanbul ignore start*/
+  (0,
+  /*istanbul ignore end*/
+
+  /*istanbul ignore start*/
+  _params
+  /*istanbul ignore end*/
+  .
+  /*istanbul ignore start*/
+  generateOptions)
+  /*istanbul ignore end*/
+  (callback, {
+    ignoreWhitespace: true
+  });
+  return lineDiff.diff(oldStr, newStr, options);
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsibGluZURpZmYiLCJEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsInJldExpbmVzIiwibGluZXNBbmROZXdsaW5lcyIsInNwbGl0IiwibGVuZ3RoIiwicG9wIiwiaSIsImxpbmUiLCJvcHRpb25zIiwibmV3bGluZUlzVG9rZW4iLCJpZ25vcmVXaGl0ZXNwYWNlIiwidHJpbSIsInB1c2giLCJkaWZmTGluZXMiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiLCJkaWZmVHJpbW1lZExpbmVzIiwiZ2VuZXJhdGVPcHRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxRQUFRLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFqQjs7Ozs7O0FBQ1BELFFBQVEsQ0FBQ0UsUUFBVCxHQUFvQixVQUFTQyxLQUFULEVBQWdCO0FBQ2xDLE1BQUlDLFFBQVEsR0FBRyxFQUFmO0FBQUEsTUFDSUMsZ0JBQWdCLEdBQUdGLEtBQUssQ0FBQ0csS0FBTixDQUFZLFdBQVosQ0FEdkIsQ0FEa0MsQ0FJbEM7O0FBQ0EsTUFBSSxDQUFDRCxnQkFBZ0IsQ0FBQ0EsZ0JBQWdCLENBQUNFLE1BQWpCLEdBQTBCLENBQTNCLENBQXJCLEVBQW9EO0FBQ2xERixJQUFBQSxnQkFBZ0IsQ0FBQ0csR0FBakI7QUFDRCxHQVBpQyxDQVNsQzs7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixnQkFBZ0IsQ0FBQ0UsTUFBckMsRUFBNkNFLENBQUMsRUFBOUMsRUFBa0Q7QUFDaEQsUUFBSUMsSUFBSSxHQUFHTCxnQkFBZ0IsQ0FBQ0ksQ0FBRCxDQUEzQjs7QUFFQSxRQUFJQSxDQUFDLEdBQUcsQ0FBSixJQUFTLENBQUMsS0FBS0UsT0FBTCxDQUFhQyxjQUEzQixFQUEyQztBQUN6Q1IsTUFBQUEsUUFBUSxDQUFDQSxRQUFRLENBQUNHLE1BQVQsR0FBa0IsQ0FBbkIsQ0FBUixJQUFpQ0csSUFBakM7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJLEtBQUtDLE9BQUwsQ0FBYUUsZ0JBQWpCLEVBQW1DO0FBQ2pDSCxRQUFBQSxJQUFJLEdBQUdBLElBQUksQ0FBQ0ksSUFBTCxFQUFQO0FBQ0Q7O0FBQ0RWLE1BQUFBLFFBQVEsQ0FBQ1csSUFBVCxDQUFjTCxJQUFkO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPTixRQUFQO0FBQ0QsQ0F4QkQ7O0FBMEJPLFNBQVNZLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ0MsUUFBbkMsRUFBNkM7QUFBRSxTQUFPbkIsUUFBUSxDQUFDb0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QkMsUUFBOUIsQ0FBUDtBQUFpRDs7QUFDaEcsU0FBU0UsZ0JBQVQsQ0FBMEJKLE1BQTFCLEVBQWtDQyxNQUFsQyxFQUEwQ0MsUUFBMUMsRUFBb0Q7QUFDekQsTUFBSVIsT0FBTztBQUFHO0FBQUE7QUFBQTs7QUFBQVc7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLEdBQWdCSCxRQUFoQixFQUEwQjtBQUFDTixJQUFBQSxnQkFBZ0IsRUFBRTtBQUFuQixHQUExQixDQUFkO0FBQ0EsU0FBT2IsUUFBUSxDQUFDb0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QlAsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbmV4cG9ydCBjb25zdCBsaW5lRGlmZiA9IG5ldyBEaWZmKCk7XG5saW5lRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGxldCByZXRMaW5lcyA9IFtdLFxuICAgICAgbGluZXNBbmROZXdsaW5lcyA9IHZhbHVlLnNwbGl0KC8oXFxufFxcclxcbikvKTtcblxuICAvLyBJZ25vcmUgdGhlIGZpbmFsIGVtcHR5IHRva2VuIHRoYXQgb2NjdXJzIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGEgbmV3IGxpbmVcbiAgaWYgKCFsaW5lc0FuZE5ld2xpbmVzW2xpbmVzQW5kTmV3bGluZXMubGVuZ3RoIC0gMV0pIHtcbiAgICBsaW5lc0FuZE5ld2xpbmVzLnBvcCgpO1xuICB9XG5cbiAgLy8gTWVyZ2UgdGhlIGNvbnRlbnQgYW5kIGxpbmUgc2VwYXJhdG9ycyBpbnRvIHNpbmdsZSB0b2tlbnNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBsaW5lc0FuZE5ld2xpbmVzW2ldO1xuXG4gICAgaWYgKGkgJSAyICYmICF0aGlzLm9wdGlvbnMubmV3bGluZUlzVG9rZW4pIHtcbiAgICAgIHJldExpbmVzW3JldExpbmVzLmxlbmd0aCAtIDFdICs9IGxpbmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSkge1xuICAgICAgICBsaW5lID0gbGluZS50cmltKCk7XG4gICAgICB9XG4gICAgICByZXRMaW5lcy5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXRMaW5lcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmTGluZXMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7IHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVHJpbW1lZExpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykge1xuICBsZXQgb3B0aW9ucyA9IGdlbmVyYXRlT3B0aW9ucyhjYWxsYmFjaywge2lnbm9yZVdoaXRlc3BhY2U6IHRydWV9KTtcbiAgcmV0dXJuIGxpbmVEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpO1xufVxuIl19
diff --git a/node_modules/diff/lib/diff/sentence.js b/node_modules/diff/lib/diff/sentence.js
new file mode 100644
index 0000000..95158d6
--- /dev/null
+++ b/node_modules/diff/lib/diff/sentence.js
@@ -0,0 +1,41 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.diffSentences = diffSentences;
+exports.sentenceDiff = void 0;
+
+/*istanbul ignore end*/
+var
+/*istanbul ignore start*/
+_base = _interopRequireDefault(require("./base"))
+/*istanbul ignore end*/
+;
+
+/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+/*istanbul ignore end*/
+var sentenceDiff = new
+/*istanbul ignore start*/
+_base
+/*istanbul ignore end*/
+[
+/*istanbul ignore start*/
+"default"
+/*istanbul ignore end*/
+]();
+
+/*istanbul ignore start*/
+exports.sentenceDiff = sentenceDiff;
+
+/*istanbul ignore end*/
+sentenceDiff.tokenize = function (value) {
+  return value.split(/(\S.+?[.!?])(?=\s+|$)/);
+};
+
+function diffSentences(oldStr, newStr, callback) {
+  return sentenceDiff.diff(oldStr, newStr, callback);
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbInNlbnRlbmNlRGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJkaWZmU2VudGVuY2VzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFHTyxJQUFNQSxZQUFZLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFyQjs7Ozs7O0FBQ1BELFlBQVksQ0FBQ0UsUUFBYixHQUF3QixVQUFTQyxLQUFULEVBQWdCO0FBQ3RDLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixDQUFZLHVCQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNDLGFBQVQsQ0FBdUJDLE1BQXZCLEVBQStCQyxNQUEvQixFQUF1Q0MsUUFBdkMsRUFBaUQ7QUFBRSxTQUFPUixZQUFZLENBQUNTLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==
diff --git a/node_modules/diff/lib/diff/word.js b/node_modules/diff/lib/diff/word.js
new file mode 100644
index 0000000..cef7fe1
--- /dev/null
+++ b/node_modules/diff/lib/diff/word.js
@@ -0,0 +1,108 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.diffWords = diffWords;
+exports.diffWordsWithSpace = diffWordsWithSpace;
+exports.wordDiff = void 0;
+
+/*istanbul ignore end*/
+var
+/*istanbul ignore start*/
+_base = _interopRequireDefault(require("./base"))
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_params = require("../util/params")
+/*istanbul ignore end*/
+;
+
+/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+/*istanbul ignore end*/
+// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode
+//
+// Ranges and exceptions:
+// Latin-1 Supplement, 0080–00FF
+//  - U+00D7  × Multiplication sign
+//  - U+00F7  ÷ Division sign
+// Latin Extended-A, 0100–017F
+// Latin Extended-B, 0180–024F
+// IPA Extensions, 0250–02AF
+// Spacing Modifier Letters, 02B0–02FF
+//  - U+02C7  ˇ ˇ  Caron
+//  - U+02D8  ˘ ˘  Breve
+//  - U+02D9  ˙ ˙  Dot Above
+//  - U+02DA  ˚ ˚  Ring Above
+//  - U+02DB  ˛ ˛  Ogonek
+//  - U+02DC  ˜ ˜  Small Tilde
+//  - U+02DD  ˝ ˝  Double Acute Accent
+// Latin Extended Additional, 1E00–1EFF
+var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
+var reWhitespace = /\S/;
+var wordDiff = new
+/*istanbul ignore start*/
+_base
+/*istanbul ignore end*/
+[
+/*istanbul ignore start*/
+"default"
+/*istanbul ignore end*/
+]();
+
+/*istanbul ignore start*/
+exports.wordDiff = wordDiff;
+
+/*istanbul ignore end*/
+wordDiff.equals = function (left, right) {
+  if (this.options.ignoreCase) {
+    left = left.toLowerCase();
+    right = right.toLowerCase();
+  }
+
+  return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
+};
+
+wordDiff.tokenize = function (value) {
+  // All whitespace symbols except newline group into one token, each newline - in separate token
+  var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
+
+  for (var i = 0; i < tokens.length - 1; i++) {
+    // If we have an empty string in the next field and we have only word chars before and after, merge
+    if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
+      tokens[i] += tokens[i + 2];
+      tokens.splice(i + 1, 2);
+      i--;
+    }
+  }
+
+  return tokens;
+};
+
+function diffWords(oldStr, newStr, options) {
+  options =
+  /*istanbul ignore start*/
+  (0,
+  /*istanbul ignore end*/
+
+  /*istanbul ignore start*/
+  _params
+  /*istanbul ignore end*/
+  .
+  /*istanbul ignore start*/
+  generateOptions)
+  /*istanbul ignore end*/
+  (options, {
+    ignoreWhitespace: true
+  });
+  return wordDiff.diff(oldStr, newStr, options);
+}
+
+function diffWordsWithSpace(oldStr, newStr, options) {
+  return wordDiff.diff(oldStr, newStr, options);
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsIkRpZmYiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJvcHRpb25zIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiaWdub3JlV2hpdGVzcGFjZSIsInRlc3QiLCJ0b2tlbml6ZSIsInZhbHVlIiwidG9rZW5zIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwic3BsaWNlIiwiZGlmZldvcmRzIiwib2xkU3RyIiwibmV3U3RyIiwiZ2VuZXJhdGVPcHRpb25zIiwiZGlmZiIsImRpZmZXb3Jkc1dpdGhTcGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsaUJBQWlCLEdBQUcsK0RBQTFCO0FBRUEsSUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBRU8sSUFBTUMsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsSUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNJLFdBQUwsRUFBUDtBQUNBSCxJQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ0csV0FBTixFQUFSO0FBQ0Q7O0FBQ0QsU0FBT0osSUFBSSxLQUFLQyxLQUFULElBQW1CLEtBQUtDLE9BQUwsQ0FBYUcsZ0JBQWIsSUFBaUMsQ0FBQ1QsWUFBWSxDQUFDVSxJQUFiLENBQWtCTixJQUFsQixDQUFsQyxJQUE2RCxDQUFDSixZQUFZLENBQUNVLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDs7QUFPQUosUUFBUSxDQUFDVSxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEM7QUFDQSxNQUFJQyxNQUFNLEdBQUdELEtBQUssQ0FBQ0UsS0FBTixDQUFZLGlDQUFaLENBQWIsQ0FGa0MsQ0FJbEM7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQVAsR0FBZ0IsQ0FBcEMsRUFBdUNELENBQUMsRUFBeEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFJLENBQUNGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBUCxJQUFrQkYsTUFBTSxDQUFDRSxDQUFDLEdBQUcsQ0FBTCxDQUF4QixJQUNLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUQsQ0FBN0IsQ0FETCxJQUVLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUMsR0FBRyxDQUFMLENBQTdCLENBRlQsRUFFZ0Q7QUFDOUNGLE1BQUFBLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLElBQWFGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBbkI7QUFDQUYsTUFBQUEsTUFBTSxDQUFDSSxNQUFQLENBQWNGLENBQUMsR0FBRyxDQUFsQixFQUFxQixDQUFyQjtBQUNBQSxNQUFBQSxDQUFDO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FqQkQ7O0FBbUJPLFNBQVNLLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ2QsT0FBbkMsRUFBNEM7QUFDakRBLEVBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFlO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFnQmYsT0FBaEIsRUFBeUI7QUFBQ0csSUFBQUEsZ0JBQWdCLEVBQUU7QUFBbkIsR0FBekIsQ0FBVjtBQUNBLFNBQU9SLFFBQVEsQ0FBQ3FCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJkLE9BQTlCLENBQVA7QUFDRDs7QUFFTSxTQUFTaUIsa0JBQVQsQ0FBNEJKLE1BQTVCLEVBQW9DQyxNQUFwQyxFQUE0Q2QsT0FBNUMsRUFBcUQ7QUFDMUQsU0FBT0wsUUFBUSxDQUFDcUIsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmQsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX3NjcmlwdF9pbl9Vbmljb2RlXG4vL1xuLy8gUmFuZ2VzIGFuZCBleGNlcHRpb25zOlxuLy8gTGF0aW4tMSBTdXBwbGVtZW50LCAwMDgw4oCTMDBGRlxuLy8gIC0gVSswMEQ3ICDDlyBNdWx0aXBsaWNhdGlvbiBzaWduXG4vLyAgLSBVKzAwRjcgIMO3IERpdmlzaW9uIHNpZ25cbi8vIExhdGluIEV4dGVuZGVkLUEsIDAxMDDigJMwMTdGXG4vLyBMYXRpbiBFeHRlbmRlZC1CLCAwMTgw4oCTMDI0RlxuLy8gSVBBIEV4dGVuc2lvbnMsIDAyNTDigJMwMkFGXG4vLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMsIDAyQjDigJMwMkZGXG4vLyAgLSBVKzAyQzcgIMuHICYjNzExOyAgQ2Fyb25cbi8vICAtIFUrMDJEOCAgy5ggJiM3Mjg7ICBCcmV2ZVxuLy8gIC0gVSswMkQ5ICDLmSAmIzcyOTsgIERvdCBBYm92ZVxuLy8gIC0gVSswMkRBICDLmiAmIzczMDsgIFJpbmcgQWJvdmVcbi8vICAtIFUrMDJEQiAgy5sgJiM3MzE7ICBPZ29uZWtcbi8vICAtIFUrMDJEQyAgy5wgJiM3MzI7ICBTbWFsbCBUaWxkZVxuLy8gIC0gVSswMkREICDLnSAmIzczMzsgIERvdWJsZSBBY3V0ZSBBY2NlbnRcbi8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwsIDFFMDDigJMxRUZGXG5jb25zdCBleHRlbmRlZFdvcmRDaGFycyA9IC9eW2EtekEtWlxcdXtDMH0tXFx1e0ZGfVxcdXtEOH0tXFx1e0Y2fVxcdXtGOH0tXFx1ezJDNn1cXHV7MkM4fS1cXHV7MkQ3fVxcdXsyREV9LVxcdXsyRkZ9XFx1ezFFMDB9LVxcdXsxRUZGfV0rJC91O1xuXG5jb25zdCByZVdoaXRlc3BhY2UgPSAvXFxTLztcblxuZXhwb3J0IGNvbnN0IHdvcmREaWZmID0gbmV3IERpZmYoKTtcbndvcmREaWZmLmVxdWFscyA9IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIGxlZnQgPSBsZWZ0LnRvTG93ZXJDYXNlKCk7XG4gICAgcmlnaHQgPSByaWdodC50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHJldHVybiBsZWZ0ID09PSByaWdodCB8fCAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KGxlZnQpICYmICFyZVdoaXRlc3BhY2UudGVzdChyaWdodCkpO1xufTtcbndvcmREaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gQWxsIHdoaXRlc3BhY2Ugc3ltYm9scyBleGNlcHQgbmV3bGluZSBncm91cCBpbnRvIG9uZSB0b2tlbiwgZWFjaCBuZXdsaW5lIC0gaW4gc2VwYXJhdGUgdG9rZW5cbiAgbGV0IHRva2VucyA9IHZhbHVlLnNwbGl0KC8oW15cXFNcXHJcXG5dK3xbKClbXFxde30nXCJcXHJcXG5dfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0=
diff --git a/node_modules/diff/lib/index.es6.js b/node_modules/diff/lib/index.es6.js
new file mode 100644
index 0000000..ca0e591
--- /dev/null
+++ b/node_modules/diff/lib/index.es6.js
@@ -0,0 +1,1553 @@
+function Diff() {}
+Diff.prototype = {
+  diff: function diff(oldString, newString) {
+    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+    var callback = options.callback;
+
+    if (typeof options === 'function') {
+      callback = options;
+      options = {};
+    }
+
+    this.options = options;
+    var self = this;
+
+    function done(value) {
+      if (callback) {
+        setTimeout(function () {
+          callback(undefined, value);
+        }, 0);
+        return true;
+      } else {
+        return value;
+      }
+    } // Allow subclasses to massage the input prior to running
+
+
+    oldString = this.castInput(oldString);
+    newString = this.castInput(newString);
+    oldString = this.removeEmpty(this.tokenize(oldString));
+    newString = this.removeEmpty(this.tokenize(newString));
+    var newLen = newString.length,
+        oldLen = oldString.length;
+    var editLength = 1;
+    var maxEditLength = newLen + oldLen;
+    var bestPath = [{
+      newPos: -1,
+      components: []
+    }]; // Seed editLength = 0, i.e. the content starts with the same values
+
+    var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
+
+    if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+      // Identity per the equality and tokenizer
+      return done([{
+        value: this.join(newString),
+        count: newString.length
+      }]);
+    } // Main worker method. checks all permutations of a given edit length for acceptance.
+
+
+    function execEditLength() {
+      for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
+        var basePath = void 0;
+
+        var addPath = bestPath[diagonalPath - 1],
+            removePath = bestPath[diagonalPath + 1],
+            _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+
+        if (addPath) {
+          // No one else is going to attempt to use this value, clear it
+          bestPath[diagonalPath - 1] = undefined;
+        }
+
+        var canAdd = addPath && addPath.newPos + 1 < newLen,
+            canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
+
+        if (!canAdd && !canRemove) {
+          // If this path is a terminal then prune
+          bestPath[diagonalPath] = undefined;
+          continue;
+        } // Select the diagonal that we want to branch from. We select the prior
+        // path whose position in the new string is the farthest from the origin
+        // and does not pass the bounds of the diff graph
+
+
+        if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
+          basePath = clonePath(removePath);
+          self.pushComponent(basePath.components, undefined, true);
+        } else {
+          basePath = addPath; // No need to clone, we've pulled it from the list
+
+          basePath.newPos++;
+          self.pushComponent(basePath.components, true, undefined);
+        }
+
+        _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done
+
+        if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
+          return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
+        } else {
+          // Otherwise track this path as a potential candidate and continue.
+          bestPath[diagonalPath] = basePath;
+        }
+      }
+
+      editLength++;
+    } // Performs the length of edit iteration. Is a bit fugly as this has to support the
+    // sync and async mode which is never fun. Loops over execEditLength until a value
+    // is produced.
+
+
+    if (callback) {
+      (function exec() {
+        setTimeout(function () {
+          // This should not happen, but we want to be safe.
+
+          /* istanbul ignore next */
+          if (editLength > maxEditLength) {
+            return callback();
+          }
+
+          if (!execEditLength()) {
+            exec();
+          }
+        }, 0);
+      })();
+    } else {
+      while (editLength <= maxEditLength) {
+        var ret = execEditLength();
+
+        if (ret) {
+          return ret;
+        }
+      }
+    }
+  },
+  pushComponent: function pushComponent(components, added, removed) {
+    var last = components[components.length - 1];
+
+    if (last && last.added === added && last.removed === removed) {
+      // We need to clone here as the component clone operation is just
+      // as shallow array clone
+      components[components.length - 1] = {
+        count: last.count + 1,
+        added: added,
+        removed: removed
+      };
+    } else {
+      components.push({
+        count: 1,
+        added: added,
+        removed: removed
+      });
+    }
+  },
+  extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
+    var newLen = newString.length,
+        oldLen = oldString.length,
+        newPos = basePath.newPos,
+        oldPos = newPos - diagonalPath,
+        commonCount = 0;
+
+    while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
+      newPos++;
+      oldPos++;
+      commonCount++;
+    }
+
+    if (commonCount) {
+      basePath.components.push({
+        count: commonCount
+      });
+    }
+
+    basePath.newPos = newPos;
+    return oldPos;
+  },
+  equals: function equals(left, right) {
+    if (this.options.comparator) {
+      return this.options.comparator(left, right);
+    } else {
+      return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
+    }
+  },
+  removeEmpty: function removeEmpty(array) {
+    var ret = [];
+
+    for (var i = 0; i < array.length; i++) {
+      if (array[i]) {
+        ret.push(array[i]);
+      }
+    }
+
+    return ret;
+  },
+  castInput: function castInput(value) {
+    return value;
+  },
+  tokenize: function tokenize(value) {
+    return value.split('');
+  },
+  join: function join(chars) {
+    return chars.join('');
+  }
+};
+
+function buildValues(diff, components, newString, oldString, useLongestToken) {
+  var componentPos = 0,
+      componentLen = components.length,
+      newPos = 0,
+      oldPos = 0;
+
+  for (; componentPos < componentLen; componentPos++) {
+    var component = components[componentPos];
+
+    if (!component.removed) {
+      if (!component.added && useLongestToken) {
+        var value = newString.slice(newPos, newPos + component.count);
+        value = value.map(function (value, i) {
+          var oldValue = oldString[oldPos + i];
+          return oldValue.length > value.length ? oldValue : value;
+        });
+        component.value = diff.join(value);
+      } else {
+        component.value = diff.join(newString.slice(newPos, newPos + component.count));
+      }
+
+      newPos += component.count; // Common case
+
+      if (!component.added) {
+        oldPos += component.count;
+      }
+    } else {
+      component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));
+      oldPos += component.count; // Reverse add and remove so removes are output first to match common convention
+      // The diffing algorithm is tied to add then remove output and this is the simplest
+      // route to get the desired output with minimal overhead.
+
+      if (componentPos && components[componentPos - 1].added) {
+        var tmp = components[componentPos - 1];
+        components[componentPos - 1] = components[componentPos];
+        components[componentPos] = tmp;
+      }
+    }
+  } // Special case handle for when one terminal is ignored (i.e. whitespace).
+  // For this case we merge the terminal into the prior string and drop the change.
+  // This is only available for string mode.
+
+
+  var lastComponent = components[componentLen - 1];
+
+  if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
+    components[componentLen - 2].value += lastComponent.value;
+    components.pop();
+  }
+
+  return components;
+}
+
+function clonePath(path) {
+  return {
+    newPos: path.newPos,
+    components: path.components.slice(0)
+  };
+}
+
+var characterDiff = new Diff();
+function diffChars(oldStr, newStr, options) {
+  return characterDiff.diff(oldStr, newStr, options);
+}
+
+function generateOptions(options, defaults) {
+  if (typeof options === 'function') {
+    defaults.callback = options;
+  } else if (options) {
+    for (var name in options) {
+      /* istanbul ignore else */
+      if (options.hasOwnProperty(name)) {
+        defaults[name] = options[name];
+      }
+    }
+  }
+
+  return defaults;
+}
+
+//
+// Ranges and exceptions:
+// Latin-1 Supplement, 0080–00FF
+//  - U+00D7  × Multiplication sign
+//  - U+00F7  ÷ Division sign
+// Latin Extended-A, 0100–017F
+// Latin Extended-B, 0180–024F
+// IPA Extensions, 0250–02AF
+// Spacing Modifier Letters, 02B0–02FF
+//  - U+02C7  ˇ ˇ  Caron
+//  - U+02D8  ˘ ˘  Breve
+//  - U+02D9  ˙ ˙  Dot Above
+//  - U+02DA  ˚ ˚  Ring Above
+//  - U+02DB  ˛ ˛  Ogonek
+//  - U+02DC  ˜ ˜  Small Tilde
+//  - U+02DD  ˝ ˝  Double Acute Accent
+// Latin Extended Additional, 1E00–1EFF
+
+var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
+var reWhitespace = /\S/;
+var wordDiff = new Diff();
+
+wordDiff.equals = function (left, right) {
+  if (this.options.ignoreCase) {
+    left = left.toLowerCase();
+    right = right.toLowerCase();
+  }
+
+  return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
+};
+
+wordDiff.tokenize = function (value) {
+  // All whitespace symbols except newline group into one token, each newline - in separate token
+  var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
+
+  for (var i = 0; i < tokens.length - 1; i++) {
+    // If we have an empty string in the next field and we have only word chars before and after, merge
+    if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
+      tokens[i] += tokens[i + 2];
+      tokens.splice(i + 1, 2);
+      i--;
+    }
+  }
+
+  return tokens;
+};
+
+function diffWords(oldStr, newStr, options) {
+  options = generateOptions(options, {
+    ignoreWhitespace: true
+  });
+  return wordDiff.diff(oldStr, newStr, options);
+}
+function diffWordsWithSpace(oldStr, newStr, options) {
+  return wordDiff.diff(oldStr, newStr, options);
+}
+
+var lineDiff = new Diff();
+
+lineDiff.tokenize = function (value) {
+  var retLines = [],
+      linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line
+
+  if (!linesAndNewlines[linesAndNewlines.length - 1]) {
+    linesAndNewlines.pop();
+  } // Merge the content and line separators into single tokens
+
+
+  for (var i = 0; i < linesAndNewlines.length; i++) {
+    var line = linesAndNewlines[i];
+
+    if (i % 2 && !this.options.newlineIsToken) {
+      retLines[retLines.length - 1] += line;
+    } else {
+      if (this.options.ignoreWhitespace) {
+        line = line.trim();
+      }
+
+      retLines.push(line);
+    }
+  }
+
+  return retLines;
+};
+
+function diffLines(oldStr, newStr, callback) {
+  return lineDiff.diff(oldStr, newStr, callback);
+}
+function diffTrimmedLines(oldStr, newStr, callback) {
+  var options = generateOptions(callback, {
+    ignoreWhitespace: true
+  });
+  return lineDiff.diff(oldStr, newStr, options);
+}
+
+var sentenceDiff = new Diff();
+
+sentenceDiff.tokenize = function (value) {
+  return value.split(/(\S.+?[.!?])(?=\s+|$)/);
+};
+
+function diffSentences(oldStr, newStr, callback) {
+  return sentenceDiff.diff(oldStr, newStr, callback);
+}
+
+var cssDiff = new Diff();
+
+cssDiff.tokenize = function (value) {
+  return value.split(/([{}:;,]|\s+)/);
+};
+
+function diffCss(oldStr, newStr, callback) {
+  return cssDiff.diff(oldStr, newStr, callback);
+}
+
+function _typeof(obj) {
+  "@babel/helpers - typeof";
+
+  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+    _typeof = function (obj) {
+      return typeof obj;
+    };
+  } else {
+    _typeof = function (obj) {
+      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+    };
+  }
+
+  return _typeof(obj);
+}
+
+function _toConsumableArray(arr) {
+  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
+}
+
+function _arrayWithoutHoles(arr) {
+  if (Array.isArray(arr)) return _arrayLikeToArray(arr);
+}
+
+function _iterableToArray(iter) {
+  if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
+}
+
+function _unsupportedIterableToArray(o, minLen) {
+  if (!o) return;
+  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
+  var n = Object.prototype.toString.call(o).slice(8, -1);
+  if (n === "Object" && o.constructor) n = o.constructor.name;
+  if (n === "Map" || n === "Set") return Array.from(o);
+  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
+}
+
+function _arrayLikeToArray(arr, len) {
+  if (len == null || len > arr.length) len = arr.length;
+
+  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
+
+  return arr2;
+}
+
+function _nonIterableSpread() {
+  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+
+var objectPrototypeToString = Object.prototype.toString;
+var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
+// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
+
+jsonDiff.useLongestToken = true;
+jsonDiff.tokenize = lineDiff.tokenize;
+
+jsonDiff.castInput = function (value) {
+  var _this$options = this.options,
+      undefinedReplacement = _this$options.undefinedReplacement,
+      _this$options$stringi = _this$options.stringifyReplacer,
+      stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {
+    return typeof v === 'undefined' ? undefinedReplacement : v;
+  } : _this$options$stringi;
+  return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, '  ');
+};
+
+jsonDiff.equals = function (left, right) {
+  return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'));
+};
+
+function diffJson(oldObj, newObj, options) {
+  return jsonDiff.diff(oldObj, newObj, options);
+} // This function handles the presence of circular references by bailing out when encountering an
+// object that is already on the "stack" of items being processed. Accepts an optional replacer
+
+function canonicalize(obj, stack, replacementStack, replacer, key) {
+  stack = stack || [];
+  replacementStack = replacementStack || [];
+
+  if (replacer) {
+    obj = replacer(key, obj);
+  }
+
+  var i;
+
+  for (i = 0; i < stack.length; i += 1) {
+    if (stack[i] === obj) {
+      return replacementStack[i];
+    }
+  }
+
+  var canonicalizedObj;
+
+  if ('[object Array]' === objectPrototypeToString.call(obj)) {
+    stack.push(obj);
+    canonicalizedObj = new Array(obj.length);
+    replacementStack.push(canonicalizedObj);
+
+    for (i = 0; i < obj.length; i += 1) {
+      canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);
+    }
+
+    stack.pop();
+    replacementStack.pop();
+    return canonicalizedObj;
+  }
+
+  if (obj && obj.toJSON) {
+    obj = obj.toJSON();
+  }
+
+  if (_typeof(obj) === 'object' && obj !== null) {
+    stack.push(obj);
+    canonicalizedObj = {};
+    replacementStack.push(canonicalizedObj);
+
+    var sortedKeys = [],
+        _key;
+
+    for (_key in obj) {
+      /* istanbul ignore else */
+      if (obj.hasOwnProperty(_key)) {
+        sortedKeys.push(_key);
+      }
+    }
+
+    sortedKeys.sort();
+
+    for (i = 0; i < sortedKeys.length; i += 1) {
+      _key = sortedKeys[i];
+      canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
+    }
+
+    stack.pop();
+    replacementStack.pop();
+  } else {
+    canonicalizedObj = obj;
+  }
+
+  return canonicalizedObj;
+}
+
+var arrayDiff = new Diff();
+
+arrayDiff.tokenize = function (value) {
+  return value.slice();
+};
+
+arrayDiff.join = arrayDiff.removeEmpty = function (value) {
+  return value;
+};
+
+function diffArrays(oldArr, newArr, callback) {
+  return arrayDiff.diff(oldArr, newArr, callback);
+}
+
+function parsePatch(uniDiff) {
+  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/),
+      delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+      list = [],
+      i = 0;
+
+  function parseIndex() {
+    var index = {};
+    list.push(index); // Parse diff metadata
+
+    while (i < diffstr.length) {
+      var line = diffstr[i]; // File header found, end parsing diff metadata
+
+      if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
+        break;
+      } // Diff index
+
+
+      var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
+
+      if (header) {
+        index.index = header[1];
+      }
+
+      i++;
+    } // Parse file headers if they are defined. Unified diff requires them, but
+    // there's no technical issues to have an isolated hunk without file header
+
+
+    parseFileHeader(index);
+    parseFileHeader(index); // Parse hunks
+
+    index.hunks = [];
+
+    while (i < diffstr.length) {
+      var _line = diffstr[i];
+
+      if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
+        break;
+      } else if (/^@@/.test(_line)) {
+        index.hunks.push(parseHunk());
+      } else if (_line && options.strict) {
+        // Ignore unexpected content unless in strict mode
+        throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
+      } else {
+        i++;
+      }
+    }
+  } // Parses the --- and +++ headers, if none are found, no lines
+  // are consumed.
+
+
+  function parseFileHeader(index) {
+    var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]);
+
+    if (fileHeader) {
+      var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
+      var data = fileHeader[2].split('\t', 2);
+      var fileName = data[0].replace(/\\\\/g, '\\');
+
+      if (/^".*"$/.test(fileName)) {
+        fileName = fileName.substr(1, fileName.length - 2);
+      }
+
+      index[keyPrefix + 'FileName'] = fileName;
+      index[keyPrefix + 'Header'] = (data[1] || '').trim();
+      i++;
+    }
+  } // Parses a hunk
+  // This assumes that we are at the start of a hunk.
+
+
+  function parseHunk() {
+    var chunkHeaderIndex = i,
+        chunkHeaderLine = diffstr[i++],
+        chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
+    var hunk = {
+      oldStart: +chunkHeader[1],
+      oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],
+      newStart: +chunkHeader[3],
+      newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],
+      lines: [],
+      linedelimiters: []
+    }; // Unified Diff Format quirk: If the chunk size is 0,
+    // the first number is one lower than one would expect.
+    // https://www.artima.com/weblogs/viewpost.jsp?thread=164293
+
+    if (hunk.oldLines === 0) {
+      hunk.oldStart += 1;
+    }
+
+    if (hunk.newLines === 0) {
+      hunk.newStart += 1;
+    }
+
+    var addCount = 0,
+        removeCount = 0;
+
+    for (; i < diffstr.length; i++) {
+      // Lines starting with '---' could be mistaken for the "remove line" operation
+      // But they could be the header for the next file. Therefore prune such cases out.
+      if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {
+        break;
+      }
+
+      var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];
+
+      if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
+        hunk.lines.push(diffstr[i]);
+        hunk.linedelimiters.push(delimiters[i] || '\n');
+
+        if (operation === '+') {
+          addCount++;
+        } else if (operation === '-') {
+          removeCount++;
+        } else if (operation === ' ') {
+          addCount++;
+          removeCount++;
+        }
+      } else {
+        break;
+      }
+    } // Handle the empty block count case
+
+
+    if (!addCount && hunk.newLines === 1) {
+      hunk.newLines = 0;
+    }
+
+    if (!removeCount && hunk.oldLines === 1) {
+      hunk.oldLines = 0;
+    } // Perform optional sanity checking
+
+
+    if (options.strict) {
+      if (addCount !== hunk.newLines) {
+        throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+      }
+
+      if (removeCount !== hunk.oldLines) {
+        throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+      }
+    }
+
+    return hunk;
+  }
+
+  while (i < diffstr.length) {
+    parseIndex();
+  }
+
+  return list;
+}
+
+// Iterator that traverses in the range of [min, max], stepping
+// by distance from a given start position. I.e. for [0, 4], with
+// start of 2, this will iterate 2, 3, 1, 4, 0.
+function distanceIterator (start, minLine, maxLine) {
+  var wantForward = true,
+      backwardExhausted = false,
+      forwardExhausted = false,
+      localOffset = 1;
+  return function iterator() {
+    if (wantForward && !forwardExhausted) {
+      if (backwardExhausted) {
+        localOffset++;
+      } else {
+        wantForward = false;
+      } // Check if trying to fit beyond text length, and if not, check it fits
+      // after offset location (or desired location on first iteration)
+
+
+      if (start + localOffset <= maxLine) {
+        return localOffset;
+      }
+
+      forwardExhausted = true;
+    }
+
+    if (!backwardExhausted) {
+      if (!forwardExhausted) {
+        wantForward = true;
+      } // Check if trying to fit before text beginning, and if not, check it fits
+      // before offset location
+
+
+      if (minLine <= start - localOffset) {
+        return -localOffset++;
+      }
+
+      backwardExhausted = true;
+      return iterator();
+    } // We tried to fit hunk before text beginning and beyond text length, then
+    // hunk can't fit on the text. Return undefined
+
+  };
+}
+
+function applyPatch(source, uniDiff) {
+  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+  if (typeof uniDiff === 'string') {
+    uniDiff = parsePatch(uniDiff);
+  }
+
+  if (Array.isArray(uniDiff)) {
+    if (uniDiff.length > 1) {
+      throw new Error('applyPatch only works with a single input.');
+    }
+
+    uniDiff = uniDiff[0];
+  } // Apply the diff to the input
+
+
+  var lines = source.split(/\r\n|[\n\v\f\r\x85]/),
+      delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+      hunks = uniDiff.hunks,
+      compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {
+    return line === patchContent;
+  },
+      errorCount = 0,
+      fuzzFactor = options.fuzzFactor || 0,
+      minLine = 0,
+      offset = 0,
+      removeEOFNL,
+      addEOFNL;
+  /**
+   * Checks if the hunk exactly fits on the provided location
+   */
+
+
+  function hunkFits(hunk, toPos) {
+    for (var j = 0; j < hunk.lines.length; j++) {
+      var line = hunk.lines[j],
+          operation = line.length > 0 ? line[0] : ' ',
+          content = line.length > 0 ? line.substr(1) : line;
+
+      if (operation === ' ' || operation === '-') {
+        // Context sanity check
+        if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
+          errorCount++;
+
+          if (errorCount > fuzzFactor) {
+            return false;
+          }
+        }
+
+        toPos++;
+      }
+    }
+
+    return true;
+  } // Search best fit offsets for each hunk based on the previous ones
+
+
+  for (var i = 0; i < hunks.length; i++) {
+    var hunk = hunks[i],
+        maxLine = lines.length - hunk.oldLines,
+        localOffset = 0,
+        toPos = offset + hunk.oldStart - 1;
+    var iterator = distanceIterator(toPos, minLine, maxLine);
+
+    for (; localOffset !== undefined; localOffset = iterator()) {
+      if (hunkFits(hunk, toPos + localOffset)) {
+        hunk.offset = offset += localOffset;
+        break;
+      }
+    }
+
+    if (localOffset === undefined) {
+      return false;
+    } // Set lower text limit to end of the current hunk, so next ones don't try
+    // to fit over already patched text
+
+
+    minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
+  } // Apply patch hunks
+
+
+  var diffOffset = 0;
+
+  for (var _i = 0; _i < hunks.length; _i++) {
+    var _hunk = hunks[_i],
+        _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;
+
+    diffOffset += _hunk.newLines - _hunk.oldLines;
+
+    for (var j = 0; j < _hunk.lines.length; j++) {
+      var line = _hunk.lines[j],
+          operation = line.length > 0 ? line[0] : ' ',
+          content = line.length > 0 ? line.substr(1) : line,
+          delimiter = _hunk.linedelimiters[j];
+
+      if (operation === ' ') {
+        _toPos++;
+      } else if (operation === '-') {
+        lines.splice(_toPos, 1);
+        delimiters.splice(_toPos, 1);
+        /* istanbul ignore else */
+      } else if (operation === '+') {
+        lines.splice(_toPos, 0, content);
+        delimiters.splice(_toPos, 0, delimiter);
+        _toPos++;
+      } else if (operation === '\\') {
+        var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
+
+        if (previousOperation === '+') {
+          removeEOFNL = true;
+        } else if (previousOperation === '-') {
+          addEOFNL = true;
+        }
+      }
+    }
+  } // Handle EOFNL insertion/removal
+
+
+  if (removeEOFNL) {
+    while (!lines[lines.length - 1]) {
+      lines.pop();
+      delimiters.pop();
+    }
+  } else if (addEOFNL) {
+    lines.push('');
+    delimiters.push('\n');
+  }
+
+  for (var _k = 0; _k < lines.length - 1; _k++) {
+    lines[_k] = lines[_k] + delimiters[_k];
+  }
+
+  return lines.join('');
+} // Wrapper that supports multiple file patches via callbacks.
+
+function applyPatches(uniDiff, options) {
+  if (typeof uniDiff === 'string') {
+    uniDiff = parsePatch(uniDiff);
+  }
+
+  var currentIndex = 0;
+
+  function processIndex() {
+    var index = uniDiff[currentIndex++];
+
+    if (!index) {
+      return options.complete();
+    }
+
+    options.loadFile(index, function (err, data) {
+      if (err) {
+        return options.complete(err);
+      }
+
+      var updatedContent = applyPatch(data, index, options);
+      options.patched(index, updatedContent, function (err) {
+        if (err) {
+          return options.complete(err);
+        }
+
+        processIndex();
+      });
+    });
+  }
+
+  processIndex();
+}
+
+function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+  if (!options) {
+    options = {};
+  }
+
+  if (typeof options.context === 'undefined') {
+    options.context = 4;
+  }
+
+  var diff = diffLines(oldStr, newStr, options);
+  diff.push({
+    value: '',
+    lines: []
+  }); // Append an empty value to make cleanup easier
+
+  function contextLines(lines) {
+    return lines.map(function (entry) {
+      return ' ' + entry;
+    });
+  }
+
+  var hunks = [];
+  var oldRangeStart = 0,
+      newRangeStart = 0,
+      curRange = [],
+      oldLine = 1,
+      newLine = 1;
+
+  var _loop = function _loop(i) {
+    var current = diff[i],
+        lines = current.lines || current.value.replace(/\n$/, '').split('\n');
+    current.lines = lines;
+
+    if (current.added || current.removed) {
+      var _curRange;
+
+      // If we have previous context, start with that
+      if (!oldRangeStart) {
+        var prev = diff[i - 1];
+        oldRangeStart = oldLine;
+        newRangeStart = newLine;
+
+        if (prev) {
+          curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
+          oldRangeStart -= curRange.length;
+          newRangeStart -= curRange.length;
+        }
+      } // Output our changes
+
+
+      (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {
+        return (current.added ? '+' : '-') + entry;
+      }))); // Track the updated file position
+
+
+      if (current.added) {
+        newLine += lines.length;
+      } else {
+        oldLine += lines.length;
+      }
+    } else {
+      // Identical context lines. Track line changes
+      if (oldRangeStart) {
+        // Close out any changes that have been output (or join overlapping)
+        if (lines.length <= options.context * 2 && i < diff.length - 2) {
+          var _curRange2;
+
+          // Overlapping
+          (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));
+        } else {
+          var _curRange3;
+
+          // end the range and output
+          var contextSize = Math.min(lines.length, options.context);
+
+          (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));
+
+          var hunk = {
+            oldStart: oldRangeStart,
+            oldLines: oldLine - oldRangeStart + contextSize,
+            newStart: newRangeStart,
+            newLines: newLine - newRangeStart + contextSize,
+            lines: curRange
+          };
+
+          if (i >= diff.length - 2 && lines.length <= options.context) {
+            // EOF is inside this hunk
+            var oldEOFNewline = /\n$/.test(oldStr);
+            var newEOFNewline = /\n$/.test(newStr);
+            var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;
+
+            if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {
+              // special case: old has no eol and no trailing context; no-nl can end up before adds
+              // however, if the old file is empty, do not output the no-nl line
+              curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
+            }
+
+            if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {
+              curRange.push('\\ No newline at end of file');
+            }
+          }
+
+          hunks.push(hunk);
+          oldRangeStart = 0;
+          newRangeStart = 0;
+          curRange = [];
+        }
+      }
+
+      oldLine += lines.length;
+      newLine += lines.length;
+    }
+  };
+
+  for (var i = 0; i < diff.length; i++) {
+    _loop(i);
+  }
+
+  return {
+    oldFileName: oldFileName,
+    newFileName: newFileName,
+    oldHeader: oldHeader,
+    newHeader: newHeader,
+    hunks: hunks
+  };
+}
+function formatPatch(diff) {
+  var ret = [];
+
+  if (diff.oldFileName == diff.newFileName) {
+    ret.push('Index: ' + diff.oldFileName);
+  }
+
+  ret.push('===================================================================');
+  ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
+  ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
+
+  for (var i = 0; i < diff.hunks.length; i++) {
+    var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,
+    // the first number is one lower than one would expect.
+    // https://www.artima.com/weblogs/viewpost.jsp?thread=164293
+
+    if (hunk.oldLines === 0) {
+      hunk.oldStart -= 1;
+    }
+
+    if (hunk.newLines === 0) {
+      hunk.newStart -= 1;
+    }
+
+    ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
+    ret.push.apply(ret, hunk.lines);
+  }
+
+  return ret.join('\n') + '\n';
+}
+function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+  return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));
+}
+function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
+  return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
+}
+
+function arrayEqual(a, b) {
+  if (a.length !== b.length) {
+    return false;
+  }
+
+  return arrayStartsWith(a, b);
+}
+function arrayStartsWith(array, start) {
+  if (start.length > array.length) {
+    return false;
+  }
+
+  for (var i = 0; i < start.length; i++) {
+    if (start[i] !== array[i]) {
+      return false;
+    }
+  }
+
+  return true;
+}
+
+function calcLineCount(hunk) {
+  var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),
+      oldLines = _calcOldNewLineCount.oldLines,
+      newLines = _calcOldNewLineCount.newLines;
+
+  if (oldLines !== undefined) {
+    hunk.oldLines = oldLines;
+  } else {
+    delete hunk.oldLines;
+  }
+
+  if (newLines !== undefined) {
+    hunk.newLines = newLines;
+  } else {
+    delete hunk.newLines;
+  }
+}
+function merge(mine, theirs, base) {
+  mine = loadPatch(mine, base);
+  theirs = loadPatch(theirs, base);
+  var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.
+  // Leaving sanity checks on this to the API consumer that may know more about the
+  // meaning in their own context.
+
+  if (mine.index || theirs.index) {
+    ret.index = mine.index || theirs.index;
+  }
+
+  if (mine.newFileName || theirs.newFileName) {
+    if (!fileNameChanged(mine)) {
+      // No header or no change in ours, use theirs (and ours if theirs does not exist)
+      ret.oldFileName = theirs.oldFileName || mine.oldFileName;
+      ret.newFileName = theirs.newFileName || mine.newFileName;
+      ret.oldHeader = theirs.oldHeader || mine.oldHeader;
+      ret.newHeader = theirs.newHeader || mine.newHeader;
+    } else if (!fileNameChanged(theirs)) {
+      // No header or no change in theirs, use ours
+      ret.oldFileName = mine.oldFileName;
+      ret.newFileName = mine.newFileName;
+      ret.oldHeader = mine.oldHeader;
+      ret.newHeader = mine.newHeader;
+    } else {
+      // Both changed... figure it out
+      ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
+      ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
+      ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
+      ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
+    }
+  }
+
+  ret.hunks = [];
+  var mineIndex = 0,
+      theirsIndex = 0,
+      mineOffset = 0,
+      theirsOffset = 0;
+
+  while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
+    var mineCurrent = mine.hunks[mineIndex] || {
+      oldStart: Infinity
+    },
+        theirsCurrent = theirs.hunks[theirsIndex] || {
+      oldStart: Infinity
+    };
+
+    if (hunkBefore(mineCurrent, theirsCurrent)) {
+      // This patch does not overlap with any of the others, yay.
+      ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
+      mineIndex++;
+      theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
+    } else if (hunkBefore(theirsCurrent, mineCurrent)) {
+      // This patch does not overlap with any of the others, yay.
+      ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
+      theirsIndex++;
+      mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
+    } else {
+      // Overlap, merge as best we can
+      var mergedHunk = {
+        oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
+        oldLines: 0,
+        newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
+        newLines: 0,
+        lines: []
+      };
+      mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
+      theirsIndex++;
+      mineIndex++;
+      ret.hunks.push(mergedHunk);
+    }
+  }
+
+  return ret;
+}
+
+function loadPatch(param, base) {
+  if (typeof param === 'string') {
+    if (/^@@/m.test(param) || /^Index:/m.test(param)) {
+      return parsePatch(param)[0];
+    }
+
+    if (!base) {
+      throw new Error('Must provide a base reference or pass in a patch');
+    }
+
+    return structuredPatch(undefined, undefined, base, param);
+  }
+
+  return param;
+}
+
+function fileNameChanged(patch) {
+  return patch.newFileName && patch.newFileName !== patch.oldFileName;
+}
+
+function selectField(index, mine, theirs) {
+  if (mine === theirs) {
+    return mine;
+  } else {
+    index.conflict = true;
+    return {
+      mine: mine,
+      theirs: theirs
+    };
+  }
+}
+
+function hunkBefore(test, check) {
+  return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
+}
+
+function cloneHunk(hunk, offset) {
+  return {
+    oldStart: hunk.oldStart,
+    oldLines: hunk.oldLines,
+    newStart: hunk.newStart + offset,
+    newLines: hunk.newLines,
+    lines: hunk.lines
+  };
+}
+
+function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
+  // This will generally result in a conflicted hunk, but there are cases where the context
+  // is the only overlap where we can successfully merge the content here.
+  var mine = {
+    offset: mineOffset,
+    lines: mineLines,
+    index: 0
+  },
+      their = {
+    offset: theirOffset,
+    lines: theirLines,
+    index: 0
+  }; // Handle any leading content
+
+  insertLeading(hunk, mine, their);
+  insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.
+
+  while (mine.index < mine.lines.length && their.index < their.lines.length) {
+    var mineCurrent = mine.lines[mine.index],
+        theirCurrent = their.lines[their.index];
+
+    if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
+      // Both modified ...
+      mutualChange(hunk, mine, their);
+    } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
+      var _hunk$lines;
+
+      // Mine inserted
+      (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));
+    } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
+      var _hunk$lines2;
+
+      // Theirs inserted
+      (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));
+    } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
+      // Mine removed or edited
+      removal(hunk, mine, their);
+    } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
+      // Their removed or edited
+      removal(hunk, their, mine, true);
+    } else if (mineCurrent === theirCurrent) {
+      // Context identity
+      hunk.lines.push(mineCurrent);
+      mine.index++;
+      their.index++;
+    } else {
+      // Context mismatch
+      conflict(hunk, collectChange(mine), collectChange(their));
+    }
+  } // Now push anything that may be remaining
+
+
+  insertTrailing(hunk, mine);
+  insertTrailing(hunk, their);
+  calcLineCount(hunk);
+}
+
+function mutualChange(hunk, mine, their) {
+  var myChanges = collectChange(mine),
+      theirChanges = collectChange(their);
+
+  if (allRemoves(myChanges) && allRemoves(theirChanges)) {
+    // Special case for remove changes that are supersets of one another
+    if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
+      var _hunk$lines3;
+
+      (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));
+
+      return;
+    } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
+      var _hunk$lines4;
+
+      (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));
+
+      return;
+    }
+  } else if (arrayEqual(myChanges, theirChanges)) {
+    var _hunk$lines5;
+
+    (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));
+
+    return;
+  }
+
+  conflict(hunk, myChanges, theirChanges);
+}
+
+function removal(hunk, mine, their, swap) {
+  var myChanges = collectChange(mine),
+      theirChanges = collectContext(their, myChanges);
+
+  if (theirChanges.merged) {
+    var _hunk$lines6;
+
+    (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));
+  } else {
+    conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
+  }
+}
+
+function conflict(hunk, mine, their) {
+  hunk.conflict = true;
+  hunk.lines.push({
+    conflict: true,
+    mine: mine,
+    theirs: their
+  });
+}
+
+function insertLeading(hunk, insert, their) {
+  while (insert.offset < their.offset && insert.index < insert.lines.length) {
+    var line = insert.lines[insert.index++];
+    hunk.lines.push(line);
+    insert.offset++;
+  }
+}
+
+function insertTrailing(hunk, insert) {
+  while (insert.index < insert.lines.length) {
+    var line = insert.lines[insert.index++];
+    hunk.lines.push(line);
+  }
+}
+
+function collectChange(state) {
+  var ret = [],
+      operation = state.lines[state.index][0];
+
+  while (state.index < state.lines.length) {
+    var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
+
+    if (operation === '-' && line[0] === '+') {
+      operation = '+';
+    }
+
+    if (operation === line[0]) {
+      ret.push(line);
+      state.index++;
+    } else {
+      break;
+    }
+  }
+
+  return ret;
+}
+
+function collectContext(state, matchChanges) {
+  var changes = [],
+      merged = [],
+      matchIndex = 0,
+      contextChanges = false,
+      conflicted = false;
+
+  while (matchIndex < matchChanges.length && state.index < state.lines.length) {
+    var change = state.lines[state.index],
+        match = matchChanges[matchIndex]; // Once we've hit our add, then we are done
+
+    if (match[0] === '+') {
+      break;
+    }
+
+    contextChanges = contextChanges || change[0] !== ' ';
+    merged.push(match);
+    matchIndex++; // Consume any additions in the other block as a conflict to attempt
+    // to pull in the remaining context after this
+
+    if (change[0] === '+') {
+      conflicted = true;
+
+      while (change[0] === '+') {
+        changes.push(change);
+        change = state.lines[++state.index];
+      }
+    }
+
+    if (match.substr(1) === change.substr(1)) {
+      changes.push(change);
+      state.index++;
+    } else {
+      conflicted = true;
+    }
+  }
+
+  if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
+    conflicted = true;
+  }
+
+  if (conflicted) {
+    return changes;
+  }
+
+  while (matchIndex < matchChanges.length) {
+    merged.push(matchChanges[matchIndex++]);
+  }
+
+  return {
+    merged: merged,
+    changes: changes
+  };
+}
+
+function allRemoves(changes) {
+  return changes.reduce(function (prev, change) {
+    return prev && change[0] === '-';
+  }, true);
+}
+
+function skipRemoveSuperset(state, removeChanges, delta) {
+  for (var i = 0; i < delta; i++) {
+    var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
+
+    if (state.lines[state.index + i] !== ' ' + changeContent) {
+      return false;
+    }
+  }
+
+  state.index += delta;
+  return true;
+}
+
+function calcOldNewLineCount(lines) {
+  var oldLines = 0;
+  var newLines = 0;
+  lines.forEach(function (line) {
+    if (typeof line !== 'string') {
+      var myCount = calcOldNewLineCount(line.mine);
+      var theirCount = calcOldNewLineCount(line.theirs);
+
+      if (oldLines !== undefined) {
+        if (myCount.oldLines === theirCount.oldLines) {
+          oldLines += myCount.oldLines;
+        } else {
+          oldLines = undefined;
+        }
+      }
+
+      if (newLines !== undefined) {
+        if (myCount.newLines === theirCount.newLines) {
+          newLines += myCount.newLines;
+        } else {
+          newLines = undefined;
+        }
+      }
+    } else {
+      if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {
+        newLines++;
+      }
+
+      if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {
+        oldLines++;
+      }
+    }
+  });
+  return {
+    oldLines: oldLines,
+    newLines: newLines
+  };
+}
+
+// See: http://code.google.com/p/google-diff-match-patch/wiki/API
+function convertChangesToDMP(changes) {
+  var ret = [],
+      change,
+      operation;
+
+  for (var i = 0; i < changes.length; i++) {
+    change = changes[i];
+
+    if (change.added) {
+      operation = 1;
+    } else if (change.removed) {
+      operation = -1;
+    } else {
+      operation = 0;
+    }
+
+    ret.push([operation, change.value]);
+  }
+
+  return ret;
+}
+
+function convertChangesToXML(changes) {
+  var ret = [];
+
+  for (var i = 0; i < changes.length; i++) {
+    var change = changes[i];
+
+    if (change.added) {
+      ret.push('');
+    } else if (change.removed) {
+      ret.push('');
+    }
+
+    ret.push(escapeHTML(change.value));
+
+    if (change.added) {
+      ret.push('');
+    } else if (change.removed) {
+      ret.push('');
+    }
+  }
+
+  return ret.join('');
+}
+
+function escapeHTML(s) {
+  var n = s;
+  n = n.replace(/&/g, '&');
+  n = n.replace(//g, '>');
+  n = n.replace(/"/g, '"');
+  return n;
+}
+
+export { Diff, applyPatch, applyPatches, canonicalize, convertChangesToDMP, convertChangesToXML, createPatch, createTwoFilesPatch, diffArrays, diffChars, diffCss, diffJson, diffLines, diffSentences, diffTrimmedLines, diffWords, diffWordsWithSpace, merge, parsePatch, structuredPatch };
diff --git a/node_modules/diff/lib/index.js b/node_modules/diff/lib/index.js
new file mode 100644
index 0000000..920f0fe
--- /dev/null
+++ b/node_modules/diff/lib/index.js
@@ -0,0 +1,216 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+Object.defineProperty(exports, "Diff", {
+  enumerable: true,
+  get: function get() {
+    return _base["default"];
+  }
+});
+Object.defineProperty(exports, "diffChars", {
+  enumerable: true,
+  get: function get() {
+    return _character.diffChars;
+  }
+});
+Object.defineProperty(exports, "diffWords", {
+  enumerable: true,
+  get: function get() {
+    return _word.diffWords;
+  }
+});
+Object.defineProperty(exports, "diffWordsWithSpace", {
+  enumerable: true,
+  get: function get() {
+    return _word.diffWordsWithSpace;
+  }
+});
+Object.defineProperty(exports, "diffLines", {
+  enumerable: true,
+  get: function get() {
+    return _line.diffLines;
+  }
+});
+Object.defineProperty(exports, "diffTrimmedLines", {
+  enumerable: true,
+  get: function get() {
+    return _line.diffTrimmedLines;
+  }
+});
+Object.defineProperty(exports, "diffSentences", {
+  enumerable: true,
+  get: function get() {
+    return _sentence.diffSentences;
+  }
+});
+Object.defineProperty(exports, "diffCss", {
+  enumerable: true,
+  get: function get() {
+    return _css.diffCss;
+  }
+});
+Object.defineProperty(exports, "diffJson", {
+  enumerable: true,
+  get: function get() {
+    return _json.diffJson;
+  }
+});
+Object.defineProperty(exports, "canonicalize", {
+  enumerable: true,
+  get: function get() {
+    return _json.canonicalize;
+  }
+});
+Object.defineProperty(exports, "diffArrays", {
+  enumerable: true,
+  get: function get() {
+    return _array.diffArrays;
+  }
+});
+Object.defineProperty(exports, "applyPatch", {
+  enumerable: true,
+  get: function get() {
+    return _apply.applyPatch;
+  }
+});
+Object.defineProperty(exports, "applyPatches", {
+  enumerable: true,
+  get: function get() {
+    return _apply.applyPatches;
+  }
+});
+Object.defineProperty(exports, "parsePatch", {
+  enumerable: true,
+  get: function get() {
+    return _parse.parsePatch;
+  }
+});
+Object.defineProperty(exports, "merge", {
+  enumerable: true,
+  get: function get() {
+    return _merge.merge;
+  }
+});
+Object.defineProperty(exports, "structuredPatch", {
+  enumerable: true,
+  get: function get() {
+    return _create.structuredPatch;
+  }
+});
+Object.defineProperty(exports, "createTwoFilesPatch", {
+  enumerable: true,
+  get: function get() {
+    return _create.createTwoFilesPatch;
+  }
+});
+Object.defineProperty(exports, "createPatch", {
+  enumerable: true,
+  get: function get() {
+    return _create.createPatch;
+  }
+});
+Object.defineProperty(exports, "convertChangesToDMP", {
+  enumerable: true,
+  get: function get() {
+    return _dmp.convertChangesToDMP;
+  }
+});
+Object.defineProperty(exports, "convertChangesToXML", {
+  enumerable: true,
+  get: function get() {
+    return _xml.convertChangesToXML;
+  }
+});
+
+/*istanbul ignore end*/
+var
+/*istanbul ignore start*/
+_base = _interopRequireDefault(require("./diff/base"))
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_character = require("./diff/character")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_word = require("./diff/word")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_line = require("./diff/line")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_sentence = require("./diff/sentence")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_css = require("./diff/css")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_json = require("./diff/json")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_array = require("./diff/array")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_apply = require("./patch/apply")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_parse = require("./patch/parse")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_merge = require("./patch/merge")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_create = require("./patch/create")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_dmp = require("./convert/dmp")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_xml = require("./convert/xml")
+/*istanbul ignore end*/
+;
+
+/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+/*istanbul ignore end*/
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBTZWUgTElDRU5TRSBmaWxlIGZvciB0ZXJtcyBvZiB1c2UgKi9cblxuLypcbiAqIFRleHQgZGlmZiBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBUaGlzIGxpYnJhcnkgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBBUElTOlxuICogSnNEaWZmLmRpZmZDaGFyczogQ2hhcmFjdGVyIGJ5IGNoYXJhY3RlciBkaWZmXG4gKiBKc0RpZmYuZGlmZldvcmRzOiBXb3JkIChhcyBkZWZpbmVkIGJ5IFxcYiByZWdleCkgZGlmZiB3aGljaCBpZ25vcmVzIHdoaXRlc3BhY2VcbiAqIEpzRGlmZi5kaWZmTGluZXM6IExpbmUgYmFzZWQgZGlmZlxuICpcbiAqIEpzRGlmZi5kaWZmQ3NzOiBEaWZmIHRhcmdldGVkIGF0IENTUyBjb250ZW50XG4gKlxuICogVGhlc2UgbWV0aG9kcyBhcmUgYmFzZWQgb24gdGhlIGltcGxlbWVudGF0aW9uIHByb3Bvc2VkIGluXG4gKiBcIkFuIE8oTkQpIERpZmZlcmVuY2UgQWxnb3JpdGhtIGFuZCBpdHMgVmFyaWF0aW9uc1wiIChNeWVycywgMTk4NikuXG4gKiBodHRwOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjQuNjkyN1xuICovXG5pbXBvcnQgRGlmZiBmcm9tICcuL2RpZmYvYmFzZSc7XG5pbXBvcnQge2RpZmZDaGFyc30gZnJvbSAnLi9kaWZmL2NoYXJhY3Rlcic7XG5pbXBvcnQge2RpZmZXb3JkcywgZGlmZldvcmRzV2l0aFNwYWNlfSBmcm9tICcuL2RpZmYvd29yZCc7XG5pbXBvcnQge2RpZmZMaW5lcywgZGlmZlRyaW1tZWRMaW5lc30gZnJvbSAnLi9kaWZmL2xpbmUnO1xuaW1wb3J0IHtkaWZmU2VudGVuY2VzfSBmcm9tICcuL2RpZmYvc2VudGVuY2UnO1xuXG5pbXBvcnQge2RpZmZDc3N9IGZyb20gJy4vZGlmZi9jc3MnO1xuaW1wb3J0IHtkaWZmSnNvbiwgY2Fub25pY2FsaXplfSBmcm9tICcuL2RpZmYvanNvbic7XG5cbmltcG9ydCB7ZGlmZkFycmF5c30gZnJvbSAnLi9kaWZmL2FycmF5JztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJy4vcGF0Y2gvbWVyZ2UnO1xuaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2gsIGNyZWF0ZVR3b0ZpbGVzUGF0Y2gsIGNyZWF0ZVBhdGNofSBmcm9tICcuL3BhdGNoL2NyZWF0ZSc7XG5cbmltcG9ydCB7Y29udmVydENoYW5nZXNUb0RNUH0gZnJvbSAnLi9jb252ZXJ0L2RtcCc7XG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9YTUx9IGZyb20gJy4vY29udmVydC94bWwnO1xuXG5leHBvcnQge1xuICBEaWZmLFxuXG4gIGRpZmZDaGFycyxcbiAgZGlmZldvcmRzLFxuICBkaWZmV29yZHNXaXRoU3BhY2UsXG4gIGRpZmZMaW5lcyxcbiAgZGlmZlRyaW1tZWRMaW5lcyxcbiAgZGlmZlNlbnRlbmNlcyxcblxuICBkaWZmQ3NzLFxuICBkaWZmSnNvbixcblxuICBkaWZmQXJyYXlzLFxuXG4gIHN0cnVjdHVyZWRQYXRjaCxcbiAgY3JlYXRlVHdvRmlsZXNQYXRjaCxcbiAgY3JlYXRlUGF0Y2gsXG4gIGFwcGx5UGF0Y2gsXG4gIGFwcGx5UGF0Y2hlcyxcbiAgcGFyc2VQYXRjaCxcbiAgbWVyZ2UsXG4gIGNvbnZlcnRDaGFuZ2VzVG9ETVAsXG4gIGNvbnZlcnRDaGFuZ2VzVG9YTUwsXG4gIGNhbm9uaWNhbGl6ZVxufTtcbiJdfQ==
diff --git a/node_modules/diff/lib/index.mjs b/node_modules/diff/lib/index.mjs
new file mode 100644
index 0000000..ca0e591
--- /dev/null
+++ b/node_modules/diff/lib/index.mjs
@@ -0,0 +1,1553 @@
+function Diff() {}
+Diff.prototype = {
+  diff: function diff(oldString, newString) {
+    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+    var callback = options.callback;
+
+    if (typeof options === 'function') {
+      callback = options;
+      options = {};
+    }
+
+    this.options = options;
+    var self = this;
+
+    function done(value) {
+      if (callback) {
+        setTimeout(function () {
+          callback(undefined, value);
+        }, 0);
+        return true;
+      } else {
+        return value;
+      }
+    } // Allow subclasses to massage the input prior to running
+
+
+    oldString = this.castInput(oldString);
+    newString = this.castInput(newString);
+    oldString = this.removeEmpty(this.tokenize(oldString));
+    newString = this.removeEmpty(this.tokenize(newString));
+    var newLen = newString.length,
+        oldLen = oldString.length;
+    var editLength = 1;
+    var maxEditLength = newLen + oldLen;
+    var bestPath = [{
+      newPos: -1,
+      components: []
+    }]; // Seed editLength = 0, i.e. the content starts with the same values
+
+    var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
+
+    if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+      // Identity per the equality and tokenizer
+      return done([{
+        value: this.join(newString),
+        count: newString.length
+      }]);
+    } // Main worker method. checks all permutations of a given edit length for acceptance.
+
+
+    function execEditLength() {
+      for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
+        var basePath = void 0;
+
+        var addPath = bestPath[diagonalPath - 1],
+            removePath = bestPath[diagonalPath + 1],
+            _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+
+        if (addPath) {
+          // No one else is going to attempt to use this value, clear it
+          bestPath[diagonalPath - 1] = undefined;
+        }
+
+        var canAdd = addPath && addPath.newPos + 1 < newLen,
+            canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
+
+        if (!canAdd && !canRemove) {
+          // If this path is a terminal then prune
+          bestPath[diagonalPath] = undefined;
+          continue;
+        } // Select the diagonal that we want to branch from. We select the prior
+        // path whose position in the new string is the farthest from the origin
+        // and does not pass the bounds of the diff graph
+
+
+        if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
+          basePath = clonePath(removePath);
+          self.pushComponent(basePath.components, undefined, true);
+        } else {
+          basePath = addPath; // No need to clone, we've pulled it from the list
+
+          basePath.newPos++;
+          self.pushComponent(basePath.components, true, undefined);
+        }
+
+        _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done
+
+        if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
+          return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
+        } else {
+          // Otherwise track this path as a potential candidate and continue.
+          bestPath[diagonalPath] = basePath;
+        }
+      }
+
+      editLength++;
+    } // Performs the length of edit iteration. Is a bit fugly as this has to support the
+    // sync and async mode which is never fun. Loops over execEditLength until a value
+    // is produced.
+
+
+    if (callback) {
+      (function exec() {
+        setTimeout(function () {
+          // This should not happen, but we want to be safe.
+
+          /* istanbul ignore next */
+          if (editLength > maxEditLength) {
+            return callback();
+          }
+
+          if (!execEditLength()) {
+            exec();
+          }
+        }, 0);
+      })();
+    } else {
+      while (editLength <= maxEditLength) {
+        var ret = execEditLength();
+
+        if (ret) {
+          return ret;
+        }
+      }
+    }
+  },
+  pushComponent: function pushComponent(components, added, removed) {
+    var last = components[components.length - 1];
+
+    if (last && last.added === added && last.removed === removed) {
+      // We need to clone here as the component clone operation is just
+      // as shallow array clone
+      components[components.length - 1] = {
+        count: last.count + 1,
+        added: added,
+        removed: removed
+      };
+    } else {
+      components.push({
+        count: 1,
+        added: added,
+        removed: removed
+      });
+    }
+  },
+  extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
+    var newLen = newString.length,
+        oldLen = oldString.length,
+        newPos = basePath.newPos,
+        oldPos = newPos - diagonalPath,
+        commonCount = 0;
+
+    while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
+      newPos++;
+      oldPos++;
+      commonCount++;
+    }
+
+    if (commonCount) {
+      basePath.components.push({
+        count: commonCount
+      });
+    }
+
+    basePath.newPos = newPos;
+    return oldPos;
+  },
+  equals: function equals(left, right) {
+    if (this.options.comparator) {
+      return this.options.comparator(left, right);
+    } else {
+      return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
+    }
+  },
+  removeEmpty: function removeEmpty(array) {
+    var ret = [];
+
+    for (var i = 0; i < array.length; i++) {
+      if (array[i]) {
+        ret.push(array[i]);
+      }
+    }
+
+    return ret;
+  },
+  castInput: function castInput(value) {
+    return value;
+  },
+  tokenize: function tokenize(value) {
+    return value.split('');
+  },
+  join: function join(chars) {
+    return chars.join('');
+  }
+};
+
+function buildValues(diff, components, newString, oldString, useLongestToken) {
+  var componentPos = 0,
+      componentLen = components.length,
+      newPos = 0,
+      oldPos = 0;
+
+  for (; componentPos < componentLen; componentPos++) {
+    var component = components[componentPos];
+
+    if (!component.removed) {
+      if (!component.added && useLongestToken) {
+        var value = newString.slice(newPos, newPos + component.count);
+        value = value.map(function (value, i) {
+          var oldValue = oldString[oldPos + i];
+          return oldValue.length > value.length ? oldValue : value;
+        });
+        component.value = diff.join(value);
+      } else {
+        component.value = diff.join(newString.slice(newPos, newPos + component.count));
+      }
+
+      newPos += component.count; // Common case
+
+      if (!component.added) {
+        oldPos += component.count;
+      }
+    } else {
+      component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));
+      oldPos += component.count; // Reverse add and remove so removes are output first to match common convention
+      // The diffing algorithm is tied to add then remove output and this is the simplest
+      // route to get the desired output with minimal overhead.
+
+      if (componentPos && components[componentPos - 1].added) {
+        var tmp = components[componentPos - 1];
+        components[componentPos - 1] = components[componentPos];
+        components[componentPos] = tmp;
+      }
+    }
+  } // Special case handle for when one terminal is ignored (i.e. whitespace).
+  // For this case we merge the terminal into the prior string and drop the change.
+  // This is only available for string mode.
+
+
+  var lastComponent = components[componentLen - 1];
+
+  if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
+    components[componentLen - 2].value += lastComponent.value;
+    components.pop();
+  }
+
+  return components;
+}
+
+function clonePath(path) {
+  return {
+    newPos: path.newPos,
+    components: path.components.slice(0)
+  };
+}
+
+var characterDiff = new Diff();
+function diffChars(oldStr, newStr, options) {
+  return characterDiff.diff(oldStr, newStr, options);
+}
+
+function generateOptions(options, defaults) {
+  if (typeof options === 'function') {
+    defaults.callback = options;
+  } else if (options) {
+    for (var name in options) {
+      /* istanbul ignore else */
+      if (options.hasOwnProperty(name)) {
+        defaults[name] = options[name];
+      }
+    }
+  }
+
+  return defaults;
+}
+
+//
+// Ranges and exceptions:
+// Latin-1 Supplement, 0080–00FF
+//  - U+00D7  × Multiplication sign
+//  - U+00F7  ÷ Division sign
+// Latin Extended-A, 0100–017F
+// Latin Extended-B, 0180–024F
+// IPA Extensions, 0250–02AF
+// Spacing Modifier Letters, 02B0–02FF
+//  - U+02C7  ˇ ˇ  Caron
+//  - U+02D8  ˘ ˘  Breve
+//  - U+02D9  ˙ ˙  Dot Above
+//  - U+02DA  ˚ ˚  Ring Above
+//  - U+02DB  ˛ ˛  Ogonek
+//  - U+02DC  ˜ ˜  Small Tilde
+//  - U+02DD  ˝ ˝  Double Acute Accent
+// Latin Extended Additional, 1E00–1EFF
+
+var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
+var reWhitespace = /\S/;
+var wordDiff = new Diff();
+
+wordDiff.equals = function (left, right) {
+  if (this.options.ignoreCase) {
+    left = left.toLowerCase();
+    right = right.toLowerCase();
+  }
+
+  return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
+};
+
+wordDiff.tokenize = function (value) {
+  // All whitespace symbols except newline group into one token, each newline - in separate token
+  var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
+
+  for (var i = 0; i < tokens.length - 1; i++) {
+    // If we have an empty string in the next field and we have only word chars before and after, merge
+    if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
+      tokens[i] += tokens[i + 2];
+      tokens.splice(i + 1, 2);
+      i--;
+    }
+  }
+
+  return tokens;
+};
+
+function diffWords(oldStr, newStr, options) {
+  options = generateOptions(options, {
+    ignoreWhitespace: true
+  });
+  return wordDiff.diff(oldStr, newStr, options);
+}
+function diffWordsWithSpace(oldStr, newStr, options) {
+  return wordDiff.diff(oldStr, newStr, options);
+}
+
+var lineDiff = new Diff();
+
+lineDiff.tokenize = function (value) {
+  var retLines = [],
+      linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line
+
+  if (!linesAndNewlines[linesAndNewlines.length - 1]) {
+    linesAndNewlines.pop();
+  } // Merge the content and line separators into single tokens
+
+
+  for (var i = 0; i < linesAndNewlines.length; i++) {
+    var line = linesAndNewlines[i];
+
+    if (i % 2 && !this.options.newlineIsToken) {
+      retLines[retLines.length - 1] += line;
+    } else {
+      if (this.options.ignoreWhitespace) {
+        line = line.trim();
+      }
+
+      retLines.push(line);
+    }
+  }
+
+  return retLines;
+};
+
+function diffLines(oldStr, newStr, callback) {
+  return lineDiff.diff(oldStr, newStr, callback);
+}
+function diffTrimmedLines(oldStr, newStr, callback) {
+  var options = generateOptions(callback, {
+    ignoreWhitespace: true
+  });
+  return lineDiff.diff(oldStr, newStr, options);
+}
+
+var sentenceDiff = new Diff();
+
+sentenceDiff.tokenize = function (value) {
+  return value.split(/(\S.+?[.!?])(?=\s+|$)/);
+};
+
+function diffSentences(oldStr, newStr, callback) {
+  return sentenceDiff.diff(oldStr, newStr, callback);
+}
+
+var cssDiff = new Diff();
+
+cssDiff.tokenize = function (value) {
+  return value.split(/([{}:;,]|\s+)/);
+};
+
+function diffCss(oldStr, newStr, callback) {
+  return cssDiff.diff(oldStr, newStr, callback);
+}
+
+function _typeof(obj) {
+  "@babel/helpers - typeof";
+
+  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+    _typeof = function (obj) {
+      return typeof obj;
+    };
+  } else {
+    _typeof = function (obj) {
+      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+    };
+  }
+
+  return _typeof(obj);
+}
+
+function _toConsumableArray(arr) {
+  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
+}
+
+function _arrayWithoutHoles(arr) {
+  if (Array.isArray(arr)) return _arrayLikeToArray(arr);
+}
+
+function _iterableToArray(iter) {
+  if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
+}
+
+function _unsupportedIterableToArray(o, minLen) {
+  if (!o) return;
+  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
+  var n = Object.prototype.toString.call(o).slice(8, -1);
+  if (n === "Object" && o.constructor) n = o.constructor.name;
+  if (n === "Map" || n === "Set") return Array.from(o);
+  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
+}
+
+function _arrayLikeToArray(arr, len) {
+  if (len == null || len > arr.length) len = arr.length;
+
+  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
+
+  return arr2;
+}
+
+function _nonIterableSpread() {
+  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+
+var objectPrototypeToString = Object.prototype.toString;
+var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
+// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
+
+jsonDiff.useLongestToken = true;
+jsonDiff.tokenize = lineDiff.tokenize;
+
+jsonDiff.castInput = function (value) {
+  var _this$options = this.options,
+      undefinedReplacement = _this$options.undefinedReplacement,
+      _this$options$stringi = _this$options.stringifyReplacer,
+      stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {
+    return typeof v === 'undefined' ? undefinedReplacement : v;
+  } : _this$options$stringi;
+  return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, '  ');
+};
+
+jsonDiff.equals = function (left, right) {
+  return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'));
+};
+
+function diffJson(oldObj, newObj, options) {
+  return jsonDiff.diff(oldObj, newObj, options);
+} // This function handles the presence of circular references by bailing out when encountering an
+// object that is already on the "stack" of items being processed. Accepts an optional replacer
+
+function canonicalize(obj, stack, replacementStack, replacer, key) {
+  stack = stack || [];
+  replacementStack = replacementStack || [];
+
+  if (replacer) {
+    obj = replacer(key, obj);
+  }
+
+  var i;
+
+  for (i = 0; i < stack.length; i += 1) {
+    if (stack[i] === obj) {
+      return replacementStack[i];
+    }
+  }
+
+  var canonicalizedObj;
+
+  if ('[object Array]' === objectPrototypeToString.call(obj)) {
+    stack.push(obj);
+    canonicalizedObj = new Array(obj.length);
+    replacementStack.push(canonicalizedObj);
+
+    for (i = 0; i < obj.length; i += 1) {
+      canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);
+    }
+
+    stack.pop();
+    replacementStack.pop();
+    return canonicalizedObj;
+  }
+
+  if (obj && obj.toJSON) {
+    obj = obj.toJSON();
+  }
+
+  if (_typeof(obj) === 'object' && obj !== null) {
+    stack.push(obj);
+    canonicalizedObj = {};
+    replacementStack.push(canonicalizedObj);
+
+    var sortedKeys = [],
+        _key;
+
+    for (_key in obj) {
+      /* istanbul ignore else */
+      if (obj.hasOwnProperty(_key)) {
+        sortedKeys.push(_key);
+      }
+    }
+
+    sortedKeys.sort();
+
+    for (i = 0; i < sortedKeys.length; i += 1) {
+      _key = sortedKeys[i];
+      canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
+    }
+
+    stack.pop();
+    replacementStack.pop();
+  } else {
+    canonicalizedObj = obj;
+  }
+
+  return canonicalizedObj;
+}
+
+var arrayDiff = new Diff();
+
+arrayDiff.tokenize = function (value) {
+  return value.slice();
+};
+
+arrayDiff.join = arrayDiff.removeEmpty = function (value) {
+  return value;
+};
+
+function diffArrays(oldArr, newArr, callback) {
+  return arrayDiff.diff(oldArr, newArr, callback);
+}
+
+function parsePatch(uniDiff) {
+  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/),
+      delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+      list = [],
+      i = 0;
+
+  function parseIndex() {
+    var index = {};
+    list.push(index); // Parse diff metadata
+
+    while (i < diffstr.length) {
+      var line = diffstr[i]; // File header found, end parsing diff metadata
+
+      if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
+        break;
+      } // Diff index
+
+
+      var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
+
+      if (header) {
+        index.index = header[1];
+      }
+
+      i++;
+    } // Parse file headers if they are defined. Unified diff requires them, but
+    // there's no technical issues to have an isolated hunk without file header
+
+
+    parseFileHeader(index);
+    parseFileHeader(index); // Parse hunks
+
+    index.hunks = [];
+
+    while (i < diffstr.length) {
+      var _line = diffstr[i];
+
+      if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
+        break;
+      } else if (/^@@/.test(_line)) {
+        index.hunks.push(parseHunk());
+      } else if (_line && options.strict) {
+        // Ignore unexpected content unless in strict mode
+        throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
+      } else {
+        i++;
+      }
+    }
+  } // Parses the --- and +++ headers, if none are found, no lines
+  // are consumed.
+
+
+  function parseFileHeader(index) {
+    var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]);
+
+    if (fileHeader) {
+      var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
+      var data = fileHeader[2].split('\t', 2);
+      var fileName = data[0].replace(/\\\\/g, '\\');
+
+      if (/^".*"$/.test(fileName)) {
+        fileName = fileName.substr(1, fileName.length - 2);
+      }
+
+      index[keyPrefix + 'FileName'] = fileName;
+      index[keyPrefix + 'Header'] = (data[1] || '').trim();
+      i++;
+    }
+  } // Parses a hunk
+  // This assumes that we are at the start of a hunk.
+
+
+  function parseHunk() {
+    var chunkHeaderIndex = i,
+        chunkHeaderLine = diffstr[i++],
+        chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
+    var hunk = {
+      oldStart: +chunkHeader[1],
+      oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],
+      newStart: +chunkHeader[3],
+      newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],
+      lines: [],
+      linedelimiters: []
+    }; // Unified Diff Format quirk: If the chunk size is 0,
+    // the first number is one lower than one would expect.
+    // https://www.artima.com/weblogs/viewpost.jsp?thread=164293
+
+    if (hunk.oldLines === 0) {
+      hunk.oldStart += 1;
+    }
+
+    if (hunk.newLines === 0) {
+      hunk.newStart += 1;
+    }
+
+    var addCount = 0,
+        removeCount = 0;
+
+    for (; i < diffstr.length; i++) {
+      // Lines starting with '---' could be mistaken for the "remove line" operation
+      // But they could be the header for the next file. Therefore prune such cases out.
+      if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {
+        break;
+      }
+
+      var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];
+
+      if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
+        hunk.lines.push(diffstr[i]);
+        hunk.linedelimiters.push(delimiters[i] || '\n');
+
+        if (operation === '+') {
+          addCount++;
+        } else if (operation === '-') {
+          removeCount++;
+        } else if (operation === ' ') {
+          addCount++;
+          removeCount++;
+        }
+      } else {
+        break;
+      }
+    } // Handle the empty block count case
+
+
+    if (!addCount && hunk.newLines === 1) {
+      hunk.newLines = 0;
+    }
+
+    if (!removeCount && hunk.oldLines === 1) {
+      hunk.oldLines = 0;
+    } // Perform optional sanity checking
+
+
+    if (options.strict) {
+      if (addCount !== hunk.newLines) {
+        throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+      }
+
+      if (removeCount !== hunk.oldLines) {
+        throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+      }
+    }
+
+    return hunk;
+  }
+
+  while (i < diffstr.length) {
+    parseIndex();
+  }
+
+  return list;
+}
+
+// Iterator that traverses in the range of [min, max], stepping
+// by distance from a given start position. I.e. for [0, 4], with
+// start of 2, this will iterate 2, 3, 1, 4, 0.
+function distanceIterator (start, minLine, maxLine) {
+  var wantForward = true,
+      backwardExhausted = false,
+      forwardExhausted = false,
+      localOffset = 1;
+  return function iterator() {
+    if (wantForward && !forwardExhausted) {
+      if (backwardExhausted) {
+        localOffset++;
+      } else {
+        wantForward = false;
+      } // Check if trying to fit beyond text length, and if not, check it fits
+      // after offset location (or desired location on first iteration)
+
+
+      if (start + localOffset <= maxLine) {
+        return localOffset;
+      }
+
+      forwardExhausted = true;
+    }
+
+    if (!backwardExhausted) {
+      if (!forwardExhausted) {
+        wantForward = true;
+      } // Check if trying to fit before text beginning, and if not, check it fits
+      // before offset location
+
+
+      if (minLine <= start - localOffset) {
+        return -localOffset++;
+      }
+
+      backwardExhausted = true;
+      return iterator();
+    } // We tried to fit hunk before text beginning and beyond text length, then
+    // hunk can't fit on the text. Return undefined
+
+  };
+}
+
+function applyPatch(source, uniDiff) {
+  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+  if (typeof uniDiff === 'string') {
+    uniDiff = parsePatch(uniDiff);
+  }
+
+  if (Array.isArray(uniDiff)) {
+    if (uniDiff.length > 1) {
+      throw new Error('applyPatch only works with a single input.');
+    }
+
+    uniDiff = uniDiff[0];
+  } // Apply the diff to the input
+
+
+  var lines = source.split(/\r\n|[\n\v\f\r\x85]/),
+      delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+      hunks = uniDiff.hunks,
+      compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {
+    return line === patchContent;
+  },
+      errorCount = 0,
+      fuzzFactor = options.fuzzFactor || 0,
+      minLine = 0,
+      offset = 0,
+      removeEOFNL,
+      addEOFNL;
+  /**
+   * Checks if the hunk exactly fits on the provided location
+   */
+
+
+  function hunkFits(hunk, toPos) {
+    for (var j = 0; j < hunk.lines.length; j++) {
+      var line = hunk.lines[j],
+          operation = line.length > 0 ? line[0] : ' ',
+          content = line.length > 0 ? line.substr(1) : line;
+
+      if (operation === ' ' || operation === '-') {
+        // Context sanity check
+        if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
+          errorCount++;
+
+          if (errorCount > fuzzFactor) {
+            return false;
+          }
+        }
+
+        toPos++;
+      }
+    }
+
+    return true;
+  } // Search best fit offsets for each hunk based on the previous ones
+
+
+  for (var i = 0; i < hunks.length; i++) {
+    var hunk = hunks[i],
+        maxLine = lines.length - hunk.oldLines,
+        localOffset = 0,
+        toPos = offset + hunk.oldStart - 1;
+    var iterator = distanceIterator(toPos, minLine, maxLine);
+
+    for (; localOffset !== undefined; localOffset = iterator()) {
+      if (hunkFits(hunk, toPos + localOffset)) {
+        hunk.offset = offset += localOffset;
+        break;
+      }
+    }
+
+    if (localOffset === undefined) {
+      return false;
+    } // Set lower text limit to end of the current hunk, so next ones don't try
+    // to fit over already patched text
+
+
+    minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
+  } // Apply patch hunks
+
+
+  var diffOffset = 0;
+
+  for (var _i = 0; _i < hunks.length; _i++) {
+    var _hunk = hunks[_i],
+        _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;
+
+    diffOffset += _hunk.newLines - _hunk.oldLines;
+
+    for (var j = 0; j < _hunk.lines.length; j++) {
+      var line = _hunk.lines[j],
+          operation = line.length > 0 ? line[0] : ' ',
+          content = line.length > 0 ? line.substr(1) : line,
+          delimiter = _hunk.linedelimiters[j];
+
+      if (operation === ' ') {
+        _toPos++;
+      } else if (operation === '-') {
+        lines.splice(_toPos, 1);
+        delimiters.splice(_toPos, 1);
+        /* istanbul ignore else */
+      } else if (operation === '+') {
+        lines.splice(_toPos, 0, content);
+        delimiters.splice(_toPos, 0, delimiter);
+        _toPos++;
+      } else if (operation === '\\') {
+        var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
+
+        if (previousOperation === '+') {
+          removeEOFNL = true;
+        } else if (previousOperation === '-') {
+          addEOFNL = true;
+        }
+      }
+    }
+  } // Handle EOFNL insertion/removal
+
+
+  if (removeEOFNL) {
+    while (!lines[lines.length - 1]) {
+      lines.pop();
+      delimiters.pop();
+    }
+  } else if (addEOFNL) {
+    lines.push('');
+    delimiters.push('\n');
+  }
+
+  for (var _k = 0; _k < lines.length - 1; _k++) {
+    lines[_k] = lines[_k] + delimiters[_k];
+  }
+
+  return lines.join('');
+} // Wrapper that supports multiple file patches via callbacks.
+
+function applyPatches(uniDiff, options) {
+  if (typeof uniDiff === 'string') {
+    uniDiff = parsePatch(uniDiff);
+  }
+
+  var currentIndex = 0;
+
+  function processIndex() {
+    var index = uniDiff[currentIndex++];
+
+    if (!index) {
+      return options.complete();
+    }
+
+    options.loadFile(index, function (err, data) {
+      if (err) {
+        return options.complete(err);
+      }
+
+      var updatedContent = applyPatch(data, index, options);
+      options.patched(index, updatedContent, function (err) {
+        if (err) {
+          return options.complete(err);
+        }
+
+        processIndex();
+      });
+    });
+  }
+
+  processIndex();
+}
+
+function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+  if (!options) {
+    options = {};
+  }
+
+  if (typeof options.context === 'undefined') {
+    options.context = 4;
+  }
+
+  var diff = diffLines(oldStr, newStr, options);
+  diff.push({
+    value: '',
+    lines: []
+  }); // Append an empty value to make cleanup easier
+
+  function contextLines(lines) {
+    return lines.map(function (entry) {
+      return ' ' + entry;
+    });
+  }
+
+  var hunks = [];
+  var oldRangeStart = 0,
+      newRangeStart = 0,
+      curRange = [],
+      oldLine = 1,
+      newLine = 1;
+
+  var _loop = function _loop(i) {
+    var current = diff[i],
+        lines = current.lines || current.value.replace(/\n$/, '').split('\n');
+    current.lines = lines;
+
+    if (current.added || current.removed) {
+      var _curRange;
+
+      // If we have previous context, start with that
+      if (!oldRangeStart) {
+        var prev = diff[i - 1];
+        oldRangeStart = oldLine;
+        newRangeStart = newLine;
+
+        if (prev) {
+          curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
+          oldRangeStart -= curRange.length;
+          newRangeStart -= curRange.length;
+        }
+      } // Output our changes
+
+
+      (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {
+        return (current.added ? '+' : '-') + entry;
+      }))); // Track the updated file position
+
+
+      if (current.added) {
+        newLine += lines.length;
+      } else {
+        oldLine += lines.length;
+      }
+    } else {
+      // Identical context lines. Track line changes
+      if (oldRangeStart) {
+        // Close out any changes that have been output (or join overlapping)
+        if (lines.length <= options.context * 2 && i < diff.length - 2) {
+          var _curRange2;
+
+          // Overlapping
+          (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));
+        } else {
+          var _curRange3;
+
+          // end the range and output
+          var contextSize = Math.min(lines.length, options.context);
+
+          (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));
+
+          var hunk = {
+            oldStart: oldRangeStart,
+            oldLines: oldLine - oldRangeStart + contextSize,
+            newStart: newRangeStart,
+            newLines: newLine - newRangeStart + contextSize,
+            lines: curRange
+          };
+
+          if (i >= diff.length - 2 && lines.length <= options.context) {
+            // EOF is inside this hunk
+            var oldEOFNewline = /\n$/.test(oldStr);
+            var newEOFNewline = /\n$/.test(newStr);
+            var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;
+
+            if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {
+              // special case: old has no eol and no trailing context; no-nl can end up before adds
+              // however, if the old file is empty, do not output the no-nl line
+              curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
+            }
+
+            if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {
+              curRange.push('\\ No newline at end of file');
+            }
+          }
+
+          hunks.push(hunk);
+          oldRangeStart = 0;
+          newRangeStart = 0;
+          curRange = [];
+        }
+      }
+
+      oldLine += lines.length;
+      newLine += lines.length;
+    }
+  };
+
+  for (var i = 0; i < diff.length; i++) {
+    _loop(i);
+  }
+
+  return {
+    oldFileName: oldFileName,
+    newFileName: newFileName,
+    oldHeader: oldHeader,
+    newHeader: newHeader,
+    hunks: hunks
+  };
+}
+function formatPatch(diff) {
+  var ret = [];
+
+  if (diff.oldFileName == diff.newFileName) {
+    ret.push('Index: ' + diff.oldFileName);
+  }
+
+  ret.push('===================================================================');
+  ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
+  ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
+
+  for (var i = 0; i < diff.hunks.length; i++) {
+    var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,
+    // the first number is one lower than one would expect.
+    // https://www.artima.com/weblogs/viewpost.jsp?thread=164293
+
+    if (hunk.oldLines === 0) {
+      hunk.oldStart -= 1;
+    }
+
+    if (hunk.newLines === 0) {
+      hunk.newStart -= 1;
+    }
+
+    ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
+    ret.push.apply(ret, hunk.lines);
+  }
+
+  return ret.join('\n') + '\n';
+}
+function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+  return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));
+}
+function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
+  return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
+}
+
+function arrayEqual(a, b) {
+  if (a.length !== b.length) {
+    return false;
+  }
+
+  return arrayStartsWith(a, b);
+}
+function arrayStartsWith(array, start) {
+  if (start.length > array.length) {
+    return false;
+  }
+
+  for (var i = 0; i < start.length; i++) {
+    if (start[i] !== array[i]) {
+      return false;
+    }
+  }
+
+  return true;
+}
+
+function calcLineCount(hunk) {
+  var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),
+      oldLines = _calcOldNewLineCount.oldLines,
+      newLines = _calcOldNewLineCount.newLines;
+
+  if (oldLines !== undefined) {
+    hunk.oldLines = oldLines;
+  } else {
+    delete hunk.oldLines;
+  }
+
+  if (newLines !== undefined) {
+    hunk.newLines = newLines;
+  } else {
+    delete hunk.newLines;
+  }
+}
+function merge(mine, theirs, base) {
+  mine = loadPatch(mine, base);
+  theirs = loadPatch(theirs, base);
+  var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.
+  // Leaving sanity checks on this to the API consumer that may know more about the
+  // meaning in their own context.
+
+  if (mine.index || theirs.index) {
+    ret.index = mine.index || theirs.index;
+  }
+
+  if (mine.newFileName || theirs.newFileName) {
+    if (!fileNameChanged(mine)) {
+      // No header or no change in ours, use theirs (and ours if theirs does not exist)
+      ret.oldFileName = theirs.oldFileName || mine.oldFileName;
+      ret.newFileName = theirs.newFileName || mine.newFileName;
+      ret.oldHeader = theirs.oldHeader || mine.oldHeader;
+      ret.newHeader = theirs.newHeader || mine.newHeader;
+    } else if (!fileNameChanged(theirs)) {
+      // No header or no change in theirs, use ours
+      ret.oldFileName = mine.oldFileName;
+      ret.newFileName = mine.newFileName;
+      ret.oldHeader = mine.oldHeader;
+      ret.newHeader = mine.newHeader;
+    } else {
+      // Both changed... figure it out
+      ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
+      ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
+      ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
+      ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
+    }
+  }
+
+  ret.hunks = [];
+  var mineIndex = 0,
+      theirsIndex = 0,
+      mineOffset = 0,
+      theirsOffset = 0;
+
+  while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
+    var mineCurrent = mine.hunks[mineIndex] || {
+      oldStart: Infinity
+    },
+        theirsCurrent = theirs.hunks[theirsIndex] || {
+      oldStart: Infinity
+    };
+
+    if (hunkBefore(mineCurrent, theirsCurrent)) {
+      // This patch does not overlap with any of the others, yay.
+      ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
+      mineIndex++;
+      theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
+    } else if (hunkBefore(theirsCurrent, mineCurrent)) {
+      // This patch does not overlap with any of the others, yay.
+      ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
+      theirsIndex++;
+      mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
+    } else {
+      // Overlap, merge as best we can
+      var mergedHunk = {
+        oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
+        oldLines: 0,
+        newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
+        newLines: 0,
+        lines: []
+      };
+      mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
+      theirsIndex++;
+      mineIndex++;
+      ret.hunks.push(mergedHunk);
+    }
+  }
+
+  return ret;
+}
+
+function loadPatch(param, base) {
+  if (typeof param === 'string') {
+    if (/^@@/m.test(param) || /^Index:/m.test(param)) {
+      return parsePatch(param)[0];
+    }
+
+    if (!base) {
+      throw new Error('Must provide a base reference or pass in a patch');
+    }
+
+    return structuredPatch(undefined, undefined, base, param);
+  }
+
+  return param;
+}
+
+function fileNameChanged(patch) {
+  return patch.newFileName && patch.newFileName !== patch.oldFileName;
+}
+
+function selectField(index, mine, theirs) {
+  if (mine === theirs) {
+    return mine;
+  } else {
+    index.conflict = true;
+    return {
+      mine: mine,
+      theirs: theirs
+    };
+  }
+}
+
+function hunkBefore(test, check) {
+  return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
+}
+
+function cloneHunk(hunk, offset) {
+  return {
+    oldStart: hunk.oldStart,
+    oldLines: hunk.oldLines,
+    newStart: hunk.newStart + offset,
+    newLines: hunk.newLines,
+    lines: hunk.lines
+  };
+}
+
+function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
+  // This will generally result in a conflicted hunk, but there are cases where the context
+  // is the only overlap where we can successfully merge the content here.
+  var mine = {
+    offset: mineOffset,
+    lines: mineLines,
+    index: 0
+  },
+      their = {
+    offset: theirOffset,
+    lines: theirLines,
+    index: 0
+  }; // Handle any leading content
+
+  insertLeading(hunk, mine, their);
+  insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.
+
+  while (mine.index < mine.lines.length && their.index < their.lines.length) {
+    var mineCurrent = mine.lines[mine.index],
+        theirCurrent = their.lines[their.index];
+
+    if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
+      // Both modified ...
+      mutualChange(hunk, mine, their);
+    } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
+      var _hunk$lines;
+
+      // Mine inserted
+      (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));
+    } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
+      var _hunk$lines2;
+
+      // Theirs inserted
+      (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));
+    } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
+      // Mine removed or edited
+      removal(hunk, mine, their);
+    } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
+      // Their removed or edited
+      removal(hunk, their, mine, true);
+    } else if (mineCurrent === theirCurrent) {
+      // Context identity
+      hunk.lines.push(mineCurrent);
+      mine.index++;
+      their.index++;
+    } else {
+      // Context mismatch
+      conflict(hunk, collectChange(mine), collectChange(their));
+    }
+  } // Now push anything that may be remaining
+
+
+  insertTrailing(hunk, mine);
+  insertTrailing(hunk, their);
+  calcLineCount(hunk);
+}
+
+function mutualChange(hunk, mine, their) {
+  var myChanges = collectChange(mine),
+      theirChanges = collectChange(their);
+
+  if (allRemoves(myChanges) && allRemoves(theirChanges)) {
+    // Special case for remove changes that are supersets of one another
+    if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
+      var _hunk$lines3;
+
+      (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));
+
+      return;
+    } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
+      var _hunk$lines4;
+
+      (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));
+
+      return;
+    }
+  } else if (arrayEqual(myChanges, theirChanges)) {
+    var _hunk$lines5;
+
+    (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));
+
+    return;
+  }
+
+  conflict(hunk, myChanges, theirChanges);
+}
+
+function removal(hunk, mine, their, swap) {
+  var myChanges = collectChange(mine),
+      theirChanges = collectContext(their, myChanges);
+
+  if (theirChanges.merged) {
+    var _hunk$lines6;
+
+    (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));
+  } else {
+    conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
+  }
+}
+
+function conflict(hunk, mine, their) {
+  hunk.conflict = true;
+  hunk.lines.push({
+    conflict: true,
+    mine: mine,
+    theirs: their
+  });
+}
+
+function insertLeading(hunk, insert, their) {
+  while (insert.offset < their.offset && insert.index < insert.lines.length) {
+    var line = insert.lines[insert.index++];
+    hunk.lines.push(line);
+    insert.offset++;
+  }
+}
+
+function insertTrailing(hunk, insert) {
+  while (insert.index < insert.lines.length) {
+    var line = insert.lines[insert.index++];
+    hunk.lines.push(line);
+  }
+}
+
+function collectChange(state) {
+  var ret = [],
+      operation = state.lines[state.index][0];
+
+  while (state.index < state.lines.length) {
+    var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
+
+    if (operation === '-' && line[0] === '+') {
+      operation = '+';
+    }
+
+    if (operation === line[0]) {
+      ret.push(line);
+      state.index++;
+    } else {
+      break;
+    }
+  }
+
+  return ret;
+}
+
+function collectContext(state, matchChanges) {
+  var changes = [],
+      merged = [],
+      matchIndex = 0,
+      contextChanges = false,
+      conflicted = false;
+
+  while (matchIndex < matchChanges.length && state.index < state.lines.length) {
+    var change = state.lines[state.index],
+        match = matchChanges[matchIndex]; // Once we've hit our add, then we are done
+
+    if (match[0] === '+') {
+      break;
+    }
+
+    contextChanges = contextChanges || change[0] !== ' ';
+    merged.push(match);
+    matchIndex++; // Consume any additions in the other block as a conflict to attempt
+    // to pull in the remaining context after this
+
+    if (change[0] === '+') {
+      conflicted = true;
+
+      while (change[0] === '+') {
+        changes.push(change);
+        change = state.lines[++state.index];
+      }
+    }
+
+    if (match.substr(1) === change.substr(1)) {
+      changes.push(change);
+      state.index++;
+    } else {
+      conflicted = true;
+    }
+  }
+
+  if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
+    conflicted = true;
+  }
+
+  if (conflicted) {
+    return changes;
+  }
+
+  while (matchIndex < matchChanges.length) {
+    merged.push(matchChanges[matchIndex++]);
+  }
+
+  return {
+    merged: merged,
+    changes: changes
+  };
+}
+
+function allRemoves(changes) {
+  return changes.reduce(function (prev, change) {
+    return prev && change[0] === '-';
+  }, true);
+}
+
+function skipRemoveSuperset(state, removeChanges, delta) {
+  for (var i = 0; i < delta; i++) {
+    var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
+
+    if (state.lines[state.index + i] !== ' ' + changeContent) {
+      return false;
+    }
+  }
+
+  state.index += delta;
+  return true;
+}
+
+function calcOldNewLineCount(lines) {
+  var oldLines = 0;
+  var newLines = 0;
+  lines.forEach(function (line) {
+    if (typeof line !== 'string') {
+      var myCount = calcOldNewLineCount(line.mine);
+      var theirCount = calcOldNewLineCount(line.theirs);
+
+      if (oldLines !== undefined) {
+        if (myCount.oldLines === theirCount.oldLines) {
+          oldLines += myCount.oldLines;
+        } else {
+          oldLines = undefined;
+        }
+      }
+
+      if (newLines !== undefined) {
+        if (myCount.newLines === theirCount.newLines) {
+          newLines += myCount.newLines;
+        } else {
+          newLines = undefined;
+        }
+      }
+    } else {
+      if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {
+        newLines++;
+      }
+
+      if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {
+        oldLines++;
+      }
+    }
+  });
+  return {
+    oldLines: oldLines,
+    newLines: newLines
+  };
+}
+
+// See: http://code.google.com/p/google-diff-match-patch/wiki/API
+function convertChangesToDMP(changes) {
+  var ret = [],
+      change,
+      operation;
+
+  for (var i = 0; i < changes.length; i++) {
+    change = changes[i];
+
+    if (change.added) {
+      operation = 1;
+    } else if (change.removed) {
+      operation = -1;
+    } else {
+      operation = 0;
+    }
+
+    ret.push([operation, change.value]);
+  }
+
+  return ret;
+}
+
+function convertChangesToXML(changes) {
+  var ret = [];
+
+  for (var i = 0; i < changes.length; i++) {
+    var change = changes[i];
+
+    if (change.added) {
+      ret.push('');
+    } else if (change.removed) {
+      ret.push('');
+    }
+
+    ret.push(escapeHTML(change.value));
+
+    if (change.added) {
+      ret.push('');
+    } else if (change.removed) {
+      ret.push('');
+    }
+  }
+
+  return ret.join('');
+}
+
+function escapeHTML(s) {
+  var n = s;
+  n = n.replace(/&/g, '&');
+  n = n.replace(//g, '>');
+  n = n.replace(/"/g, '"');
+  return n;
+}
+
+export { Diff, applyPatch, applyPatches, canonicalize, convertChangesToDMP, convertChangesToXML, createPatch, createTwoFilesPatch, diffArrays, diffChars, diffCss, diffJson, diffLines, diffSentences, diffTrimmedLines, diffWords, diffWordsWithSpace, merge, parsePatch, structuredPatch };
diff --git a/node_modules/diff/lib/patch/apply.js b/node_modules/diff/lib/patch/apply.js
new file mode 100644
index 0000000..21c76dd
--- /dev/null
+++ b/node_modules/diff/lib/patch/apply.js
@@ -0,0 +1,238 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.applyPatch = applyPatch;
+exports.applyPatches = applyPatches;
+
+/*istanbul ignore end*/
+var
+/*istanbul ignore start*/
+_parse = require("./parse")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_distanceIterator = _interopRequireDefault(require("../util/distance-iterator"))
+/*istanbul ignore end*/
+;
+
+/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+/*istanbul ignore end*/
+function applyPatch(source, uniDiff) {
+  /*istanbul ignore start*/
+  var
+  /*istanbul ignore end*/
+  options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+  if (typeof uniDiff === 'string') {
+    uniDiff =
+    /*istanbul ignore start*/
+    (0,
+    /*istanbul ignore end*/
+
+    /*istanbul ignore start*/
+    _parse
+    /*istanbul ignore end*/
+    .
+    /*istanbul ignore start*/
+    parsePatch)
+    /*istanbul ignore end*/
+    (uniDiff);
+  }
+
+  if (Array.isArray(uniDiff)) {
+    if (uniDiff.length > 1) {
+      throw new Error('applyPatch only works with a single input.');
+    }
+
+    uniDiff = uniDiff[0];
+  } // Apply the diff to the input
+
+
+  var lines = source.split(/\r\n|[\n\v\f\r\x85]/),
+      delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+      hunks = uniDiff.hunks,
+      compareLine = options.compareLine || function (lineNumber, line, operation, patchContent)
+  /*istanbul ignore start*/
+  {
+    return (
+      /*istanbul ignore end*/
+      line === patchContent
+    );
+  },
+      errorCount = 0,
+      fuzzFactor = options.fuzzFactor || 0,
+      minLine = 0,
+      offset = 0,
+      removeEOFNL,
+      addEOFNL;
+  /**
+   * Checks if the hunk exactly fits on the provided location
+   */
+
+
+  function hunkFits(hunk, toPos) {
+    for (var j = 0; j < hunk.lines.length; j++) {
+      var line = hunk.lines[j],
+          operation = line.length > 0 ? line[0] : ' ',
+          content = line.length > 0 ? line.substr(1) : line;
+
+      if (operation === ' ' || operation === '-') {
+        // Context sanity check
+        if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
+          errorCount++;
+
+          if (errorCount > fuzzFactor) {
+            return false;
+          }
+        }
+
+        toPos++;
+      }
+    }
+
+    return true;
+  } // Search best fit offsets for each hunk based on the previous ones
+
+
+  for (var i = 0; i < hunks.length; i++) {
+    var hunk = hunks[i],
+        maxLine = lines.length - hunk.oldLines,
+        localOffset = 0,
+        toPos = offset + hunk.oldStart - 1;
+    var iterator =
+    /*istanbul ignore start*/
+    (0,
+    /*istanbul ignore end*/
+
+    /*istanbul ignore start*/
+    _distanceIterator
+    /*istanbul ignore end*/
+    [
+    /*istanbul ignore start*/
+    "default"
+    /*istanbul ignore end*/
+    ])(toPos, minLine, maxLine);
+
+    for (; localOffset !== undefined; localOffset = iterator()) {
+      if (hunkFits(hunk, toPos + localOffset)) {
+        hunk.offset = offset += localOffset;
+        break;
+      }
+    }
+
+    if (localOffset === undefined) {
+      return false;
+    } // Set lower text limit to end of the current hunk, so next ones don't try
+    // to fit over already patched text
+
+
+    minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
+  } // Apply patch hunks
+
+
+  var diffOffset = 0;
+
+  for (var _i = 0; _i < hunks.length; _i++) {
+    var _hunk = hunks[_i],
+        _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;
+
+    diffOffset += _hunk.newLines - _hunk.oldLines;
+
+    for (var j = 0; j < _hunk.lines.length; j++) {
+      var line = _hunk.lines[j],
+          operation = line.length > 0 ? line[0] : ' ',
+          content = line.length > 0 ? line.substr(1) : line,
+          delimiter = _hunk.linedelimiters[j];
+
+      if (operation === ' ') {
+        _toPos++;
+      } else if (operation === '-') {
+        lines.splice(_toPos, 1);
+        delimiters.splice(_toPos, 1);
+        /* istanbul ignore else */
+      } else if (operation === '+') {
+        lines.splice(_toPos, 0, content);
+        delimiters.splice(_toPos, 0, delimiter);
+        _toPos++;
+      } else if (operation === '\\') {
+        var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
+
+        if (previousOperation === '+') {
+          removeEOFNL = true;
+        } else if (previousOperation === '-') {
+          addEOFNL = true;
+        }
+      }
+    }
+  } // Handle EOFNL insertion/removal
+
+
+  if (removeEOFNL) {
+    while (!lines[lines.length - 1]) {
+      lines.pop();
+      delimiters.pop();
+    }
+  } else if (addEOFNL) {
+    lines.push('');
+    delimiters.push('\n');
+  }
+
+  for (var _k = 0; _k < lines.length - 1; _k++) {
+    lines[_k] = lines[_k] + delimiters[_k];
+  }
+
+  return lines.join('');
+} // Wrapper that supports multiple file patches via callbacks.
+
+
+function applyPatches(uniDiff, options) {
+  if (typeof uniDiff === 'string') {
+    uniDiff =
+    /*istanbul ignore start*/
+    (0,
+    /*istanbul ignore end*/
+
+    /*istanbul ignore start*/
+    _parse
+    /*istanbul ignore end*/
+    .
+    /*istanbul ignore start*/
+    parsePatch)
+    /*istanbul ignore end*/
+    (uniDiff);
+  }
+
+  var currentIndex = 0;
+
+  function processIndex() {
+    var index = uniDiff[currentIndex++];
+
+    if (!index) {
+      return options.complete();
+    }
+
+    options.loadFile(index, function (err, data) {
+      if (err) {
+        return options.complete(err);
+      }
+
+      var updatedContent = applyPatch(data, index, options);
+      options.patched(index, updatedContent, function (err) {
+        if (err) {
+          return options.complete(err);
+        }
+
+        processIndex();
+      });
+    });
+  }
+
+  processIndex();
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJwYXJzZVBhdGNoIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiRXJyb3IiLCJsaW5lcyIsInNwbGl0IiwiZGVsaW1pdGVycyIsIm1hdGNoIiwiaHVua3MiLCJjb21wYXJlTGluZSIsImxpbmVOdW1iZXIiLCJsaW5lIiwib3BlcmF0aW9uIiwicGF0Y2hDb250ZW50IiwiZXJyb3JDb3VudCIsImZ1enpGYWN0b3IiLCJtaW5MaW5lIiwib2Zmc2V0IiwicmVtb3ZlRU9GTkwiLCJhZGRFT0ZOTCIsImh1bmtGaXRzIiwiaHVuayIsInRvUG9zIiwiaiIsImNvbnRlbnQiLCJzdWJzdHIiLCJpIiwibWF4TGluZSIsIm9sZExpbmVzIiwibG9jYWxPZmZzZXQiLCJvbGRTdGFydCIsIml0ZXJhdG9yIiwiZGlzdGFuY2VJdGVyYXRvciIsInVuZGVmaW5lZCIsImRpZmZPZmZzZXQiLCJuZXdMaW5lcyIsImRlbGltaXRlciIsImxpbmVkZWxpbWl0ZXJzIiwic3BsaWNlIiwicHJldmlvdXNPcGVyYXRpb24iLCJwb3AiLCJwdXNoIiwiX2siLCJqb2luIiwiYXBwbHlQYXRjaGVzIiwiY3VycmVudEluZGV4IiwicHJvY2Vzc0luZGV4IiwiaW5kZXgiLCJjb21wbGV0ZSIsImxvYWRGaWxlIiwiZXJyIiwiZGF0YSIsInVwZGF0ZWRDb250ZW50IiwicGF0Y2hlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxTQUFTQSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsT0FBNUIsRUFBbUQ7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJOztBQUN4RCxNQUFJLE9BQU9ELE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7QUFDL0JBLElBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFXRixPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJRyxLQUFLLENBQUNDLE9BQU4sQ0FBY0osT0FBZCxDQUFKLEVBQTRCO0FBQzFCLFFBQUlBLE9BQU8sQ0FBQ0ssTUFBUixHQUFpQixDQUFyQixFQUF3QjtBQUN0QixZQUFNLElBQUlDLEtBQUosQ0FBVSw0Q0FBVixDQUFOO0FBQ0Q7O0FBRUROLElBQUFBLE9BQU8sR0FBR0EsT0FBTyxDQUFDLENBQUQsQ0FBakI7QUFDRCxHQVh1RCxDQWF4RDs7O0FBQ0EsTUFBSU8sS0FBSyxHQUFHUixNQUFNLENBQUNTLEtBQVAsQ0FBYSxxQkFBYixDQUFaO0FBQUEsTUFDSUMsVUFBVSxHQUFHVixNQUFNLENBQUNXLEtBQVAsQ0FBYSxzQkFBYixLQUF3QyxFQUR6RDtBQUFBLE1BRUlDLEtBQUssR0FBR1gsT0FBTyxDQUFDVyxLQUZwQjtBQUFBLE1BSUlDLFdBQVcsR0FBR1gsT0FBTyxDQUFDVyxXQUFSLElBQXdCLFVBQUNDLFVBQUQsRUFBYUMsSUFBYixFQUFtQkMsU0FBbkIsRUFBOEJDLFlBQTlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0NGLE1BQUFBLElBQUksS0FBS0U7QUFBeEQ7QUFBQSxHQUoxQztBQUFBLE1BS0lDLFVBQVUsR0FBRyxDQUxqQjtBQUFBLE1BTUlDLFVBQVUsR0FBR2pCLE9BQU8sQ0FBQ2lCLFVBQVIsSUFBc0IsQ0FOdkM7QUFBQSxNQU9JQyxPQUFPLEdBQUcsQ0FQZDtBQUFBLE1BUUlDLE1BQU0sR0FBRyxDQVJiO0FBQUEsTUFVSUMsV0FWSjtBQUFBLE1BV0lDLFFBWEo7QUFhQTs7Ozs7QUFHQSxXQUFTQyxRQUFULENBQWtCQyxJQUFsQixFQUF3QkMsS0FBeEIsRUFBK0I7QUFDN0IsU0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixJQUFJLENBQUNqQixLQUFMLENBQVdGLE1BQS9CLEVBQXVDcUIsQ0FBQyxFQUF4QyxFQUE0QztBQUMxQyxVQUFJWixJQUFJLEdBQUdVLElBQUksQ0FBQ2pCLEtBQUwsQ0FBV21CLENBQVgsQ0FBWDtBQUFBLFVBQ0lYLFNBQVMsR0FBSUQsSUFBSSxDQUFDVCxNQUFMLEdBQWMsQ0FBZCxHQUFrQlMsSUFBSSxDQUFDLENBQUQsQ0FBdEIsR0FBNEIsR0FEN0M7QUFBQSxVQUVJYSxPQUFPLEdBQUliLElBQUksQ0FBQ1QsTUFBTCxHQUFjLENBQWQsR0FBa0JTLElBQUksQ0FBQ2MsTUFBTCxDQUFZLENBQVosQ0FBbEIsR0FBbUNkLElBRmxEOztBQUlBLFVBQUlDLFNBQVMsS0FBSyxHQUFkLElBQXFCQSxTQUFTLEtBQUssR0FBdkMsRUFBNEM7QUFDMUM7QUFDQSxZQUFJLENBQUNILFdBQVcsQ0FBQ2EsS0FBSyxHQUFHLENBQVQsRUFBWWxCLEtBQUssQ0FBQ2tCLEtBQUQsQ0FBakIsRUFBMEJWLFNBQTFCLEVBQXFDWSxPQUFyQyxDQUFoQixFQUErRDtBQUM3RFYsVUFBQUEsVUFBVTs7QUFFVixjQUFJQSxVQUFVLEdBQUdDLFVBQWpCLEVBQTZCO0FBQzNCLG1CQUFPLEtBQVA7QUFDRDtBQUNGOztBQUNETyxRQUFBQSxLQUFLO0FBQ047QUFDRjs7QUFFRCxXQUFPLElBQVA7QUFDRCxHQWxEdUQsQ0FvRHhEOzs7QUFDQSxPQUFLLElBQUlJLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdsQixLQUFLLENBQUNOLE1BQTFCLEVBQWtDd0IsQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJTCxJQUFJLEdBQUdiLEtBQUssQ0FBQ2tCLENBQUQsQ0FBaEI7QUFBQSxRQUNJQyxPQUFPLEdBQUd2QixLQUFLLENBQUNGLE1BQU4sR0FBZW1CLElBQUksQ0FBQ08sUUFEbEM7QUFBQSxRQUVJQyxXQUFXLEdBQUcsQ0FGbEI7QUFBQSxRQUdJUCxLQUFLLEdBQUdMLE1BQU0sR0FBR0ksSUFBSSxDQUFDUyxRQUFkLEdBQXlCLENBSHJDO0FBS0EsUUFBSUMsUUFBUTtBQUFHO0FBQUE7QUFBQTs7QUFBQUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsT0FBaUJWLEtBQWpCLEVBQXdCTixPQUF4QixFQUFpQ1csT0FBakMsQ0FBZjs7QUFFQSxXQUFPRSxXQUFXLEtBQUtJLFNBQXZCLEVBQWtDSixXQUFXLEdBQUdFLFFBQVEsRUFBeEQsRUFBNEQ7QUFDMUQsVUFBSVgsUUFBUSxDQUFDQyxJQUFELEVBQU9DLEtBQUssR0FBR08sV0FBZixDQUFaLEVBQXlDO0FBQ3ZDUixRQUFBQSxJQUFJLENBQUNKLE1BQUwsR0FBY0EsTUFBTSxJQUFJWSxXQUF4QjtBQUNBO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJQSxXQUFXLEtBQUtJLFNBQXBCLEVBQStCO0FBQzdCLGFBQU8sS0FBUDtBQUNELEtBakJvQyxDQW1CckM7QUFDQTs7O0FBQ0FqQixJQUFBQSxPQUFPLEdBQUdLLElBQUksQ0FBQ0osTUFBTCxHQUFjSSxJQUFJLENBQUNTLFFBQW5CLEdBQThCVCxJQUFJLENBQUNPLFFBQTdDO0FBQ0QsR0EzRXVELENBNkV4RDs7O0FBQ0EsTUFBSU0sVUFBVSxHQUFHLENBQWpCOztBQUNBLE9BQUssSUFBSVIsRUFBQyxHQUFHLENBQWIsRUFBZ0JBLEVBQUMsR0FBR2xCLEtBQUssQ0FBQ04sTUFBMUIsRUFBa0N3QixFQUFDLEVBQW5DLEVBQXVDO0FBQ3JDLFFBQUlMLEtBQUksR0FBR2IsS0FBSyxDQUFDa0IsRUFBRCxDQUFoQjtBQUFBLFFBQ0lKLE1BQUssR0FBR0QsS0FBSSxDQUFDUyxRQUFMLEdBQWdCVCxLQUFJLENBQUNKLE1BQXJCLEdBQThCaUIsVUFBOUIsR0FBMkMsQ0FEdkQ7O0FBRUFBLElBQUFBLFVBQVUsSUFBSWIsS0FBSSxDQUFDYyxRQUFMLEdBQWdCZCxLQUFJLENBQUNPLFFBQW5DOztBQUVBLFNBQUssSUFBSUwsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsS0FBSSxDQUFDakIsS0FBTCxDQUFXRixNQUEvQixFQUF1Q3FCLENBQUMsRUFBeEMsRUFBNEM7QUFDMUMsVUFBSVosSUFBSSxHQUFHVSxLQUFJLENBQUNqQixLQUFMLENBQVdtQixDQUFYLENBQVg7QUFBQSxVQUNJWCxTQUFTLEdBQUlELElBQUksQ0FBQ1QsTUFBTCxHQUFjLENBQWQsR0FBa0JTLElBQUksQ0FBQyxDQUFELENBQXRCLEdBQTRCLEdBRDdDO0FBQUEsVUFFSWEsT0FBTyxHQUFJYixJQUFJLENBQUNULE1BQUwsR0FBYyxDQUFkLEdBQWtCUyxJQUFJLENBQUNjLE1BQUwsQ0FBWSxDQUFaLENBQWxCLEdBQW1DZCxJQUZsRDtBQUFBLFVBR0l5QixTQUFTLEdBQUdmLEtBQUksQ0FBQ2dCLGNBQUwsQ0FBb0JkLENBQXBCLENBSGhCOztBQUtBLFVBQUlYLFNBQVMsS0FBSyxHQUFsQixFQUF1QjtBQUNyQlUsUUFBQUEsTUFBSztBQUNOLE9BRkQsTUFFTyxJQUFJVixTQUFTLEtBQUssR0FBbEIsRUFBdUI7QUFDNUJSLFFBQUFBLEtBQUssQ0FBQ2tDLE1BQU4sQ0FBYWhCLE1BQWIsRUFBb0IsQ0FBcEI7QUFDQWhCLFFBQUFBLFVBQVUsQ0FBQ2dDLE1BQVgsQ0FBa0JoQixNQUFsQixFQUF5QixDQUF6QjtBQUNGO0FBQ0MsT0FKTSxNQUlBLElBQUlWLFNBQVMsS0FBSyxHQUFsQixFQUF1QjtBQUM1QlIsUUFBQUEsS0FBSyxDQUFDa0MsTUFBTixDQUFhaEIsTUFBYixFQUFvQixDQUFwQixFQUF1QkUsT0FBdkI7QUFDQWxCLFFBQUFBLFVBQVUsQ0FBQ2dDLE1BQVgsQ0FBa0JoQixNQUFsQixFQUF5QixDQUF6QixFQUE0QmMsU0FBNUI7QUFDQWQsUUFBQUEsTUFBSztBQUNOLE9BSk0sTUFJQSxJQUFJVixTQUFTLEtBQUssSUFBbEIsRUFBd0I7QUFDN0IsWUFBSTJCLGlCQUFpQixHQUFHbEIsS0FBSSxDQUFDakIsS0FBTCxDQUFXbUIsQ0FBQyxHQUFHLENBQWYsSUFBb0JGLEtBQUksQ0FBQ2pCLEtBQUwsQ0FBV21CLENBQUMsR0FBRyxDQUFmLEVBQWtCLENBQWxCLENBQXBCLEdBQTJDLElBQW5FOztBQUNBLFlBQUlnQixpQkFBaUIsS0FBSyxHQUExQixFQUErQjtBQUM3QnJCLFVBQUFBLFdBQVcsR0FBRyxJQUFkO0FBQ0QsU0FGRCxNQUVPLElBQUlxQixpQkFBaUIsS0FBSyxHQUExQixFQUErQjtBQUNwQ3BCLFVBQUFBLFFBQVEsR0FBRyxJQUFYO0FBQ0Q7QUFDRjtBQUNGO0FBQ0YsR0E3R3VELENBK0d4RDs7O0FBQ0EsTUFBSUQsV0FBSixFQUFpQjtBQUNmLFdBQU8sQ0FBQ2QsS0FBSyxDQUFDQSxLQUFLLENBQUNGLE1BQU4sR0FBZSxDQUFoQixDQUFiLEVBQWlDO0FBQy9CRSxNQUFBQSxLQUFLLENBQUNvQyxHQUFOO0FBQ0FsQyxNQUFBQSxVQUFVLENBQUNrQyxHQUFYO0FBQ0Q7QUFDRixHQUxELE1BS08sSUFBSXJCLFFBQUosRUFBYztBQUNuQmYsSUFBQUEsS0FBSyxDQUFDcUMsSUFBTixDQUFXLEVBQVg7QUFDQW5DLElBQUFBLFVBQVUsQ0FBQ21DLElBQVgsQ0FBZ0IsSUFBaEI7QUFDRDs7QUFDRCxPQUFLLElBQUlDLEVBQUUsR0FBRyxDQUFkLEVBQWlCQSxFQUFFLEdBQUd0QyxLQUFLLENBQUNGLE1BQU4sR0FBZSxDQUFyQyxFQUF3Q3dDLEVBQUUsRUFBMUMsRUFBOEM7QUFDNUN0QyxJQUFBQSxLQUFLLENBQUNzQyxFQUFELENBQUwsR0FBWXRDLEtBQUssQ0FBQ3NDLEVBQUQsQ0FBTCxHQUFZcEMsVUFBVSxDQUFDb0MsRUFBRCxDQUFsQztBQUNEOztBQUNELFNBQU90QyxLQUFLLENBQUN1QyxJQUFOLENBQVcsRUFBWCxDQUFQO0FBQ0QsQyxDQUVEOzs7QUFDTyxTQUFTQyxZQUFULENBQXNCL0MsT0FBdEIsRUFBK0JDLE9BQS9CLEVBQXdDO0FBQzdDLE1BQUksT0FBT0QsT0FBUCxLQUFtQixRQUF2QixFQUFpQztBQUMvQkEsSUFBQUEsT0FBTztBQUFHO0FBQUE7QUFBQTs7QUFBQUU7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLEtBQVdGLE9BQVgsQ0FBVjtBQUNEOztBQUVELE1BQUlnRCxZQUFZLEdBQUcsQ0FBbkI7O0FBQ0EsV0FBU0MsWUFBVCxHQUF3QjtBQUN0QixRQUFJQyxLQUFLLEdBQUdsRCxPQUFPLENBQUNnRCxZQUFZLEVBQWIsQ0FBbkI7O0FBQ0EsUUFBSSxDQUFDRSxLQUFMLEVBQVk7QUFDVixhQUFPakQsT0FBTyxDQUFDa0QsUUFBUixFQUFQO0FBQ0Q7O0FBRURsRCxJQUFBQSxPQUFPLENBQUNtRCxRQUFSLENBQWlCRixLQUFqQixFQUF3QixVQUFTRyxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDMUMsVUFBSUQsR0FBSixFQUFTO0FBQ1AsZUFBT3BELE9BQU8sQ0FBQ2tELFFBQVIsQ0FBaUJFLEdBQWpCLENBQVA7QUFDRDs7QUFFRCxVQUFJRSxjQUFjLEdBQUd6RCxVQUFVLENBQUN3RCxJQUFELEVBQU9KLEtBQVAsRUFBY2pELE9BQWQsQ0FBL0I7QUFDQUEsTUFBQUEsT0FBTyxDQUFDdUQsT0FBUixDQUFnQk4sS0FBaEIsRUFBdUJLLGNBQXZCLEVBQXVDLFVBQVNGLEdBQVQsRUFBYztBQUNuRCxZQUFJQSxHQUFKLEVBQVM7QUFDUCxpQkFBT3BELE9BQU8sQ0FBQ2tELFFBQVIsQ0FBaUJFLEdBQWpCLENBQVA7QUFDRDs7QUFFREosUUFBQUEsWUFBWTtBQUNiLE9BTkQ7QUFPRCxLQWJEO0FBY0Q7O0FBQ0RBLEVBQUFBLFlBQVk7QUFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgZGlzdGFuY2VJdGVyYXRvciBmcm9tICcuLi91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2goc291cmNlLCB1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodW5pRGlmZikpIHtcbiAgICBpZiAodW5pRGlmZi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5UGF0Y2ggb25seSB3b3JrcyB3aXRoIGEgc2luZ2xlIGlucHV0LicpO1xuICAgIH1cblxuICAgIHVuaURpZmYgPSB1bmlEaWZmWzBdO1xuICB9XG5cbiAgLy8gQXBwbHkgdGhlIGRpZmYgdG8gdGhlIGlucHV0XG4gIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vKSxcbiAgICAgIGRlbGltaXRlcnMgPSBzb3VyY2UubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgaHVua3MgPSB1bmlEaWZmLmh1bmtzLFxuXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgKChsaW5lTnVtYmVyLCBsaW5lLCBvcGVyYXRpb24sIHBhdGNoQ29udGVudCkgPT4gbGluZSA9PT0gcGF0Y2hDb250ZW50KSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuXG4gICAgICByZW1vdmVFT0ZOTCxcbiAgICAgIGFkZEVPRk5MO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGh1bmsgZXhhY3RseSBmaXRzIG9uIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgLy8gQ29udGV4dCBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFjb21wYXJlTGluZSh0b1BvcyArIDEsIGxpbmVzW3RvUG9zXSwgb3BlcmF0aW9uLCBjb250ZW50KSkge1xuICAgICAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgICAgIGlmIChlcnJvckNvdW50ID4gZnV6ekZhY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0b1BvcysrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gU2VhcmNoIGJlc3QgZml0IG9mZnNldHMgZm9yIGVhY2ggaHVuayBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgbWF4TGluZSA9IGxpbmVzLmxlbmd0aCAtIGh1bmsub2xkTGluZXMsXG4gICAgICAgIGxvY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgdG9Qb3MgPSBvZmZzZXQgKyBodW5rLm9sZFN0YXJ0IC0gMTtcblxuICAgIGxldCBpdGVyYXRvciA9IGRpc3RhbmNlSXRlcmF0b3IodG9Qb3MsIG1pbkxpbmUsIG1heExpbmUpO1xuXG4gICAgZm9yICg7IGxvY2FsT2Zmc2V0ICE9PSB1bmRlZmluZWQ7IGxvY2FsT2Zmc2V0ID0gaXRlcmF0b3IoKSkge1xuICAgICAgaWYgKGh1bmtGaXRzKGh1bmssIHRvUG9zICsgbG9jYWxPZmZzZXQpKSB7XG4gICAgICAgIGh1bmsub2Zmc2V0ID0gb2Zmc2V0ICs9IGxvY2FsT2Zmc2V0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9jYWxPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNldCBsb3dlciB0ZXh0IGxpbWl0IHRvIGVuZCBvZiB0aGUgY3VycmVudCBodW5rLCBzbyBuZXh0IG9uZXMgZG9uJ3QgdHJ5XG4gICAgLy8gdG8gZml0IG92ZXIgYWxyZWFkeSBwYXRjaGVkIHRleHRcbiAgICBtaW5MaW5lID0gaHVuay5vZmZzZXQgKyBodW5rLm9sZFN0YXJ0ICsgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIC8vIEFwcGx5IHBhdGNoIGh1bmtzXG4gIGxldCBkaWZmT2Zmc2V0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIHRvUG9zID0gaHVuay5vbGRTdGFydCArIGh1bmsub2Zmc2V0ICsgZGlmZk9mZnNldCAtIDE7XG4gICAgZGlmZk9mZnNldCArPSBodW5rLm5ld0xpbmVzIC0gaHVuay5vbGRMaW5lcztcblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgaHVuay5saW5lcy5sZW5ndGg7IGorKykge1xuICAgICAgbGV0IGxpbmUgPSBodW5rLmxpbmVzW2pdLFxuICAgICAgICAgIG9wZXJhdGlvbiA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lWzBdIDogJyAnKSxcbiAgICAgICAgICBjb250ZW50ID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmUuc3Vic3RyKDEpIDogbGluZSksXG4gICAgICAgICAgZGVsaW1pdGVyID0gaHVuay5saW5lZGVsaW1pdGVyc1tqXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19
diff --git a/node_modules/diff/lib/patch/create.js b/node_modules/diff/lib/patch/create.js
new file mode 100644
index 0000000..48bb466
--- /dev/null
+++ b/node_modules/diff/lib/patch/create.js
@@ -0,0 +1,267 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.structuredPatch = structuredPatch;
+exports.formatPatch = formatPatch;
+exports.createTwoFilesPatch = createTwoFilesPatch;
+exports.createPatch = createPatch;
+
+/*istanbul ignore end*/
+var
+/*istanbul ignore start*/
+_line = require("../diff/line")
+/*istanbul ignore end*/
+;
+
+/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
+
+function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
+
+function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+/*istanbul ignore end*/
+function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+  if (!options) {
+    options = {};
+  }
+
+  if (typeof options.context === 'undefined') {
+    options.context = 4;
+  }
+
+  var diff =
+  /*istanbul ignore start*/
+  (0,
+  /*istanbul ignore end*/
+
+  /*istanbul ignore start*/
+  _line
+  /*istanbul ignore end*/
+  .
+  /*istanbul ignore start*/
+  diffLines)
+  /*istanbul ignore end*/
+  (oldStr, newStr, options);
+  diff.push({
+    value: '',
+    lines: []
+  }); // Append an empty value to make cleanup easier
+
+  function contextLines(lines) {
+    return lines.map(function (entry) {
+      return ' ' + entry;
+    });
+  }
+
+  var hunks = [];
+  var oldRangeStart = 0,
+      newRangeStart = 0,
+      curRange = [],
+      oldLine = 1,
+      newLine = 1;
+
+  /*istanbul ignore start*/
+  var _loop = function _loop(
+  /*istanbul ignore end*/
+  i) {
+    var current = diff[i],
+        lines = current.lines || current.value.replace(/\n$/, '').split('\n');
+    current.lines = lines;
+
+    if (current.added || current.removed) {
+      /*istanbul ignore start*/
+      var _curRange;
+
+      /*istanbul ignore end*/
+      // If we have previous context, start with that
+      if (!oldRangeStart) {
+        var prev = diff[i - 1];
+        oldRangeStart = oldLine;
+        newRangeStart = newLine;
+
+        if (prev) {
+          curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
+          oldRangeStart -= curRange.length;
+          newRangeStart -= curRange.length;
+        }
+      } // Output our changes
+
+
+      /*istanbul ignore start*/
+
+      /*istanbul ignore end*/
+
+      /*istanbul ignore start*/
+      (_curRange =
+      /*istanbul ignore end*/
+      curRange).push.apply(
+      /*istanbul ignore start*/
+      _curRange
+      /*istanbul ignore end*/
+      ,
+      /*istanbul ignore start*/
+      _toConsumableArray(
+      /*istanbul ignore end*/
+      lines.map(function (entry) {
+        return (current.added ? '+' : '-') + entry;
+      }))); // Track the updated file position
+
+
+      if (current.added) {
+        newLine += lines.length;
+      } else {
+        oldLine += lines.length;
+      }
+    } else {
+      // Identical context lines. Track line changes
+      if (oldRangeStart) {
+        // Close out any changes that have been output (or join overlapping)
+        if (lines.length <= options.context * 2 && i < diff.length - 2) {
+          /*istanbul ignore start*/
+          var _curRange2;
+
+          /*istanbul ignore end*/
+          // Overlapping
+
+          /*istanbul ignore start*/
+
+          /*istanbul ignore end*/
+
+          /*istanbul ignore start*/
+          (_curRange2 =
+          /*istanbul ignore end*/
+          curRange).push.apply(
+          /*istanbul ignore start*/
+          _curRange2
+          /*istanbul ignore end*/
+          ,
+          /*istanbul ignore start*/
+          _toConsumableArray(
+          /*istanbul ignore end*/
+          contextLines(lines)));
+        } else {
+          /*istanbul ignore start*/
+          var _curRange3;
+
+          /*istanbul ignore end*/
+          // end the range and output
+          var contextSize = Math.min(lines.length, options.context);
+
+          /*istanbul ignore start*/
+
+          /*istanbul ignore end*/
+
+          /*istanbul ignore start*/
+          (_curRange3 =
+          /*istanbul ignore end*/
+          curRange).push.apply(
+          /*istanbul ignore start*/
+          _curRange3
+          /*istanbul ignore end*/
+          ,
+          /*istanbul ignore start*/
+          _toConsumableArray(
+          /*istanbul ignore end*/
+          contextLines(lines.slice(0, contextSize))));
+
+          var hunk = {
+            oldStart: oldRangeStart,
+            oldLines: oldLine - oldRangeStart + contextSize,
+            newStart: newRangeStart,
+            newLines: newLine - newRangeStart + contextSize,
+            lines: curRange
+          };
+
+          if (i >= diff.length - 2 && lines.length <= options.context) {
+            // EOF is inside this hunk
+            var oldEOFNewline = /\n$/.test(oldStr);
+            var newEOFNewline = /\n$/.test(newStr);
+            var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;
+
+            if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {
+              // special case: old has no eol and no trailing context; no-nl can end up before adds
+              // however, if the old file is empty, do not output the no-nl line
+              curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
+            }
+
+            if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {
+              curRange.push('\\ No newline at end of file');
+            }
+          }
+
+          hunks.push(hunk);
+          oldRangeStart = 0;
+          newRangeStart = 0;
+          curRange = [];
+        }
+      }
+
+      oldLine += lines.length;
+      newLine += lines.length;
+    }
+  };
+
+  for (var i = 0; i < diff.length; i++) {
+    /*istanbul ignore start*/
+    _loop(
+    /*istanbul ignore end*/
+    i);
+  }
+
+  return {
+    oldFileName: oldFileName,
+    newFileName: newFileName,
+    oldHeader: oldHeader,
+    newHeader: newHeader,
+    hunks: hunks
+  };
+}
+
+function formatPatch(diff) {
+  var ret = [];
+
+  if (diff.oldFileName == diff.newFileName) {
+    ret.push('Index: ' + diff.oldFileName);
+  }
+
+  ret.push('===================================================================');
+  ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
+  ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
+
+  for (var i = 0; i < diff.hunks.length; i++) {
+    var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,
+    // the first number is one lower than one would expect.
+    // https://www.artima.com/weblogs/viewpost.jsp?thread=164293
+
+    if (hunk.oldLines === 0) {
+      hunk.oldStart -= 1;
+    }
+
+    if (hunk.newLines === 0) {
+      hunk.newStart -= 1;
+    }
+
+    ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
+    ret.push.apply(ret, hunk.lines);
+  }
+
+  return ret.join('\n') + '\n';
+}
+
+function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+  return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));
+}
+
+function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
+  return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsImRpZmZMaW5lcyIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwibm9ObEJlZm9yZUFkZHMiLCJzcGxpY2UiLCJmb3JtYXRQYXRjaCIsInJldCIsImFwcGx5Iiwiam9pbiIsImNyZWF0ZVR3b0ZpbGVzUGF0Y2giLCJjcmVhdGVQYXRjaCIsImZpbGVOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxlQUFULENBQXlCQyxXQUF6QixFQUFzQ0MsV0FBdEMsRUFBbURDLE1BQW5ELEVBQTJEQyxNQUEzRCxFQUFtRUMsU0FBbkUsRUFBOEVDLFNBQTlFLEVBQXlGQyxPQUF6RixFQUFrRztBQUN2RyxNQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaQSxJQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNEOztBQUNELE1BQUksT0FBT0EsT0FBTyxDQUFDQyxPQUFmLEtBQTJCLFdBQS9CLEVBQTRDO0FBQzFDRCxJQUFBQSxPQUFPLENBQUNDLE9BQVIsR0FBa0IsQ0FBbEI7QUFDRDs7QUFFRCxNQUFNQyxJQUFJO0FBQUc7QUFBQTtBQUFBOztBQUFBQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBO0FBQUEsR0FBVVAsTUFBVixFQUFrQkMsTUFBbEIsRUFBMEJHLE9BQTFCLENBQWI7QUFDQUUsRUFBQUEsSUFBSSxDQUFDRSxJQUFMLENBQVU7QUFBQ0MsSUFBQUEsS0FBSyxFQUFFLEVBQVI7QUFBWUMsSUFBQUEsS0FBSyxFQUFFO0FBQW5CLEdBQVYsRUFUdUcsQ0FTcEU7O0FBRW5DLFdBQVNDLFlBQVQsQ0FBc0JELEtBQXRCLEVBQTZCO0FBQzNCLFdBQU9BLEtBQUssQ0FBQ0UsR0FBTixDQUFVLFVBQVNDLEtBQVQsRUFBZ0I7QUFBRSxhQUFPLE1BQU1BLEtBQWI7QUFBcUIsS0FBakQsQ0FBUDtBQUNEOztBQUVELE1BQUlDLEtBQUssR0FBRyxFQUFaO0FBQ0EsTUFBSUMsYUFBYSxHQUFHLENBQXBCO0FBQUEsTUFBdUJDLGFBQWEsR0FBRyxDQUF2QztBQUFBLE1BQTBDQyxRQUFRLEdBQUcsRUFBckQ7QUFBQSxNQUNJQyxPQUFPLEdBQUcsQ0FEZDtBQUFBLE1BQ2lCQyxPQUFPLEdBQUcsQ0FEM0I7O0FBaEJ1RztBQUFBO0FBQUE7QUFrQjlGQyxFQUFBQSxDQWxCOEY7QUFtQnJHLFFBQU1DLE9BQU8sR0FBR2YsSUFBSSxDQUFDYyxDQUFELENBQXBCO0FBQUEsUUFDTVYsS0FBSyxHQUFHVyxPQUFPLENBQUNYLEtBQVIsSUFBaUJXLE9BQU8sQ0FBQ1osS0FBUixDQUFjYSxPQUFkLENBQXNCLEtBQXRCLEVBQTZCLEVBQTdCLEVBQWlDQyxLQUFqQyxDQUF1QyxJQUF2QyxDQUQvQjtBQUVBRixJQUFBQSxPQUFPLENBQUNYLEtBQVIsR0FBZ0JBLEtBQWhCOztBQUVBLFFBQUlXLE9BQU8sQ0FBQ0csS0FBUixJQUFpQkgsT0FBTyxDQUFDSSxPQUE3QixFQUFzQztBQUFBO0FBQUE7O0FBQUE7QUFDcEM7QUFDQSxVQUFJLENBQUNWLGFBQUwsRUFBb0I7QUFDbEIsWUFBTVcsSUFBSSxHQUFHcEIsSUFBSSxDQUFDYyxDQUFDLEdBQUcsQ0FBTCxDQUFqQjtBQUNBTCxRQUFBQSxhQUFhLEdBQUdHLE9BQWhCO0FBQ0FGLFFBQUFBLGFBQWEsR0FBR0csT0FBaEI7O0FBRUEsWUFBSU8sSUFBSixFQUFVO0FBQ1JULFVBQUFBLFFBQVEsR0FBR2IsT0FBTyxDQUFDQyxPQUFSLEdBQWtCLENBQWxCLEdBQXNCTSxZQUFZLENBQUNlLElBQUksQ0FBQ2hCLEtBQUwsQ0FBV2lCLEtBQVgsQ0FBaUIsQ0FBQ3ZCLE9BQU8sQ0FBQ0MsT0FBMUIsQ0FBRCxDQUFsQyxHQUF5RSxFQUFwRjtBQUNBVSxVQUFBQSxhQUFhLElBQUlFLFFBQVEsQ0FBQ1csTUFBMUI7QUFDQVosVUFBQUEsYUFBYSxJQUFJQyxRQUFRLENBQUNXLE1BQTFCO0FBQ0Q7QUFDRixPQVptQyxDQWNwQzs7O0FBQ0E7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUFYLE1BQUFBLFFBQVEsRUFBQ1QsSUFBVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtCRSxNQUFBQSxLQUFLLENBQUNFLEdBQU4sQ0FBVSxVQUFTQyxLQUFULEVBQWdCO0FBQzFDLGVBQU8sQ0FBQ1EsT0FBTyxDQUFDRyxLQUFSLEdBQWdCLEdBQWhCLEdBQXNCLEdBQXZCLElBQThCWCxLQUFyQztBQUNELE9BRmlCLENBQWxCLEdBZm9DLENBbUJwQzs7O0FBQ0EsVUFBSVEsT0FBTyxDQUFDRyxLQUFaLEVBQW1CO0FBQ2pCTCxRQUFBQSxPQUFPLElBQUlULEtBQUssQ0FBQ2tCLE1BQWpCO0FBQ0QsT0FGRCxNQUVPO0FBQ0xWLFFBQUFBLE9BQU8sSUFBSVIsS0FBSyxDQUFDa0IsTUFBakI7QUFDRDtBQUNGLEtBekJELE1BeUJPO0FBQ0w7QUFDQSxVQUFJYixhQUFKLEVBQW1CO0FBQ2pCO0FBQ0EsWUFBSUwsS0FBSyxDQUFDa0IsTUFBTixJQUFnQnhCLE9BQU8sQ0FBQ0MsT0FBUixHQUFrQixDQUFsQyxJQUF1Q2UsQ0FBQyxHQUFHZCxJQUFJLENBQUNzQixNQUFMLEdBQWMsQ0FBN0QsRUFBZ0U7QUFBQTtBQUFBOztBQUFBO0FBQzlEOztBQUNBOztBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBWCxVQUFBQSxRQUFRLEVBQUNULElBQVQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQkcsVUFBQUEsWUFBWSxDQUFDRCxLQUFELENBQTlCO0FBQ0QsU0FIRCxNQUdPO0FBQUE7QUFBQTs7QUFBQTtBQUNMO0FBQ0EsY0FBSW1CLFdBQVcsR0FBR0MsSUFBSSxDQUFDQyxHQUFMLENBQVNyQixLQUFLLENBQUNrQixNQUFmLEVBQXVCeEIsT0FBTyxDQUFDQyxPQUEvQixDQUFsQjs7QUFDQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQVksVUFBQUEsUUFBUSxFQUFDVCxJQUFUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0JHLFVBQUFBLFlBQVksQ0FBQ0QsS0FBSyxDQUFDaUIsS0FBTixDQUFZLENBQVosRUFBZUUsV0FBZixDQUFELENBQTlCOztBQUVBLGNBQUlHLElBQUksR0FBRztBQUNUQyxZQUFBQSxRQUFRLEVBQUVsQixhQUREO0FBRVRtQixZQUFBQSxRQUFRLEVBQUdoQixPQUFPLEdBQUdILGFBQVYsR0FBMEJjLFdBRjVCO0FBR1RNLFlBQUFBLFFBQVEsRUFBRW5CLGFBSEQ7QUFJVG9CLFlBQUFBLFFBQVEsRUFBR2pCLE9BQU8sR0FBR0gsYUFBVixHQUEwQmEsV0FKNUI7QUFLVG5CLFlBQUFBLEtBQUssRUFBRU87QUFMRSxXQUFYOztBQU9BLGNBQUlHLENBQUMsSUFBSWQsSUFBSSxDQUFDc0IsTUFBTCxHQUFjLENBQW5CLElBQXdCbEIsS0FBSyxDQUFDa0IsTUFBTixJQUFnQnhCLE9BQU8sQ0FBQ0MsT0FBcEQsRUFBNkQ7QUFDM0Q7QUFDQSxnQkFBSWdDLGFBQWEsR0FBSyxLQUFELENBQVFDLElBQVIsQ0FBYXRDLE1BQWIsQ0FBckI7QUFDQSxnQkFBSXVDLGFBQWEsR0FBSyxLQUFELENBQVFELElBQVIsQ0FBYXJDLE1BQWIsQ0FBckI7QUFDQSxnQkFBSXVDLGNBQWMsR0FBRzlCLEtBQUssQ0FBQ2tCLE1BQU4sSUFBZ0IsQ0FBaEIsSUFBcUJYLFFBQVEsQ0FBQ1csTUFBVCxHQUFrQkksSUFBSSxDQUFDRSxRQUFqRTs7QUFDQSxnQkFBSSxDQUFDRyxhQUFELElBQWtCRyxjQUFsQixJQUFvQ3hDLE1BQU0sQ0FBQzRCLE1BQVAsR0FBZ0IsQ0FBeEQsRUFBMkQ7QUFDekQ7QUFDQTtBQUNBWCxjQUFBQSxRQUFRLENBQUN3QixNQUFULENBQWdCVCxJQUFJLENBQUNFLFFBQXJCLEVBQStCLENBQS9CLEVBQWtDLDhCQUFsQztBQUNEOztBQUNELGdCQUFLLENBQUNHLGFBQUQsSUFBa0IsQ0FBQ0csY0FBcEIsSUFBdUMsQ0FBQ0QsYUFBNUMsRUFBMkQ7QUFDekR0QixjQUFBQSxRQUFRLENBQUNULElBQVQsQ0FBYyw4QkFBZDtBQUNEO0FBQ0Y7O0FBQ0RNLFVBQUFBLEtBQUssQ0FBQ04sSUFBTixDQUFXd0IsSUFBWDtBQUVBakIsVUFBQUEsYUFBYSxHQUFHLENBQWhCO0FBQ0FDLFVBQUFBLGFBQWEsR0FBRyxDQUFoQjtBQUNBQyxVQUFBQSxRQUFRLEdBQUcsRUFBWDtBQUNEO0FBQ0Y7O0FBQ0RDLE1BQUFBLE9BQU8sSUFBSVIsS0FBSyxDQUFDa0IsTUFBakI7QUFDQVQsTUFBQUEsT0FBTyxJQUFJVCxLQUFLLENBQUNrQixNQUFqQjtBQUNEO0FBMUZvRzs7QUFrQnZHLE9BQUssSUFBSVIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR2QsSUFBSSxDQUFDc0IsTUFBekIsRUFBaUNSLENBQUMsRUFBbEMsRUFBc0M7QUFBQTtBQUFBO0FBQUE7QUFBN0JBLElBQUFBLENBQTZCO0FBeUVyQzs7QUFFRCxTQUFPO0FBQ0x0QixJQUFBQSxXQUFXLEVBQUVBLFdBRFI7QUFDcUJDLElBQUFBLFdBQVcsRUFBRUEsV0FEbEM7QUFFTEcsSUFBQUEsU0FBUyxFQUFFQSxTQUZOO0FBRWlCQyxJQUFBQSxTQUFTLEVBQUVBLFNBRjVCO0FBR0xXLElBQUFBLEtBQUssRUFBRUE7QUFIRixHQUFQO0FBS0Q7O0FBRU0sU0FBUzRCLFdBQVQsQ0FBcUJwQyxJQUFyQixFQUEyQjtBQUNoQyxNQUFNcUMsR0FBRyxHQUFHLEVBQVo7O0FBQ0EsTUFBSXJDLElBQUksQ0FBQ1IsV0FBTCxJQUFvQlEsSUFBSSxDQUFDUCxXQUE3QixFQUEwQztBQUN4QzRDLElBQUFBLEdBQUcsQ0FBQ25DLElBQUosQ0FBUyxZQUFZRixJQUFJLENBQUNSLFdBQTFCO0FBQ0Q7O0FBQ0Q2QyxFQUFBQSxHQUFHLENBQUNuQyxJQUFKLENBQVMscUVBQVQ7QUFDQW1DLEVBQUFBLEdBQUcsQ0FBQ25DLElBQUosQ0FBUyxTQUFTRixJQUFJLENBQUNSLFdBQWQsSUFBNkIsT0FBT1EsSUFBSSxDQUFDSixTQUFaLEtBQTBCLFdBQTFCLEdBQXdDLEVBQXhDLEdBQTZDLE9BQU9JLElBQUksQ0FBQ0osU0FBdEYsQ0FBVDtBQUNBeUMsRUFBQUEsR0FBRyxDQUFDbkMsSUFBSixDQUFTLFNBQVNGLElBQUksQ0FBQ1AsV0FBZCxJQUE2QixPQUFPTyxJQUFJLENBQUNILFNBQVosS0FBMEIsV0FBMUIsR0FBd0MsRUFBeEMsR0FBNkMsT0FBT0csSUFBSSxDQUFDSCxTQUF0RixDQUFUOztBQUVBLE9BQUssSUFBSWlCLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdkLElBQUksQ0FBQ1EsS0FBTCxDQUFXYyxNQUEvQixFQUF1Q1IsQ0FBQyxFQUF4QyxFQUE0QztBQUMxQyxRQUFNWSxJQUFJLEdBQUcxQixJQUFJLENBQUNRLEtBQUwsQ0FBV00sQ0FBWCxDQUFiLENBRDBDLENBRTFDO0FBQ0E7QUFDQTs7QUFDQSxRQUFJWSxJQUFJLENBQUNFLFFBQUwsS0FBa0IsQ0FBdEIsRUFBeUI7QUFDdkJGLE1BQUFBLElBQUksQ0FBQ0MsUUFBTCxJQUFpQixDQUFqQjtBQUNEOztBQUNELFFBQUlELElBQUksQ0FBQ0ksUUFBTCxLQUFrQixDQUF0QixFQUF5QjtBQUN2QkosTUFBQUEsSUFBSSxDQUFDRyxRQUFMLElBQWlCLENBQWpCO0FBQ0Q7O0FBQ0RRLElBQUFBLEdBQUcsQ0FBQ25DLElBQUosQ0FDRSxTQUFTd0IsSUFBSSxDQUFDQyxRQUFkLEdBQXlCLEdBQXpCLEdBQStCRCxJQUFJLENBQUNFLFFBQXBDLEdBQ0UsSUFERixHQUNTRixJQUFJLENBQUNHLFFBRGQsR0FDeUIsR0FEekIsR0FDK0JILElBQUksQ0FBQ0ksUUFEcEMsR0FFRSxLQUhKO0FBS0FPLElBQUFBLEdBQUcsQ0FBQ25DLElBQUosQ0FBU29DLEtBQVQsQ0FBZUQsR0FBZixFQUFvQlgsSUFBSSxDQUFDdEIsS0FBekI7QUFDRDs7QUFFRCxTQUFPaUMsR0FBRyxDQUFDRSxJQUFKLENBQVMsSUFBVCxJQUFpQixJQUF4QjtBQUNEOztBQUVNLFNBQVNDLG1CQUFULENBQTZCaEQsV0FBN0IsRUFBMENDLFdBQTFDLEVBQXVEQyxNQUF2RCxFQUErREMsTUFBL0QsRUFBdUVDLFNBQXZFLEVBQWtGQyxTQUFsRixFQUE2RkMsT0FBN0YsRUFBc0c7QUFDM0csU0FBT3NDLFdBQVcsQ0FBQzdDLGVBQWUsQ0FBQ0MsV0FBRCxFQUFjQyxXQUFkLEVBQTJCQyxNQUEzQixFQUFtQ0MsTUFBbkMsRUFBMkNDLFNBQTNDLEVBQXNEQyxTQUF0RCxFQUFpRUMsT0FBakUsQ0FBaEIsQ0FBbEI7QUFDRDs7QUFFTSxTQUFTMkMsV0FBVCxDQUFxQkMsUUFBckIsRUFBK0JoRCxNQUEvQixFQUF1Q0MsTUFBdkMsRUFBK0NDLFNBQS9DLEVBQTBEQyxTQUExRCxFQUFxRUMsT0FBckUsRUFBOEU7QUFDbkYsU0FBTzBDLG1CQUFtQixDQUFDRSxRQUFELEVBQVdBLFFBQVgsRUFBcUJoRCxNQUFyQixFQUE2QkMsTUFBN0IsRUFBcUNDLFNBQXJDLEVBQWdEQyxTQUFoRCxFQUEyREMsT0FBM0QsQ0FBMUI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlmZkxpbmVzfSBmcm9tICcuLi9kaWZmL2xpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBpZiAodHlwZW9mIG9wdGlvbnMuY29udGV4dCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvcHRpb25zLmNvbnRleHQgPSA0O1xuICB9XG5cbiAgY29uc3QgZGlmZiA9IGRpZmZMaW5lcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG4gIGRpZmYucHVzaCh7dmFsdWU6ICcnLCBsaW5lczogW119KTsgLy8gQXBwZW5kIGFuIGVtcHR5IHZhbHVlIHRvIG1ha2UgY2xlYW51cCBlYXNpZXJcblxuICBmdW5jdGlvbiBjb250ZXh0TGluZXMobGluZXMpIHtcbiAgICByZXR1cm4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7IHJldHVybiAnICcgKyBlbnRyeTsgfSk7XG4gIH1cblxuICBsZXQgaHVua3MgPSBbXTtcbiAgbGV0IG9sZFJhbmdlU3RhcnQgPSAwLCBuZXdSYW5nZVN0YXJ0ID0gMCwgY3VyUmFuZ2UgPSBbXSxcbiAgICAgIG9sZExpbmUgPSAxLCBuZXdMaW5lID0gMTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY3VycmVudCA9IGRpZmZbaV0sXG4gICAgICAgICAgbGluZXMgPSBjdXJyZW50LmxpbmVzIHx8IGN1cnJlbnQudmFsdWUucmVwbGFjZSgvXFxuJC8sICcnKS5zcGxpdCgnXFxuJyk7XG4gICAgY3VycmVudC5saW5lcyA9IGxpbmVzO1xuXG4gICAgaWYgKGN1cnJlbnQuYWRkZWQgfHwgY3VycmVudC5yZW1vdmVkKSB7XG4gICAgICAvLyBJZiB3ZSBoYXZlIHByZXZpb3VzIGNvbnRleHQsIHN0YXJ0IHdpdGggdGhhdFxuICAgICAgaWYgKCFvbGRSYW5nZVN0YXJ0KSB7XG4gICAgICAgIGNvbnN0IHByZXYgPSBkaWZmW2kgLSAxXTtcbiAgICAgICAgb2xkUmFuZ2VTdGFydCA9IG9sZExpbmU7XG4gICAgICAgIG5ld1JhbmdlU3RhcnQgPSBuZXdMaW5lO1xuXG4gICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgY3VyUmFuZ2UgPSBvcHRpb25zLmNvbnRleHQgPiAwID8gY29udGV4dExpbmVzKHByZXYubGluZXMuc2xpY2UoLW9wdGlvbnMuY29udGV4dCkpIDogW107XG4gICAgICAgICAgb2xkUmFuZ2VTdGFydCAtPSBjdXJSYW5nZS5sZW5ndGg7XG4gICAgICAgICAgbmV3UmFuZ2VTdGFydCAtPSBjdXJSYW5nZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT3V0cHV0IG91ciBjaGFuZ2VzXG4gICAgICBjdXJSYW5nZS5wdXNoKC4uLiBsaW5lcy5tYXAoZnVuY3Rpb24oZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIChjdXJyZW50LmFkZGVkID8gJysnIDogJy0nKSArIGVudHJ5O1xuICAgICAgfSkpO1xuXG4gICAgICAvLyBUcmFjayB0aGUgdXBkYXRlZCBmaWxlIHBvc2l0aW9uXG4gICAgICBpZiAoY3VycmVudC5hZGRlZCkge1xuICAgICAgICBuZXdMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZGVudGljYWwgY29udGV4dCBsaW5lcy4gVHJhY2sgbGluZSBjaGFuZ2VzXG4gICAgICBpZiAob2xkUmFuZ2VTdGFydCkge1xuICAgICAgICAvLyBDbG9zZSBvdXQgYW55IGNoYW5nZXMgdGhhdCBoYXZlIGJlZW4gb3V0cHV0IChvciBqb2luIG92ZXJsYXBwaW5nKVxuICAgICAgICBpZiAobGluZXMubGVuZ3RoIDw9IG9wdGlvbnMuY29udGV4dCAqIDIgJiYgaSA8IGRpZmYubGVuZ3RoIC0gMikge1xuICAgICAgICAgIC8vIE92ZXJsYXBwaW5nXG4gICAgICAgICAgY3VyUmFuZ2UucHVzaCguLi4gY29udGV4dExpbmVzKGxpbmVzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZW5kIHRoZSByYW5nZSBhbmQgb3V0cHV0XG4gICAgICAgICAgbGV0IGNvbnRleHRTaXplID0gTWF0aC5taW4obGluZXMubGVuZ3RoLCBvcHRpb25zLmNvbnRleHQpO1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcy5zbGljZSgwLCBjb250ZXh0U2l6ZSkpKTtcblxuICAgICAgICAgIGxldCBodW5rID0ge1xuICAgICAgICAgICAgb2xkU3RhcnQ6IG9sZFJhbmdlU3RhcnQsXG4gICAgICAgICAgICBvbGRMaW5lczogKG9sZExpbmUgLSBvbGRSYW5nZVN0YXJ0ICsgY29udGV4dFNpemUpLFxuICAgICAgICAgICAgbmV3U3RhcnQ6IG5ld1JhbmdlU3RhcnQsXG4gICAgICAgICAgICBuZXdMaW5lczogKG5ld0xpbmUgLSBuZXdSYW5nZVN0YXJ0ICsgY29udGV4dFNpemUpLFxuICAgICAgICAgICAgbGluZXM6IGN1clJhbmdlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoaSA+PSBkaWZmLmxlbmd0aCAtIDIgJiYgbGluZXMubGVuZ3RoIDw9IG9wdGlvbnMuY29udGV4dCkge1xuICAgICAgICAgICAgLy8gRU9GIGlzIGluc2lkZSB0aGlzIGh1bmtcbiAgICAgICAgICAgIGxldCBvbGRFT0ZOZXdsaW5lID0gKCgvXFxuJC8pLnRlc3Qob2xkU3RyKSk7XG4gICAgICAgICAgICBsZXQgbmV3RU9GTmV3bGluZSA9ICgoL1xcbiQvKS50ZXN0KG5ld1N0cikpO1xuICAgICAgICAgICAgbGV0IG5vTmxCZWZvcmVBZGRzID0gbGluZXMubGVuZ3RoID09IDAgJiYgY3VyUmFuZ2UubGVuZ3RoID4gaHVuay5vbGRMaW5lcztcbiAgICAgICAgICAgIGlmICghb2xkRU9GTmV3bGluZSAmJiBub05sQmVmb3JlQWRkcyAmJiBvbGRTdHIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2U6IG9sZCBoYXMgbm8gZW9sIGFuZCBubyB0cmFpbGluZyBjb250ZXh0OyBuby1ubCBjYW4gZW5kIHVwIGJlZm9yZSBhZGRzXG4gICAgICAgICAgICAgIC8vIGhvd2V2ZXIsIGlmIHRoZSBvbGQgZmlsZSBpcyBlbXB0eSwgZG8gbm90IG91dHB1dCB0aGUgbm8tbmwgbGluZVxuICAgICAgICAgICAgICBjdXJSYW5nZS5zcGxpY2UoaHVuay5vbGRMaW5lcywgMCwgJ1xcXFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCghb2xkRU9GTmV3bGluZSAmJiAhbm9ObEJlZm9yZUFkZHMpIHx8ICFuZXdFT0ZOZXdsaW5lKSB7XG4gICAgICAgICAgICAgIGN1clJhbmdlLnB1c2goJ1xcXFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBodW5rcy5wdXNoKGh1bmspO1xuXG4gICAgICAgICAgb2xkUmFuZ2VTdGFydCA9IDA7XG4gICAgICAgICAgbmV3UmFuZ2VTdGFydCA9IDA7XG4gICAgICAgICAgY3VyUmFuZ2UgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb2xkTGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICBuZXdMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG9sZEZpbGVOYW1lOiBvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWU6IG5ld0ZpbGVOYW1lLFxuICAgIG9sZEhlYWRlcjogb2xkSGVhZGVyLCBuZXdIZWFkZXI6IG5ld0hlYWRlcixcbiAgICBodW5rczogaHVua3NcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFBhdGNoKGRpZmYpIHtcbiAgY29uc3QgcmV0ID0gW107XG4gIGlmIChkaWZmLm9sZEZpbGVOYW1lID09IGRpZmYubmV3RmlsZU5hbWUpIHtcbiAgICByZXQucHVzaCgnSW5kZXg6ICcgKyBkaWZmLm9sZEZpbGVOYW1lKTtcbiAgfVxuICByZXQucHVzaCgnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PScpO1xuICByZXQucHVzaCgnLS0tICcgKyBkaWZmLm9sZEZpbGVOYW1lICsgKHR5cGVvZiBkaWZmLm9sZEhlYWRlciA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6ICdcXHQnICsgZGlmZi5vbGRIZWFkZXIpKTtcbiAgcmV0LnB1c2goJysrKyAnICsgZGlmZi5uZXdGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5uZXdIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYubmV3SGVhZGVyKSk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWZmLmh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgaHVuayA9IGRpZmYuaHVua3NbaV07XG4gICAgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG4gICAgaWYgKGh1bmsub2xkTGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsub2xkU3RhcnQgLT0gMTtcbiAgICB9XG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgLT0gMTtcbiAgICB9XG4gICAgcmV0LnB1c2goXG4gICAgICAnQEAgLScgKyBodW5rLm9sZFN0YXJ0ICsgJywnICsgaHVuay5vbGRMaW5lc1xuICAgICAgKyAnICsnICsgaHVuay5uZXdTdGFydCArICcsJyArIGh1bmsubmV3TGluZXNcbiAgICAgICsgJyBAQCdcbiAgICApO1xuICAgIHJldC5wdXNoLmFwcGx5KHJldCwgaHVuay5saW5lcyk7XG4gIH1cblxuICByZXR1cm4gcmV0LmpvaW4oJ1xcbicpICsgJ1xcbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUd29GaWxlc1BhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIHJldHVybiBmb3JtYXRQYXRjaChzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdGNoKGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGNyZWF0ZVR3b0ZpbGVzUGF0Y2goZmlsZU5hbWUsIGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpO1xufVxuIl19
diff --git a/node_modules/diff/lib/patch/merge.js b/node_modules/diff/lib/patch/merge.js
new file mode 100644
index 0000000..b46faaa
--- /dev/null
+++ b/node_modules/diff/lib/patch/merge.js
@@ -0,0 +1,613 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.calcLineCount = calcLineCount;
+exports.merge = merge;
+
+/*istanbul ignore end*/
+var
+/*istanbul ignore start*/
+_create = require("./create")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_parse = require("./parse")
+/*istanbul ignore end*/
+;
+
+var
+/*istanbul ignore start*/
+_array = require("../util/array")
+/*istanbul ignore end*/
+;
+
+/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
+
+function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
+
+function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+/*istanbul ignore end*/
+function calcLineCount(hunk) {
+  /*istanbul ignore start*/
+  var _calcOldNewLineCount =
+  /*istanbul ignore end*/
+  calcOldNewLineCount(hunk.lines),
+      oldLines = _calcOldNewLineCount.oldLines,
+      newLines = _calcOldNewLineCount.newLines;
+
+  if (oldLines !== undefined) {
+    hunk.oldLines = oldLines;
+  } else {
+    delete hunk.oldLines;
+  }
+
+  if (newLines !== undefined) {
+    hunk.newLines = newLines;
+  } else {
+    delete hunk.newLines;
+  }
+}
+
+function merge(mine, theirs, base) {
+  mine = loadPatch(mine, base);
+  theirs = loadPatch(theirs, base);
+  var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.
+  // Leaving sanity checks on this to the API consumer that may know more about the
+  // meaning in their own context.
+
+  if (mine.index || theirs.index) {
+    ret.index = mine.index || theirs.index;
+  }
+
+  if (mine.newFileName || theirs.newFileName) {
+    if (!fileNameChanged(mine)) {
+      // No header or no change in ours, use theirs (and ours if theirs does not exist)
+      ret.oldFileName = theirs.oldFileName || mine.oldFileName;
+      ret.newFileName = theirs.newFileName || mine.newFileName;
+      ret.oldHeader = theirs.oldHeader || mine.oldHeader;
+      ret.newHeader = theirs.newHeader || mine.newHeader;
+    } else if (!fileNameChanged(theirs)) {
+      // No header or no change in theirs, use ours
+      ret.oldFileName = mine.oldFileName;
+      ret.newFileName = mine.newFileName;
+      ret.oldHeader = mine.oldHeader;
+      ret.newHeader = mine.newHeader;
+    } else {
+      // Both changed... figure it out
+      ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
+      ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
+      ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
+      ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
+    }
+  }
+
+  ret.hunks = [];
+  var mineIndex = 0,
+      theirsIndex = 0,
+      mineOffset = 0,
+      theirsOffset = 0;
+
+  while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
+    var mineCurrent = mine.hunks[mineIndex] || {
+      oldStart: Infinity
+    },
+        theirsCurrent = theirs.hunks[theirsIndex] || {
+      oldStart: Infinity
+    };
+
+    if (hunkBefore(mineCurrent, theirsCurrent)) {
+      // This patch does not overlap with any of the others, yay.
+      ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
+      mineIndex++;
+      theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
+    } else if (hunkBefore(theirsCurrent, mineCurrent)) {
+      // This patch does not overlap with any of the others, yay.
+      ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
+      theirsIndex++;
+      mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
+    } else {
+      // Overlap, merge as best we can
+      var mergedHunk = {
+        oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
+        oldLines: 0,
+        newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
+        newLines: 0,
+        lines: []
+      };
+      mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
+      theirsIndex++;
+      mineIndex++;
+      ret.hunks.push(mergedHunk);
+    }
+  }
+
+  return ret;
+}
+
+function loadPatch(param, base) {
+  if (typeof param === 'string') {
+    if (/^@@/m.test(param) || /^Index:/m.test(param)) {
+      return (
+        /*istanbul ignore start*/
+        (0,
+        /*istanbul ignore end*/
+
+        /*istanbul ignore start*/
+        _parse
+        /*istanbul ignore end*/
+        .
+        /*istanbul ignore start*/
+        parsePatch)
+        /*istanbul ignore end*/
+        (param)[0]
+      );
+    }
+
+    if (!base) {
+      throw new Error('Must provide a base reference or pass in a patch');
+    }
+
+    return (
+      /*istanbul ignore start*/
+      (0,
+      /*istanbul ignore end*/
+
+      /*istanbul ignore start*/
+      _create
+      /*istanbul ignore end*/
+      .
+      /*istanbul ignore start*/
+      structuredPatch)
+      /*istanbul ignore end*/
+      (undefined, undefined, base, param)
+    );
+  }
+
+  return param;
+}
+
+function fileNameChanged(patch) {
+  return patch.newFileName && patch.newFileName !== patch.oldFileName;
+}
+
+function selectField(index, mine, theirs) {
+  if (mine === theirs) {
+    return mine;
+  } else {
+    index.conflict = true;
+    return {
+      mine: mine,
+      theirs: theirs
+    };
+  }
+}
+
+function hunkBefore(test, check) {
+  return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
+}
+
+function cloneHunk(hunk, offset) {
+  return {
+    oldStart: hunk.oldStart,
+    oldLines: hunk.oldLines,
+    newStart: hunk.newStart + offset,
+    newLines: hunk.newLines,
+    lines: hunk.lines
+  };
+}
+
+function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
+  // This will generally result in a conflicted hunk, but there are cases where the context
+  // is the only overlap where we can successfully merge the content here.
+  var mine = {
+    offset: mineOffset,
+    lines: mineLines,
+    index: 0
+  },
+      their = {
+    offset: theirOffset,
+    lines: theirLines,
+    index: 0
+  }; // Handle any leading content
+
+  insertLeading(hunk, mine, their);
+  insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.
+
+  while (mine.index < mine.lines.length && their.index < their.lines.length) {
+    var mineCurrent = mine.lines[mine.index],
+        theirCurrent = their.lines[their.index];
+
+    if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
+      // Both modified ...
+      mutualChange(hunk, mine, their);
+    } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
+      /*istanbul ignore start*/
+      var _hunk$lines;
+
+      /*istanbul ignore end*/
+      // Mine inserted
+
+      /*istanbul ignore start*/
+
+      /*istanbul ignore end*/
+
+      /*istanbul ignore start*/
+      (_hunk$lines =
+      /*istanbul ignore end*/
+      hunk.lines).push.apply(
+      /*istanbul ignore start*/
+      _hunk$lines
+      /*istanbul ignore end*/
+      ,
+      /*istanbul ignore start*/
+      _toConsumableArray(
+      /*istanbul ignore end*/
+      collectChange(mine)));
+    } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
+      /*istanbul ignore start*/
+      var _hunk$lines2;
+
+      /*istanbul ignore end*/
+      // Theirs inserted
+
+      /*istanbul ignore start*/
+
+      /*istanbul ignore end*/
+
+      /*istanbul ignore start*/
+      (_hunk$lines2 =
+      /*istanbul ignore end*/
+      hunk.lines).push.apply(
+      /*istanbul ignore start*/
+      _hunk$lines2
+      /*istanbul ignore end*/
+      ,
+      /*istanbul ignore start*/
+      _toConsumableArray(
+      /*istanbul ignore end*/
+      collectChange(their)));
+    } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
+      // Mine removed or edited
+      removal(hunk, mine, their);
+    } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
+      // Their removed or edited
+      removal(hunk, their, mine, true);
+    } else if (mineCurrent === theirCurrent) {
+      // Context identity
+      hunk.lines.push(mineCurrent);
+      mine.index++;
+      their.index++;
+    } else {
+      // Context mismatch
+      conflict(hunk, collectChange(mine), collectChange(their));
+    }
+  } // Now push anything that may be remaining
+
+
+  insertTrailing(hunk, mine);
+  insertTrailing(hunk, their);
+  calcLineCount(hunk);
+}
+
+function mutualChange(hunk, mine, their) {
+  var myChanges = collectChange(mine),
+      theirChanges = collectChange(their);
+
+  if (allRemoves(myChanges) && allRemoves(theirChanges)) {
+    // Special case for remove changes that are supersets of one another
+    if (
+    /*istanbul ignore start*/
+    (0,
+    /*istanbul ignore end*/
+
+    /*istanbul ignore start*/
+    _array
+    /*istanbul ignore end*/
+    .
+    /*istanbul ignore start*/
+    arrayStartsWith)
+    /*istanbul ignore end*/
+    (myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
+      /*istanbul ignore start*/
+      var _hunk$lines3;
+
+      /*istanbul ignore end*/
+
+      /*istanbul ignore start*/
+
+      /*istanbul ignore end*/
+
+      /*istanbul ignore start*/
+      (_hunk$lines3 =
+      /*istanbul ignore end*/
+      hunk.lines).push.apply(
+      /*istanbul ignore start*/
+      _hunk$lines3
+      /*istanbul ignore end*/
+      ,
+      /*istanbul ignore start*/
+      _toConsumableArray(
+      /*istanbul ignore end*/
+      myChanges));
+
+      return;
+    } else if (
+    /*istanbul ignore start*/
+    (0,
+    /*istanbul ignore end*/
+
+    /*istanbul ignore start*/
+    _array
+    /*istanbul ignore end*/
+    .
+    /*istanbul ignore start*/
+    arrayStartsWith)
+    /*istanbul ignore end*/
+    (theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
+      /*istanbul ignore start*/
+      var _hunk$lines4;
+
+      /*istanbul ignore end*/
+
+      /*istanbul ignore start*/
+
+      /*istanbul ignore end*/
+
+      /*istanbul ignore start*/
+      (_hunk$lines4 =
+      /*istanbul ignore end*/
+      hunk.lines).push.apply(
+      /*istanbul ignore start*/
+      _hunk$lines4
+      /*istanbul ignore end*/
+      ,
+      /*istanbul ignore start*/
+      _toConsumableArray(
+      /*istanbul ignore end*/
+      theirChanges));
+
+      return;
+    }
+  } else if (
+  /*istanbul ignore start*/
+  (0,
+  /*istanbul ignore end*/
+
+  /*istanbul ignore start*/
+  _array
+  /*istanbul ignore end*/
+  .
+  /*istanbul ignore start*/
+  arrayEqual)
+  /*istanbul ignore end*/
+  (myChanges, theirChanges)) {
+    /*istanbul ignore start*/
+    var _hunk$lines5;
+
+    /*istanbul ignore end*/
+
+    /*istanbul ignore start*/
+
+    /*istanbul ignore end*/
+
+    /*istanbul ignore start*/
+    (_hunk$lines5 =
+    /*istanbul ignore end*/
+    hunk.lines).push.apply(
+    /*istanbul ignore start*/
+    _hunk$lines5
+    /*istanbul ignore end*/
+    ,
+    /*istanbul ignore start*/
+    _toConsumableArray(
+    /*istanbul ignore end*/
+    myChanges));
+
+    return;
+  }
+
+  conflict(hunk, myChanges, theirChanges);
+}
+
+function removal(hunk, mine, their, swap) {
+  var myChanges = collectChange(mine),
+      theirChanges = collectContext(their, myChanges);
+
+  if (theirChanges.merged) {
+    /*istanbul ignore start*/
+    var _hunk$lines6;
+
+    /*istanbul ignore end*/
+
+    /*istanbul ignore start*/
+
+    /*istanbul ignore end*/
+
+    /*istanbul ignore start*/
+    (_hunk$lines6 =
+    /*istanbul ignore end*/
+    hunk.lines).push.apply(
+    /*istanbul ignore start*/
+    _hunk$lines6
+    /*istanbul ignore end*/
+    ,
+    /*istanbul ignore start*/
+    _toConsumableArray(
+    /*istanbul ignore end*/
+    theirChanges.merged));
+  } else {
+    conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
+  }
+}
+
+function conflict(hunk, mine, their) {
+  hunk.conflict = true;
+  hunk.lines.push({
+    conflict: true,
+    mine: mine,
+    theirs: their
+  });
+}
+
+function insertLeading(hunk, insert, their) {
+  while (insert.offset < their.offset && insert.index < insert.lines.length) {
+    var line = insert.lines[insert.index++];
+    hunk.lines.push(line);
+    insert.offset++;
+  }
+}
+
+function insertTrailing(hunk, insert) {
+  while (insert.index < insert.lines.length) {
+    var line = insert.lines[insert.index++];
+    hunk.lines.push(line);
+  }
+}
+
+function collectChange(state) {
+  var ret = [],
+      operation = state.lines[state.index][0];
+
+  while (state.index < state.lines.length) {
+    var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
+
+    if (operation === '-' && line[0] === '+') {
+      operation = '+';
+    }
+
+    if (operation === line[0]) {
+      ret.push(line);
+      state.index++;
+    } else {
+      break;
+    }
+  }
+
+  return ret;
+}
+
+function collectContext(state, matchChanges) {
+  var changes = [],
+      merged = [],
+      matchIndex = 0,
+      contextChanges = false,
+      conflicted = false;
+
+  while (matchIndex < matchChanges.length && state.index < state.lines.length) {
+    var change = state.lines[state.index],
+        match = matchChanges[matchIndex]; // Once we've hit our add, then we are done
+
+    if (match[0] === '+') {
+      break;
+    }
+
+    contextChanges = contextChanges || change[0] !== ' ';
+    merged.push(match);
+    matchIndex++; // Consume any additions in the other block as a conflict to attempt
+    // to pull in the remaining context after this
+
+    if (change[0] === '+') {
+      conflicted = true;
+
+      while (change[0] === '+') {
+        changes.push(change);
+        change = state.lines[++state.index];
+      }
+    }
+
+    if (match.substr(1) === change.substr(1)) {
+      changes.push(change);
+      state.index++;
+    } else {
+      conflicted = true;
+    }
+  }
+
+  if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
+    conflicted = true;
+  }
+
+  if (conflicted) {
+    return changes;
+  }
+
+  while (matchIndex < matchChanges.length) {
+    merged.push(matchChanges[matchIndex++]);
+  }
+
+  return {
+    merged: merged,
+    changes: changes
+  };
+}
+
+function allRemoves(changes) {
+  return changes.reduce(function (prev, change) {
+    return prev && change[0] === '-';
+  }, true);
+}
+
+function skipRemoveSuperset(state, removeChanges, delta) {
+  for (var i = 0; i < delta; i++) {
+    var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
+
+    if (state.lines[state.index + i] !== ' ' + changeContent) {
+      return false;
+    }
+  }
+
+  state.index += delta;
+  return true;
+}
+
+function calcOldNewLineCount(lines) {
+  var oldLines = 0;
+  var newLines = 0;
+  lines.forEach(function (line) {
+    if (typeof line !== 'string') {
+      var myCount = calcOldNewLineCount(line.mine);
+      var theirCount = calcOldNewLineCount(line.theirs);
+
+      if (oldLines !== undefined) {
+        if (myCount.oldLines === theirCount.oldLines) {
+          oldLines += myCount.oldLines;
+        } else {
+          oldLines = undefined;
+        }
+      }
+
+      if (newLines !== undefined) {
+        if (myCount.newLines === theirCount.newLines) {
+          newLines += myCount.newLines;
+        } else {
+          newLines = undefined;
+        }
+      }
+    } else {
+      if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {
+        newLines++;
+      }
+
+      if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {
+        oldLines++;
+      }
+    }
+  });
+  return {
+    oldLines: oldLines,
+    newLines: newLines
+  };
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwiaHVuayIsImNhbGNPbGROZXdMaW5lQ291bnQiLCJsaW5lcyIsIm9sZExpbmVzIiwibmV3TGluZXMiLCJ1bmRlZmluZWQiLCJtZXJnZSIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwicGFyc2VQYXRjaCIsIkVycm9yIiwic3RydWN0dXJlZFBhdGNoIiwicGF0Y2giLCJjb25mbGljdCIsImNoZWNrIiwib2Zmc2V0IiwibWluZUxpbmVzIiwidGhlaXJPZmZzZXQiLCJ0aGVpckxpbmVzIiwidGhlaXIiLCJpbnNlcnRMZWFkaW5nIiwidGhlaXJDdXJyZW50IiwibXV0dWFsQ2hhbmdlIiwiY29sbGVjdENoYW5nZSIsInJlbW92YWwiLCJpbnNlcnRUcmFpbGluZyIsIm15Q2hhbmdlcyIsInRoZWlyQ2hhbmdlcyIsImFsbFJlbW92ZXMiLCJhcnJheVN0YXJ0c1dpdGgiLCJza2lwUmVtb3ZlU3VwZXJzZXQiLCJhcnJheUVxdWFsIiwic3dhcCIsImNvbGxlY3RDb250ZXh0IiwibWVyZ2VkIiwiaW5zZXJ0IiwibGluZSIsInN0YXRlIiwib3BlcmF0aW9uIiwibWF0Y2hDaGFuZ2VzIiwiY2hhbmdlcyIsIm1hdGNoSW5kZXgiLCJjb250ZXh0Q2hhbmdlcyIsImNvbmZsaWN0ZWQiLCJjaGFuZ2UiLCJtYXRjaCIsInN1YnN0ciIsInJlZHVjZSIsInByZXYiLCJyZW1vdmVDaGFuZ2VzIiwiZGVsdGEiLCJpIiwiY2hhbmdlQ29udGVudCIsImZvckVhY2giLCJteUNvdW50IiwidGhlaXJDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxhQUFULENBQXVCQyxJQUF2QixFQUE2QjtBQUFBO0FBQUE7QUFBQTtBQUNMQyxFQUFBQSxtQkFBbUIsQ0FBQ0QsSUFBSSxDQUFDRSxLQUFOLENBRGQ7QUFBQSxNQUMzQkMsUUFEMkIsd0JBQzNCQSxRQUQyQjtBQUFBLE1BQ2pCQyxRQURpQix3QkFDakJBLFFBRGlCOztBQUdsQyxNQUFJRCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCTCxJQUFBQSxJQUFJLENBQUNHLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBT0gsSUFBSSxDQUFDRyxRQUFaO0FBQ0Q7O0FBRUQsTUFBSUMsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQkwsSUFBQUEsSUFBSSxDQUFDSSxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9KLElBQUksQ0FBQ0ksUUFBWjtBQUNEO0FBQ0Y7O0FBRU0sU0FBU0UsS0FBVCxDQUFlQyxJQUFmLEVBQXFCQyxNQUFyQixFQUE2QkMsSUFBN0IsRUFBbUM7QUFDeENGLEVBQUFBLElBQUksR0FBR0csU0FBUyxDQUFDSCxJQUFELEVBQU9FLElBQVAsQ0FBaEI7QUFDQUQsRUFBQUEsTUFBTSxHQUFHRSxTQUFTLENBQUNGLE1BQUQsRUFBU0MsSUFBVCxDQUFsQjtBQUVBLE1BQUlFLEdBQUcsR0FBRyxFQUFWLENBSndDLENBTXhDO0FBQ0E7QUFDQTs7QUFDQSxNQUFJSixJQUFJLENBQUNLLEtBQUwsSUFBY0osTUFBTSxDQUFDSSxLQUF6QixFQUFnQztBQUM5QkQsSUFBQUEsR0FBRyxDQUFDQyxLQUFKLEdBQVlMLElBQUksQ0FBQ0ssS0FBTCxJQUFjSixNQUFNLENBQUNJLEtBQWpDO0FBQ0Q7O0FBRUQsTUFBSUwsSUFBSSxDQUFDTSxXQUFMLElBQW9CTCxNQUFNLENBQUNLLFdBQS9CLEVBQTRDO0FBQzFDLFFBQUksQ0FBQ0MsZUFBZSxDQUFDUCxJQUFELENBQXBCLEVBQTRCO0FBQzFCO0FBQ0FJLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQlAsTUFBTSxDQUFDTyxXQUFQLElBQXNCUixJQUFJLENBQUNRLFdBQTdDO0FBQ0FKLE1BQUFBLEdBQUcsQ0FBQ0UsV0FBSixHQUFrQkwsTUFBTSxDQUFDSyxXQUFQLElBQXNCTixJQUFJLENBQUNNLFdBQTdDO0FBQ0FGLE1BQUFBLEdBQUcsQ0FBQ0ssU0FBSixHQUFnQlIsTUFBTSxDQUFDUSxTQUFQLElBQW9CVCxJQUFJLENBQUNTLFNBQXpDO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQlQsTUFBTSxDQUFDUyxTQUFQLElBQW9CVixJQUFJLENBQUNVLFNBQXpDO0FBQ0QsS0FORCxNQU1PLElBQUksQ0FBQ0gsZUFBZSxDQUFDTixNQUFELENBQXBCLEVBQThCO0FBQ25DO0FBQ0FHLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQlIsSUFBSSxDQUFDUSxXQUF2QjtBQUNBSixNQUFBQSxHQUFHLENBQUNFLFdBQUosR0FBa0JOLElBQUksQ0FBQ00sV0FBdkI7QUFDQUYsTUFBQUEsR0FBRyxDQUFDSyxTQUFKLEdBQWdCVCxJQUFJLENBQUNTLFNBQXJCO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQlYsSUFBSSxDQUFDVSxTQUFyQjtBQUNELEtBTk0sTUFNQTtBQUNMO0FBQ0FOLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQkcsV0FBVyxDQUFDUCxHQUFELEVBQU1KLElBQUksQ0FBQ1EsV0FBWCxFQUF3QlAsTUFBTSxDQUFDTyxXQUEvQixDQUE3QjtBQUNBSixNQUFBQSxHQUFHLENBQUNFLFdBQUosR0FBa0JLLFdBQVcsQ0FBQ1AsR0FBRCxFQUFNSixJQUFJLENBQUNNLFdBQVgsRUFBd0JMLE1BQU0sQ0FBQ0ssV0FBL0IsQ0FBN0I7QUFDQUYsTUFBQUEsR0FBRyxDQUFDSyxTQUFKLEdBQWdCRSxXQUFXLENBQUNQLEdBQUQsRUFBTUosSUFBSSxDQUFDUyxTQUFYLEVBQXNCUixNQUFNLENBQUNRLFNBQTdCLENBQTNCO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQkMsV0FBVyxDQUFDUCxHQUFELEVBQU1KLElBQUksQ0FBQ1UsU0FBWCxFQUFzQlQsTUFBTSxDQUFDUyxTQUE3QixDQUEzQjtBQUNEO0FBQ0Y7O0FBRUROLEVBQUFBLEdBQUcsQ0FBQ1EsS0FBSixHQUFZLEVBQVo7QUFFQSxNQUFJQyxTQUFTLEdBQUcsQ0FBaEI7QUFBQSxNQUNJQyxXQUFXLEdBQUcsQ0FEbEI7QUFBQSxNQUVJQyxVQUFVLEdBQUcsQ0FGakI7QUFBQSxNQUdJQyxZQUFZLEdBQUcsQ0FIbkI7O0FBS0EsU0FBT0gsU0FBUyxHQUFHYixJQUFJLENBQUNZLEtBQUwsQ0FBV0ssTUFBdkIsSUFBaUNILFdBQVcsR0FBR2IsTUFBTSxDQUFDVyxLQUFQLENBQWFLLE1BQW5FLEVBQTJFO0FBQ3pFLFFBQUlDLFdBQVcsR0FBR2xCLElBQUksQ0FBQ1ksS0FBTCxDQUFXQyxTQUFYLEtBQXlCO0FBQUNNLE1BQUFBLFFBQVEsRUFBRUM7QUFBWCxLQUEzQztBQUFBLFFBQ0lDLGFBQWEsR0FBR3BCLE1BQU0sQ0FBQ1csS0FBUCxDQUFhRSxXQUFiLEtBQTZCO0FBQUNLLE1BQUFBLFFBQVEsRUFBRUM7QUFBWCxLQURqRDs7QUFHQSxRQUFJRSxVQUFVLENBQUNKLFdBQUQsRUFBY0csYUFBZCxDQUFkLEVBQTRDO0FBQzFDO0FBQ0FqQixNQUFBQSxHQUFHLENBQUNRLEtBQUosQ0FBVVcsSUFBVixDQUFlQyxTQUFTLENBQUNOLFdBQUQsRUFBY0gsVUFBZCxDQUF4QjtBQUNBRixNQUFBQSxTQUFTO0FBQ1RHLE1BQUFBLFlBQVksSUFBSUUsV0FBVyxDQUFDckIsUUFBWixHQUF1QnFCLFdBQVcsQ0FBQ3RCLFFBQW5EO0FBQ0QsS0FMRCxNQUtPLElBQUkwQixVQUFVLENBQUNELGFBQUQsRUFBZ0JILFdBQWhCLENBQWQsRUFBNEM7QUFDakQ7QUFDQWQsTUFBQUEsR0FBRyxDQUFDUSxLQUFKLENBQVVXLElBQVYsQ0FBZUMsU0FBUyxDQUFDSCxhQUFELEVBQWdCTCxZQUFoQixDQUF4QjtBQUNBRixNQUFBQSxXQUFXO0FBQ1hDLE1BQUFBLFVBQVUsSUFBSU0sYUFBYSxDQUFDeEIsUUFBZCxHQUF5QndCLGFBQWEsQ0FBQ3pCLFFBQXJEO0FBQ0QsS0FMTSxNQUtBO0FBQ0w7QUFDQSxVQUFJNkIsVUFBVSxHQUFHO0FBQ2ZOLFFBQUFBLFFBQVEsRUFBRU8sSUFBSSxDQUFDQyxHQUFMLENBQVNULFdBQVcsQ0FBQ0MsUUFBckIsRUFBK0JFLGFBQWEsQ0FBQ0YsUUFBN0MsQ0FESztBQUVmdkIsUUFBQUEsUUFBUSxFQUFFLENBRks7QUFHZmdDLFFBQUFBLFFBQVEsRUFBRUYsSUFBSSxDQUFDQyxHQUFMLENBQVNULFdBQVcsQ0FBQ1UsUUFBWixHQUF1QmIsVUFBaEMsRUFBNENNLGFBQWEsQ0FBQ0YsUUFBZCxHQUF5QkgsWUFBckUsQ0FISztBQUlmbkIsUUFBQUEsUUFBUSxFQUFFLENBSks7QUFLZkYsUUFBQUEsS0FBSyxFQUFFO0FBTFEsT0FBakI7QUFPQWtDLE1BQUFBLFVBQVUsQ0FBQ0osVUFBRCxFQUFhUCxXQUFXLENBQUNDLFFBQXpCLEVBQW1DRCxXQUFXLENBQUN2QixLQUEvQyxFQUFzRDBCLGFBQWEsQ0FBQ0YsUUFBcEUsRUFBOEVFLGFBQWEsQ0FBQzFCLEtBQTVGLENBQVY7QUFDQW1CLE1BQUFBLFdBQVc7QUFDWEQsTUFBQUEsU0FBUztBQUVUVCxNQUFBQSxHQUFHLENBQUNRLEtBQUosQ0FBVVcsSUFBVixDQUFlRSxVQUFmO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPckIsR0FBUDtBQUNEOztBQUVELFNBQVNELFNBQVQsQ0FBbUIyQixLQUFuQixFQUEwQjVCLElBQTFCLEVBQWdDO0FBQzlCLE1BQUksT0FBTzRCLEtBQVAsS0FBaUIsUUFBckIsRUFBK0I7QUFDN0IsUUFBSyxNQUFELENBQVNDLElBQVQsQ0FBY0QsS0FBZCxLQUEwQixVQUFELENBQWFDLElBQWIsQ0FBa0JELEtBQWxCLENBQTdCLEVBQXdEO0FBQ3RELGFBQU87QUFBQTtBQUFBO0FBQUE7O0FBQUFFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxTQUFXRixLQUFYLEVBQWtCLENBQWxCO0FBQVA7QUFDRDs7QUFFRCxRQUFJLENBQUM1QixJQUFMLEVBQVc7QUFDVCxZQUFNLElBQUkrQixLQUFKLENBQVUsa0RBQVYsQ0FBTjtBQUNEOztBQUNELFdBQU87QUFBQTtBQUFBO0FBQUE7O0FBQUFDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxPQUFnQnBDLFNBQWhCLEVBQTJCQSxTQUEzQixFQUFzQ0ksSUFBdEMsRUFBNEM0QixLQUE1QztBQUFQO0FBQ0Q7O0FBRUQsU0FBT0EsS0FBUDtBQUNEOztBQUVELFNBQVN2QixlQUFULENBQXlCNEIsS0FBekIsRUFBZ0M7QUFDOUIsU0FBT0EsS0FBSyxDQUFDN0IsV0FBTixJQUFxQjZCLEtBQUssQ0FBQzdCLFdBQU4sS0FBc0I2QixLQUFLLENBQUMzQixXQUF4RDtBQUNEOztBQUVELFNBQVNHLFdBQVQsQ0FBcUJOLEtBQXJCLEVBQTRCTCxJQUE1QixFQUFrQ0MsTUFBbEMsRUFBMEM7QUFDeEMsTUFBSUQsSUFBSSxLQUFLQyxNQUFiLEVBQXFCO0FBQ25CLFdBQU9ELElBQVA7QUFDRCxHQUZELE1BRU87QUFDTEssSUFBQUEsS0FBSyxDQUFDK0IsUUFBTixHQUFpQixJQUFqQjtBQUNBLFdBQU87QUFBQ3BDLE1BQUFBLElBQUksRUFBSkEsSUFBRDtBQUFPQyxNQUFBQSxNQUFNLEVBQU5BO0FBQVAsS0FBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBU3FCLFVBQVQsQ0FBb0JTLElBQXBCLEVBQTBCTSxLQUExQixFQUFpQztBQUMvQixTQUFPTixJQUFJLENBQUNaLFFBQUwsR0FBZ0JrQixLQUFLLENBQUNsQixRQUF0QixJQUNEWSxJQUFJLENBQUNaLFFBQUwsR0FBZ0JZLElBQUksQ0FBQ25DLFFBQXRCLEdBQWtDeUMsS0FBSyxDQUFDbEIsUUFEN0M7QUFFRDs7QUFFRCxTQUFTSyxTQUFULENBQW1CL0IsSUFBbkIsRUFBeUI2QyxNQUF6QixFQUFpQztBQUMvQixTQUFPO0FBQ0xuQixJQUFBQSxRQUFRLEVBQUUxQixJQUFJLENBQUMwQixRQURWO0FBQ29CdkIsSUFBQUEsUUFBUSxFQUFFSCxJQUFJLENBQUNHLFFBRG5DO0FBRUxnQyxJQUFBQSxRQUFRLEVBQUVuQyxJQUFJLENBQUNtQyxRQUFMLEdBQWdCVSxNQUZyQjtBQUU2QnpDLElBQUFBLFFBQVEsRUFBRUosSUFBSSxDQUFDSSxRQUY1QztBQUdMRixJQUFBQSxLQUFLLEVBQUVGLElBQUksQ0FBQ0U7QUFIUCxHQUFQO0FBS0Q7O0FBRUQsU0FBU2tDLFVBQVQsQ0FBb0JwQyxJQUFwQixFQUEwQnNCLFVBQTFCLEVBQXNDd0IsU0FBdEMsRUFBaURDLFdBQWpELEVBQThEQyxVQUE5RCxFQUEwRTtBQUN4RTtBQUNBO0FBQ0EsTUFBSXpDLElBQUksR0FBRztBQUFDc0MsSUFBQUEsTUFBTSxFQUFFdkIsVUFBVDtBQUFxQnBCLElBQUFBLEtBQUssRUFBRTRDLFNBQTVCO0FBQXVDbEMsSUFBQUEsS0FBSyxFQUFFO0FBQTlDLEdBQVg7QUFBQSxNQUNJcUMsS0FBSyxHQUFHO0FBQUNKLElBQUFBLE1BQU0sRUFBRUUsV0FBVDtBQUFzQjdDLElBQUFBLEtBQUssRUFBRThDLFVBQTdCO0FBQXlDcEMsSUFBQUEsS0FBSyxFQUFFO0FBQWhELEdBRFosQ0FId0UsQ0FNeEU7O0FBQ0FzQyxFQUFBQSxhQUFhLENBQUNsRCxJQUFELEVBQU9PLElBQVAsRUFBYTBDLEtBQWIsQ0FBYjtBQUNBQyxFQUFBQSxhQUFhLENBQUNsRCxJQUFELEVBQU9pRCxLQUFQLEVBQWMxQyxJQUFkLENBQWIsQ0FSd0UsQ0FVeEU7O0FBQ0EsU0FBT0EsSUFBSSxDQUFDSyxLQUFMLEdBQWFMLElBQUksQ0FBQ0wsS0FBTCxDQUFXc0IsTUFBeEIsSUFBa0N5QixLQUFLLENBQUNyQyxLQUFOLEdBQWNxQyxLQUFLLENBQUMvQyxLQUFOLENBQVlzQixNQUFuRSxFQUEyRTtBQUN6RSxRQUFJQyxXQUFXLEdBQUdsQixJQUFJLENBQUNMLEtBQUwsQ0FBV0ssSUFBSSxDQUFDSyxLQUFoQixDQUFsQjtBQUFBLFFBQ0l1QyxZQUFZLEdBQUdGLEtBQUssQ0FBQy9DLEtBQU4sQ0FBWStDLEtBQUssQ0FBQ3JDLEtBQWxCLENBRG5COztBQUdBLFFBQUksQ0FBQ2EsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUFuQixJQUEwQkEsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUE5QyxNQUNJMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFwQixJQUEyQkEsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQURuRCxDQUFKLEVBQzZEO0FBQzNEO0FBQ0FDLE1BQUFBLFlBQVksQ0FBQ3BELElBQUQsRUFBT08sSUFBUCxFQUFhMEMsS0FBYixDQUFaO0FBQ0QsS0FKRCxNQUlPLElBQUl4QixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQW5CLElBQTBCMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFsRCxFQUF1RDtBQUFBO0FBQUE7O0FBQUE7QUFDNUQ7O0FBQ0E7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUFuRCxNQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQnVCLE1BQUFBLGFBQWEsQ0FBQzlDLElBQUQsQ0FBakM7QUFDRCxLQUhNLE1BR0EsSUFBSTRDLFlBQVksQ0FBQyxDQUFELENBQVosS0FBb0IsR0FBcEIsSUFBMkIxQixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQWxELEVBQXVEO0FBQUE7QUFBQTs7QUFBQTtBQUM1RDs7QUFDQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQXpCLE1BQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CdUIsTUFBQUEsYUFBYSxDQUFDSixLQUFELENBQWpDO0FBQ0QsS0FITSxNQUdBLElBQUl4QixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQW5CLElBQTBCMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFsRCxFQUF1RDtBQUM1RDtBQUNBRyxNQUFBQSxPQUFPLENBQUN0RCxJQUFELEVBQU9PLElBQVAsRUFBYTBDLEtBQWIsQ0FBUDtBQUNELEtBSE0sTUFHQSxJQUFJRSxZQUFZLENBQUMsQ0FBRCxDQUFaLEtBQW9CLEdBQXBCLElBQTJCMUIsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUFsRCxFQUF1RDtBQUM1RDtBQUNBNkIsTUFBQUEsT0FBTyxDQUFDdEQsSUFBRCxFQUFPaUQsS0FBUCxFQUFjMUMsSUFBZCxFQUFvQixJQUFwQixDQUFQO0FBQ0QsS0FITSxNQUdBLElBQUlrQixXQUFXLEtBQUswQixZQUFwQixFQUFrQztBQUN2QztBQUNBbkQsTUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCTCxXQUFoQjtBQUNBbEIsTUFBQUEsSUFBSSxDQUFDSyxLQUFMO0FBQ0FxQyxNQUFBQSxLQUFLLENBQUNyQyxLQUFOO0FBQ0QsS0FMTSxNQUtBO0FBQ0w7QUFDQStCLE1BQUFBLFFBQVEsQ0FBQzNDLElBQUQsRUFBT3FELGFBQWEsQ0FBQzlDLElBQUQsQ0FBcEIsRUFBNEI4QyxhQUFhLENBQUNKLEtBQUQsQ0FBekMsQ0FBUjtBQUNEO0FBQ0YsR0F4Q3VFLENBMEN4RTs7O0FBQ0FNLEVBQUFBLGNBQWMsQ0FBQ3ZELElBQUQsRUFBT08sSUFBUCxDQUFkO0FBQ0FnRCxFQUFBQSxjQUFjLENBQUN2RCxJQUFELEVBQU9pRCxLQUFQLENBQWQ7QUFFQWxELEVBQUFBLGFBQWEsQ0FBQ0MsSUFBRCxDQUFiO0FBQ0Q7O0FBRUQsU0FBU29ELFlBQVQsQ0FBc0JwRCxJQUF0QixFQUE0Qk8sSUFBNUIsRUFBa0MwQyxLQUFsQyxFQUF5QztBQUN2QyxNQUFJTyxTQUFTLEdBQUdILGFBQWEsQ0FBQzlDLElBQUQsQ0FBN0I7QUFBQSxNQUNJa0QsWUFBWSxHQUFHSixhQUFhLENBQUNKLEtBQUQsQ0FEaEM7O0FBR0EsTUFBSVMsVUFBVSxDQUFDRixTQUFELENBQVYsSUFBeUJFLFVBQVUsQ0FBQ0QsWUFBRCxDQUF2QyxFQUF1RDtBQUNyRDtBQUNBO0FBQUk7QUFBQTtBQUFBOztBQUFBRTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBO0FBQUEsS0FBZ0JILFNBQWhCLEVBQTJCQyxZQUEzQixLQUNHRyxrQkFBa0IsQ0FBQ1gsS0FBRCxFQUFRTyxTQUFSLEVBQW1CQSxTQUFTLENBQUNoQyxNQUFWLEdBQW1CaUMsWUFBWSxDQUFDakMsTUFBbkQsQ0FEekIsRUFDcUY7QUFBQTtBQUFBOztBQUFBOztBQUNuRjs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQXhCLE1BQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CMEIsTUFBQUEsU0FBcEI7O0FBQ0E7QUFDRCxLQUpELE1BSU87QUFBSTtBQUFBO0FBQUE7O0FBQUFHO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFnQkYsWUFBaEIsRUFBOEJELFNBQTlCLEtBQ0pJLGtCQUFrQixDQUFDckQsSUFBRCxFQUFPa0QsWUFBUCxFQUFxQkEsWUFBWSxDQUFDakMsTUFBYixHQUFzQmdDLFNBQVMsQ0FBQ2hDLE1BQXJELENBRGxCLEVBQ2dGO0FBQUE7QUFBQTs7QUFBQTs7QUFDckY7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUF4QixNQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQjJCLE1BQUFBLFlBQXBCOztBQUNBO0FBQ0Q7QUFDRixHQVhELE1BV087QUFBSTtBQUFBO0FBQUE7O0FBQUFJO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFXTCxTQUFYLEVBQXNCQyxZQUF0QixDQUFKLEVBQXlDO0FBQUE7QUFBQTs7QUFBQTs7QUFDOUM7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUF6RCxJQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQjBCLElBQUFBLFNBQXBCOztBQUNBO0FBQ0Q7O0FBRURiLEVBQUFBLFFBQVEsQ0FBQzNDLElBQUQsRUFBT3dELFNBQVAsRUFBa0JDLFlBQWxCLENBQVI7QUFDRDs7QUFFRCxTQUFTSCxPQUFULENBQWlCdEQsSUFBakIsRUFBdUJPLElBQXZCLEVBQTZCMEMsS0FBN0IsRUFBb0NhLElBQXBDLEVBQTBDO0FBQ3hDLE1BQUlOLFNBQVMsR0FBR0gsYUFBYSxDQUFDOUMsSUFBRCxDQUE3QjtBQUFBLE1BQ0lrRCxZQUFZLEdBQUdNLGNBQWMsQ0FBQ2QsS0FBRCxFQUFRTyxTQUFSLENBRGpDOztBQUVBLE1BQUlDLFlBQVksQ0FBQ08sTUFBakIsRUFBeUI7QUFBQTtBQUFBOztBQUFBOztBQUN2Qjs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQWhFLElBQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CMkIsSUFBQUEsWUFBWSxDQUFDTyxNQUFqQztBQUNELEdBRkQsTUFFTztBQUNMckIsSUFBQUEsUUFBUSxDQUFDM0MsSUFBRCxFQUFPOEQsSUFBSSxHQUFHTCxZQUFILEdBQWtCRCxTQUE3QixFQUF3Q00sSUFBSSxHQUFHTixTQUFILEdBQWVDLFlBQTNELENBQVI7QUFDRDtBQUNGOztBQUVELFNBQVNkLFFBQVQsQ0FBa0IzQyxJQUFsQixFQUF3Qk8sSUFBeEIsRUFBOEIwQyxLQUE5QixFQUFxQztBQUNuQ2pELEVBQUFBLElBQUksQ0FBQzJDLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQTNDLEVBQUFBLElBQUksQ0FBQ0UsS0FBTCxDQUFXNEIsSUFBWCxDQUFnQjtBQUNkYSxJQUFBQSxRQUFRLEVBQUUsSUFESTtBQUVkcEMsSUFBQUEsSUFBSSxFQUFFQSxJQUZRO0FBR2RDLElBQUFBLE1BQU0sRUFBRXlDO0FBSE0sR0FBaEI7QUFLRDs7QUFFRCxTQUFTQyxhQUFULENBQXVCbEQsSUFBdkIsRUFBNkJpRSxNQUE3QixFQUFxQ2hCLEtBQXJDLEVBQTRDO0FBQzFDLFNBQU9nQixNQUFNLENBQUNwQixNQUFQLEdBQWdCSSxLQUFLLENBQUNKLE1BQXRCLElBQWdDb0IsTUFBTSxDQUFDckQsS0FBUCxHQUFlcUQsTUFBTSxDQUFDL0QsS0FBUCxDQUFhc0IsTUFBbkUsRUFBMkU7QUFDekUsUUFBSTBDLElBQUksR0FBR0QsTUFBTSxDQUFDL0QsS0FBUCxDQUFhK0QsTUFBTSxDQUFDckQsS0FBUCxFQUFiLENBQVg7QUFDQVosSUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCb0MsSUFBaEI7QUFDQUQsSUFBQUEsTUFBTSxDQUFDcEIsTUFBUDtBQUNEO0FBQ0Y7O0FBQ0QsU0FBU1UsY0FBVCxDQUF3QnZELElBQXhCLEVBQThCaUUsTUFBOUIsRUFBc0M7QUFDcEMsU0FBT0EsTUFBTSxDQUFDckQsS0FBUCxHQUFlcUQsTUFBTSxDQUFDL0QsS0FBUCxDQUFhc0IsTUFBbkMsRUFBMkM7QUFDekMsUUFBSTBDLElBQUksR0FBR0QsTUFBTSxDQUFDL0QsS0FBUCxDQUFhK0QsTUFBTSxDQUFDckQsS0FBUCxFQUFiLENBQVg7QUFDQVosSUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCb0MsSUFBaEI7QUFDRDtBQUNGOztBQUVELFNBQVNiLGFBQVQsQ0FBdUJjLEtBQXZCLEVBQThCO0FBQzVCLE1BQUl4RCxHQUFHLEdBQUcsRUFBVjtBQUFBLE1BQ0l5RCxTQUFTLEdBQUdELEtBQUssQ0FBQ2pFLEtBQU4sQ0FBWWlFLEtBQUssQ0FBQ3ZELEtBQWxCLEVBQXlCLENBQXpCLENBRGhCOztBQUVBLFNBQU91RCxLQUFLLENBQUN2RCxLQUFOLEdBQWN1RCxLQUFLLENBQUNqRSxLQUFOLENBQVlzQixNQUFqQyxFQUF5QztBQUN2QyxRQUFJMEMsSUFBSSxHQUFHQyxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFsQixDQUFYLENBRHVDLENBR3ZDOztBQUNBLFFBQUl3RCxTQUFTLEtBQUssR0FBZCxJQUFxQkYsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQXJDLEVBQTBDO0FBQ3hDRSxNQUFBQSxTQUFTLEdBQUcsR0FBWjtBQUNEOztBQUVELFFBQUlBLFNBQVMsS0FBS0YsSUFBSSxDQUFDLENBQUQsQ0FBdEIsRUFBMkI7QUFDekJ2RCxNQUFBQSxHQUFHLENBQUNtQixJQUFKLENBQVNvQyxJQUFUO0FBQ0FDLE1BQUFBLEtBQUssQ0FBQ3ZELEtBQU47QUFDRCxLQUhELE1BR087QUFDTDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT0QsR0FBUDtBQUNEOztBQUNELFNBQVNvRCxjQUFULENBQXdCSSxLQUF4QixFQUErQkUsWUFBL0IsRUFBNkM7QUFDM0MsTUFBSUMsT0FBTyxHQUFHLEVBQWQ7QUFBQSxNQUNJTixNQUFNLEdBQUcsRUFEYjtBQUFBLE1BRUlPLFVBQVUsR0FBRyxDQUZqQjtBQUFBLE1BR0lDLGNBQWMsR0FBRyxLQUhyQjtBQUFBLE1BSUlDLFVBQVUsR0FBRyxLQUpqQjs7QUFLQSxTQUFPRixVQUFVLEdBQUdGLFlBQVksQ0FBQzdDLE1BQTFCLElBQ0UyQyxLQUFLLENBQUN2RCxLQUFOLEdBQWN1RCxLQUFLLENBQUNqRSxLQUFOLENBQVlzQixNQURuQyxFQUMyQztBQUN6QyxRQUFJa0QsTUFBTSxHQUFHUCxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFsQixDQUFiO0FBQUEsUUFDSStELEtBQUssR0FBR04sWUFBWSxDQUFDRSxVQUFELENBRHhCLENBRHlDLENBSXpDOztBQUNBLFFBQUlJLEtBQUssQ0FBQyxDQUFELENBQUwsS0FBYSxHQUFqQixFQUFzQjtBQUNwQjtBQUNEOztBQUVESCxJQUFBQSxjQUFjLEdBQUdBLGNBQWMsSUFBSUUsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjLEdBQWpEO0FBRUFWLElBQUFBLE1BQU0sQ0FBQ2xDLElBQVAsQ0FBWTZDLEtBQVo7QUFDQUosSUFBQUEsVUFBVSxHQVorQixDQWN6QztBQUNBOztBQUNBLFFBQUlHLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBYyxHQUFsQixFQUF1QjtBQUNyQkQsTUFBQUEsVUFBVSxHQUFHLElBQWI7O0FBRUEsYUFBT0MsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjLEdBQXJCLEVBQTBCO0FBQ3hCSixRQUFBQSxPQUFPLENBQUN4QyxJQUFSLENBQWE0QyxNQUFiO0FBQ0FBLFFBQUFBLE1BQU0sR0FBR1AsS0FBSyxDQUFDakUsS0FBTixDQUFZLEVBQUVpRSxLQUFLLENBQUN2RCxLQUFwQixDQUFUO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJK0QsS0FBSyxDQUFDQyxNQUFOLENBQWEsQ0FBYixNQUFvQkYsTUFBTSxDQUFDRSxNQUFQLENBQWMsQ0FBZCxDQUF4QixFQUEwQztBQUN4Q04sTUFBQUEsT0FBTyxDQUFDeEMsSUFBUixDQUFhNEMsTUFBYjtBQUNBUCxNQUFBQSxLQUFLLENBQUN2RCxLQUFOO0FBQ0QsS0FIRCxNQUdPO0FBQ0w2RCxNQUFBQSxVQUFVLEdBQUcsSUFBYjtBQUNEO0FBQ0Y7O0FBRUQsTUFBSSxDQUFDSixZQUFZLENBQUNFLFVBQUQsQ0FBWixJQUE0QixFQUE3QixFQUFpQyxDQUFqQyxNQUF3QyxHQUF4QyxJQUNHQyxjQURQLEVBQ3VCO0FBQ3JCQyxJQUFBQSxVQUFVLEdBQUcsSUFBYjtBQUNEOztBQUVELE1BQUlBLFVBQUosRUFBZ0I7QUFDZCxXQUFPSCxPQUFQO0FBQ0Q7O0FBRUQsU0FBT0MsVUFBVSxHQUFHRixZQUFZLENBQUM3QyxNQUFqQyxFQUF5QztBQUN2Q3dDLElBQUFBLE1BQU0sQ0FBQ2xDLElBQVAsQ0FBWXVDLFlBQVksQ0FBQ0UsVUFBVSxFQUFYLENBQXhCO0FBQ0Q7O0FBRUQsU0FBTztBQUNMUCxJQUFBQSxNQUFNLEVBQU5BLE1BREs7QUFFTE0sSUFBQUEsT0FBTyxFQUFQQTtBQUZLLEdBQVA7QUFJRDs7QUFFRCxTQUFTWixVQUFULENBQW9CWSxPQUFwQixFQUE2QjtBQUMzQixTQUFPQSxPQUFPLENBQUNPLE1BQVIsQ0FBZSxVQUFTQyxJQUFULEVBQWVKLE1BQWYsRUFBdUI7QUFDM0MsV0FBT0ksSUFBSSxJQUFJSixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWMsR0FBN0I7QUFDRCxHQUZNLEVBRUosSUFGSSxDQUFQO0FBR0Q7O0FBQ0QsU0FBU2Qsa0JBQVQsQ0FBNEJPLEtBQTVCLEVBQW1DWSxhQUFuQyxFQUFrREMsS0FBbEQsRUFBeUQ7QUFDdkQsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxLQUFwQixFQUEyQkMsQ0FBQyxFQUE1QixFQUFnQztBQUM5QixRQUFJQyxhQUFhLEdBQUdILGFBQWEsQ0FBQ0EsYUFBYSxDQUFDdkQsTUFBZCxHQUF1QndELEtBQXZCLEdBQStCQyxDQUFoQyxDQUFiLENBQWdETCxNQUFoRCxDQUF1RCxDQUF2RCxDQUFwQjs7QUFDQSxRQUFJVCxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFOLEdBQWNxRSxDQUExQixNQUFpQyxNQUFNQyxhQUEzQyxFQUEwRDtBQUN4RCxhQUFPLEtBQVA7QUFDRDtBQUNGOztBQUVEZixFQUFBQSxLQUFLLENBQUN2RCxLQUFOLElBQWVvRSxLQUFmO0FBQ0EsU0FBTyxJQUFQO0FBQ0Q7O0FBRUQsU0FBUy9FLG1CQUFULENBQTZCQyxLQUE3QixFQUFvQztBQUNsQyxNQUFJQyxRQUFRLEdBQUcsQ0FBZjtBQUNBLE1BQUlDLFFBQVEsR0FBRyxDQUFmO0FBRUFGLEVBQUFBLEtBQUssQ0FBQ2lGLE9BQU4sQ0FBYyxVQUFTakIsSUFBVCxFQUFlO0FBQzNCLFFBQUksT0FBT0EsSUFBUCxLQUFnQixRQUFwQixFQUE4QjtBQUM1QixVQUFJa0IsT0FBTyxHQUFHbkYsbUJBQW1CLENBQUNpRSxJQUFJLENBQUMzRCxJQUFOLENBQWpDO0FBQ0EsVUFBSThFLFVBQVUsR0FBR3BGLG1CQUFtQixDQUFDaUUsSUFBSSxDQUFDMUQsTUFBTixDQUFwQzs7QUFFQSxVQUFJTCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCLFlBQUkrRSxPQUFPLENBQUNqRixRQUFSLEtBQXFCa0YsVUFBVSxDQUFDbEYsUUFBcEMsRUFBOEM7QUFDNUNBLFVBQUFBLFFBQVEsSUFBSWlGLE9BQU8sQ0FBQ2pGLFFBQXBCO0FBQ0QsU0FGRCxNQUVPO0FBQ0xBLFVBQUFBLFFBQVEsR0FBR0UsU0FBWDtBQUNEO0FBQ0Y7O0FBRUQsVUFBSUQsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQixZQUFJK0UsT0FBTyxDQUFDaEYsUUFBUixLQUFxQmlGLFVBQVUsQ0FBQ2pGLFFBQXBDLEVBQThDO0FBQzVDQSxVQUFBQSxRQUFRLElBQUlnRixPQUFPLENBQUNoRixRQUFwQjtBQUNELFNBRkQsTUFFTztBQUNMQSxVQUFBQSxRQUFRLEdBQUdDLFNBQVg7QUFDRDtBQUNGO0FBQ0YsS0FuQkQsTUFtQk87QUFDTCxVQUFJRCxRQUFRLEtBQUtDLFNBQWIsS0FBMkI2RCxJQUFJLENBQUMsQ0FBRCxDQUFKLEtBQVksR0FBWixJQUFtQkEsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEU5RCxRQUFBQSxRQUFRO0FBQ1Q7O0FBQ0QsVUFBSUQsUUFBUSxLQUFLRSxTQUFiLEtBQTJCNkQsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQVosSUFBbUJBLElBQUksQ0FBQyxDQUFELENBQUosS0FBWSxHQUExRCxDQUFKLEVBQW9FO0FBQ2xFL0QsUUFBQUEsUUFBUTtBQUNUO0FBQ0Y7QUFDRixHQTVCRDtBQThCQSxTQUFPO0FBQUNBLElBQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXQyxJQUFBQSxRQUFRLEVBQVJBO0FBQVgsR0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2h9IGZyb20gJy4vY3JlYXRlJztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5cbmltcG9ydCB7YXJyYXlFcXVhbCwgYXJyYXlTdGFydHNXaXRofSBmcm9tICcuLi91dGlsL2FycmF5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNMaW5lQ291bnQoaHVuaykge1xuICBjb25zdCB7b2xkTGluZXMsIG5ld0xpbmVzfSA9IGNhbGNPbGROZXdMaW5lQ291bnQoaHVuay5saW5lcyk7XG5cbiAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBodW5rLm9sZExpbmVzID0gb2xkTGluZXM7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsubmV3TGluZXMgPSBuZXdMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5uZXdMaW5lcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UobWluZSwgdGhlaXJzLCBiYXNlKSB7XG4gIG1pbmUgPSBsb2FkUGF0Y2gobWluZSwgYmFzZSk7XG4gIHRoZWlycyA9IGxvYWRQYXRjaCh0aGVpcnMsIGJhc2UpO1xuXG4gIGxldCByZXQgPSB7fTtcblxuICAvLyBGb3IgaW5kZXggd2UganVzdCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFzIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgbmVjZXNzYXJ5IG1lYW5pbmcuXG4gIC8vIExlYXZpbmcgc2FuaXR5IGNoZWNrcyBvbiB0aGlzIHRvIHRoZSBBUEkgY29uc3VtZXIgdGhhdCBtYXkga25vdyBtb3JlIGFib3V0IHRoZVxuICAvLyBtZWFuaW5nIGluIHRoZWlyIG93biBjb250ZXh0LlxuICBpZiAobWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXgpIHtcbiAgICByZXQuaW5kZXggPSBtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleDtcbiAgfVxuXG4gIGlmIChtaW5lLm5ld0ZpbGVOYW1lIHx8IHRoZWlycy5uZXdGaWxlTmFtZSkge1xuICAgIGlmICghZmlsZU5hbWVDaGFuZ2VkKG1pbmUpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIG91cnMsIHVzZSB0aGVpcnMgKGFuZCBvdXJzIGlmIHRoZWlycyBkb2VzIG5vdCBleGlzdClcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHRoZWlycy5vbGRGaWxlTmFtZSB8fCBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gdGhlaXJzLm5ld0ZpbGVOYW1lIHx8IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gdGhlaXJzLm9sZEhlYWRlciB8fCBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSB0aGVpcnMubmV3SGVhZGVyIHx8IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSBpZiAoIWZpbGVOYW1lQ2hhbmdlZCh0aGVpcnMpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIHRoZWlycywgdXNlIG91cnNcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIGNoYW5nZWQuLi4gZmlndXJlIGl0IG91dFxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEZpbGVOYW1lLCB0aGVpcnMub2xkRmlsZU5hbWUpO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0ZpbGVOYW1lLCB0aGVpcnMubmV3RmlsZU5hbWUpO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRIZWFkZXIsIHRoZWlycy5vbGRIZWFkZXIpO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdIZWFkZXIsIHRoZWlycy5uZXdIZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldC5odW5rcyA9IFtdO1xuXG4gIGxldCBtaW5lSW5kZXggPSAwLFxuICAgICAgdGhlaXJzSW5kZXggPSAwLFxuICAgICAgbWluZU9mZnNldCA9IDAsXG4gICAgICB0aGVpcnNPZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChtaW5lSW5kZXggPCBtaW5lLmh1bmtzLmxlbmd0aCB8fCB0aGVpcnNJbmRleCA8IHRoZWlycy5odW5rcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmh1bmtzW21pbmVJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX0sXG4gICAgICAgIHRoZWlyc0N1cnJlbnQgPSB0aGVpcnMuaHVua3NbdGhlaXJzSW5kZXhdIHx8IHtvbGRTdGFydDogSW5maW5pdHl9O1xuXG4gICAgaWYgKGh1bmtCZWZvcmUobWluZUN1cnJlbnQsIHRoZWlyc0N1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKG1pbmVDdXJyZW50LCBtaW5lT2Zmc2V0KSk7XG4gICAgICBtaW5lSW5kZXgrKztcbiAgICAgIHRoZWlyc09mZnNldCArPSBtaW5lQ3VycmVudC5uZXdMaW5lcyAtIG1pbmVDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSBpZiAoaHVua0JlZm9yZSh0aGVpcnNDdXJyZW50LCBtaW5lQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsodGhlaXJzQ3VycmVudCwgdGhlaXJzT2Zmc2V0KSk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZU9mZnNldCArPSB0aGVpcnNDdXJyZW50Lm5ld0xpbmVzIC0gdGhlaXJzQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3ZlcmxhcCwgbWVyZ2UgYXMgYmVzdCB3ZSBjYW5cbiAgICAgIGxldCBtZXJnZWRIdW5rID0ge1xuICAgICAgICBvbGRTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQpLFxuICAgICAgICBvbGRMaW5lczogMCxcbiAgICAgICAgbmV3U3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm5ld1N0YXJ0ICsgbWluZU9mZnNldCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCArIHRoZWlyc09mZnNldCksXG4gICAgICAgIG5ld0xpbmVzOiAwLFxuICAgICAgICBsaW5lczogW11cbiAgICAgIH07XG4gICAgICBtZXJnZUxpbmVzKG1lcmdlZEh1bmssIG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCBtaW5lQ3VycmVudC5saW5lcywgdGhlaXJzQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5saW5lcyk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZUluZGV4Kys7XG5cbiAgICAgIHJldC5odW5rcy5wdXNoKG1lcmdlZEh1bmspO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGxvYWRQYXRjaChwYXJhbSwgYmFzZSkge1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgIGlmICgoL15AQC9tKS50ZXN0KHBhcmFtKSB8fCAoKC9eSW5kZXg6L20pLnRlc3QocGFyYW0pKSkge1xuICAgICAgcmV0dXJuIHBhcnNlUGF0Y2gocGFyYW0pWzBdO1xuICAgIH1cblxuICAgIGlmICghYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBiYXNlIHJlZmVyZW5jZSBvciBwYXNzIGluIGEgcGF0Y2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7bWluZSwgdGhlaXJzfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW5rQmVmb3JlKHRlc3QsIGNoZWNrKSB7XG4gIHJldHVybiB0ZXN0Lm9sZFN0YXJ0IDwgY2hlY2sub2xkU3RhcnRcbiAgICAmJiAodGVzdC5vbGRTdGFydCArIHRlc3Qub2xkTGluZXMpIDwgY2hlY2sub2xkU3RhcnQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lSHVuayhodW5rLCBvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBvbGRTdGFydDogaHVuay5vbGRTdGFydCwgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsIG5ld0xpbmVzOiBodW5rLm5ld0xpbmVzLFxuICAgIGxpbmVzOiBodW5rLmxpbmVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlTGluZXMoaHVuaywgbWluZU9mZnNldCwgbWluZUxpbmVzLCB0aGVpck9mZnNldCwgdGhlaXJMaW5lcykge1xuICAvLyBUaGlzIHdpbGwgZ2VuZXJhbGx5IHJlc3VsdCBpbiBhIGNvbmZsaWN0ZWQgaHVuaywgYnV0IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgY29udGV4dFxuICAvLyBpcyB0aGUgb25seSBvdmVybGFwIHdoZXJlIHdlIGNhbiBzdWNjZXNzZnVsbHkgbWVyZ2UgdGhlIGNvbnRlbnQgaGVyZS5cbiAgbGV0IG1pbmUgPSB7b2Zmc2V0OiBtaW5lT2Zmc2V0LCBsaW5lczogbWluZUxpbmVzLCBpbmRleDogMH0sXG4gICAgICB0aGVpciA9IHtvZmZzZXQ6IHRoZWlyT2Zmc2V0LCBsaW5lczogdGhlaXJMaW5lcywgaW5kZXg6IDB9O1xuXG4gIC8vIEhhbmRsZSBhbnkgbGVhZGluZyBjb250ZW50XG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTtcblxuICAvLyBOb3cgaW4gdGhlIG92ZXJsYXAgY29udGVudC4gU2NhbiB0aHJvdWdoIGFuZCBzZWxlY3QgdGhlIGJlc3QgY2hhbmdlcyBmcm9tIGVhY2guXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJylcbiAgICAgICAgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UobWluZSkpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnKycgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXJzIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnLScgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXIgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgdGhlaXIsIG1pbmUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnQgPT09IHRoZWlyQ3VycmVudCkge1xuICAgICAgLy8gQ29udGV4dCBpZGVudGl0eVxuICAgICAgaHVuay5saW5lcy5wdXNoKG1pbmVDdXJyZW50KTtcbiAgICAgIG1pbmUuaW5kZXgrKztcbiAgICAgIHRoZWlyLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRleHQgbWlzbWF0Y2hcbiAgICAgIGNvbmZsaWN0KGh1bmssIGNvbGxlY3RDaGFuZ2UobWluZSksIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgcHVzaCBhbnl0aGluZyB0aGF0IG1heSBiZSByZW1haW5pbmdcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcblxuICBjYWxjTGluZUNvdW50KGh1bmspO1xufVxuXG5mdW5jdGlvbiBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKHRoZWlyKTtcblxuICBpZiAoYWxsUmVtb3ZlcyhteUNoYW5nZXMpICYmIGFsbFJlbW92ZXModGhlaXJDaGFuZ2VzKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcmVtb3ZlIGNoYW5nZXMgdGhhdCBhcmUgc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyXG4gICAgaWYgKGFycmF5U3RhcnRzV2l0aChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KHRoZWlyLCBteUNoYW5nZXMsIG15Q2hhbmdlcy5sZW5ndGggLSB0aGVpckNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoYXJyYXlTdGFydHNXaXRoKHRoZWlyQ2hhbmdlcywgbXlDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQobWluZSwgdGhlaXJDaGFuZ2VzLCB0aGVpckNoYW5nZXMubGVuZ3RoIC0gbXlDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uZmxpY3QoaHVuaywgbXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyLCBzd2FwKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENvbnRleHQodGhlaXIsIG15Q2hhbmdlcyk7XG4gIGlmICh0aGVpckNoYW5nZXMubWVyZ2VkKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMubWVyZ2VkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25mbGljdChodW5rLCBzd2FwID8gdGhlaXJDaGFuZ2VzIDogbXlDaGFuZ2VzLCBzd2FwID8gbXlDaGFuZ2VzIDogdGhlaXJDaGFuZ2VzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25mbGljdChodW5rLCBtaW5lLCB0aGVpcikge1xuICBodW5rLmNvbmZsaWN0ID0gdHJ1ZTtcbiAgaHVuay5saW5lcy5wdXNoKHtcbiAgICBjb25mbGljdDogdHJ1ZSxcbiAgICBtaW5lOiBtaW5lLFxuICAgIHRoZWlyczogdGhlaXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydExlYWRpbmcoaHVuaywgaW5zZXJ0LCB0aGVpcikge1xuICB3aGlsZSAoaW5zZXJ0Lm9mZnNldCA8IHRoZWlyLm9mZnNldCAmJiBpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgICBpbnNlcnQub2Zmc2V0Kys7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdO1xuXG4gICAgLy8gR3JvdXAgYWRkaXRpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFmdGVyIHN1YnRyYWN0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyBvbmUgXCJhdG9taWNcIiBtb2RpZnkgY2hhbmdlLlxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBjb2xsZWN0Q29udGV4dChzdGF0ZSwgbWF0Y2hDaGFuZ2VzKSB7XG4gIGxldCBjaGFuZ2VzID0gW10sXG4gICAgICBtZXJnZWQgPSBbXSxcbiAgICAgIG1hdGNoSW5kZXggPSAwLFxuICAgICAgY29udGV4dENoYW5nZXMgPSBmYWxzZSxcbiAgICAgIGNvbmZsaWN0ZWQgPSBmYWxzZTtcbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoXG4gICAgICAgICYmIHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGNoYW5nZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XSxcbiAgICAgICAgbWF0Y2ggPSBtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF07XG5cbiAgICAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgaWYgKG1hdGNoWzBdID09PSAnKycpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnRleHRDaGFuZ2VzID0gY29udGV4dENoYW5nZXMgfHwgY2hhbmdlWzBdICE9PSAnICc7XG5cbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrO1xuXG4gICAgLy8gQ29uc3VtZSBhbnkgYWRkaXRpb25zIGluIHRoZSBvdGhlciBibG9jayBhcyBhIGNvbmZsaWN0IHRvIGF0dGVtcHRcbiAgICAvLyB0byBwdWxsIGluIHRoZSByZW1haW5pbmcgY29udGV4dCBhZnRlciB0aGlzXG4gICAgaWYgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICBjaGFuZ2UgPSBzdGF0ZS5saW5lc1srK3N0YXRlLmluZGV4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2guc3Vic3RyKDEpID09PSBjaGFuZ2Uuc3Vic3RyKDEpKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICgobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdIHx8ICcnKVswXSA9PT0gJysnXG4gICAgICAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkLFxuICAgIGNoYW5nZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWxsUmVtb3ZlcyhjaGFuZ2VzKSB7XG4gIHJldHVybiBjaGFuZ2VzLnJlZHVjZShmdW5jdGlvbihwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBza2lwUmVtb3ZlU3VwZXJzZXQoc3RhdGUsIHJlbW92ZUNoYW5nZXMsIGRlbHRhKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGE7IGkrKykge1xuICAgIGxldCBjaGFuZ2VDb250ZW50ID0gcmVtb3ZlQ2hhbmdlc1tyZW1vdmVDaGFuZ2VzLmxlbmd0aCAtIGRlbHRhICsgaV0uc3Vic3RyKDEpO1xuICAgIGlmIChzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleCArIGldICE9PSAnICcgKyBjaGFuZ2VDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUuaW5kZXggKz0gZGVsdGE7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmVzKSB7XG4gIGxldCBvbGRMaW5lcyA9IDA7XG4gIGxldCBuZXdMaW5lcyA9IDA7XG5cbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgbGV0IG15Q291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUubWluZSk7XG4gICAgICBsZXQgdGhlaXJDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS50aGVpcnMpO1xuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5vbGRMaW5lcyA9PT0gdGhlaXJDb3VudC5vbGRMaW5lcykge1xuICAgICAgICAgIG9sZExpbmVzICs9IG15Q291bnQub2xkTGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2xkTGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQubmV3TGluZXMgPT09IHRoZWlyQ291bnQubmV3TGluZXMpIHtcbiAgICAgICAgICBuZXdMaW5lcyArPSBteUNvdW50Lm5ld0xpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0xpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnKycgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBuZXdMaW5lcysrO1xuICAgICAgfVxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICctJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG9sZExpbmVzKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge29sZExpbmVzLCBuZXdMaW5lc307XG59XG4iXX0=
diff --git a/node_modules/diff/lib/patch/parse.js b/node_modules/diff/lib/patch/parse.js
new file mode 100644
index 0000000..f150104
--- /dev/null
+++ b/node_modules/diff/lib/patch/parse.js
@@ -0,0 +1,167 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.parsePatch = parsePatch;
+
+/*istanbul ignore end*/
+function parsePatch(uniDiff) {
+  /*istanbul ignore start*/
+  var
+  /*istanbul ignore end*/
+  options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/),
+      delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+      list = [],
+      i = 0;
+
+  function parseIndex() {
+    var index = {};
+    list.push(index); // Parse diff metadata
+
+    while (i < diffstr.length) {
+      var line = diffstr[i]; // File header found, end parsing diff metadata
+
+      if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
+        break;
+      } // Diff index
+
+
+      var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
+
+      if (header) {
+        index.index = header[1];
+      }
+
+      i++;
+    } // Parse file headers if they are defined. Unified diff requires them, but
+    // there's no technical issues to have an isolated hunk without file header
+
+
+    parseFileHeader(index);
+    parseFileHeader(index); // Parse hunks
+
+    index.hunks = [];
+
+    while (i < diffstr.length) {
+      var _line = diffstr[i];
+
+      if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
+        break;
+      } else if (/^@@/.test(_line)) {
+        index.hunks.push(parseHunk());
+      } else if (_line && options.strict) {
+        // Ignore unexpected content unless in strict mode
+        throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
+      } else {
+        i++;
+      }
+    }
+  } // Parses the --- and +++ headers, if none are found, no lines
+  // are consumed.
+
+
+  function parseFileHeader(index) {
+    var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]);
+
+    if (fileHeader) {
+      var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
+      var data = fileHeader[2].split('\t', 2);
+      var fileName = data[0].replace(/\\\\/g, '\\');
+
+      if (/^".*"$/.test(fileName)) {
+        fileName = fileName.substr(1, fileName.length - 2);
+      }
+
+      index[keyPrefix + 'FileName'] = fileName;
+      index[keyPrefix + 'Header'] = (data[1] || '').trim();
+      i++;
+    }
+  } // Parses a hunk
+  // This assumes that we are at the start of a hunk.
+
+
+  function parseHunk() {
+    var chunkHeaderIndex = i,
+        chunkHeaderLine = diffstr[i++],
+        chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
+    var hunk = {
+      oldStart: +chunkHeader[1],
+      oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],
+      newStart: +chunkHeader[3],
+      newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],
+      lines: [],
+      linedelimiters: []
+    }; // Unified Diff Format quirk: If the chunk size is 0,
+    // the first number is one lower than one would expect.
+    // https://www.artima.com/weblogs/viewpost.jsp?thread=164293
+
+    if (hunk.oldLines === 0) {
+      hunk.oldStart += 1;
+    }
+
+    if (hunk.newLines === 0) {
+      hunk.newStart += 1;
+    }
+
+    var addCount = 0,
+        removeCount = 0;
+
+    for (; i < diffstr.length; i++) {
+      // Lines starting with '---' could be mistaken for the "remove line" operation
+      // But they could be the header for the next file. Therefore prune such cases out.
+      if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {
+        break;
+      }
+
+      var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];
+
+      if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
+        hunk.lines.push(diffstr[i]);
+        hunk.linedelimiters.push(delimiters[i] || '\n');
+
+        if (operation === '+') {
+          addCount++;
+        } else if (operation === '-') {
+          removeCount++;
+        } else if (operation === ' ') {
+          addCount++;
+          removeCount++;
+        }
+      } else {
+        break;
+      }
+    } // Handle the empty block count case
+
+
+    if (!addCount && hunk.newLines === 1) {
+      hunk.newLines = 0;
+    }
+
+    if (!removeCount && hunk.oldLines === 1) {
+      hunk.oldLines = 0;
+    } // Perform optional sanity checking
+
+
+    if (options.strict) {
+      if (addCount !== hunk.newLines) {
+        throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+      }
+
+      if (removeCount !== hunk.oldLines) {
+        throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+      }
+    }
+
+    return hunk;
+  }
+
+  while (i < diffstr.length) {
+    parseIndex();
+  }
+
+  return list;
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJO0FBQ2hELE1BQUlDLE9BQU8sR0FBR0YsT0FBTyxDQUFDRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLFVBQVUsR0FBR0osT0FBTyxDQUFDSyxLQUFSLENBQWMsc0JBQWQsS0FBeUMsRUFEMUQ7QUFBQSxNQUVJQyxJQUFJLEdBQUcsRUFGWDtBQUFBLE1BR0lDLENBQUMsR0FBRyxDQUhSOztBQUtBLFdBQVNDLFVBQVQsR0FBc0I7QUFDcEIsUUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQUgsSUFBQUEsSUFBSSxDQUFDSSxJQUFMLENBQVVELEtBQVYsRUFGb0IsQ0FJcEI7O0FBQ0EsV0FBT0YsQ0FBQyxHQUFHTCxPQUFPLENBQUNTLE1BQW5CLEVBQTJCO0FBQ3pCLFVBQUlDLElBQUksR0FBR1YsT0FBTyxDQUFDSyxDQUFELENBQWxCLENBRHlCLENBR3pCOztBQUNBLFVBQUssdUJBQUQsQ0FBMEJNLElBQTFCLENBQStCRCxJQUEvQixDQUFKLEVBQTBDO0FBQ3hDO0FBQ0QsT0FOd0IsQ0FRekI7OztBQUNBLFVBQUlFLE1BQU0sR0FBSSwwQ0FBRCxDQUE2Q0MsSUFBN0MsQ0FBa0RILElBQWxELENBQWI7O0FBQ0EsVUFBSUUsTUFBSixFQUFZO0FBQ1ZMLFFBQUFBLEtBQUssQ0FBQ0EsS0FBTixHQUFjSyxNQUFNLENBQUMsQ0FBRCxDQUFwQjtBQUNEOztBQUVEUCxNQUFBQSxDQUFDO0FBQ0YsS0FwQm1CLENBc0JwQjtBQUNBOzs7QUFDQVMsSUFBQUEsZUFBZSxDQUFDUCxLQUFELENBQWY7QUFDQU8sSUFBQUEsZUFBZSxDQUFDUCxLQUFELENBQWYsQ0F6Qm9CLENBMkJwQjs7QUFDQUEsSUFBQUEsS0FBSyxDQUFDUSxLQUFOLEdBQWMsRUFBZDs7QUFFQSxXQUFPVixDQUFDLEdBQUdMLE9BQU8sQ0FBQ1MsTUFBbkIsRUFBMkI7QUFDekIsVUFBSUMsS0FBSSxHQUFHVixPQUFPLENBQUNLLENBQUQsQ0FBbEI7O0FBRUEsVUFBSyxnQ0FBRCxDQUFtQ00sSUFBbkMsQ0FBd0NELEtBQXhDLENBQUosRUFBbUQ7QUFDakQ7QUFDRCxPQUZELE1BRU8sSUFBSyxLQUFELENBQVFDLElBQVIsQ0FBYUQsS0FBYixDQUFKLEVBQXdCO0FBQzdCSCxRQUFBQSxLQUFLLENBQUNRLEtBQU4sQ0FBWVAsSUFBWixDQUFpQlEsU0FBUyxFQUExQjtBQUNELE9BRk0sTUFFQSxJQUFJTixLQUFJLElBQUlYLE9BQU8sQ0FBQ2tCLE1BQXBCLEVBQTRCO0FBQ2pDO0FBQ0EsY0FBTSxJQUFJQyxLQUFKLENBQVUsbUJBQW1CYixDQUFDLEdBQUcsQ0FBdkIsSUFBNEIsR0FBNUIsR0FBa0NjLElBQUksQ0FBQ0MsU0FBTCxDQUFlVixLQUFmLENBQTVDLENBQU47QUFDRCxPQUhNLE1BR0E7QUFDTEwsUUFBQUEsQ0FBQztBQUNGO0FBQ0Y7QUFDRixHQWxEK0MsQ0FvRGhEO0FBQ0E7OztBQUNBLFdBQVNTLGVBQVQsQ0FBeUJQLEtBQXpCLEVBQWdDO0FBQzlCLFFBQU1jLFVBQVUsR0FBSSx1QkFBRCxDQUEwQlIsSUFBMUIsQ0FBK0JiLE9BQU8sQ0FBQ0ssQ0FBRCxDQUF0QyxDQUFuQjs7QUFDQSxRQUFJZ0IsVUFBSixFQUFnQjtBQUNkLFVBQUlDLFNBQVMsR0FBR0QsVUFBVSxDQUFDLENBQUQsQ0FBVixLQUFrQixLQUFsQixHQUEwQixLQUExQixHQUFrQyxLQUFsRDtBQUNBLFVBQU1FLElBQUksR0FBR0YsVUFBVSxDQUFDLENBQUQsQ0FBVixDQUFjcEIsS0FBZCxDQUFvQixJQUFwQixFQUEwQixDQUExQixDQUFiO0FBQ0EsVUFBSXVCLFFBQVEsR0FBR0QsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRRSxPQUFSLENBQWdCLE9BQWhCLEVBQXlCLElBQXpCLENBQWY7O0FBQ0EsVUFBSyxRQUFELENBQVdkLElBQVgsQ0FBZ0JhLFFBQWhCLENBQUosRUFBK0I7QUFDN0JBLFFBQUFBLFFBQVEsR0FBR0EsUUFBUSxDQUFDRSxNQUFULENBQWdCLENBQWhCLEVBQW1CRixRQUFRLENBQUNmLE1BQVQsR0FBa0IsQ0FBckMsQ0FBWDtBQUNEOztBQUNERixNQUFBQSxLQUFLLENBQUNlLFNBQVMsR0FBRyxVQUFiLENBQUwsR0FBZ0NFLFFBQWhDO0FBQ0FqQixNQUFBQSxLQUFLLENBQUNlLFNBQVMsR0FBRyxRQUFiLENBQUwsR0FBOEIsQ0FBQ0MsSUFBSSxDQUFDLENBQUQsQ0FBSixJQUFXLEVBQVosRUFBZ0JJLElBQWhCLEVBQTlCO0FBRUF0QixNQUFBQSxDQUFDO0FBQ0Y7QUFDRixHQXBFK0MsQ0FzRWhEO0FBQ0E7OztBQUNBLFdBQVNXLFNBQVQsR0FBcUI7QUFDbkIsUUFBSVksZ0JBQWdCLEdBQUd2QixDQUF2QjtBQUFBLFFBQ0l3QixlQUFlLEdBQUc3QixPQUFPLENBQUNLLENBQUMsRUFBRixDQUQ3QjtBQUFBLFFBRUl5QixXQUFXLEdBQUdELGVBQWUsQ0FBQzVCLEtBQWhCLENBQXNCLDRDQUF0QixDQUZsQjtBQUlBLFFBQUk4QixJQUFJLEdBQUc7QUFDVEMsTUFBQUEsUUFBUSxFQUFFLENBQUNGLFdBQVcsQ0FBQyxDQUFELENBRGI7QUFFVEcsTUFBQUEsUUFBUSxFQUFFLE9BQU9ILFdBQVcsQ0FBQyxDQUFELENBQWxCLEtBQTBCLFdBQTFCLEdBQXdDLENBQXhDLEdBQTRDLENBQUNBLFdBQVcsQ0FBQyxDQUFELENBRnpEO0FBR1RJLE1BQUFBLFFBQVEsRUFBRSxDQUFDSixXQUFXLENBQUMsQ0FBRCxDQUhiO0FBSVRLLE1BQUFBLFFBQVEsRUFBRSxPQUFPTCxXQUFXLENBQUMsQ0FBRCxDQUFsQixLQUEwQixXQUExQixHQUF3QyxDQUF4QyxHQUE0QyxDQUFDQSxXQUFXLENBQUMsQ0FBRCxDQUp6RDtBQUtUTSxNQUFBQSxLQUFLLEVBQUUsRUFMRTtBQU1UQyxNQUFBQSxjQUFjLEVBQUU7QUFOUCxLQUFYLENBTG1CLENBY25CO0FBQ0E7QUFDQTs7QUFDQSxRQUFJTixJQUFJLENBQUNFLFFBQUwsS0FBa0IsQ0FBdEIsRUFBeUI7QUFDdkJGLE1BQUFBLElBQUksQ0FBQ0MsUUFBTCxJQUFpQixDQUFqQjtBQUNEOztBQUNELFFBQUlELElBQUksQ0FBQ0ksUUFBTCxLQUFrQixDQUF0QixFQUF5QjtBQUN2QkosTUFBQUEsSUFBSSxDQUFDRyxRQUFMLElBQWlCLENBQWpCO0FBQ0Q7O0FBRUQsUUFBSUksUUFBUSxHQUFHLENBQWY7QUFBQSxRQUNJQyxXQUFXLEdBQUcsQ0FEbEI7O0FBRUEsV0FBT2xDLENBQUMsR0FBR0wsT0FBTyxDQUFDUyxNQUFuQixFQUEyQkosQ0FBQyxFQUE1QixFQUFnQztBQUM5QjtBQUNBO0FBQ0EsVUFBSUwsT0FBTyxDQUFDSyxDQUFELENBQVAsQ0FBV21DLE9BQVgsQ0FBbUIsTUFBbkIsTUFBK0IsQ0FBL0IsSUFDTW5DLENBQUMsR0FBRyxDQUFKLEdBQVFMLE9BQU8sQ0FBQ1MsTUFEdEIsSUFFS1QsT0FBTyxDQUFDSyxDQUFDLEdBQUcsQ0FBTCxDQUFQLENBQWVtQyxPQUFmLENBQXVCLE1BQXZCLE1BQW1DLENBRnhDLElBR0t4QyxPQUFPLENBQUNLLENBQUMsR0FBRyxDQUFMLENBQVAsQ0FBZW1DLE9BQWYsQ0FBdUIsSUFBdkIsTUFBaUMsQ0FIMUMsRUFHNkM7QUFDekM7QUFDSDs7QUFDRCxVQUFJQyxTQUFTLEdBQUl6QyxPQUFPLENBQUNLLENBQUQsQ0FBUCxDQUFXSSxNQUFYLElBQXFCLENBQXJCLElBQTBCSixDQUFDLElBQUtMLE9BQU8sQ0FBQ1MsTUFBUixHQUFpQixDQUFsRCxHQUF3RCxHQUF4RCxHQUE4RFQsT0FBTyxDQUFDSyxDQUFELENBQVAsQ0FBVyxDQUFYLENBQTlFOztBQUVBLFVBQUlvQyxTQUFTLEtBQUssR0FBZCxJQUFxQkEsU0FBUyxLQUFLLEdBQW5DLElBQTBDQSxTQUFTLEtBQUssR0FBeEQsSUFBK0RBLFNBQVMsS0FBSyxJQUFqRixFQUF1RjtBQUNyRlYsUUFBQUEsSUFBSSxDQUFDSyxLQUFMLENBQVc1QixJQUFYLENBQWdCUixPQUFPLENBQUNLLENBQUQsQ0FBdkI7QUFDQTBCLFFBQUFBLElBQUksQ0FBQ00sY0FBTCxDQUFvQjdCLElBQXBCLENBQXlCTixVQUFVLENBQUNHLENBQUQsQ0FBVixJQUFpQixJQUExQzs7QUFFQSxZQUFJb0MsU0FBUyxLQUFLLEdBQWxCLEVBQXVCO0FBQ3JCSCxVQUFBQSxRQUFRO0FBQ1QsU0FGRCxNQUVPLElBQUlHLFNBQVMsS0FBSyxHQUFsQixFQUF1QjtBQUM1QkYsVUFBQUEsV0FBVztBQUNaLFNBRk0sTUFFQSxJQUFJRSxTQUFTLEtBQUssR0FBbEIsRUFBdUI7QUFDNUJILFVBQUFBLFFBQVE7QUFDUkMsVUFBQUEsV0FBVztBQUNaO0FBQ0YsT0FaRCxNQVlPO0FBQ0w7QUFDRDtBQUNGLEtBcERrQixDQXNEbkI7OztBQUNBLFFBQUksQ0FBQ0QsUUFBRCxJQUFhUCxJQUFJLENBQUNJLFFBQUwsS0FBa0IsQ0FBbkMsRUFBc0M7QUFDcENKLE1BQUFBLElBQUksQ0FBQ0ksUUFBTCxHQUFnQixDQUFoQjtBQUNEOztBQUNELFFBQUksQ0FBQ0ksV0FBRCxJQUFnQlIsSUFBSSxDQUFDRSxRQUFMLEtBQWtCLENBQXRDLEVBQXlDO0FBQ3ZDRixNQUFBQSxJQUFJLENBQUNFLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDRCxLQTVEa0IsQ0E4RG5COzs7QUFDQSxRQUFJbEMsT0FBTyxDQUFDa0IsTUFBWixFQUFvQjtBQUNsQixVQUFJcUIsUUFBUSxLQUFLUCxJQUFJLENBQUNJLFFBQXRCLEVBQWdDO0FBQzlCLGNBQU0sSUFBSWpCLEtBQUosQ0FBVSxzREFBc0RVLGdCQUFnQixHQUFHLENBQXpFLENBQVYsQ0FBTjtBQUNEOztBQUNELFVBQUlXLFdBQVcsS0FBS1IsSUFBSSxDQUFDRSxRQUF6QixFQUFtQztBQUNqQyxjQUFNLElBQUlmLEtBQUosQ0FBVSx3REFBd0RVLGdCQUFnQixHQUFHLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixDQUFDLEdBQUdMLE9BQU8sQ0FBQ1MsTUFBbkIsRUFBMkI7QUFDekJILElBQUFBLFVBQVU7QUFDWDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgoL14oXFwtXFwtXFwtfFxcK1xcK1xcK3xAQClcXHMvKS50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgaWYgKCgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8pLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKCgvXkBALykudGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKCgvXlwiLipcIiQvKS50ZXN0KGZpbGVOYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigxLCBmaWxlTmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIH1cbiAgICAgIGluZGV4W2tleVByZWZpeCArICdGaWxlTmFtZSddID0gZmlsZU5hbWU7XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnSGVhZGVyJ10gPSAoZGF0YVsxXSB8fCAnJykudHJpbSgpO1xuXG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8gUGFyc2VzIGEgaHVua1xuICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgaHVuay5cbiAgZnVuY3Rpb24gcGFyc2VIdW5rKCkge1xuICAgIGxldCBjaHVua0hlYWRlckluZGV4ID0gaSxcbiAgICAgICAgY2h1bmtIZWFkZXJMaW5lID0gZGlmZnN0cltpKytdLFxuICAgICAgICBjaHVua0hlYWRlciA9IGNodW5rSGVhZGVyTGluZS5zcGxpdCgvQEAgLShcXGQrKSg/OiwoXFxkKykpPyBcXCsoXFxkKykoPzosKFxcZCspKT8gQEAvKTtcblxuICAgIGxldCBodW5rID0ge1xuICAgICAgb2xkU3RhcnQ6ICtjaHVua0hlYWRlclsxXSxcbiAgICAgIG9sZExpbmVzOiB0eXBlb2YgY2h1bmtIZWFkZXJbMl0gPT09ICd1bmRlZmluZWQnID8gMSA6ICtjaHVua0hlYWRlclsyXSxcbiAgICAgIG5ld1N0YXJ0OiArY2h1bmtIZWFkZXJbM10sXG4gICAgICBuZXdMaW5lczogdHlwZW9mIGNodW5rSGVhZGVyWzRdID09PSAndW5kZWZpbmVkJyA/IDEgOiArY2h1bmtIZWFkZXJbNF0sXG4gICAgICBsaW5lczogW10sXG4gICAgICBsaW5lZGVsaW1pdGVyczogW11cbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG4gICAgaWYgKGh1bmsub2xkTGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsub2xkU3RhcnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgKz0gMTtcbiAgICB9XG5cbiAgICBsZXQgYWRkQ291bnQgPSAwLFxuICAgICAgICByZW1vdmVDb3VudCA9IDA7XG4gICAgZm9yICg7IGkgPCBkaWZmc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoICctLS0nIGNvdWxkIGJlIG1pc3Rha2VuIGZvciB0aGUgXCJyZW1vdmUgbGluZVwiIG9wZXJhdGlvblxuICAgICAgLy8gQnV0IHRoZXkgY291bGQgYmUgdGhlIGhlYWRlciBmb3IgdGhlIG5leHQgZmlsZS4gVGhlcmVmb3JlIHBydW5lIHN1Y2ggY2FzZXMgb3V0LlxuICAgICAgaWYgKGRpZmZzdHJbaV0uaW5kZXhPZignLS0tICcpID09PSAwXG4gICAgICAgICAgICAmJiAoaSArIDIgPCBkaWZmc3RyLmxlbmd0aClcbiAgICAgICAgICAgICYmIGRpZmZzdHJbaSArIDFdLmluZGV4T2YoJysrKyAnKSA9PT0gMFxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMl0uaW5kZXhPZignQEAnKSA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IG9wZXJhdGlvbiA9IChkaWZmc3RyW2ldLmxlbmd0aCA9PSAwICYmIGkgIT0gKGRpZmZzdHIubGVuZ3RoIC0gMSkpID8gJyAnIDogZGlmZnN0cltpXVswXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnIHx8IG9wZXJhdGlvbiA9PT0gJy0nIHx8IG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGh1bmsubGluZXMucHVzaChkaWZmc3RyW2ldKTtcbiAgICAgICAgaHVuay5saW5lZGVsaW1pdGVycy5wdXNoKGRlbGltaXRlcnNbaV0gfHwgJ1xcbicpO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJykge1xuICAgICAgICAgIGFkZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGVtcHR5IGJsb2NrIGNvdW50IGNhc2VcbiAgICBpZiAoIWFkZENvdW50ICYmIGh1bmsubmV3TGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsubmV3TGluZXMgPSAwO1xuICAgIH1cbiAgICBpZiAoIXJlbW92ZUNvdW50ICYmIGh1bmsub2xkTGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsub2xkTGluZXMgPSAwO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBZGRlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cbiJdfQ==
diff --git a/node_modules/diff/lib/util/array.js b/node_modules/diff/lib/util/array.js
new file mode 100644
index 0000000..aecf67a
--- /dev/null
+++ b/node_modules/diff/lib/util/array.js
@@ -0,0 +1,32 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.arrayEqual = arrayEqual;
+exports.arrayStartsWith = arrayStartsWith;
+
+/*istanbul ignore end*/
+function arrayEqual(a, b) {
+  if (a.length !== b.length) {
+    return false;
+  }
+
+  return arrayStartsWith(a, b);
+}
+
+function arrayStartsWith(array, start) {
+  if (start.length > array.length) {
+    return false;
+  }
+
+  for (var i = 0; i < start.length; i++) {
+    if (start[i] !== array[i]) {
+      return false;
+    }
+  }
+
+  return true;
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5U3RhcnRzV2l0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsQ0FBcEIsRUFBdUJDLENBQXZCLEVBQTBCO0FBQy9CLE1BQUlELENBQUMsQ0FBQ0UsTUFBRixLQUFhRCxDQUFDLENBQUNDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9DLGVBQWUsQ0FBQ0gsQ0FBRCxFQUFJQyxDQUFKLENBQXRCO0FBQ0Q7O0FBRU0sU0FBU0UsZUFBVCxDQUF5QkMsS0FBekIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQzVDLE1BQUlBLEtBQUssQ0FBQ0gsTUFBTixHQUFlRSxLQUFLLENBQUNGLE1BQXpCLEVBQWlDO0FBQy9CLFdBQU8sS0FBUDtBQUNEOztBQUVELE9BQUssSUFBSUksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsS0FBSyxDQUFDSCxNQUExQixFQUFrQ0ksQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJRCxLQUFLLENBQUNDLENBQUQsQ0FBTCxLQUFhRixLQUFLLENBQUNFLENBQUQsQ0FBdEIsRUFBMkI7QUFDekIsYUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBhcnJheVN0YXJ0c1dpdGgoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVN0YXJ0c1dpdGgoYXJyYXksIHN0YXJ0KSB7XG4gIGlmIChzdGFydC5sZW5ndGggPiBhcnJheS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0YXJ0W2ldICE9PSBhcnJheVtpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19
diff --git a/node_modules/diff/lib/util/distance-iterator.js b/node_modules/diff/lib/util/distance-iterator.js
new file mode 100644
index 0000000..57c06a3
--- /dev/null
+++ b/node_modules/diff/lib/util/distance-iterator.js
@@ -0,0 +1,57 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports["default"] = _default;
+
+/*istanbul ignore end*/
+// Iterator that traverses in the range of [min, max], stepping
+// by distance from a given start position. I.e. for [0, 4], with
+// start of 2, this will iterate 2, 3, 1, 4, 0.
+function
+/*istanbul ignore start*/
+_default
+/*istanbul ignore end*/
+(start, minLine, maxLine) {
+  var wantForward = true,
+      backwardExhausted = false,
+      forwardExhausted = false,
+      localOffset = 1;
+  return function iterator() {
+    if (wantForward && !forwardExhausted) {
+      if (backwardExhausted) {
+        localOffset++;
+      } else {
+        wantForward = false;
+      } // Check if trying to fit beyond text length, and if not, check it fits
+      // after offset location (or desired location on first iteration)
+
+
+      if (start + localOffset <= maxLine) {
+        return localOffset;
+      }
+
+      forwardExhausted = true;
+    }
+
+    if (!backwardExhausted) {
+      if (!forwardExhausted) {
+        wantForward = true;
+      } // Check if trying to fit before text beginning, and if not, check it fits
+      // before offset location
+
+
+      if (minLine <= start - localOffset) {
+        return -localOffset++;
+      }
+
+      backwardExhausted = true;
+      return iterator();
+    } // We tried to fit hunk before text beginning and beyond text length, then
+    // hunk can't fit on the text. Return undefined
+
+  };
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNlO0FBQUE7QUFBQTtBQUFBO0FBQUEsQ0FBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLFdBQVcsR0FBRyxJQUFsQjtBQUFBLE1BQ0lDLGlCQUFpQixHQUFHLEtBRHhCO0FBQUEsTUFFSUMsZ0JBQWdCLEdBQUcsS0FGdkI7QUFBQSxNQUdJQyxXQUFXLEdBQUcsQ0FIbEI7QUFLQSxTQUFPLFNBQVNDLFFBQVQsR0FBb0I7QUFDekIsUUFBSUosV0FBVyxJQUFJLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkUsUUFBQUEsV0FBVztBQUNaLE9BRkQsTUFFTztBQUNMSCxRQUFBQSxXQUFXLEdBQUcsS0FBZDtBQUNELE9BTG1DLENBT3BDO0FBQ0E7OztBQUNBLFVBQUlILEtBQUssR0FBR00sV0FBUixJQUF1QkosT0FBM0IsRUFBb0M7QUFDbEMsZUFBT0ksV0FBUDtBQUNEOztBQUVERCxNQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsUUFBQUEsV0FBVyxHQUFHLElBQWQ7QUFDRCxPQUhxQixDQUt0QjtBQUNBOzs7QUFDQSxVQUFJRixPQUFPLElBQUlELEtBQUssR0FBR00sV0FBdkIsRUFBb0M7QUFDbEMsZUFBTyxDQUFDQSxXQUFXLEVBQW5CO0FBQ0Q7O0FBRURGLE1BQUFBLGlCQUFpQixHQUFHLElBQXBCO0FBQ0EsYUFBT0csUUFBUSxFQUFmO0FBQ0QsS0E5QndCLENBZ0N6QjtBQUNBOztBQUNELEdBbENEO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0=
diff --git a/node_modules/diff/lib/util/params.js b/node_modules/diff/lib/util/params.js
new file mode 100644
index 0000000..e838eb2
--- /dev/null
+++ b/node_modules/diff/lib/util/params.js
@@ -0,0 +1,24 @@
+/*istanbul ignore start*/
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.generateOptions = generateOptions;
+
+/*istanbul ignore end*/
+function generateOptions(options, defaults) {
+  if (typeof options === 'function') {
+    defaults.callback = options;
+  } else if (options) {
+    for (var name in options) {
+      /* istanbul ignore else */
+      if (options.hasOwnProperty(name)) {
+        defaults[name] = options[name];
+      }
+    }
+  }
+
+  return defaults;
+}
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsSUFBQUEsUUFBUSxDQUFDQyxRQUFULEdBQW9CRixPQUFwQjtBQUNELEdBRkQsTUFFTyxJQUFJQSxPQUFKLEVBQWE7QUFDbEIsU0FBSyxJQUFJRyxJQUFULElBQWlCSCxPQUFqQixFQUEwQjtBQUN4QjtBQUNBLFVBQUlBLE9BQU8sQ0FBQ0ksY0FBUixDQUF1QkQsSUFBdkIsQ0FBSixFQUFrQztBQUNoQ0YsUUFBQUEsUUFBUSxDQUFDRSxJQUFELENBQVIsR0FBaUJILE9BQU8sQ0FBQ0csSUFBRCxDQUF4QjtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxTQUFPRixRQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0=
diff --git a/node_modules/diff/package.json b/node_modules/diff/package.json
new file mode 100644
index 0000000..2b6eea7
--- /dev/null
+++ b/node_modules/diff/package.json
@@ -0,0 +1,87 @@
+{
+  "name": "diff",
+  "version": "5.0.0",
+  "description": "A javascript text diff implementation.",
+  "keywords": [
+    "diff",
+    "jsdiff",
+    "compare",
+    "patch",
+    "text",
+    "json",
+    "css",
+    "javascript"
+  ],
+  "maintainers": [
+    "Kevin Decker  (http://incaseofstairs.com)"
+  ],
+  "bugs": {
+    "email": "kpdecker@gmail.com",
+    "url": "http://github.com/kpdecker/jsdiff/issues"
+  },
+  "license": "BSD-3-Clause",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/kpdecker/jsdiff.git"
+  },
+  "engines": {
+    "node": ">=0.3.1"
+  },
+  "main": "./lib/index.js",
+  "module": "./lib/index.es6.js",
+  "browser": "./dist/diff.js",
+  "unpkg": "./dist/diff.js",
+  "exports": {
+    ".": {
+      "import": "./lib/index.mjs",
+      "require": "./lib/index.js"
+    },
+    "./package.json": "./package.json",
+    "./": "./"
+  },
+  "scripts": {
+    "clean": "rm -rf lib/ dist/",
+    "build:node": "yarn babel --out-dir lib  --source-maps=inline src",
+    "test": "grunt"
+  },
+  "devDependencies": {
+    "@babel/cli": "^7.2.3",
+    "@babel/core": "^7.2.2",
+    "@babel/plugin-transform-modules-commonjs": "^7.2.0",
+    "@babel/preset-env": "^7.2.3",
+    "@babel/register": "^7.0.0",
+    "babel-eslint": "^10.0.1",
+    "babel-loader": "^8.0.5",
+    "chai": "^4.2.0",
+    "colors": "^1.3.3",
+    "eslint": "^5.12.0",
+    "grunt": "^1.0.3",
+    "grunt-babel": "^8.0.0",
+    "grunt-cli": "^1.3.2",
+    "grunt-contrib-clean": "^2.0.0",
+    "grunt-contrib-copy": "^1.0.0",
+    "grunt-contrib-uglify": "^5.0.0",
+    "grunt-contrib-watch": "^1.1.0",
+    "grunt-eslint": "^23.0.0",
+    "grunt-exec": "^3.0.0",
+    "grunt-karma": "^4.0.0",
+    "grunt-mocha-istanbul": "^5.0.2",
+    "grunt-mocha-test": "^0.13.3",
+    "grunt-webpack": "^3.1.3",
+    "istanbul": "github:kpdecker/istanbul",
+    "karma": "^5.1.1",
+    "karma-chrome-launcher": "^3.1.0",
+    "karma-mocha": "^2.0.1",
+    "karma-mocha-reporter": "^2.0.0",
+    "karma-sauce-launcher": "^4.1.5",
+    "karma-sourcemap-loader": "^0.3.6",
+    "karma-webpack": "^4.0.2",
+    "mocha": "^6.0.0",
+    "rollup": "^1.0.2",
+    "rollup-plugin-babel": "^4.2.0",
+    "semver": "^7.3.2",
+    "webpack": "^4.28.3",
+    "webpack-dev-server": "^3.1.14"
+  },
+  "optionalDependencies": {}
+}
diff --git a/node_modules/diff/release-notes.md b/node_modules/diff/release-notes.md
new file mode 100644
index 0000000..acc75aa
--- /dev/null
+++ b/node_modules/diff/release-notes.md
@@ -0,0 +1,303 @@
+# Release Notes
+
+## Development
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v5.0.0...master)
+
+## v5.0.0
+
+- Breaking: UMD export renamed from `JsDiff` to `Diff`.
+- Breaking: Newlines separated into separate tokens for word diff.
+- Breaking: Unified diffs now match ["quirks"](https://www.artima.com/weblogs/viewpost.jsp?thread=164293)
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v4.0.1...v5.0.0)
+
+## v4.0.1 - January 6th, 2019
+
+- Fix main reference path - b826104
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v4.0.0...v4.0.1)
+
+## v4.0.0 - January 5th, 2019
+
+- [#94](https://github.com/kpdecker/jsdiff/issues/94) - Missing "No newline at end of file" when comparing two texts that do not end in newlines ([@federicotdn](https://api.github.com/users/federicotdn))
+- [#227](https://github.com/kpdecker/jsdiff/issues/227) - Licence
+- [#199](https://github.com/kpdecker/jsdiff/issues/199) - Import statement for jsdiff
+- [#159](https://github.com/kpdecker/jsdiff/issues/159) - applyPatch affecting wrong line number with with new lines
+- [#8](https://github.com/kpdecker/jsdiff/issues/8) - A new state "replace"
+- Drop ie9 from karma targets - 79c31bd
+- Upgrade deps. Convert from webpack to rollup - 2c1a29c
+- Make ()[]"' as word boundaries between each other - f27b899
+- jsdiff: Replaced phantomJS by chrome - ec3114e
+- Add yarn.lock to .npmignore - 29466d8
+
+Compatibility notes:
+
+- Bower and Component packages no longer supported
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v3.5.0...v4.0.0)
+
+## v3.5.0 - March 4th, 2018
+
+- Omit redundant slice in join method of diffArrays - 1023590
+- Support patches with empty lines - fb0f208
+- Accept a custom JSON replacer function for JSON diffing - 69c7f0a
+- Optimize parch header parser - 2aec429
+- Fix typos - e89c832
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v3.4.0...v3.5.0)
+
+## v3.4.0 - October 7th, 2017
+
+- [#183](https://github.com/kpdecker/jsdiff/issues/183) - Feature request: ability to specify a custom equality checker for `diffArrays`
+- [#173](https://github.com/kpdecker/jsdiff/issues/173) - Bug: diffArrays gives wrong result on array of booleans
+- [#158](https://github.com/kpdecker/jsdiff/issues/158) - diffArrays will not compare the empty string in array?
+- comparator for custom equality checks - 30e141e
+- count oldLines and newLines when there are conflicts - 53bf384
+- Fix: diffArrays can compare falsey items - 9e24284
+- Docs: Replace grunt with npm test - 00e2f94
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v3.3.1...v3.4.0)
+
+## v3.3.1 - September 3rd, 2017
+
+- [#141](https://github.com/kpdecker/jsdiff/issues/141) - Cannot apply patch because my file delimiter is "/r/n" instead of "/n"
+- [#192](https://github.com/kpdecker/jsdiff/pull/192) - Fix: Bad merge when adding new files (#189)
+- correct spelling mistake - 21fa478
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v3.3.0...v3.3.1)
+
+## v3.3.0 - July 5th, 2017
+
+- [#114](https://github.com/kpdecker/jsdiff/issues/114) - /patch/merge not exported
+- Gracefully accept invalid newStart in hunks, same as patch(1) does. - d8a3635
+- Use regex rather than starts/ends with for parsePatch - 6cab62c
+- Add browser flag - e64f674
+- refactor: simplified code a bit more - 8f8e0f2
+- refactor: simplified code a bit - b094a6f
+- fix: some corrections re ignoreCase option - 3c78fd0
+- ignoreCase option - 3cbfbb5
+- Sanitize filename while parsing patches - 2fe8129
+- Added better installation methods - aced50b
+- Simple export of functionality - 8690f31
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v3.2.0...v3.3.0)
+
+## v3.2.0 - December 26th, 2016
+
+- [#156](https://github.com/kpdecker/jsdiff/pull/156) - Add `undefinedReplacement` option to `diffJson` ([@ewnd9](https://api.github.com/users/ewnd9))
+- [#154](https://github.com/kpdecker/jsdiff/pull/154) - Add `examples` and `images` to `.npmignore`. ([@wtgtybhertgeghgtwtg](https://api.github.com/users/wtgtybhertgeghgtwtg))
+- [#153](https://github.com/kpdecker/jsdiff/pull/153) - feat(structuredPatch): Pass options to diffLines ([@Kiougar](https://api.github.com/users/Kiougar))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v3.1.0...v3.2.0)
+
+## v3.1.0 - November 27th, 2016
+
+- [#146](https://github.com/kpdecker/jsdiff/pull/146) - JsDiff.diffArrays to compare arrays ([@wvanderdeijl](https://api.github.com/users/wvanderdeijl))
+- [#144](https://github.com/kpdecker/jsdiff/pull/144) - Split file using all possible line delimiter instead of hard-coded "/n" and join lines back using the original delimiters ([@soulbeing](https://api.github.com/users/soulbeing))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v3.0.1...v3.1.0)
+
+## v3.0.1 - October 9th, 2016
+
+- [#139](https://github.com/kpdecker/jsdiff/pull/139) - Make README.md look nicer in npmjs.com ([@takenspc](https://api.github.com/users/takenspc))
+- [#135](https://github.com/kpdecker/jsdiff/issues/135) - parsePatch combines patches from multiple files into a single IUniDiff when there is no "Index" line ([@ramya-rao-a](https://api.github.com/users/ramya-rao-a))
+- [#124](https://github.com/kpdecker/jsdiff/issues/124) - IE7/IE8 failure since 2.0.0 ([@boneskull](https://api.github.com/users/boneskull))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v3.0.0...v3.0.1)
+
+## v3.0.0 - August 23rd, 2016
+
+- [#130](https://github.com/kpdecker/jsdiff/pull/130) - Add callback argument to applyPatches `patched` option ([@piranna](https://api.github.com/users/piranna))
+- [#120](https://github.com/kpdecker/jsdiff/pull/120) - Correctly handle file names containing spaces ([@adius](https://api.github.com/users/adius))
+- [#119](https://github.com/kpdecker/jsdiff/pull/119) - Do single reflow ([@wifiextender](https://api.github.com/users/wifiextender))
+- [#117](https://github.com/kpdecker/jsdiff/pull/117) - Make more usable with long strings. ([@abnbgist](https://api.github.com/users/abnbgist))
+
+Compatibility notes:
+
+- applyPatches patch callback now is async and requires the callback be called to continue operation
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v2.2.3...v3.0.0)
+
+## v2.2.3 - May 31st, 2016
+
+- [#118](https://github.com/kpdecker/jsdiff/pull/118) - Add a fix for applying 0-length destination patches ([@chaaz](https://api.github.com/users/chaaz))
+- [#115](https://github.com/kpdecker/jsdiff/pull/115) - Fixed grammar in README ([@krizalys](https://api.github.com/users/krizalys))
+- [#113](https://github.com/kpdecker/jsdiff/pull/113) - fix typo ([@vmazare](https://api.github.com/users/vmazare))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v2.2.2...v2.2.3)
+
+## v2.2.2 - March 13th, 2016
+
+- [#102](https://github.com/kpdecker/jsdiff/issues/102) - diffJson with dates, returns empty curly braces ([@dr-dimitru](https://api.github.com/users/dr-dimitru))
+- [#97](https://github.com/kpdecker/jsdiff/issues/97) - Whitespaces & diffWords ([@faiwer](https://api.github.com/users/faiwer))
+- [#92](https://github.com/kpdecker/jsdiff/pull/92) - Fixes typo in the readme ([@bg451](https://api.github.com/users/bg451))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v2.2.1...v2.2.2)
+
+## v2.2.1 - November 12th, 2015
+
+- [#89](https://github.com/kpdecker/jsdiff/pull/89) - add in display selector to readme ([@FranDias](https://api.github.com/users/FranDias))
+- [#88](https://github.com/kpdecker/jsdiff/pull/88) - Split diffs based on file headers instead of 'Index:' metadata ([@piranna](https://api.github.com/users/piranna))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v2.2.0...v2.2.1)
+
+## v2.2.0 - October 29th, 2015
+
+- [#80](https://github.com/kpdecker/jsdiff/pull/80) - Fix a typo: applyPath -> applyPatch ([@fluxxu](https://api.github.com/users/fluxxu))
+- [#83](https://github.com/kpdecker/jsdiff/pull/83) - Add basic fuzzy matching to applyPatch ([@piranna](https://github.com/piranna))
+  [Commits](https://github.com/kpdecker/jsdiff/compare/v2.2.0...v2.2.0)
+
+## v2.2.0 - October 29th, 2015
+
+- [#80](https://github.com/kpdecker/jsdiff/pull/80) - Fix a typo: applyPath -> applyPatch ([@fluxxu](https://api.github.com/users/fluxxu))
+- [#83](https://github.com/kpdecker/jsdiff/pull/83) - Add basic fuzzy matching to applyPatch ([@piranna](https://github.com/piranna))
+  [Commits](https://github.com/kpdecker/jsdiff/compare/v2.1.3...v2.2.0)
+
+## v2.1.3 - September 30th, 2015
+
+- [#78](https://github.com/kpdecker/jsdiff/pull/78) - fix: error throwing when apply patch to empty string ([@21paradox](https://api.github.com/users/21paradox))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v2.1.2...v2.1.3)
+
+## v2.1.2 - September 23rd, 2015
+
+- [#76](https://github.com/kpdecker/jsdiff/issues/76) - diff headers give error ([@piranna](https://api.github.com/users/piranna))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v2.1.1...v2.1.2)
+
+## v2.1.1 - September 9th, 2015
+
+- [#73](https://github.com/kpdecker/jsdiff/issues/73) - Is applyPatches() exposed in the API? ([@davidparsson](https://api.github.com/users/davidparsson))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v2.1.0...v2.1.1)
+
+## v2.1.0 - August 27th, 2015
+
+- [#72](https://github.com/kpdecker/jsdiff/issues/72) - Consider using options object API for flag permutations ([@kpdecker](https://api.github.com/users/kpdecker))
+- [#70](https://github.com/kpdecker/jsdiff/issues/70) - diffWords treats \n at the end as significant whitespace ([@nesQuick](https://api.github.com/users/nesQuick))
+- [#69](https://github.com/kpdecker/jsdiff/issues/69) - Missing count ([@wfalkwallace](https://api.github.com/users/wfalkwallace))
+- [#68](https://github.com/kpdecker/jsdiff/issues/68) - diffLines seems broken ([@wfalkwallace](https://api.github.com/users/wfalkwallace))
+- [#60](https://github.com/kpdecker/jsdiff/issues/60) - Support multiple diff hunks ([@piranna](https://api.github.com/users/piranna))
+- [#54](https://github.com/kpdecker/jsdiff/issues/54) - Feature Request: 3-way merge ([@mog422](https://api.github.com/users/mog422))
+- [#42](https://github.com/kpdecker/jsdiff/issues/42) - Fuzz factor for applyPatch ([@stuartpb](https://api.github.com/users/stuartpb))
+- Move whitespace ignore out of equals method - 542063c
+- Include source maps in babel output - 7f7ab21
+- Merge diff/line and diff/patch implementations - 1597705
+- Drop map utility method - 1ddc939
+- Documentation for parsePatch and applyPatches - 27c4b77
+
+Compatibility notes:
+
+- The undocumented ignoreWhitespace flag has been removed from the Diff equality check directly. This implementation may be copied to diff utilities if dependencies existed on this functionality.
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v2.0.2...v2.1.0)
+
+## v2.0.2 - August 8th, 2015
+
+- [#67](https://github.com/kpdecker/jsdiff/issues/67) - cannot require from npm module in node ([@commenthol](https://api.github.com/users/commenthol))
+- Convert to chai since we don’t support IE8 - a96bbad
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v2.0.1...v2.0.2)
+
+## v2.0.1 - August 7th, 2015
+
+- Add release build at proper step - 57542fd
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v2.0.0...v2.0.1)
+
+## v2.0.0 - August 7th, 2015
+
+- [#66](https://github.com/kpdecker/jsdiff/issues/66) - Add karma and sauce tests ([@kpdecker](https://api.github.com/users/kpdecker))
+- [#65](https://github.com/kpdecker/jsdiff/issues/65) - Create component repository for bower ([@kpdecker](https://api.github.com/users/kpdecker))
+- [#64](https://github.com/kpdecker/jsdiff/issues/64) - Automatically call removeEmpty for all tokenizer calls ([@kpdecker](https://api.github.com/users/kpdecker))
+- [#62](https://github.com/kpdecker/jsdiff/pull/62) - Allow access to structured object representation of patch data ([@bittrance](https://api.github.com/users/bittrance))
+- [#61](https://github.com/kpdecker/jsdiff/pull/61) - Use svg instead of png to get better image quality ([@PeterDaveHello](https://api.github.com/users/PeterDaveHello))
+- [#29](https://github.com/kpdecker/jsdiff/issues/29) - word tokenizer works only for 7 bit ascii ([@plasmagunman](https://api.github.com/users/plasmagunman))
+
+Compatibility notes:
+
+- `this.removeEmpty` is now called automatically for all instances. If this is not desired, this may be overridden on a per instance basis.
+- The library has been refactored to use some ES6 features. The external APIs should remain the same, but bower projects that directly referenced the repository will now have to point to the [components/jsdiff](https://github.com/components/jsdiff) repository.
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.4.0...v2.0.0)
+
+## v1.4.0 - May 6th, 2015
+
+- [#57](https://github.com/kpdecker/jsdiff/issues/57) - createPatch -> applyPatch failed. ([@mog422](https://api.github.com/users/mog422))
+- [#56](https://github.com/kpdecker/jsdiff/pull/56) - Two files patch ([@rgeissert](https://api.github.com/users/rgeissert))
+- [#14](https://github.com/kpdecker/jsdiff/issues/14) - Flip added and removed order? ([@jakesandlund](https://api.github.com/users/jakesandlund))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.3.2...v1.4.0)
+
+## v1.3.2 - March 30th, 2015
+
+- [#53](https://github.com/kpdecker/jsdiff/pull/53) - Updated README.MD with Bower installation instructions ([@ofbriggs](https://api.github.com/users/ofbriggs))
+- [#49](https://github.com/kpdecker/jsdiff/issues/49) - Cannot read property 'oldlines' of undefined ([@nwtn](https://api.github.com/users/nwtn))
+- [#44](https://github.com/kpdecker/jsdiff/issues/44) - invalid-meta jsdiff is missing "main" entry in bower.json
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.3.1...v1.3.2)
+
+## v1.3.1 - March 13th, 2015
+
+- [#52](https://github.com/kpdecker/jsdiff/pull/52) - Fix for #51 Wrong result of JsDiff.diffLines ([@felicienfrancois](https://api.github.com/users/felicienfrancois))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.3.0...v1.3.1)
+
+## v1.3.0 - March 2nd, 2015
+
+- [#47](https://github.com/kpdecker/jsdiff/pull/47) - Adding Diff Trimmed Lines ([@JamesGould123](https://api.github.com/users/JamesGould123))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.2.2...v1.3.0)
+
+## v1.2.2 - January 26th, 2015
+
+- [#45](https://github.com/kpdecker/jsdiff/pull/45) - Fix AMD module loading ([@pedrocarrico](https://api.github.com/users/pedrocarrico))
+- [#43](https://github.com/kpdecker/jsdiff/pull/43) - added a bower file ([@nbrustein](https://api.github.com/users/nbrustein))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.2.1...v1.2.2)
+
+## v1.2.1 - December 26th, 2014
+
+- [#41](https://github.com/kpdecker/jsdiff/pull/41) - change condition of using node export system. ([@ironhee](https://api.github.com/users/ironhee))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.2.0...v1.2.1)
+
+## v1.2.0 - November 29th, 2014
+
+- [#37](https://github.com/kpdecker/jsdiff/pull/37) - Add support for sentences. ([@vmariano](https://api.github.com/users/vmariano))
+- [#28](https://github.com/kpdecker/jsdiff/pull/28) - Implemented diffJson ([@papandreou](https://api.github.com/users/papandreou))
+- [#27](https://github.com/kpdecker/jsdiff/issues/27) - Slow to execute over diffs with a large number of changes ([@termi](https://api.github.com/users/termi))
+- Allow for optional async diffing - 19385b9
+- Fix diffChars implementation - eaa44ed
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.1.0...v1.2.0)
+
+## v1.1.0 - November 25th, 2014
+
+- [#33](https://github.com/kpdecker/jsdiff/pull/33) - AMD and global exports ([@ovcharik](https://api.github.com/users/ovcharik))
+- [#32](https://github.com/kpdecker/jsdiff/pull/32) - Add support for component ([@vmariano](https://api.github.com/users/vmariano))
+- [#31](https://github.com/kpdecker/jsdiff/pull/31) - Don't rely on Array.prototype.map ([@papandreou](https://api.github.com/users/papandreou))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.0.8...v1.1.0)
+
+## v1.0.8 - December 22nd, 2013
+
+- [#24](https://github.com/kpdecker/jsdiff/pull/24) - Handle windows newlines on non windows machines. ([@benogle](https://api.github.com/users/benogle))
+- [#23](https://github.com/kpdecker/jsdiff/pull/23) - Prettied up the API formatting a little, and added basic node and web examples ([@airportyh](https://api.github.com/users/airportyh))
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.0.7...v1.0.8)
+
+## v1.0.7 - September 11th, 2013
+
+- [#22](https://github.com/kpdecker/jsdiff/pull/22) - Added variant of WordDiff that doesn't ignore whitespace differences ([@papandreou](https://api.github.com/users/papandreou)
+
+- Add 0.10 to travis tests - 243a526
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.0.6...v1.0.7)
+
+## v1.0.6 - August 30th, 2013
+
+- [#19](https://github.com/kpdecker/jsdiff/pull/19) - Explicitly define contents of npm package ([@sindresorhus](https://api.github.com/users/sindresorhus)
+
+[Commits](https://github.com/kpdecker/jsdiff/compare/v1.0.5...v1.0.6)
diff --git a/node_modules/diff/runtime.js b/node_modules/diff/runtime.js
new file mode 100644
index 0000000..82ea7e6
--- /dev/null
+++ b/node_modules/diff/runtime.js
@@ -0,0 +1,3 @@
+require('@babel/register')({
+  ignore: ['lib', 'node_modules']
+});
diff --git a/node_modules/emoji-regex/LICENSE-MIT.txt b/node_modules/emoji-regex/LICENSE-MIT.txt
new file mode 100644
index 0000000..a41e0a7
--- /dev/null
+++ b/node_modules/emoji-regex/LICENSE-MIT.txt
@@ -0,0 +1,20 @@
+Copyright Mathias Bynens 
+
+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/node_modules/emoji-regex/README.md b/node_modules/emoji-regex/README.md
new file mode 100644
index 0000000..f10e173
--- /dev/null
+++ b/node_modules/emoji-regex/README.md
@@ -0,0 +1,73 @@
+# emoji-regex [![Build status](https://travis-ci.org/mathiasbynens/emoji-regex.svg?branch=master)](https://travis-ci.org/mathiasbynens/emoji-regex)
+
+_emoji-regex_ offers a regular expression to match all emoji symbols (including textual representations of emoji) as per the Unicode Standard.
+
+This repository contains a script that generates this regular expression based on [the data from Unicode v12](https://github.com/mathiasbynens/unicode-12.0.0). Because of this, the regular expression can easily be updated whenever new emoji are added to the Unicode standard.
+
+## Installation
+
+Via [npm](https://www.npmjs.com/):
+
+```bash
+npm install emoji-regex
+```
+
+In [Node.js](https://nodejs.org/):
+
+```js
+const emojiRegex = require('emoji-regex');
+// Note: because the regular expression has the global flag set, this module
+// exports a function that returns the regex rather than exporting the regular
+// expression itself, to make it impossible to (accidentally) mutate the
+// original regular expression.
+
+const text = `
+\u{231A}: ⌚ default emoji presentation character (Emoji_Presentation)
+\u{2194}\u{FE0F}: ↔️ default text presentation character rendered as emoji
+\u{1F469}: 👩 emoji modifier base (Emoji_Modifier_Base)
+\u{1F469}\u{1F3FF}: 👩🏿 emoji modifier base followed by a modifier
+`;
+
+const regex = emojiRegex();
+let match;
+while (match = regex.exec(text)) {
+  const emoji = match[0];
+  console.log(`Matched sequence ${ emoji } — code points: ${ [...emoji].length }`);
+}
+```
+
+Console output:
+
+```
+Matched sequence ⌚ — code points: 1
+Matched sequence ⌚ — code points: 1
+Matched sequence ↔️ — code points: 2
+Matched sequence ↔️ — code points: 2
+Matched sequence 👩 — code points: 1
+Matched sequence 👩 — code points: 1
+Matched sequence 👩🏿 — code points: 2
+Matched sequence 👩🏿 — code points: 2
+```
+
+To match emoji in their textual representation as well (i.e. emoji that are not `Emoji_Presentation` symbols and that aren’t forced to render as emoji by a variation selector), `require` the other regex:
+
+```js
+const emojiRegex = require('emoji-regex/text.js');
+```
+
+Additionally, in environments which support ES2015 Unicode escapes, you may `require` ES2015-style versions of the regexes:
+
+```js
+const emojiRegex = require('emoji-regex/es2015/index.js');
+const emojiRegexText = require('emoji-regex/es2015/text.js');
+```
+
+## Author
+
+| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |
+|---|
+| [Mathias Bynens](https://mathiasbynens.be/) |
+
+## License
+
+_emoji-regex_ is available under the [MIT](https://mths.be/mit) license.
diff --git a/node_modules/emoji-regex/es2015/index.js b/node_modules/emoji-regex/es2015/index.js
new file mode 100644
index 0000000..b4cf3dc
--- /dev/null
+++ b/node_modules/emoji-regex/es2015/index.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = () => {
+  // https://mths.be/emoji
+  return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F46B}-\u{1F46D}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\uFE0F|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\u{1F9D1}-\u{1F9DD}]/gu;
+};
diff --git a/node_modules/emoji-regex/es2015/text.js b/node_modules/emoji-regex/es2015/text.js
new file mode 100644
index 0000000..780309d
--- /dev/null
+++ b/node_modules/emoji-regex/es2015/text.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = () => {
+  // https://mths.be/emoji
+  return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F46B}-\u{1F46D}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\uFE0F?|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\u{1F9D1}-\u{1F9DD}]/gu;
+};
diff --git a/node_modules/emoji-regex/index.d.ts b/node_modules/emoji-regex/index.d.ts
new file mode 100644
index 0000000..1955b47
--- /dev/null
+++ b/node_modules/emoji-regex/index.d.ts
@@ -0,0 +1,23 @@
+declare module 'emoji-regex' {
+    function emojiRegex(): RegExp;
+
+    export default emojiRegex;
+}
+
+declare module 'emoji-regex/text' {
+    function emojiRegex(): RegExp;
+
+    export default emojiRegex;
+}
+
+declare module 'emoji-regex/es2015' {
+    function emojiRegex(): RegExp;
+
+    export default emojiRegex;
+}
+
+declare module 'emoji-regex/es2015/text' {
+    function emojiRegex(): RegExp;
+
+    export default emojiRegex;
+}
diff --git a/node_modules/emoji-regex/index.js b/node_modules/emoji-regex/index.js
new file mode 100644
index 0000000..d993a3a
--- /dev/null
+++ b/node_modules/emoji-regex/index.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function () {
+  // https://mths.be/emoji
+  return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
+};
diff --git a/node_modules/emoji-regex/package.json b/node_modules/emoji-regex/package.json
new file mode 100644
index 0000000..6d32352
--- /dev/null
+++ b/node_modules/emoji-regex/package.json
@@ -0,0 +1,50 @@
+{
+  "name": "emoji-regex",
+  "version": "8.0.0",
+  "description": "A regular expression to match all Emoji-only symbols as per the Unicode Standard.",
+  "homepage": "https://mths.be/emoji-regex",
+  "main": "index.js",
+  "types": "index.d.ts",
+  "keywords": [
+    "unicode",
+    "regex",
+    "regexp",
+    "regular expressions",
+    "code points",
+    "symbols",
+    "characters",
+    "emoji"
+  ],
+  "license": "MIT",
+  "author": {
+    "name": "Mathias Bynens",
+    "url": "https://mathiasbynens.be/"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/mathiasbynens/emoji-regex.git"
+  },
+  "bugs": "https://github.com/mathiasbynens/emoji-regex/issues",
+  "files": [
+    "LICENSE-MIT.txt",
+    "index.js",
+    "index.d.ts",
+    "text.js",
+    "es2015/index.js",
+    "es2015/text.js"
+  ],
+  "scripts": {
+    "build": "rm -rf -- es2015; babel src -d .; NODE_ENV=es2015 babel src -d ./es2015; node script/inject-sequences.js",
+    "test": "mocha",
+    "test:watch": "npm run test -- --watch"
+  },
+  "devDependencies": {
+    "@babel/cli": "^7.2.3",
+    "@babel/core": "^7.3.4",
+    "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
+    "@babel/preset-env": "^7.3.4",
+    "mocha": "^6.0.2",
+    "regexgen": "^1.3.0",
+    "unicode-12.0.0": "^0.7.9"
+  }
+}
diff --git a/node_modules/emoji-regex/text.js b/node_modules/emoji-regex/text.js
new file mode 100644
index 0000000..0a55ce2
--- /dev/null
+++ b/node_modules/emoji-regex/text.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function () {
+  // https://mths.be/emoji
+  return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F?|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
+};
diff --git a/node_modules/find-up/index.d.ts b/node_modules/find-up/index.d.ts
new file mode 100644
index 0000000..6746bb7
--- /dev/null
+++ b/node_modules/find-up/index.d.ts
@@ -0,0 +1,138 @@
+/* eslint-disable @typescript-eslint/unified-signatures */
+import {Options as LocatePathOptions} from 'locate-path';
+
+declare const stop: unique symbol;
+
+declare namespace findUp {
+	interface Options extends LocatePathOptions {}
+
+	type StopSymbol = typeof stop;
+
+	type Match = string | StopSymbol | undefined;
+}
+
+declare const findUp: {
+	sync: {
+		/**
+		Synchronously check if a path exists.
+
+		@param path - Path to the file or directory.
+		@returns Whether the path exists.
+
+		@example
+		```
+		import findUp = require('find-up');
+
+		console.log(findUp.sync.exists('/Users/sindresorhus/unicorn.png'));
+		//=> true
+		```
+		*/
+		exists: (path: string) => boolean;
+
+		/**
+		Synchronously find a file or directory by walking up parent directories.
+
+		@param name - Name of the file or directory to find. Can be multiple.
+		@returns The first path found (by respecting the order of `name`s) or `undefined` if none could be found.
+		*/
+		(name: string | readonly string[], options?: findUp.Options): string | undefined;
+
+		/**
+		Synchronously find a file or directory by walking up parent directories.
+
+		@param matcher - Called for each directory in the search. Return a path or `findUp.stop` to stop the search.
+		@returns The first path found or `undefined` if none could be found.
+
+		@example
+		```
+		import path = require('path');
+		import findUp = require('find-up');
+
+		console.log(findUp.sync(directory => {
+			const hasUnicorns = findUp.sync.exists(path.join(directory, 'unicorn.png'));
+			return hasUnicorns && directory;
+		}, {type: 'directory'}));
+		//=> '/Users/sindresorhus'
+		```
+		*/
+		(matcher: (directory: string) => findUp.Match, options?: findUp.Options): string | undefined;
+	};
+
+	/**
+	Check if a path exists.
+
+	@param path - Path to a file or directory.
+	@returns Whether the path exists.
+
+	@example
+	```
+	import findUp = require('find-up');
+
+	(async () => {
+		console.log(await findUp.exists('/Users/sindresorhus/unicorn.png'));
+		//=> true
+	})();
+	```
+	*/
+	exists: (path: string) => Promise;
+
+	/**
+	Return this in a `matcher` function to stop the search and force `findUp` to immediately return `undefined`.
+	*/
+	readonly stop: findUp.StopSymbol;
+
+	/**
+	Find a file or directory by walking up parent directories.
+
+	@param name - Name of the file or directory to find. Can be multiple.
+	@returns The first path found (by respecting the order of `name`s) or `undefined` if none could be found.
+
+	@example
+	```
+	// /
+	// └── Users
+	//     └── sindresorhus
+	//         ├── unicorn.png
+	//         └── foo
+	//             └── bar
+	//                 ├── baz
+	//                 └── example.js
+
+	// example.js
+	import findUp = require('find-up');
+
+	(async () => {
+		console.log(await findUp('unicorn.png'));
+		//=> '/Users/sindresorhus/unicorn.png'
+
+		console.log(await findUp(['rainbow.png', 'unicorn.png']));
+		//=> '/Users/sindresorhus/unicorn.png'
+	})();
+	```
+	*/
+	(name: string | readonly string[], options?: findUp.Options): Promise;
+
+	/**
+	Find a file or directory by walking up parent directories.
+
+	@param matcher - Called for each directory in the search. Return a path or `findUp.stop` to stop the search.
+	@returns The first path found or `undefined` if none could be found.
+
+	@example
+	```
+	import path = require('path');
+	import findUp = require('find-up');
+
+	(async () => {
+		console.log(await findUp(async directory => {
+			const hasUnicorns = await findUp.exists(path.join(directory, 'unicorn.png'));
+			return hasUnicorns && directory;
+		}, {type: 'directory'}));
+		//=> '/Users/sindresorhus'
+	})();
+	```
+	*/
+	(matcher: (directory: string) => (findUp.Match | Promise), options?: findUp.Options): Promise;
+};
+
+export = findUp;
diff --git a/node_modules/find-up/index.js b/node_modules/find-up/index.js
new file mode 100644
index 0000000..ce564e5
--- /dev/null
+++ b/node_modules/find-up/index.js
@@ -0,0 +1,89 @@
+'use strict';
+const path = require('path');
+const locatePath = require('locate-path');
+const pathExists = require('path-exists');
+
+const stop = Symbol('findUp.stop');
+
+module.exports = async (name, options = {}) => {
+	let directory = path.resolve(options.cwd || '');
+	const {root} = path.parse(directory);
+	const paths = [].concat(name);
+
+	const runMatcher = async locateOptions => {
+		if (typeof name !== 'function') {
+			return locatePath(paths, locateOptions);
+		}
+
+		const foundPath = await name(locateOptions.cwd);
+		if (typeof foundPath === 'string') {
+			return locatePath([foundPath], locateOptions);
+		}
+
+		return foundPath;
+	};
+
+	// eslint-disable-next-line no-constant-condition
+	while (true) {
+		// eslint-disable-next-line no-await-in-loop
+		const foundPath = await runMatcher({...options, cwd: directory});
+
+		if (foundPath === stop) {
+			return;
+		}
+
+		if (foundPath) {
+			return path.resolve(directory, foundPath);
+		}
+
+		if (directory === root) {
+			return;
+		}
+
+		directory = path.dirname(directory);
+	}
+};
+
+module.exports.sync = (name, options = {}) => {
+	let directory = path.resolve(options.cwd || '');
+	const {root} = path.parse(directory);
+	const paths = [].concat(name);
+
+	const runMatcher = locateOptions => {
+		if (typeof name !== 'function') {
+			return locatePath.sync(paths, locateOptions);
+		}
+
+		const foundPath = name(locateOptions.cwd);
+		if (typeof foundPath === 'string') {
+			return locatePath.sync([foundPath], locateOptions);
+		}
+
+		return foundPath;
+	};
+
+	// eslint-disable-next-line no-constant-condition
+	while (true) {
+		const foundPath = runMatcher({...options, cwd: directory});
+
+		if (foundPath === stop) {
+			return;
+		}
+
+		if (foundPath) {
+			return path.resolve(directory, foundPath);
+		}
+
+		if (directory === root) {
+			return;
+		}
+
+		directory = path.dirname(directory);
+	}
+};
+
+module.exports.exists = pathExists;
+
+module.exports.sync.exists = pathExists.sync;
+
+module.exports.stop = stop;
diff --git a/node_modules/find-up/license b/node_modules/find-up/license
new file mode 100644
index 0000000..fa7ceba
--- /dev/null
+++ b/node_modules/find-up/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus  (https://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/node_modules/find-up/package.json b/node_modules/find-up/package.json
new file mode 100644
index 0000000..56db6dd
--- /dev/null
+++ b/node_modules/find-up/package.json
@@ -0,0 +1,54 @@
+{
+	"name": "find-up",
+	"version": "5.0.0",
+	"description": "Find a file or directory by walking up parent directories",
+	"license": "MIT",
+	"repository": "sindresorhus/find-up",
+	"funding": "https://github.com/sponsors/sindresorhus",
+	"author": {
+		"name": "Sindre Sorhus",
+		"email": "sindresorhus@gmail.com",
+		"url": "https://sindresorhus.com"
+	},
+	"engines": {
+		"node": ">=10"
+	},
+	"scripts": {
+		"test": "xo && ava && tsd"
+	},
+	"files": [
+		"index.js",
+		"index.d.ts"
+	],
+	"keywords": [
+		"find",
+		"up",
+		"find-up",
+		"findup",
+		"look-up",
+		"look",
+		"file",
+		"search",
+		"match",
+		"package",
+		"resolve",
+		"parent",
+		"parents",
+		"folder",
+		"directory",
+		"walk",
+		"walking",
+		"path"
+	],
+	"dependencies": {
+		"locate-path": "^6.0.0",
+		"path-exists": "^4.0.0"
+	},
+	"devDependencies": {
+		"ava": "^2.1.0",
+		"is-path-inside": "^2.1.0",
+		"tempy": "^0.6.0",
+		"tsd": "^0.13.1",
+		"xo": "^0.33.0"
+	}
+}
diff --git a/node_modules/find-up/readme.md b/node_modules/find-up/readme.md
new file mode 100644
index 0000000..7ad908a
--- /dev/null
+++ b/node_modules/find-up/readme.md
@@ -0,0 +1,151 @@
+# find-up [![Build Status](https://travis-ci.com/sindresorhus/find-up.svg?branch=master)](https://travis-ci.com/github/sindresorhus/find-up)
+
+> Find a file or directory by walking up parent directories
+
+## Install
+
+```
+$ npm install find-up
+```
+
+## Usage
+
+```
+/
+└── Users
+    └── sindresorhus
+        ├── unicorn.png
+        └── foo
+            └── bar
+                ├── baz
+                └── example.js
+```
+
+`example.js`
+
+```js
+const path = require('path');
+const findUp = require('find-up');
+
+(async () => {
+	console.log(await findUp('unicorn.png'));
+	//=> '/Users/sindresorhus/unicorn.png'
+
+	console.log(await findUp(['rainbow.png', 'unicorn.png']));
+	//=> '/Users/sindresorhus/unicorn.png'
+
+	console.log(await findUp(async directory => {
+		const hasUnicorns = await findUp.exists(path.join(directory, 'unicorn.png'));
+		return hasUnicorns && directory;
+	}, {type: 'directory'}));
+	//=> '/Users/sindresorhus'
+})();
+```
+
+## API
+
+### findUp(name, options?)
+### findUp(matcher, options?)
+
+Returns a `Promise` for either the path or `undefined` if it couldn't be found.
+
+### findUp([...name], options?)
+
+Returns a `Promise` for either the first path found (by respecting the order of the array) or `undefined` if none could be found.
+
+### findUp.sync(name, options?)
+### findUp.sync(matcher, options?)
+
+Returns a path or `undefined` if it couldn't be found.
+
+### findUp.sync([...name], options?)
+
+Returns the first path found (by respecting the order of the array) or `undefined` if none could be found.
+
+#### name
+
+Type: `string`
+
+Name of the file or directory to find.
+
+#### matcher
+
+Type: `Function`
+
+A function that will be called with each directory until it returns a `string` with the path, which stops the search, or the root directory has been reached and nothing was found. Useful if you want to match files with certain patterns, set of permissions, or other advanced use-cases.
+
+When using async mode, the `matcher` may optionally be an async or promise-returning function that returns the path.
+
+#### options
+
+Type: `object`
+
+##### cwd
+
+Type: `string`\
+Default: `process.cwd()`
+
+Directory to start from.
+
+##### type
+
+Type: `string`\
+Default: `'file'`\
+Values: `'file'` `'directory'`
+
+The type of paths that can match.
+
+##### allowSymlinks
+
+Type: `boolean`\
+Default: `true`
+
+Allow symbolic links to match if they point to the chosen path type.
+
+### findUp.exists(path)
+
+Returns a `Promise` of whether the path exists.
+
+### findUp.sync.exists(path)
+
+Returns a `boolean` of whether the path exists.
+
+#### path
+
+Type: `string`
+
+Path to a file or directory.
+
+### findUp.stop
+
+A [`Symbol`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) that can be returned by a `matcher` function to stop the search and cause `findUp` to immediately return `undefined`. Useful as a performance optimization in case the current working directory is deeply nested in the filesystem.
+
+```js
+const path = require('path');
+const findUp = require('find-up');
+
+(async () => {
+	await findUp(directory => {
+		return path.basename(directory) === 'work' ? findUp.stop : 'logo.png';
+	});
+})();
+```
+
+## Related
+
+- [find-up-cli](https://github.com/sindresorhus/find-up-cli) - CLI for this module
+- [pkg-up](https://github.com/sindresorhus/pkg-up) - Find the closest package.json file
+- [pkg-dir](https://github.com/sindresorhus/pkg-dir) - Find the root directory of an npm package
+- [resolve-from](https://github.com/sindresorhus/resolve-from) - Resolve the path of a module like `require.resolve()` but from a given path
+
+---
+
+
+ + Get professional support for 'find-up' with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/flat/.travis.yml b/node_modules/flat/.travis.yml new file mode 100644 index 0000000..f35768a --- /dev/null +++ b/node_modules/flat/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - "6" + - "7" + - "8" + - "10" + - "12" + - "14" diff --git a/node_modules/flat/LICENSE b/node_modules/flat/LICENSE new file mode 100644 index 0000000..d99b655 --- /dev/null +++ b/node_modules/flat/LICENSE @@ -0,0 +1,12 @@ +Copyright (c) 2014, Hugh Kennedy +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/flat/README.md b/node_modules/flat/README.md new file mode 100644 index 0000000..a036a9f --- /dev/null +++ b/node_modules/flat/README.md @@ -0,0 +1,236 @@ +# flat [![Build Status](https://secure.travis-ci.org/hughsk/flat.png?branch=master)](http://travis-ci.org/hughsk/flat) + +Take a nested Javascript object and flatten it, or unflatten an object with +delimited keys. + +## Installation + +``` bash +$ npm install flat +``` + +## Methods + +### flatten(original, options) + +Flattens the object - it'll return an object one level deep, regardless of how +nested the original object was: + +``` javascript +var flatten = require('flat') + +flatten({ + key1: { + keyA: 'valueI' + }, + key2: { + keyB: 'valueII' + }, + key3: { a: { b: { c: 2 } } } +}) + +// { +// 'key1.keyA': 'valueI', +// 'key2.keyB': 'valueII', +// 'key3.a.b.c': 2 +// } +``` + +### unflatten(original, options) + +Flattening is reversible too, you can call `flatten.unflatten()` on an object: + +``` javascript +var unflatten = require('flat').unflatten + +unflatten({ + 'three.levels.deep': 42, + 'three.levels': { + nested: true + } +}) + +// { +// three: { +// levels: { +// deep: 42, +// nested: true +// } +// } +// } +``` + +## Options + +### delimiter + +Use a custom delimiter for (un)flattening your objects, instead of `.`. + +### safe + +When enabled, both `flat` and `unflatten` will preserve arrays and their +contents. This is disabled by default. + +``` javascript +var flatten = require('flat') + +flatten({ + this: [ + { contains: 'arrays' }, + { preserving: { + them: 'for you' + }} + ] +}, { + safe: true +}) + +// { +// 'this': [ +// { contains: 'arrays' }, +// { preserving: { +// them: 'for you' +// }} +// ] +// } +``` + +### object + +When enabled, arrays will not be created automatically when calling unflatten, like so: + +``` javascript +unflatten({ + 'hello.you.0': 'ipsum', + 'hello.you.1': 'lorem', + 'hello.other.world': 'foo' +}, { object: true }) + +// hello: { +// you: { +// 0: 'ipsum', +// 1: 'lorem', +// }, +// other: { world: 'foo' } +// } +``` + +### overwrite + +When enabled, existing keys in the unflattened object may be overwritten if they cannot hold a newly encountered nested value: + +```javascript +unflatten({ + 'TRAVIS': 'true', + 'TRAVIS.DIR': '/home/travis/build/kvz/environmental' +}, { overwrite: true }) + +// TRAVIS: { +// DIR: '/home/travis/build/kvz/environmental' +// } +``` + +Without `overwrite` set to `true`, the `TRAVIS` key would already have been set to a string, thus could not accept the nested `DIR` element. + +This only makes sense on ordered arrays, and since we're overwriting data, should be used with care. + + +### maxDepth + +Maximum number of nested objects to flatten. + +``` javascript +var flatten = require('flat') + +flatten({ + key1: { + keyA: 'valueI' + }, + key2: { + keyB: 'valueII' + }, + key3: { a: { b: { c: 2 } } } +}, { maxDepth: 2 }) + +// { +// 'key1.keyA': 'valueI', +// 'key2.keyB': 'valueII', +// 'key3.a': { b: { c: 2 } } +// } +``` + +### transformKey + +Transform each part of a flat key before and after flattening. + +```javascript +var flatten = require('flat') +var unflatten = require('flat').unflatten + +flatten({ + key1: { + keyA: 'valueI' + }, + key2: { + keyB: 'valueII' + }, + key3: { a: { b: { c: 2 } } } +}, { + transformKey: function(key){ + return '__' + key + '__'; + } +}) + +// { +// '__key1__.__keyA__': 'valueI', +// '__key2__.__keyB__': 'valueII', +// '__key3__.__a__.__b__.__c__': 2 +// } + +unflatten({ + '__key1__.__keyA__': 'valueI', + '__key2__.__keyB__': 'valueII', + '__key3__.__a__.__b__.__c__': 2 +}, { + transformKey: function(key){ + return key.substring(2, key.length - 2) + } +}) + +// { +// key1: { +// keyA: 'valueI' +// }, +// key2: { +// keyB: 'valueII' +// }, +// key3: { a: { b: { c: 2 } } } +// } +``` + +## Command Line Usage + +`flat` is also available as a command line tool. You can run it with +[`npx`](https://ghub.io/npx): + +```sh +npx flat foo.json +``` + +Or install the `flat` command globally: + +```sh +npm i -g flat && flat foo.json +``` + +Accepts a filename as an argument: + +```sh +flat foo.json +``` + +Also accepts JSON on stdin: + +```sh +cat foo.json | flat +``` diff --git a/node_modules/flat/cli.js b/node_modules/flat/cli.js new file mode 100644 index 0000000..e4f96b3 --- /dev/null +++ b/node_modules/flat/cli.js @@ -0,0 +1,42 @@ +#!/usr/bin/env node + +const fs = require('fs') +const path = require('path') +const readline = require('readline') + +const flat = require('./index') + +const filepath = process.argv.slice(2)[0] +if (filepath) { + // Read from file + const file = path.resolve(process.cwd(), filepath) + fs.accessSync(file, fs.constants.R_OK) // allow to throw if not readable + out(require(file)) +} else if (process.stdin.isTTY) { + usage(0) +} else { + // Read from newline-delimited STDIN + const lines = [] + readline.createInterface({ + input: process.stdin, + output: process.stdout, + terminal: false + }) + .on('line', line => lines.push(line)) + .on('close', () => out(JSON.parse(lines.join('\n')))) +} + +function out (data) { + process.stdout.write(JSON.stringify(flat(data), null, 2)) +} + +function usage (code) { + console.log(` +Usage: + +flat foo.json +cat foo.json | flat +`) + + process.exit(code || 0) +} diff --git a/node_modules/flat/index.js b/node_modules/flat/index.js new file mode 100644 index 0000000..2a5d7ca --- /dev/null +++ b/node_modules/flat/index.js @@ -0,0 +1,158 @@ +module.exports = flatten +flatten.flatten = flatten +flatten.unflatten = unflatten + +function isBuffer (obj) { + return obj && + obj.constructor && + (typeof obj.constructor.isBuffer === 'function') && + obj.constructor.isBuffer(obj) +} + +function keyIdentity (key) { + return key +} + +function flatten (target, opts) { + opts = opts || {} + + const delimiter = opts.delimiter || '.' + const maxDepth = opts.maxDepth + const transformKey = opts.transformKey || keyIdentity + const output = {} + + function step (object, prev, currentDepth) { + currentDepth = currentDepth || 1 + Object.keys(object).forEach(function (key) { + const value = object[key] + const isarray = opts.safe && Array.isArray(value) + const type = Object.prototype.toString.call(value) + const isbuffer = isBuffer(value) + const isobject = ( + type === '[object Object]' || + type === '[object Array]' + ) + + const newKey = prev + ? prev + delimiter + transformKey(key) + : transformKey(key) + + if (!isarray && !isbuffer && isobject && Object.keys(value).length && + (!opts.maxDepth || currentDepth < maxDepth)) { + return step(value, newKey, currentDepth + 1) + } + + output[newKey] = value + }) + } + + step(target) + + return output +} + +function unflatten (target, opts) { + opts = opts || {} + + const delimiter = opts.delimiter || '.' + const overwrite = opts.overwrite || false + const transformKey = opts.transformKey || keyIdentity + const result = {} + + const isbuffer = isBuffer(target) + if (isbuffer || Object.prototype.toString.call(target) !== '[object Object]') { + return target + } + + // safely ensure that the key is + // an integer. + function getkey (key) { + const parsedKey = Number(key) + + return ( + isNaN(parsedKey) || + key.indexOf('.') !== -1 || + opts.object + ) ? key + : parsedKey + } + + function addKeys (keyPrefix, recipient, target) { + return Object.keys(target).reduce(function (result, key) { + result[keyPrefix + delimiter + key] = target[key] + + return result + }, recipient) + } + + function isEmpty (val) { + const type = Object.prototype.toString.call(val) + const isArray = type === '[object Array]' + const isObject = type === '[object Object]' + + if (!val) { + return true + } else if (isArray) { + return !val.length + } else if (isObject) { + return !Object.keys(val).length + } + } + + target = Object.keys(target).reduce(function (result, key) { + const type = Object.prototype.toString.call(target[key]) + const isObject = (type === '[object Object]' || type === '[object Array]') + if (!isObject || isEmpty(target[key])) { + result[key] = target[key] + return result + } else { + return addKeys( + key, + result, + flatten(target[key], opts) + ) + } + }, {}) + + Object.keys(target).forEach(function (key) { + const split = key.split(delimiter).map(transformKey) + let key1 = getkey(split.shift()) + let key2 = getkey(split[0]) + let recipient = result + + while (key2 !== undefined) { + if (key1 === '__proto__') { + return + } + + const type = Object.prototype.toString.call(recipient[key1]) + const isobject = ( + type === '[object Object]' || + type === '[object Array]' + ) + + // do not write over falsey, non-undefined values if overwrite is false + if (!overwrite && !isobject && typeof recipient[key1] !== 'undefined') { + return + } + + if ((overwrite && !isobject) || (!overwrite && recipient[key1] == null)) { + recipient[key1] = ( + typeof key2 === 'number' && + !opts.object ? [] : {} + ) + } + + recipient = recipient[key1] + if (split.length > 0) { + key1 = getkey(split.shift()) + key2 = getkey(split[0]) + } + } + + // unflatten again for 'messy objects' + recipient[key1] = unflatten(target[key], opts) + }) + + return result +} diff --git a/node_modules/flat/package.json b/node_modules/flat/package.json new file mode 100644 index 0000000..c2fbc96 --- /dev/null +++ b/node_modules/flat/package.json @@ -0,0 +1,37 @@ +{ + "name": "flat", + "version": "5.0.2", + "main": "index.js", + "bin": "cli.js", + "scripts": { + "test": "mocha -u tdd --reporter spec && standard cli.js index.js test/index.js" + }, + "license": "BSD-3-Clause", + "description": "Take a nested Javascript object and flatten it, or unflatten an object with delimited keys", + "devDependencies": { + "mocha": "~8.1.1", + "standard": "^14.3.4" + }, + "directories": { + "test": "test" + }, + "dependencies": {}, + "repository": { + "type": "git", + "url": "git://github.com/hughsk/flat.git" + }, + "keywords": [ + "flat", + "json", + "flatten", + "unflatten", + "split", + "object", + "nested" + ], + "author": "Hugh Kennedy (http://hughskennedy.com)", + "bugs": { + "url": "https://github.com/hughsk/flat/issues" + }, + "homepage": "https://github.com/hughsk/flat" +} diff --git a/node_modules/flat/test/test.js b/node_modules/flat/test/test.js new file mode 100644 index 0000000..7f4ee3d --- /dev/null +++ b/node_modules/flat/test/test.js @@ -0,0 +1,643 @@ +/* globals suite test */ + +const assert = require('assert') +const path = require('path') +const { exec } = require('child_process') +const pkg = require('../package.json') +const flat = require('../index') + +const flatten = flat.flatten +const unflatten = flat.unflatten + +const primitives = { + String: 'good morning', + Number: 1234.99, + Boolean: true, + Date: new Date(), + null: null, + undefined: undefined +} + +suite('Flatten Primitives', function () { + Object.keys(primitives).forEach(function (key) { + const value = primitives[key] + + test(key, function () { + assert.deepStrictEqual(flatten({ + hello: { + world: value + } + }), { + 'hello.world': value + }) + }) + }) +}) + +suite('Unflatten Primitives', function () { + Object.keys(primitives).forEach(function (key) { + const value = primitives[key] + + test(key, function () { + assert.deepStrictEqual(unflatten({ + 'hello.world': value + }), { + hello: { + world: value + } + }) + }) + }) +}) + +suite('Flatten', function () { + test('Nested once', function () { + assert.deepStrictEqual(flatten({ + hello: { + world: 'good morning' + } + }), { + 'hello.world': 'good morning' + }) + }) + + test('Nested twice', function () { + assert.deepStrictEqual(flatten({ + hello: { + world: { + again: 'good morning' + } + } + }), { + 'hello.world.again': 'good morning' + }) + }) + + test('Multiple Keys', function () { + assert.deepStrictEqual(flatten({ + hello: { + lorem: { + ipsum: 'again', + dolor: 'sit' + } + }, + world: { + lorem: { + ipsum: 'again', + dolor: 'sit' + } + } + }), { + 'hello.lorem.ipsum': 'again', + 'hello.lorem.dolor': 'sit', + 'world.lorem.ipsum': 'again', + 'world.lorem.dolor': 'sit' + }) + }) + + test('Custom Delimiter', function () { + assert.deepStrictEqual(flatten({ + hello: { + world: { + again: 'good morning' + } + } + }, { + delimiter: ':' + }), { + 'hello:world:again': 'good morning' + }) + }) + + test('Empty Objects', function () { + assert.deepStrictEqual(flatten({ + hello: { + empty: { + nested: {} + } + } + }), { + 'hello.empty.nested': {} + }) + }) + + if (typeof Buffer !== 'undefined') { + test('Buffer', function () { + assert.deepStrictEqual(flatten({ + hello: { + empty: { + nested: Buffer.from('test') + } + } + }), { + 'hello.empty.nested': Buffer.from('test') + }) + }) + } + + if (typeof Uint8Array !== 'undefined') { + test('typed arrays', function () { + assert.deepStrictEqual(flatten({ + hello: { + empty: { + nested: new Uint8Array([1, 2, 3, 4]) + } + } + }), { + 'hello.empty.nested': new Uint8Array([1, 2, 3, 4]) + }) + }) + } + + test('Custom Depth', function () { + assert.deepStrictEqual(flatten({ + hello: { + world: { + again: 'good morning' + } + }, + lorem: { + ipsum: { + dolor: 'good evening' + } + } + }, { + maxDepth: 2 + }), { + 'hello.world': { + again: 'good morning' + }, + 'lorem.ipsum': { + dolor: 'good evening' + } + }) + }) + + test('Transformed Keys', function () { + assert.deepStrictEqual(flatten({ + hello: { + world: { + again: 'good morning' + } + }, + lorem: { + ipsum: { + dolor: 'good evening' + } + } + }, { + transformKey: function (key) { + return '__' + key + '__' + } + }), { + '__hello__.__world__.__again__': 'good morning', + '__lorem__.__ipsum__.__dolor__': 'good evening' + }) + }) + + test('Should keep number in the left when object', function () { + assert.deepStrictEqual(flatten({ + hello: { + '0200': 'world', + '0500': 'darkness my old friend' + } + }), { + 'hello.0200': 'world', + 'hello.0500': 'darkness my old friend' + }) + }) +}) + +suite('Unflatten', function () { + test('Nested once', function () { + assert.deepStrictEqual({ + hello: { + world: 'good morning' + } + }, unflatten({ + 'hello.world': 'good morning' + })) + }) + + test('Nested twice', function () { + assert.deepStrictEqual({ + hello: { + world: { + again: 'good morning' + } + } + }, unflatten({ + 'hello.world.again': 'good morning' + })) + }) + + test('Multiple Keys', function () { + assert.deepStrictEqual({ + hello: { + lorem: { + ipsum: 'again', + dolor: 'sit' + } + }, + world: { + greet: 'hello', + lorem: { + ipsum: 'again', + dolor: 'sit' + } + } + }, unflatten({ + 'hello.lorem.ipsum': 'again', + 'hello.lorem.dolor': 'sit', + 'world.lorem.ipsum': 'again', + 'world.lorem.dolor': 'sit', + world: { greet: 'hello' } + })) + }) + + test('nested objects do not clobber each other when a.b inserted before a', function () { + const x = {} + x['foo.bar'] = { t: 123 } + x.foo = { p: 333 } + assert.deepStrictEqual(unflatten(x), { + foo: { + bar: { + t: 123 + }, + p: 333 + } + }) + }) + + test('Custom Delimiter', function () { + assert.deepStrictEqual({ + hello: { + world: { + again: 'good morning' + } + } + }, unflatten({ + 'hello world again': 'good morning' + }, { + delimiter: ' ' + })) + }) + + test('Overwrite', function () { + assert.deepStrictEqual({ + travis: { + build: { + dir: '/home/travis/build/kvz/environmental' + } + } + }, unflatten({ + travis: 'true', + travis_build_dir: '/home/travis/build/kvz/environmental' + }, { + delimiter: '_', + overwrite: true + })) + }) + + test('Transformed Keys', function () { + assert.deepStrictEqual(unflatten({ + '__hello__.__world__.__again__': 'good morning', + '__lorem__.__ipsum__.__dolor__': 'good evening' + }, { + transformKey: function (key) { + return key.substring(2, key.length - 2) + } + }), { + hello: { + world: { + again: 'good morning' + } + }, + lorem: { + ipsum: { + dolor: 'good evening' + } + } + }) + }) + + test('Messy', function () { + assert.deepStrictEqual({ + hello: { world: 'again' }, + lorem: { ipsum: 'another' }, + good: { + morning: { + hash: { + key: { + nested: { + deep: { + and: { + even: { + deeper: { still: 'hello' } + } + } + } + } + } + }, + again: { testing: { this: 'out' } } + } + } + }, unflatten({ + 'hello.world': 'again', + 'lorem.ipsum': 'another', + 'good.morning': { + 'hash.key': { + 'nested.deep': { + 'and.even.deeper.still': 'hello' + } + } + }, + 'good.morning.again': { + 'testing.this': 'out' + } + })) + }) + + suite('Overwrite + non-object values in key positions', function () { + test('non-object keys + overwrite should be overwritten', function () { + assert.deepStrictEqual(flat.unflatten({ a: null, 'a.b': 'c' }, { overwrite: true }), { a: { b: 'c' } }) + assert.deepStrictEqual(flat.unflatten({ a: 0, 'a.b': 'c' }, { overwrite: true }), { a: { b: 'c' } }) + assert.deepStrictEqual(flat.unflatten({ a: 1, 'a.b': 'c' }, { overwrite: true }), { a: { b: 'c' } }) + assert.deepStrictEqual(flat.unflatten({ a: '', 'a.b': 'c' }, { overwrite: true }), { a: { b: 'c' } }) + }) + + test('overwrite value should not affect undefined keys', function () { + assert.deepStrictEqual(flat.unflatten({ a: undefined, 'a.b': 'c' }, { overwrite: true }), { a: { b: 'c' } }) + assert.deepStrictEqual(flat.unflatten({ a: undefined, 'a.b': 'c' }, { overwrite: false }), { a: { b: 'c' } }) + }) + + test('if no overwrite, should ignore nested values under non-object key', function () { + assert.deepStrictEqual(flat.unflatten({ a: null, 'a.b': 'c' }), { a: null }) + assert.deepStrictEqual(flat.unflatten({ a: 0, 'a.b': 'c' }), { a: 0 }) + assert.deepStrictEqual(flat.unflatten({ a: 1, 'a.b': 'c' }), { a: 1 }) + assert.deepStrictEqual(flat.unflatten({ a: '', 'a.b': 'c' }), { a: '' }) + }) + }) + + suite('.safe', function () { + test('Should protect arrays when true', function () { + assert.deepStrictEqual(flatten({ + hello: [ + { world: { again: 'foo' } }, + { lorem: 'ipsum' } + ], + another: { + nested: [{ array: { too: 'deep' } }] + }, + lorem: { + ipsum: 'whoop' + } + }, { + safe: true + }), { + hello: [ + { world: { again: 'foo' } }, + { lorem: 'ipsum' } + ], + 'lorem.ipsum': 'whoop', + 'another.nested': [{ array: { too: 'deep' } }] + }) + }) + + test('Should not protect arrays when false', function () { + assert.deepStrictEqual(flatten({ + hello: [ + { world: { again: 'foo' } }, + { lorem: 'ipsum' } + ] + }, { + safe: false + }), { + 'hello.0.world.again': 'foo', + 'hello.1.lorem': 'ipsum' + }) + }) + + test('Empty objects should not be removed', function () { + assert.deepStrictEqual(unflatten({ + foo: [], + bar: {} + }), { foo: [], bar: {} }) + }) + }) + + suite('.object', function () { + test('Should create object instead of array when true', function () { + const unflattened = unflatten({ + 'hello.you.0': 'ipsum', + 'hello.you.1': 'lorem', + 'hello.other.world': 'foo' + }, { + object: true + }) + assert.deepStrictEqual({ + hello: { + you: { + 0: 'ipsum', + 1: 'lorem' + }, + other: { world: 'foo' } + } + }, unflattened) + assert(!Array.isArray(unflattened.hello.you)) + }) + + test('Should create object instead of array when nested', function () { + const unflattened = unflatten({ + hello: { + 'you.0': 'ipsum', + 'you.1': 'lorem', + 'other.world': 'foo' + } + }, { + object: true + }) + assert.deepStrictEqual({ + hello: { + you: { + 0: 'ipsum', + 1: 'lorem' + }, + other: { world: 'foo' } + } + }, unflattened) + assert(!Array.isArray(unflattened.hello.you)) + }) + + test('Should keep the zero in the left when object is true', function () { + const unflattened = unflatten({ + 'hello.0200': 'world', + 'hello.0500': 'darkness my old friend' + }, { + object: true + }) + + assert.deepStrictEqual({ + hello: { + '0200': 'world', + '0500': 'darkness my old friend' + } + }, unflattened) + }) + + test('Should not create object when false', function () { + const unflattened = unflatten({ + 'hello.you.0': 'ipsum', + 'hello.you.1': 'lorem', + 'hello.other.world': 'foo' + }, { + object: false + }) + assert.deepStrictEqual({ + hello: { + you: ['ipsum', 'lorem'], + other: { world: 'foo' } + } + }, unflattened) + assert(Array.isArray(unflattened.hello.you)) + }) + }) + + if (typeof Buffer !== 'undefined') { + test('Buffer', function () { + assert.deepStrictEqual(unflatten({ + 'hello.empty.nested': Buffer.from('test') + }), { + hello: { + empty: { + nested: Buffer.from('test') + } + } + }) + }) + } + + if (typeof Uint8Array !== 'undefined') { + test('typed arrays', function () { + assert.deepStrictEqual(unflatten({ + 'hello.empty.nested': new Uint8Array([1, 2, 3, 4]) + }), { + hello: { + empty: { + nested: new Uint8Array([1, 2, 3, 4]) + } + } + }) + }) + } + + test('should not pollute prototype', function () { + unflatten({ + '__proto__.polluted': true + }) + unflatten({ + 'prefix.__proto__.polluted': true + }) + unflatten({ + 'prefix.0.__proto__.polluted': true + }) + + assert.notStrictEqual({}.polluted, true) + }) +}) + +suite('Arrays', function () { + test('Should be able to flatten arrays properly', function () { + assert.deepStrictEqual({ + 'a.0': 'foo', + 'a.1': 'bar' + }, flatten({ + a: ['foo', 'bar'] + })) + }) + + test('Should be able to revert and reverse array serialization via unflatten', function () { + assert.deepStrictEqual({ + a: ['foo', 'bar'] + }, unflatten({ + 'a.0': 'foo', + 'a.1': 'bar' + })) + }) + + test('Array typed objects should be restored by unflatten', function () { + assert.strictEqual( + Object.prototype.toString.call(['foo', 'bar']) + , Object.prototype.toString.call(unflatten({ + 'a.0': 'foo', + 'a.1': 'bar' + }).a) + ) + }) + + test('Do not include keys with numbers inside them', function () { + assert.deepStrictEqual(unflatten({ + '1key.2_key': 'ok' + }), { + '1key': { + '2_key': 'ok' + } + }) + }) +}) + +suite('Order of Keys', function () { + test('Order of keys should not be changed after round trip flatten/unflatten', function () { + const obj = { + b: 1, + abc: { + c: [{ + d: 1, + bca: 1, + a: 1 + }] + }, + a: 1 + } + const result = unflatten( + flatten(obj) + ) + + assert.deepStrictEqual(Object.keys(obj), Object.keys(result)) + assert.deepStrictEqual(Object.keys(obj.abc), Object.keys(result.abc)) + assert.deepStrictEqual(Object.keys(obj.abc.c[0]), Object.keys(result.abc.c[0])) + }) +}) + +suite('CLI', function () { + test('can take filename', function (done) { + const cli = path.resolve(__dirname, '..', pkg.bin) + const pkgJSON = path.resolve(__dirname, '..', 'package.json') + exec(`${cli} ${pkgJSON}`, (err, stdout, stderr) => { + assert.ifError(err) + assert.strictEqual(stdout.trim(), JSON.stringify(flatten(pkg), null, 2)) + done() + }) + }) + + test('exits with usage if no file', function (done) { + const cli = path.resolve(__dirname, '..', pkg.bin) + const pkgJSON = path.resolve(__dirname, '..', 'package.json') + exec(`${cli} ${pkgJSON}`, (err, stdout, stderr) => { + assert.ifError(err) + assert.strictEqual(stdout.trim(), JSON.stringify(flatten(pkg), null, 2)) + done() + }) + }) + + test('can take piped file', function (done) { + const cli = path.resolve(__dirname, '..', pkg.bin) + const pkgJSON = path.resolve(__dirname, '..', 'package.json') + exec(`cat ${pkgJSON} | ${cli}`, (err, stdout, stderr) => { + assert.ifError(err) + assert.strictEqual(stdout.trim(), JSON.stringify(flatten(pkg), null, 2)) + done() + }) + }) +}) diff --git a/node_modules/get-caller-file/LICENSE.md b/node_modules/get-caller-file/LICENSE.md new file mode 100644 index 0000000..bf3e1c0 --- /dev/null +++ b/node_modules/get-caller-file/LICENSE.md @@ -0,0 +1,6 @@ +ISC License (ISC) +Copyright 2018 Stefan Penner + +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/node_modules/get-caller-file/README.md b/node_modules/get-caller-file/README.md new file mode 100644 index 0000000..a7d8c07 --- /dev/null +++ b/node_modules/get-caller-file/README.md @@ -0,0 +1,41 @@ +# get-caller-file + +[![Build Status](https://travis-ci.org/stefanpenner/get-caller-file.svg?branch=master)](https://travis-ci.org/stefanpenner/get-caller-file) +[![Build status](https://ci.appveyor.com/api/projects/status/ol2q94g1932cy14a/branch/master?svg=true)](https://ci.appveyor.com/project/embercli/get-caller-file/branch/master) + +This is a utility, which allows a function to figure out from which file it was invoked. It does so by inspecting v8's stack trace at the time it is invoked. + +Inspired by http://stackoverflow.com/questions/13227489 + +*note: this relies on Node/V8 specific APIs, as such other runtimes may not work* + +## Installation + +```bash +yarn add get-caller-file +``` + +## Usage + +Given: + +```js +// ./foo.js +const getCallerFile = require('get-caller-file'); + +module.exports = function() { + return getCallerFile(); // figures out who called it +}; +``` + +```js +// index.js +const foo = require('./foo'); + +foo() // => /full/path/to/this/file/index.js +``` + + +## Options: + +* `getCallerFile(position = 2)`: where position is stack frame whos fileName we want. diff --git a/node_modules/get-caller-file/index.d.ts b/node_modules/get-caller-file/index.d.ts new file mode 100644 index 0000000..babed69 --- /dev/null +++ b/node_modules/get-caller-file/index.d.ts @@ -0,0 +1,2 @@ +declare const _default: (position?: number) => any; +export = _default; diff --git a/node_modules/get-caller-file/index.js b/node_modules/get-caller-file/index.js new file mode 100644 index 0000000..57304f8 --- /dev/null +++ b/node_modules/get-caller-file/index.js @@ -0,0 +1,22 @@ +"use strict"; +// Call this function in a another function to find out the file from +// which that function was called from. (Inspects the v8 stack trace) +// +// Inspired by http://stackoverflow.com/questions/13227489 +module.exports = function getCallerFile(position) { + if (position === void 0) { position = 2; } + if (position >= Error.stackTraceLimit) { + throw new TypeError('getCallerFile(position) requires position be less then Error.stackTraceLimit but position was: `' + position + '` and Error.stackTraceLimit was: `' + Error.stackTraceLimit + '`'); + } + var oldPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = function (_, stack) { return stack; }; + var stack = new Error().stack; + Error.prepareStackTrace = oldPrepareStackTrace; + if (stack !== null && typeof stack === 'object') { + // stack[0] holds this file + // stack[1] holds where this function was called + // stack[2] holds the file we're interested in + return stack[position] ? stack[position].getFileName() : undefined; + } +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/get-caller-file/index.js.map b/node_modules/get-caller-file/index.js.map new file mode 100644 index 0000000..89c655c --- /dev/null +++ b/node_modules/get-caller-file/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,qEAAqE;AACrE,EAAE;AACF,0DAA0D;AAE1D,iBAAS,SAAS,aAAa,CAAC,QAAY;IAAZ,yBAAA,EAAA,YAAY;IAC1C,IAAI,QAAQ,IAAI,KAAK,CAAC,eAAe,EAAE;QACrC,MAAM,IAAI,SAAS,CAAC,kGAAkG,GAAG,QAAQ,GAAG,oCAAoC,GAAG,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC;KACzM;IAED,IAAM,oBAAoB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACrD,KAAK,CAAC,iBAAiB,GAAG,UAAC,CAAC,EAAE,KAAK,IAAM,OAAA,KAAK,EAAL,CAAK,CAAC;IAC/C,IAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;IAChC,KAAK,CAAC,iBAAiB,GAAG,oBAAoB,CAAC;IAG/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC/C,2BAA2B;QAC3B,gDAAgD;QAChD,8CAA8C;QAC9C,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,QAAQ,CAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;KAC7E;AACH,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/get-caller-file/package.json b/node_modules/get-caller-file/package.json new file mode 100644 index 0000000..b0dd571 --- /dev/null +++ b/node_modules/get-caller-file/package.json @@ -0,0 +1,42 @@ +{ + "name": "get-caller-file", + "version": "2.0.5", + "description": "", + "main": "index.js", + "directories": { + "test": "tests" + }, + "files": [ + "index.js", + "index.js.map", + "index.d.ts" + ], + "scripts": { + "prepare": "tsc", + "test": "mocha test", + "test:debug": "mocha test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/stefanpenner/get-caller-file.git" + }, + "author": "Stefan Penner", + "license": "ISC", + "bugs": { + "url": "https://github.com/stefanpenner/get-caller-file/issues" + }, + "homepage": "https://github.com/stefanpenner/get-caller-file#readme", + "devDependencies": { + "@types/chai": "^4.1.7", + "@types/ensure-posix-path": "^1.0.0", + "@types/mocha": "^5.2.6", + "@types/node": "^11.10.5", + "chai": "^4.1.2", + "ensure-posix-path": "^1.0.1", + "mocha": "^5.2.0", + "typescript": "^3.3.3333" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } +} diff --git a/node_modules/he/LICENSE-MIT.txt b/node_modules/he/LICENSE-MIT.txt new file mode 100644 index 0000000..a41e0a7 --- /dev/null +++ b/node_modules/he/LICENSE-MIT.txt @@ -0,0 +1,20 @@ +Copyright Mathias Bynens + +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/node_modules/he/README.md b/node_modules/he/README.md new file mode 100644 index 0000000..b2223a9 --- /dev/null +++ b/node_modules/he/README.md @@ -0,0 +1,379 @@ +# he [![Build status](https://travis-ci.org/mathiasbynens/he.svg?branch=master)](https://travis-ci.org/mathiasbynens/he) [![Code coverage status](https://codecov.io/github/mathiasbynens/he/coverage.svg?branch=master)](https://codecov.io/github/mathiasbynens/he?branch=master) [![Dependency status](https://gemnasium.com/mathiasbynens/he.svg)](https://gemnasium.com/mathiasbynens/he) + +_he_ (for “HTML entities”) is a robust HTML entity encoder/decoder written in JavaScript. It supports [all standardized named character references as per HTML](https://html.spec.whatwg.org/multipage/syntax.html#named-character-references), handles [ambiguous ampersands](https://mathiasbynens.be/notes/ambiguous-ampersands) and other edge cases [just like a browser would](https://html.spec.whatwg.org/multipage/syntax.html#tokenizing-character-references), has an extensive test suite, and — contrary to many other JavaScript solutions — _he_ handles astral Unicode symbols just fine. [An online demo is available.](https://mothereff.in/html-entities) + +## Installation + +Via [npm](https://www.npmjs.com/): + +```bash +npm install he +``` + +Via [Bower](http://bower.io/): + +```bash +bower install he +``` + +Via [Component](https://github.com/component/component): + +```bash +component install mathiasbynens/he +``` + +In a browser: + +```html + +``` + +In [Node.js](https://nodejs.org/), [io.js](https://iojs.org/), [Narwhal](http://narwhaljs.org/), and [RingoJS](http://ringojs.org/): + +```js +var he = require('he'); +``` + +In [Rhino](http://www.mozilla.org/rhino/): + +```js +load('he.js'); +``` + +Using an AMD loader like [RequireJS](http://requirejs.org/): + +```js +require( + { + 'paths': { + 'he': 'path/to/he' + } + }, + ['he'], + function(he) { + console.log(he); + } +); +``` + +## API + +### `he.version` + +A string representing the semantic version number. + +### `he.encode(text, options)` + +This function takes a string of text and encodes (by default) any symbols that aren’t printable ASCII symbols and `&`, `<`, `>`, `"`, `'`, and `` ` ``, replacing them with character references. + +```js +he.encode('foo © bar ≠ baz 𝌆 qux'); +// → 'foo © bar ≠ baz 𝌆 qux' +``` + +As long as the input string contains [allowed code points](https://html.spec.whatwg.org/multipage/parsing.html#preprocessing-the-input-stream) only, the return value of this function is always valid HTML. Any [(invalid) code points that cannot be represented using a character reference](https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides) in the input are not encoded: + +```js +he.encode('foo \0 bar'); +// → 'foo \0 bar' +``` + +However, enabling [the `strict` option](https://github.com/mathiasbynens/he#strict) causes invalid code points to throw an exception. With `strict` enabled, `he.encode` either throws (if the input contains invalid code points) or returns a string of valid HTML. + +The `options` object is optional. It recognizes the following properties: + +#### `useNamedReferences` + +The default value for the `useNamedReferences` option is `false`. This means that `encode()` will not use any named character references (e.g. `©`) in the output — hexadecimal escapes (e.g. `©`) will be used instead. Set it to `true` to enable the use of named references. + +**Note that if compatibility with older browsers is a concern, this option should remain disabled.** + +```js +// Using the global default setting (defaults to `false`): +he.encode('foo © bar ≠ baz 𝌆 qux'); +// → 'foo © bar ≠ baz 𝌆 qux' + +// Passing an `options` object to `encode`, to explicitly disallow named references: +he.encode('foo © bar ≠ baz 𝌆 qux', { + 'useNamedReferences': false +}); +// → 'foo © bar ≠ baz 𝌆 qux' + +// Passing an `options` object to `encode`, to explicitly allow named references: +he.encode('foo © bar ≠ baz 𝌆 qux', { + 'useNamedReferences': true +}); +// → 'foo © bar ≠ baz 𝌆 qux' +``` + +#### `decimal` + +The default value for the `decimal` option is `false`. If the option is enabled, `encode` will generally use decimal escapes (e.g. `©`) rather than hexadecimal escapes (e.g. `©`). Beside of this replacement, the basic behavior remains the same when combined with other options. For example: if both options `useNamedReferences` and `decimal` are enabled, named references (e.g. `©`) are used over decimal escapes. HTML entities without a named reference are encoded using decimal escapes. + +```js +// Using the global default setting (defaults to `false`): +he.encode('foo © bar ≠ baz 𝌆 qux'); +// → 'foo © bar ≠ baz 𝌆 qux' + +// Passing an `options` object to `encode`, to explicitly disable decimal escapes: +he.encode('foo © bar ≠ baz 𝌆 qux', { + 'decimal': false +}); +// → 'foo © bar ≠ baz 𝌆 qux' + +// Passing an `options` object to `encode`, to explicitly enable decimal escapes: +he.encode('foo © bar ≠ baz 𝌆 qux', { + 'decimal': true +}); +// → 'foo © bar ≠ baz 𝌆 qux' + +// Passing an `options` object to `encode`, to explicitly allow named references and decimal escapes: +he.encode('foo © bar ≠ baz 𝌆 qux', { + 'useNamedReferences': true, + 'decimal': true +}); +// → 'foo © bar ≠ baz 𝌆 qux' +``` + +#### `encodeEverything` + +The default value for the `encodeEverything` option is `false`. This means that `encode()` will not use any character references for printable ASCII symbols that don’t need escaping. Set it to `true` to encode every symbol in the input string. When set to `true`, this option takes precedence over `allowUnsafeSymbols` (i.e. setting the latter to `true` in such a case has no effect). + +```js +// Using the global default setting (defaults to `false`): +he.encode('foo © bar ≠ baz 𝌆 qux'); +// → 'foo © bar ≠ baz 𝌆 qux' + +// Passing an `options` object to `encode`, to explicitly encode all symbols: +he.encode('foo © bar ≠ baz 𝌆 qux', { + 'encodeEverything': true +}); +// → 'foo © bar ≠ baz 𝌆 qux' + +// This setting can be combined with the `useNamedReferences` option: +he.encode('foo © bar ≠ baz 𝌆 qux', { + 'encodeEverything': true, + 'useNamedReferences': true +}); +// → 'foo © bar ≠ baz 𝌆 qux' +``` + +#### `strict` + +The default value for the `strict` option is `false`. This means that `encode()` will encode any HTML text content you feed it, even if it contains any symbols that cause [parse errors](https://html.spec.whatwg.org/multipage/parsing.html#preprocessing-the-input-stream). To throw an error when such invalid HTML is encountered, set the `strict` option to `true`. This option makes it possible to use _he_ as part of HTML parsers and HTML validators. + +```js +// Using the global default setting (defaults to `false`, i.e. error-tolerant mode): +he.encode('\x01'); +// → '' + +// Passing an `options` object to `encode`, to explicitly enable error-tolerant mode: +he.encode('\x01', { + 'strict': false +}); +// → '' + +// Passing an `options` object to `encode`, to explicitly enable strict mode: +he.encode('\x01', { + 'strict': true +}); +// → Parse error +``` + +#### `allowUnsafeSymbols` + +The default value for the `allowUnsafeSymbols` option is `false`. This means that characters that are unsafe for use in HTML content (`&`, `<`, `>`, `"`, `'`, and `` ` ``) will be encoded. When set to `true`, only non-ASCII characters will be encoded. If the `encodeEverything` option is set to `true`, this option will be ignored. + +```js +he.encode('foo © and & ampersand', { + 'allowUnsafeSymbols': true +}); +// → 'foo © and & ampersand' +``` + +#### Overriding default `encode` options globally + +The global default setting can be overridden by modifying the `he.encode.options` object. This saves you from passing in an `options` object for every call to `encode` if you want to use the non-default setting. + +```js +// Read the global default setting: +he.encode.options.useNamedReferences; +// → `false` by default + +// Override the global default setting: +he.encode.options.useNamedReferences = true; + +// Using the global default setting, which is now `true`: +he.encode('foo © bar ≠ baz 𝌆 qux'); +// → 'foo © bar ≠ baz 𝌆 qux' +``` + +### `he.decode(html, options)` + +This function takes a string of HTML and decodes any named and numerical character references in it using [the algorithm described in section 12.2.4.69 of the HTML spec](https://html.spec.whatwg.org/multipage/syntax.html#tokenizing-character-references). + +```js +he.decode('foo © bar ≠ baz 𝌆 qux'); +// → 'foo © bar ≠ baz 𝌆 qux' +``` + +The `options` object is optional. It recognizes the following properties: + +#### `isAttributeValue` + +The default value for the `isAttributeValue` option is `false`. This means that `decode()` will decode the string as if it were used in [a text context in an HTML document](https://html.spec.whatwg.org/multipage/syntax.html#data-state). HTML has different rules for [parsing character references in attribute values](https://html.spec.whatwg.org/multipage/syntax.html#character-reference-in-attribute-value-state) — set this option to `true` to treat the input string as if it were used as an attribute value. + +```js +// Using the global default setting (defaults to `false`, i.e. HTML text context): +he.decode('foo&bar'); +// → 'foo&bar' + +// Passing an `options` object to `decode`, to explicitly assume an HTML text context: +he.decode('foo&bar', { + 'isAttributeValue': false +}); +// → 'foo&bar' + +// Passing an `options` object to `decode`, to explicitly assume an HTML attribute value context: +he.decode('foo&bar', { + 'isAttributeValue': true +}); +// → 'foo&bar' +``` + +#### `strict` + +The default value for the `strict` option is `false`. This means that `decode()` will decode any HTML text content you feed it, even if it contains any entities that cause [parse errors](https://html.spec.whatwg.org/multipage/syntax.html#tokenizing-character-references). To throw an error when such invalid HTML is encountered, set the `strict` option to `true`. This option makes it possible to use _he_ as part of HTML parsers and HTML validators. + +```js +// Using the global default setting (defaults to `false`, i.e. error-tolerant mode): +he.decode('foo&bar'); +// → 'foo&bar' + +// Passing an `options` object to `decode`, to explicitly enable error-tolerant mode: +he.decode('foo&bar', { + 'strict': false +}); +// → 'foo&bar' + +// Passing an `options` object to `decode`, to explicitly enable strict mode: +he.decode('foo&bar', { + 'strict': true +}); +// → Parse error +``` + +#### Overriding default `decode` options globally + +The global default settings for the `decode` function can be overridden by modifying the `he.decode.options` object. This saves you from passing in an `options` object for every call to `decode` if you want to use a non-default setting. + +```js +// Read the global default setting: +he.decode.options.isAttributeValue; +// → `false` by default + +// Override the global default setting: +he.decode.options.isAttributeValue = true; + +// Using the global default setting, which is now `true`: +he.decode('foo&bar'); +// → 'foo&bar' +``` + +### `he.escape(text)` + +This function takes a string of text and escapes it for use in text contexts in XML or HTML documents. Only the following characters are escaped: `&`, `<`, `>`, `"`, `'`, and `` ` ``. + +```js +he.escape(''); +// → '<img src='x' onerror="prompt(1)">' +``` + +### `he.unescape(html, options)` + +`he.unescape` is an alias for `he.decode`. It takes a string of HTML and decodes any named and numerical character references in it. + +### Using the `he` binary + +To use the `he` binary in your shell, simply install _he_ globally using npm: + +```bash +npm install -g he +``` + +After that you will be able to encode/decode HTML entities from the command line: + +```bash +$ he --encode 'föo ♥ bår 𝌆 baz' +föo ♥ bår 𝌆 baz + +$ he --encode --use-named-refs 'föo ♥ bår 𝌆 baz' +föo ♥ bår 𝌆 baz + +$ he --decode 'föo ♥ bår 𝌆 baz' +föo ♥ bår 𝌆 baz +``` + +Read a local text file, encode it for use in an HTML text context, and save the result to a new file: + +```bash +$ he --encode < foo.txt > foo-escaped.html +``` + +Or do the same with an online text file: + +```bash +$ curl -sL "http://git.io/HnfEaw" | he --encode > escaped.html +``` + +Or, the opposite — read a local file containing a snippet of HTML in a text context, decode it back to plain text, and save the result to a new file: + +```bash +$ he --decode < foo-escaped.html > foo.txt +``` + +Or do the same with an online HTML snippet: + +```bash +$ curl -sL "http://git.io/HnfEaw" | he --decode > decoded.txt +``` + +See `he --help` for the full list of options. + +## Support + +_he_ has been tested in at least: + +* Chrome 27-50 +* Firefox 3-45 +* Safari 4-9 +* Opera 10-12, 15–37 +* IE 6–11 +* Edge +* Narwhal 0.3.2 +* Node.js v0.10, v0.12, v4, v5 +* PhantomJS 1.9.0 +* Rhino 1.7RC4 +* RingoJS 0.8-0.11 + +## Unit tests & code coverage + +After cloning this repository, run `npm install` to install the dependencies needed for he development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`. + +Once that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, and web browsers as well, use `grunt test`. + +To generate the code coverage report, use `grunt cover`. + +## Acknowledgements + +Thanks to [Simon Pieters](https://simon.html5.org/) ([@zcorpan](https://twitter.com/zcorpan)) for the many suggestions. + +## Author + +| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | +|---| +| [Mathias Bynens](https://mathiasbynens.be/) | + +## License + +_he_ is available under the [MIT](https://mths.be/mit) license. diff --git a/node_modules/he/bin/he b/node_modules/he/bin/he new file mode 100644 index 0000000..cfdfd6c --- /dev/null +++ b/node_modules/he/bin/he @@ -0,0 +1,148 @@ +#!/usr/bin/env node +(function() { + + var fs = require('fs'); + var he = require('../he.js'); + var strings = process.argv.splice(2); + var stdin = process.stdin; + var data; + var timeout; + var action; + var options = {}; + var log = console.log; + + var main = function() { + var option = strings[0]; + var count = 0; + + if (/^(?:-h|--help|undefined)$/.test(option)) { + log( + 'he v%s - https://mths.be/he', + he.version + ); + log([ + '\nUsage:\n', + '\the [--escape] string', + '\the [--encode] [--use-named-refs] [--everything] [--allow-unsafe] [--decimal] string', + '\the [--decode] [--attribute] [--strict] string', + '\the [-v | --version]', + '\the [-h | --help]', + '\nExamples:\n', + '\the --escape \\', + '\techo \'© 𝌆\' | he --decode' + ].join('\n')); + return process.exit(option ? 0 : 1); + } + + if (/^(?:-v|--version)$/.test(option)) { + log('v%s', he.version); + return process.exit(0); + } + + strings.forEach(function(string) { + // Process options + if (string == '--escape') { + action = 'escape'; + return; + } + if (string == '--encode') { + action = 'encode'; + return; + } + if (string == '--use-named-refs') { + action = 'encode'; + options.useNamedReferences = true; + return; + } + if (string == '--everything') { + action = 'encode'; + options.encodeEverything = true; + return; + } + if (string == '--allow-unsafe') { + action = 'encode'; + options.allowUnsafeSymbols = true; + return; + } + if (string == '--decimal') { + action = 'encode'; + options.decimal = true; + return; + } + if (string == '--decode') { + action = 'decode'; + return; + } + if (string == '--attribute') { + action = 'decode'; + options.isAttributeValue = true; + return; + } + if (string == '--strict') { + action = 'decode'; + options.strict = true; + return; + } + // Process string(s) + var result; + if (!action) { + log('Error: he requires at least one option and a string argument.'); + log('Try `he --help` for more information.'); + return process.exit(1); + } + try { + result = he[action](string, options); + log(result); + count++; + } catch(error) { + log(error.message + '\n'); + log('Error: failed to %s.', action); + log('If you think this is a bug in he, please report it:'); + log('https://github.com/mathiasbynens/he/issues/new'); + log( + '\nStack trace using he@%s:\n', + he.version + ); + log(error.stack); + return process.exit(1); + } + }); + if (!count) { + log('Error: he requires a string argument.'); + log('Try `he --help` for more information.'); + return process.exit(1); + } + // Return with exit status 0 outside of the `forEach` loop, in case + // multiple strings were passed in. + return process.exit(0); + }; + + if (stdin.isTTY) { + // handle shell arguments + main(); + } else { + // Either the script is called from within a non-TTY context, or `stdin` + // content is being piped in. + if (!process.stdout.isTTY) { + // The script was called from a non-TTY context. This is a rather uncommon + // use case we don’t actively support. However, we don’t want the script + // to wait forever in such cases, so… + timeout = setTimeout(function() { + // …if no piped data arrived after a whole minute, handle shell + // arguments instead. + main(); + }, 60000); + } + data = ''; + stdin.on('data', function(chunk) { + clearTimeout(timeout); + data += chunk; + }); + stdin.on('end', function() { + strings.push(data.trim()); + main(); + }); + stdin.resume(); + } + +}()); diff --git a/node_modules/he/he.js b/node_modules/he/he.js new file mode 100644 index 0000000..14a58e9 --- /dev/null +++ b/node_modules/he/he.js @@ -0,0 +1,345 @@ +/*! https://mths.be/he v1.2.0 by @mathias | MIT license */ +;(function(root) { + + // Detect free variables `exports`. + var freeExports = typeof exports == 'object' && exports; + + // Detect free variable `module`. + var freeModule = typeof module == 'object' && module && + module.exports == freeExports && module; + + // Detect free variable `global`, from Node.js or Browserified code, + // and use it as `root`. + var freeGlobal = typeof global == 'object' && global; + if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { + root = freeGlobal; + } + + /*--------------------------------------------------------------------------*/ + + // All astral symbols. + var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + // All ASCII symbols (not just printable ASCII) except those listed in the + // first column of the overrides table. + // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides + var regexAsciiWhitelist = /[\x01-\x7F]/g; + // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or + // code points listed in the first column of the overrides table on + // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides. + var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g; + + var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g; + var encodeMap = {'\xAD':'shy','\u200C':'zwnj','\u200D':'zwj','\u200E':'lrm','\u2063':'ic','\u2062':'it','\u2061':'af','\u200F':'rlm','\u200B':'ZeroWidthSpace','\u2060':'NoBreak','\u0311':'DownBreve','\u20DB':'tdot','\u20DC':'DotDot','\t':'Tab','\n':'NewLine','\u2008':'puncsp','\u205F':'MediumSpace','\u2009':'thinsp','\u200A':'hairsp','\u2004':'emsp13','\u2002':'ensp','\u2005':'emsp14','\u2003':'emsp','\u2007':'numsp','\xA0':'nbsp','\u205F\u200A':'ThickSpace','\u203E':'oline','_':'lowbar','\u2010':'dash','\u2013':'ndash','\u2014':'mdash','\u2015':'horbar',',':'comma',';':'semi','\u204F':'bsemi',':':'colon','\u2A74':'Colone','!':'excl','\xA1':'iexcl','?':'quest','\xBF':'iquest','.':'period','\u2025':'nldr','\u2026':'mldr','\xB7':'middot','\'':'apos','\u2018':'lsquo','\u2019':'rsquo','\u201A':'sbquo','\u2039':'lsaquo','\u203A':'rsaquo','"':'quot','\u201C':'ldquo','\u201D':'rdquo','\u201E':'bdquo','\xAB':'laquo','\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\u2308':'lceil','\u2309':'rceil','\u230A':'lfloor','\u230B':'rfloor','\u2985':'lopar','\u2986':'ropar','\u298B':'lbrke','\u298C':'rbrke','\u298D':'lbrkslu','\u298E':'rbrksld','\u298F':'lbrksld','\u2990':'rbrkslu','\u2991':'langd','\u2992':'rangd','\u2993':'lparlt','\u2994':'rpargt','\u2995':'gtlPar','\u2996':'ltrPar','\u27E6':'lobrk','\u27E7':'robrk','\u27E8':'lang','\u27E9':'rang','\u27EA':'Lang','\u27EB':'Rang','\u27EC':'loang','\u27ED':'roang','\u2772':'lbbrk','\u2773':'rbbrk','\u2016':'Vert','\xA7':'sect','\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\u2030':'permil','\u2031':'pertenk','\u2020':'dagger','\u2021':'Dagger','\u2022':'bull','\u2043':'hybull','\u2032':'prime','\u2033':'Prime','\u2034':'tprime','\u2057':'qprime','\u2035':'bprime','\u2041':'caret','`':'grave','\xB4':'acute','\u02DC':'tilde','^':'Hat','\xAF':'macr','\u02D8':'breve','\u02D9':'dot','\xA8':'die','\u02DA':'ring','\u02DD':'dblac','\xB8':'cedil','\u02DB':'ogon','\u02C6':'circ','\u02C7':'caron','\xB0':'deg','\xA9':'copy','\xAE':'reg','\u2117':'copysr','\u2118':'wp','\u211E':'rx','\u2127':'mho','\u2129':'iiota','\u2190':'larr','\u219A':'nlarr','\u2192':'rarr','\u219B':'nrarr','\u2191':'uarr','\u2193':'darr','\u2194':'harr','\u21AE':'nharr','\u2195':'varr','\u2196':'nwarr','\u2197':'nearr','\u2198':'searr','\u2199':'swarr','\u219D':'rarrw','\u219D\u0338':'nrarrw','\u219E':'Larr','\u219F':'Uarr','\u21A0':'Rarr','\u21A1':'Darr','\u21A2':'larrtl','\u21A3':'rarrtl','\u21A4':'mapstoleft','\u21A5':'mapstoup','\u21A6':'map','\u21A7':'mapstodown','\u21A9':'larrhk','\u21AA':'rarrhk','\u21AB':'larrlp','\u21AC':'rarrlp','\u21AD':'harrw','\u21B0':'lsh','\u21B1':'rsh','\u21B2':'ldsh','\u21B3':'rdsh','\u21B5':'crarr','\u21B6':'cularr','\u21B7':'curarr','\u21BA':'olarr','\u21BB':'orarr','\u21BC':'lharu','\u21BD':'lhard','\u21BE':'uharr','\u21BF':'uharl','\u21C0':'rharu','\u21C1':'rhard','\u21C2':'dharr','\u21C3':'dharl','\u21C4':'rlarr','\u21C5':'udarr','\u21C6':'lrarr','\u21C7':'llarr','\u21C8':'uuarr','\u21C9':'rrarr','\u21CA':'ddarr','\u21CB':'lrhar','\u21CC':'rlhar','\u21D0':'lArr','\u21CD':'nlArr','\u21D1':'uArr','\u21D2':'rArr','\u21CF':'nrArr','\u21D3':'dArr','\u21D4':'iff','\u21CE':'nhArr','\u21D5':'vArr','\u21D6':'nwArr','\u21D7':'neArr','\u21D8':'seArr','\u21D9':'swArr','\u21DA':'lAarr','\u21DB':'rAarr','\u21DD':'zigrarr','\u21E4':'larrb','\u21E5':'rarrb','\u21F5':'duarr','\u21FD':'loarr','\u21FE':'roarr','\u21FF':'hoarr','\u2200':'forall','\u2201':'comp','\u2202':'part','\u2202\u0338':'npart','\u2203':'exist','\u2204':'nexist','\u2205':'empty','\u2207':'Del','\u2208':'in','\u2209':'notin','\u220B':'ni','\u220C':'notni','\u03F6':'bepsi','\u220F':'prod','\u2210':'coprod','\u2211':'sum','+':'plus','\xB1':'pm','\xF7':'div','\xD7':'times','<':'lt','\u226E':'nlt','<\u20D2':'nvlt','=':'equals','\u2260':'ne','=\u20E5':'bne','\u2A75':'Equal','>':'gt','\u226F':'ngt','>\u20D2':'nvgt','\xAC':'not','|':'vert','\xA6':'brvbar','\u2212':'minus','\u2213':'mp','\u2214':'plusdo','\u2044':'frasl','\u2216':'setmn','\u2217':'lowast','\u2218':'compfn','\u221A':'Sqrt','\u221D':'prop','\u221E':'infin','\u221F':'angrt','\u2220':'ang','\u2220\u20D2':'nang','\u2221':'angmsd','\u2222':'angsph','\u2223':'mid','\u2224':'nmid','\u2225':'par','\u2226':'npar','\u2227':'and','\u2228':'or','\u2229':'cap','\u2229\uFE00':'caps','\u222A':'cup','\u222A\uFE00':'cups','\u222B':'int','\u222C':'Int','\u222D':'tint','\u2A0C':'qint','\u222E':'oint','\u222F':'Conint','\u2230':'Cconint','\u2231':'cwint','\u2232':'cwconint','\u2233':'awconint','\u2234':'there4','\u2235':'becaus','\u2236':'ratio','\u2237':'Colon','\u2238':'minusd','\u223A':'mDDot','\u223B':'homtht','\u223C':'sim','\u2241':'nsim','\u223C\u20D2':'nvsim','\u223D':'bsim','\u223D\u0331':'race','\u223E':'ac','\u223E\u0333':'acE','\u223F':'acd','\u2240':'wr','\u2242':'esim','\u2242\u0338':'nesim','\u2243':'sime','\u2244':'nsime','\u2245':'cong','\u2247':'ncong','\u2246':'simne','\u2248':'ap','\u2249':'nap','\u224A':'ape','\u224B':'apid','\u224B\u0338':'napid','\u224C':'bcong','\u224D':'CupCap','\u226D':'NotCupCap','\u224D\u20D2':'nvap','\u224E':'bump','\u224E\u0338':'nbump','\u224F':'bumpe','\u224F\u0338':'nbumpe','\u2250':'doteq','\u2250\u0338':'nedot','\u2251':'eDot','\u2252':'efDot','\u2253':'erDot','\u2254':'colone','\u2255':'ecolon','\u2256':'ecir','\u2257':'cire','\u2259':'wedgeq','\u225A':'veeeq','\u225C':'trie','\u225F':'equest','\u2261':'equiv','\u2262':'nequiv','\u2261\u20E5':'bnequiv','\u2264':'le','\u2270':'nle','\u2264\u20D2':'nvle','\u2265':'ge','\u2271':'nge','\u2265\u20D2':'nvge','\u2266':'lE','\u2266\u0338':'nlE','\u2267':'gE','\u2267\u0338':'ngE','\u2268\uFE00':'lvnE','\u2268':'lnE','\u2269':'gnE','\u2269\uFE00':'gvnE','\u226A':'ll','\u226A\u0338':'nLtv','\u226A\u20D2':'nLt','\u226B':'gg','\u226B\u0338':'nGtv','\u226B\u20D2':'nGt','\u226C':'twixt','\u2272':'lsim','\u2274':'nlsim','\u2273':'gsim','\u2275':'ngsim','\u2276':'lg','\u2278':'ntlg','\u2277':'gl','\u2279':'ntgl','\u227A':'pr','\u2280':'npr','\u227B':'sc','\u2281':'nsc','\u227C':'prcue','\u22E0':'nprcue','\u227D':'sccue','\u22E1':'nsccue','\u227E':'prsim','\u227F':'scsim','\u227F\u0338':'NotSucceedsTilde','\u2282':'sub','\u2284':'nsub','\u2282\u20D2':'vnsub','\u2283':'sup','\u2285':'nsup','\u2283\u20D2':'vnsup','\u2286':'sube','\u2288':'nsube','\u2287':'supe','\u2289':'nsupe','\u228A\uFE00':'vsubne','\u228A':'subne','\u228B\uFE00':'vsupne','\u228B':'supne','\u228D':'cupdot','\u228E':'uplus','\u228F':'sqsub','\u228F\u0338':'NotSquareSubset','\u2290':'sqsup','\u2290\u0338':'NotSquareSuperset','\u2291':'sqsube','\u22E2':'nsqsube','\u2292':'sqsupe','\u22E3':'nsqsupe','\u2293':'sqcap','\u2293\uFE00':'sqcaps','\u2294':'sqcup','\u2294\uFE00':'sqcups','\u2295':'oplus','\u2296':'ominus','\u2297':'otimes','\u2298':'osol','\u2299':'odot','\u229A':'ocir','\u229B':'oast','\u229D':'odash','\u229E':'plusb','\u229F':'minusb','\u22A0':'timesb','\u22A1':'sdotb','\u22A2':'vdash','\u22AC':'nvdash','\u22A3':'dashv','\u22A4':'top','\u22A5':'bot','\u22A7':'models','\u22A8':'vDash','\u22AD':'nvDash','\u22A9':'Vdash','\u22AE':'nVdash','\u22AA':'Vvdash','\u22AB':'VDash','\u22AF':'nVDash','\u22B0':'prurel','\u22B2':'vltri','\u22EA':'nltri','\u22B3':'vrtri','\u22EB':'nrtri','\u22B4':'ltrie','\u22EC':'nltrie','\u22B4\u20D2':'nvltrie','\u22B5':'rtrie','\u22ED':'nrtrie','\u22B5\u20D2':'nvrtrie','\u22B6':'origof','\u22B7':'imof','\u22B8':'mumap','\u22B9':'hercon','\u22BA':'intcal','\u22BB':'veebar','\u22BD':'barvee','\u22BE':'angrtvb','\u22BF':'lrtri','\u22C0':'Wedge','\u22C1':'Vee','\u22C2':'xcap','\u22C3':'xcup','\u22C4':'diam','\u22C5':'sdot','\u22C6':'Star','\u22C7':'divonx','\u22C8':'bowtie','\u22C9':'ltimes','\u22CA':'rtimes','\u22CB':'lthree','\u22CC':'rthree','\u22CD':'bsime','\u22CE':'cuvee','\u22CF':'cuwed','\u22D0':'Sub','\u22D1':'Sup','\u22D2':'Cap','\u22D3':'Cup','\u22D4':'fork','\u22D5':'epar','\u22D6':'ltdot','\u22D7':'gtdot','\u22D8':'Ll','\u22D8\u0338':'nLl','\u22D9':'Gg','\u22D9\u0338':'nGg','\u22DA\uFE00':'lesg','\u22DA':'leg','\u22DB':'gel','\u22DB\uFE00':'gesl','\u22DE':'cuepr','\u22DF':'cuesc','\u22E6':'lnsim','\u22E7':'gnsim','\u22E8':'prnsim','\u22E9':'scnsim','\u22EE':'vellip','\u22EF':'ctdot','\u22F0':'utdot','\u22F1':'dtdot','\u22F2':'disin','\u22F3':'isinsv','\u22F4':'isins','\u22F5':'isindot','\u22F5\u0338':'notindot','\u22F6':'notinvc','\u22F7':'notinvb','\u22F9':'isinE','\u22F9\u0338':'notinE','\u22FA':'nisd','\u22FB':'xnis','\u22FC':'nis','\u22FD':'notnivc','\u22FE':'notnivb','\u2305':'barwed','\u2306':'Barwed','\u230C':'drcrop','\u230D':'dlcrop','\u230E':'urcrop','\u230F':'ulcrop','\u2310':'bnot','\u2312':'profline','\u2313':'profsurf','\u2315':'telrec','\u2316':'target','\u231C':'ulcorn','\u231D':'urcorn','\u231E':'dlcorn','\u231F':'drcorn','\u2322':'frown','\u2323':'smile','\u232D':'cylcty','\u232E':'profalar','\u2336':'topbot','\u233D':'ovbar','\u233F':'solbar','\u237C':'angzarr','\u23B0':'lmoust','\u23B1':'rmoust','\u23B4':'tbrk','\u23B5':'bbrk','\u23B6':'bbrktbrk','\u23DC':'OverParenthesis','\u23DD':'UnderParenthesis','\u23DE':'OverBrace','\u23DF':'UnderBrace','\u23E2':'trpezium','\u23E7':'elinters','\u2423':'blank','\u2500':'boxh','\u2502':'boxv','\u250C':'boxdr','\u2510':'boxdl','\u2514':'boxur','\u2518':'boxul','\u251C':'boxvr','\u2524':'boxvl','\u252C':'boxhd','\u2534':'boxhu','\u253C':'boxvh','\u2550':'boxH','\u2551':'boxV','\u2552':'boxdR','\u2553':'boxDr','\u2554':'boxDR','\u2555':'boxdL','\u2556':'boxDl','\u2557':'boxDL','\u2558':'boxuR','\u2559':'boxUr','\u255A':'boxUR','\u255B':'boxuL','\u255C':'boxUl','\u255D':'boxUL','\u255E':'boxvR','\u255F':'boxVr','\u2560':'boxVR','\u2561':'boxvL','\u2562':'boxVl','\u2563':'boxVL','\u2564':'boxHd','\u2565':'boxhD','\u2566':'boxHD','\u2567':'boxHu','\u2568':'boxhU','\u2569':'boxHU','\u256A':'boxvH','\u256B':'boxVh','\u256C':'boxVH','\u2580':'uhblk','\u2584':'lhblk','\u2588':'block','\u2591':'blk14','\u2592':'blk12','\u2593':'blk34','\u25A1':'squ','\u25AA':'squf','\u25AB':'EmptyVerySmallSquare','\u25AD':'rect','\u25AE':'marker','\u25B1':'fltns','\u25B3':'xutri','\u25B4':'utrif','\u25B5':'utri','\u25B8':'rtrif','\u25B9':'rtri','\u25BD':'xdtri','\u25BE':'dtrif','\u25BF':'dtri','\u25C2':'ltrif','\u25C3':'ltri','\u25CA':'loz','\u25CB':'cir','\u25EC':'tridot','\u25EF':'xcirc','\u25F8':'ultri','\u25F9':'urtri','\u25FA':'lltri','\u25FB':'EmptySmallSquare','\u25FC':'FilledSmallSquare','\u2605':'starf','\u2606':'star','\u260E':'phone','\u2640':'female','\u2642':'male','\u2660':'spades','\u2663':'clubs','\u2665':'hearts','\u2666':'diams','\u266A':'sung','\u2713':'check','\u2717':'cross','\u2720':'malt','\u2736':'sext','\u2758':'VerticalSeparator','\u27C8':'bsolhsub','\u27C9':'suphsol','\u27F5':'xlarr','\u27F6':'xrarr','\u27F7':'xharr','\u27F8':'xlArr','\u27F9':'xrArr','\u27FA':'xhArr','\u27FC':'xmap','\u27FF':'dzigrarr','\u2902':'nvlArr','\u2903':'nvrArr','\u2904':'nvHarr','\u2905':'Map','\u290C':'lbarr','\u290D':'rbarr','\u290E':'lBarr','\u290F':'rBarr','\u2910':'RBarr','\u2911':'DDotrahd','\u2912':'UpArrowBar','\u2913':'DownArrowBar','\u2916':'Rarrtl','\u2919':'latail','\u291A':'ratail','\u291B':'lAtail','\u291C':'rAtail','\u291D':'larrfs','\u291E':'rarrfs','\u291F':'larrbfs','\u2920':'rarrbfs','\u2923':'nwarhk','\u2924':'nearhk','\u2925':'searhk','\u2926':'swarhk','\u2927':'nwnear','\u2928':'toea','\u2929':'tosa','\u292A':'swnwar','\u2933':'rarrc','\u2933\u0338':'nrarrc','\u2935':'cudarrr','\u2936':'ldca','\u2937':'rdca','\u2938':'cudarrl','\u2939':'larrpl','\u293C':'curarrm','\u293D':'cularrp','\u2945':'rarrpl','\u2948':'harrcir','\u2949':'Uarrocir','\u294A':'lurdshar','\u294B':'ldrushar','\u294E':'LeftRightVector','\u294F':'RightUpDownVector','\u2950':'DownLeftRightVector','\u2951':'LeftUpDownVector','\u2952':'LeftVectorBar','\u2953':'RightVectorBar','\u2954':'RightUpVectorBar','\u2955':'RightDownVectorBar','\u2956':'DownLeftVectorBar','\u2957':'DownRightVectorBar','\u2958':'LeftUpVectorBar','\u2959':'LeftDownVectorBar','\u295A':'LeftTeeVector','\u295B':'RightTeeVector','\u295C':'RightUpTeeVector','\u295D':'RightDownTeeVector','\u295E':'DownLeftTeeVector','\u295F':'DownRightTeeVector','\u2960':'LeftUpTeeVector','\u2961':'LeftDownTeeVector','\u2962':'lHar','\u2963':'uHar','\u2964':'rHar','\u2965':'dHar','\u2966':'luruhar','\u2967':'ldrdhar','\u2968':'ruluhar','\u2969':'rdldhar','\u296A':'lharul','\u296B':'llhard','\u296C':'rharul','\u296D':'lrhard','\u296E':'udhar','\u296F':'duhar','\u2970':'RoundImplies','\u2971':'erarr','\u2972':'simrarr','\u2973':'larrsim','\u2974':'rarrsim','\u2975':'rarrap','\u2976':'ltlarr','\u2978':'gtrarr','\u2979':'subrarr','\u297B':'suplarr','\u297C':'lfisht','\u297D':'rfisht','\u297E':'ufisht','\u297F':'dfisht','\u299A':'vzigzag','\u299C':'vangrt','\u299D':'angrtvbd','\u29A4':'ange','\u29A5':'range','\u29A6':'dwangle','\u29A7':'uwangle','\u29A8':'angmsdaa','\u29A9':'angmsdab','\u29AA':'angmsdac','\u29AB':'angmsdad','\u29AC':'angmsdae','\u29AD':'angmsdaf','\u29AE':'angmsdag','\u29AF':'angmsdah','\u29B0':'bemptyv','\u29B1':'demptyv','\u29B2':'cemptyv','\u29B3':'raemptyv','\u29B4':'laemptyv','\u29B5':'ohbar','\u29B6':'omid','\u29B7':'opar','\u29B9':'operp','\u29BB':'olcross','\u29BC':'odsold','\u29BE':'olcir','\u29BF':'ofcir','\u29C0':'olt','\u29C1':'ogt','\u29C2':'cirscir','\u29C3':'cirE','\u29C4':'solb','\u29C5':'bsolb','\u29C9':'boxbox','\u29CD':'trisb','\u29CE':'rtriltri','\u29CF':'LeftTriangleBar','\u29CF\u0338':'NotLeftTriangleBar','\u29D0':'RightTriangleBar','\u29D0\u0338':'NotRightTriangleBar','\u29DC':'iinfin','\u29DD':'infintie','\u29DE':'nvinfin','\u29E3':'eparsl','\u29E4':'smeparsl','\u29E5':'eqvparsl','\u29EB':'lozf','\u29F4':'RuleDelayed','\u29F6':'dsol','\u2A00':'xodot','\u2A01':'xoplus','\u2A02':'xotime','\u2A04':'xuplus','\u2A06':'xsqcup','\u2A0D':'fpartint','\u2A10':'cirfnint','\u2A11':'awint','\u2A12':'rppolint','\u2A13':'scpolint','\u2A14':'npolint','\u2A15':'pointint','\u2A16':'quatint','\u2A17':'intlarhk','\u2A22':'pluscir','\u2A23':'plusacir','\u2A24':'simplus','\u2A25':'plusdu','\u2A26':'plussim','\u2A27':'plustwo','\u2A29':'mcomma','\u2A2A':'minusdu','\u2A2D':'loplus','\u2A2E':'roplus','\u2A2F':'Cross','\u2A30':'timesd','\u2A31':'timesbar','\u2A33':'smashp','\u2A34':'lotimes','\u2A35':'rotimes','\u2A36':'otimesas','\u2A37':'Otimes','\u2A38':'odiv','\u2A39':'triplus','\u2A3A':'triminus','\u2A3B':'tritime','\u2A3C':'iprod','\u2A3F':'amalg','\u2A40':'capdot','\u2A42':'ncup','\u2A43':'ncap','\u2A44':'capand','\u2A45':'cupor','\u2A46':'cupcap','\u2A47':'capcup','\u2A48':'cupbrcap','\u2A49':'capbrcup','\u2A4A':'cupcup','\u2A4B':'capcap','\u2A4C':'ccups','\u2A4D':'ccaps','\u2A50':'ccupssm','\u2A53':'And','\u2A54':'Or','\u2A55':'andand','\u2A56':'oror','\u2A57':'orslope','\u2A58':'andslope','\u2A5A':'andv','\u2A5B':'orv','\u2A5C':'andd','\u2A5D':'ord','\u2A5F':'wedbar','\u2A66':'sdote','\u2A6A':'simdot','\u2A6D':'congdot','\u2A6D\u0338':'ncongdot','\u2A6E':'easter','\u2A6F':'apacir','\u2A70':'apE','\u2A70\u0338':'napE','\u2A71':'eplus','\u2A72':'pluse','\u2A73':'Esim','\u2A77':'eDDot','\u2A78':'equivDD','\u2A79':'ltcir','\u2A7A':'gtcir','\u2A7B':'ltquest','\u2A7C':'gtquest','\u2A7D':'les','\u2A7D\u0338':'nles','\u2A7E':'ges','\u2A7E\u0338':'nges','\u2A7F':'lesdot','\u2A80':'gesdot','\u2A81':'lesdoto','\u2A82':'gesdoto','\u2A83':'lesdotor','\u2A84':'gesdotol','\u2A85':'lap','\u2A86':'gap','\u2A87':'lne','\u2A88':'gne','\u2A89':'lnap','\u2A8A':'gnap','\u2A8B':'lEg','\u2A8C':'gEl','\u2A8D':'lsime','\u2A8E':'gsime','\u2A8F':'lsimg','\u2A90':'gsiml','\u2A91':'lgE','\u2A92':'glE','\u2A93':'lesges','\u2A94':'gesles','\u2A95':'els','\u2A96':'egs','\u2A97':'elsdot','\u2A98':'egsdot','\u2A99':'el','\u2A9A':'eg','\u2A9D':'siml','\u2A9E':'simg','\u2A9F':'simlE','\u2AA0':'simgE','\u2AA1':'LessLess','\u2AA1\u0338':'NotNestedLessLess','\u2AA2':'GreaterGreater','\u2AA2\u0338':'NotNestedGreaterGreater','\u2AA4':'glj','\u2AA5':'gla','\u2AA6':'ltcc','\u2AA7':'gtcc','\u2AA8':'lescc','\u2AA9':'gescc','\u2AAA':'smt','\u2AAB':'lat','\u2AAC':'smte','\u2AAC\uFE00':'smtes','\u2AAD':'late','\u2AAD\uFE00':'lates','\u2AAE':'bumpE','\u2AAF':'pre','\u2AAF\u0338':'npre','\u2AB0':'sce','\u2AB0\u0338':'nsce','\u2AB3':'prE','\u2AB4':'scE','\u2AB5':'prnE','\u2AB6':'scnE','\u2AB7':'prap','\u2AB8':'scap','\u2AB9':'prnap','\u2ABA':'scnap','\u2ABB':'Pr','\u2ABC':'Sc','\u2ABD':'subdot','\u2ABE':'supdot','\u2ABF':'subplus','\u2AC0':'supplus','\u2AC1':'submult','\u2AC2':'supmult','\u2AC3':'subedot','\u2AC4':'supedot','\u2AC5':'subE','\u2AC5\u0338':'nsubE','\u2AC6':'supE','\u2AC6\u0338':'nsupE','\u2AC7':'subsim','\u2AC8':'supsim','\u2ACB\uFE00':'vsubnE','\u2ACB':'subnE','\u2ACC\uFE00':'vsupnE','\u2ACC':'supnE','\u2ACF':'csub','\u2AD0':'csup','\u2AD1':'csube','\u2AD2':'csupe','\u2AD3':'subsup','\u2AD4':'supsub','\u2AD5':'subsub','\u2AD6':'supsup','\u2AD7':'suphsub','\u2AD8':'supdsub','\u2AD9':'forkv','\u2ADA':'topfork','\u2ADB':'mlcp','\u2AE4':'Dashv','\u2AE6':'Vdashl','\u2AE7':'Barv','\u2AE8':'vBar','\u2AE9':'vBarv','\u2AEB':'Vbar','\u2AEC':'Not','\u2AED':'bNot','\u2AEE':'rnmid','\u2AEF':'cirmid','\u2AF0':'midcir','\u2AF1':'topcir','\u2AF2':'nhpar','\u2AF3':'parsim','\u2AFD':'parsl','\u2AFD\u20E5':'nparsl','\u266D':'flat','\u266E':'natur','\u266F':'sharp','\xA4':'curren','\xA2':'cent','$':'dollar','\xA3':'pound','\xA5':'yen','\u20AC':'euro','\xB9':'sup1','\xBD':'half','\u2153':'frac13','\xBC':'frac14','\u2155':'frac15','\u2159':'frac16','\u215B':'frac18','\xB2':'sup2','\u2154':'frac23','\u2156':'frac25','\xB3':'sup3','\xBE':'frac34','\u2157':'frac35','\u215C':'frac38','\u2158':'frac45','\u215A':'frac56','\u215D':'frac58','\u215E':'frac78','\uD835\uDCB6':'ascr','\uD835\uDD52':'aopf','\uD835\uDD1E':'afr','\uD835\uDD38':'Aopf','\uD835\uDD04':'Afr','\uD835\uDC9C':'Ascr','\xAA':'ordf','\xE1':'aacute','\xC1':'Aacute','\xE0':'agrave','\xC0':'Agrave','\u0103':'abreve','\u0102':'Abreve','\xE2':'acirc','\xC2':'Acirc','\xE5':'aring','\xC5':'angst','\xE4':'auml','\xC4':'Auml','\xE3':'atilde','\xC3':'Atilde','\u0105':'aogon','\u0104':'Aogon','\u0101':'amacr','\u0100':'Amacr','\xE6':'aelig','\xC6':'AElig','\uD835\uDCB7':'bscr','\uD835\uDD53':'bopf','\uD835\uDD1F':'bfr','\uD835\uDD39':'Bopf','\u212C':'Bscr','\uD835\uDD05':'Bfr','\uD835\uDD20':'cfr','\uD835\uDCB8':'cscr','\uD835\uDD54':'copf','\u212D':'Cfr','\uD835\uDC9E':'Cscr','\u2102':'Copf','\u0107':'cacute','\u0106':'Cacute','\u0109':'ccirc','\u0108':'Ccirc','\u010D':'ccaron','\u010C':'Ccaron','\u010B':'cdot','\u010A':'Cdot','\xE7':'ccedil','\xC7':'Ccedil','\u2105':'incare','\uD835\uDD21':'dfr','\u2146':'dd','\uD835\uDD55':'dopf','\uD835\uDCB9':'dscr','\uD835\uDC9F':'Dscr','\uD835\uDD07':'Dfr','\u2145':'DD','\uD835\uDD3B':'Dopf','\u010F':'dcaron','\u010E':'Dcaron','\u0111':'dstrok','\u0110':'Dstrok','\xF0':'eth','\xD0':'ETH','\u2147':'ee','\u212F':'escr','\uD835\uDD22':'efr','\uD835\uDD56':'eopf','\u2130':'Escr','\uD835\uDD08':'Efr','\uD835\uDD3C':'Eopf','\xE9':'eacute','\xC9':'Eacute','\xE8':'egrave','\xC8':'Egrave','\xEA':'ecirc','\xCA':'Ecirc','\u011B':'ecaron','\u011A':'Ecaron','\xEB':'euml','\xCB':'Euml','\u0117':'edot','\u0116':'Edot','\u0119':'eogon','\u0118':'Eogon','\u0113':'emacr','\u0112':'Emacr','\uD835\uDD23':'ffr','\uD835\uDD57':'fopf','\uD835\uDCBB':'fscr','\uD835\uDD09':'Ffr','\uD835\uDD3D':'Fopf','\u2131':'Fscr','\uFB00':'fflig','\uFB03':'ffilig','\uFB04':'ffllig','\uFB01':'filig','fj':'fjlig','\uFB02':'fllig','\u0192':'fnof','\u210A':'gscr','\uD835\uDD58':'gopf','\uD835\uDD24':'gfr','\uD835\uDCA2':'Gscr','\uD835\uDD3E':'Gopf','\uD835\uDD0A':'Gfr','\u01F5':'gacute','\u011F':'gbreve','\u011E':'Gbreve','\u011D':'gcirc','\u011C':'Gcirc','\u0121':'gdot','\u0120':'Gdot','\u0122':'Gcedil','\uD835\uDD25':'hfr','\u210E':'planckh','\uD835\uDCBD':'hscr','\uD835\uDD59':'hopf','\u210B':'Hscr','\u210C':'Hfr','\u210D':'Hopf','\u0125':'hcirc','\u0124':'Hcirc','\u210F':'hbar','\u0127':'hstrok','\u0126':'Hstrok','\uD835\uDD5A':'iopf','\uD835\uDD26':'ifr','\uD835\uDCBE':'iscr','\u2148':'ii','\uD835\uDD40':'Iopf','\u2110':'Iscr','\u2111':'Im','\xED':'iacute','\xCD':'Iacute','\xEC':'igrave','\xCC':'Igrave','\xEE':'icirc','\xCE':'Icirc','\xEF':'iuml','\xCF':'Iuml','\u0129':'itilde','\u0128':'Itilde','\u0130':'Idot','\u012F':'iogon','\u012E':'Iogon','\u012B':'imacr','\u012A':'Imacr','\u0133':'ijlig','\u0132':'IJlig','\u0131':'imath','\uD835\uDCBF':'jscr','\uD835\uDD5B':'jopf','\uD835\uDD27':'jfr','\uD835\uDCA5':'Jscr','\uD835\uDD0D':'Jfr','\uD835\uDD41':'Jopf','\u0135':'jcirc','\u0134':'Jcirc','\u0237':'jmath','\uD835\uDD5C':'kopf','\uD835\uDCC0':'kscr','\uD835\uDD28':'kfr','\uD835\uDCA6':'Kscr','\uD835\uDD42':'Kopf','\uD835\uDD0E':'Kfr','\u0137':'kcedil','\u0136':'Kcedil','\uD835\uDD29':'lfr','\uD835\uDCC1':'lscr','\u2113':'ell','\uD835\uDD5D':'lopf','\u2112':'Lscr','\uD835\uDD0F':'Lfr','\uD835\uDD43':'Lopf','\u013A':'lacute','\u0139':'Lacute','\u013E':'lcaron','\u013D':'Lcaron','\u013C':'lcedil','\u013B':'Lcedil','\u0142':'lstrok','\u0141':'Lstrok','\u0140':'lmidot','\u013F':'Lmidot','\uD835\uDD2A':'mfr','\uD835\uDD5E':'mopf','\uD835\uDCC2':'mscr','\uD835\uDD10':'Mfr','\uD835\uDD44':'Mopf','\u2133':'Mscr','\uD835\uDD2B':'nfr','\uD835\uDD5F':'nopf','\uD835\uDCC3':'nscr','\u2115':'Nopf','\uD835\uDCA9':'Nscr','\uD835\uDD11':'Nfr','\u0144':'nacute','\u0143':'Nacute','\u0148':'ncaron','\u0147':'Ncaron','\xF1':'ntilde','\xD1':'Ntilde','\u0146':'ncedil','\u0145':'Ncedil','\u2116':'numero','\u014B':'eng','\u014A':'ENG','\uD835\uDD60':'oopf','\uD835\uDD2C':'ofr','\u2134':'oscr','\uD835\uDCAA':'Oscr','\uD835\uDD12':'Ofr','\uD835\uDD46':'Oopf','\xBA':'ordm','\xF3':'oacute','\xD3':'Oacute','\xF2':'ograve','\xD2':'Ograve','\xF4':'ocirc','\xD4':'Ocirc','\xF6':'ouml','\xD6':'Ouml','\u0151':'odblac','\u0150':'Odblac','\xF5':'otilde','\xD5':'Otilde','\xF8':'oslash','\xD8':'Oslash','\u014D':'omacr','\u014C':'Omacr','\u0153':'oelig','\u0152':'OElig','\uD835\uDD2D':'pfr','\uD835\uDCC5':'pscr','\uD835\uDD61':'popf','\u2119':'Popf','\uD835\uDD13':'Pfr','\uD835\uDCAB':'Pscr','\uD835\uDD62':'qopf','\uD835\uDD2E':'qfr','\uD835\uDCC6':'qscr','\uD835\uDCAC':'Qscr','\uD835\uDD14':'Qfr','\u211A':'Qopf','\u0138':'kgreen','\uD835\uDD2F':'rfr','\uD835\uDD63':'ropf','\uD835\uDCC7':'rscr','\u211B':'Rscr','\u211C':'Re','\u211D':'Ropf','\u0155':'racute','\u0154':'Racute','\u0159':'rcaron','\u0158':'Rcaron','\u0157':'rcedil','\u0156':'Rcedil','\uD835\uDD64':'sopf','\uD835\uDCC8':'sscr','\uD835\uDD30':'sfr','\uD835\uDD4A':'Sopf','\uD835\uDD16':'Sfr','\uD835\uDCAE':'Sscr','\u24C8':'oS','\u015B':'sacute','\u015A':'Sacute','\u015D':'scirc','\u015C':'Scirc','\u0161':'scaron','\u0160':'Scaron','\u015F':'scedil','\u015E':'Scedil','\xDF':'szlig','\uD835\uDD31':'tfr','\uD835\uDCC9':'tscr','\uD835\uDD65':'topf','\uD835\uDCAF':'Tscr','\uD835\uDD17':'Tfr','\uD835\uDD4B':'Topf','\u0165':'tcaron','\u0164':'Tcaron','\u0163':'tcedil','\u0162':'Tcedil','\u2122':'trade','\u0167':'tstrok','\u0166':'Tstrok','\uD835\uDCCA':'uscr','\uD835\uDD66':'uopf','\uD835\uDD32':'ufr','\uD835\uDD4C':'Uopf','\uD835\uDD18':'Ufr','\uD835\uDCB0':'Uscr','\xFA':'uacute','\xDA':'Uacute','\xF9':'ugrave','\xD9':'Ugrave','\u016D':'ubreve','\u016C':'Ubreve','\xFB':'ucirc','\xDB':'Ucirc','\u016F':'uring','\u016E':'Uring','\xFC':'uuml','\xDC':'Uuml','\u0171':'udblac','\u0170':'Udblac','\u0169':'utilde','\u0168':'Utilde','\u0173':'uogon','\u0172':'Uogon','\u016B':'umacr','\u016A':'Umacr','\uD835\uDD33':'vfr','\uD835\uDD67':'vopf','\uD835\uDCCB':'vscr','\uD835\uDD19':'Vfr','\uD835\uDD4D':'Vopf','\uD835\uDCB1':'Vscr','\uD835\uDD68':'wopf','\uD835\uDCCC':'wscr','\uD835\uDD34':'wfr','\uD835\uDCB2':'Wscr','\uD835\uDD4E':'Wopf','\uD835\uDD1A':'Wfr','\u0175':'wcirc','\u0174':'Wcirc','\uD835\uDD35':'xfr','\uD835\uDCCD':'xscr','\uD835\uDD69':'xopf','\uD835\uDD4F':'Xopf','\uD835\uDD1B':'Xfr','\uD835\uDCB3':'Xscr','\uD835\uDD36':'yfr','\uD835\uDCCE':'yscr','\uD835\uDD6A':'yopf','\uD835\uDCB4':'Yscr','\uD835\uDD1C':'Yfr','\uD835\uDD50':'Yopf','\xFD':'yacute','\xDD':'Yacute','\u0177':'ycirc','\u0176':'Ycirc','\xFF':'yuml','\u0178':'Yuml','\uD835\uDCCF':'zscr','\uD835\uDD37':'zfr','\uD835\uDD6B':'zopf','\u2128':'Zfr','\u2124':'Zopf','\uD835\uDCB5':'Zscr','\u017A':'zacute','\u0179':'Zacute','\u017E':'zcaron','\u017D':'Zcaron','\u017C':'zdot','\u017B':'Zdot','\u01B5':'imped','\xFE':'thorn','\xDE':'THORN','\u0149':'napos','\u03B1':'alpha','\u0391':'Alpha','\u03B2':'beta','\u0392':'Beta','\u03B3':'gamma','\u0393':'Gamma','\u03B4':'delta','\u0394':'Delta','\u03B5':'epsi','\u03F5':'epsiv','\u0395':'Epsilon','\u03DD':'gammad','\u03DC':'Gammad','\u03B6':'zeta','\u0396':'Zeta','\u03B7':'eta','\u0397':'Eta','\u03B8':'theta','\u03D1':'thetav','\u0398':'Theta','\u03B9':'iota','\u0399':'Iota','\u03BA':'kappa','\u03F0':'kappav','\u039A':'Kappa','\u03BB':'lambda','\u039B':'Lambda','\u03BC':'mu','\xB5':'micro','\u039C':'Mu','\u03BD':'nu','\u039D':'Nu','\u03BE':'xi','\u039E':'Xi','\u03BF':'omicron','\u039F':'Omicron','\u03C0':'pi','\u03D6':'piv','\u03A0':'Pi','\u03C1':'rho','\u03F1':'rhov','\u03A1':'Rho','\u03C3':'sigma','\u03A3':'Sigma','\u03C2':'sigmaf','\u03C4':'tau','\u03A4':'Tau','\u03C5':'upsi','\u03A5':'Upsilon','\u03D2':'Upsi','\u03C6':'phi','\u03D5':'phiv','\u03A6':'Phi','\u03C7':'chi','\u03A7':'Chi','\u03C8':'psi','\u03A8':'Psi','\u03C9':'omega','\u03A9':'ohm','\u0430':'acy','\u0410':'Acy','\u0431':'bcy','\u0411':'Bcy','\u0432':'vcy','\u0412':'Vcy','\u0433':'gcy','\u0413':'Gcy','\u0453':'gjcy','\u0403':'GJcy','\u0434':'dcy','\u0414':'Dcy','\u0452':'djcy','\u0402':'DJcy','\u0435':'iecy','\u0415':'IEcy','\u0451':'iocy','\u0401':'IOcy','\u0454':'jukcy','\u0404':'Jukcy','\u0436':'zhcy','\u0416':'ZHcy','\u0437':'zcy','\u0417':'Zcy','\u0455':'dscy','\u0405':'DScy','\u0438':'icy','\u0418':'Icy','\u0456':'iukcy','\u0406':'Iukcy','\u0457':'yicy','\u0407':'YIcy','\u0439':'jcy','\u0419':'Jcy','\u0458':'jsercy','\u0408':'Jsercy','\u043A':'kcy','\u041A':'Kcy','\u045C':'kjcy','\u040C':'KJcy','\u043B':'lcy','\u041B':'Lcy','\u0459':'ljcy','\u0409':'LJcy','\u043C':'mcy','\u041C':'Mcy','\u043D':'ncy','\u041D':'Ncy','\u045A':'njcy','\u040A':'NJcy','\u043E':'ocy','\u041E':'Ocy','\u043F':'pcy','\u041F':'Pcy','\u0440':'rcy','\u0420':'Rcy','\u0441':'scy','\u0421':'Scy','\u0442':'tcy','\u0422':'Tcy','\u045B':'tshcy','\u040B':'TSHcy','\u0443':'ucy','\u0423':'Ucy','\u045E':'ubrcy','\u040E':'Ubrcy','\u0444':'fcy','\u0424':'Fcy','\u0445':'khcy','\u0425':'KHcy','\u0446':'tscy','\u0426':'TScy','\u0447':'chcy','\u0427':'CHcy','\u045F':'dzcy','\u040F':'DZcy','\u0448':'shcy','\u0428':'SHcy','\u0449':'shchcy','\u0429':'SHCHcy','\u044A':'hardcy','\u042A':'HARDcy','\u044B':'ycy','\u042B':'Ycy','\u044C':'softcy','\u042C':'SOFTcy','\u044D':'ecy','\u042D':'Ecy','\u044E':'yucy','\u042E':'YUcy','\u044F':'yacy','\u042F':'YAcy','\u2135':'aleph','\u2136':'beth','\u2137':'gimel','\u2138':'daleth'}; + + var regexEscape = /["&'<>`]/g; + var escapeMap = { + '"': '"', + '&': '&', + '\'': ''', + '<': '<', + // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the + // following is not strictly necessary unless it’s part of a tag or an + // unquoted attribute value. We’re only escaping it to support those + // situations, and for XML support. + '>': '>', + // In Internet Explorer ≤ 8, the backtick character can be used + // to break out of (un)quoted attribute values or HTML comments. + // See http://html5sec.org/#102, http://html5sec.org/#108, and + // http://html5sec.org/#133. + '`': '`' + }; + + var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/; + var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; + var regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g; + var decodeMap = {'aacute':'\xE1','Aacute':'\xC1','abreve':'\u0103','Abreve':'\u0102','ac':'\u223E','acd':'\u223F','acE':'\u223E\u0333','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','acy':'\u0430','Acy':'\u0410','aelig':'\xE6','AElig':'\xC6','af':'\u2061','afr':'\uD835\uDD1E','Afr':'\uD835\uDD04','agrave':'\xE0','Agrave':'\xC0','alefsym':'\u2135','aleph':'\u2135','alpha':'\u03B1','Alpha':'\u0391','amacr':'\u0101','Amacr':'\u0100','amalg':'\u2A3F','amp':'&','AMP':'&','and':'\u2227','And':'\u2A53','andand':'\u2A55','andd':'\u2A5C','andslope':'\u2A58','andv':'\u2A5A','ang':'\u2220','ange':'\u29A4','angle':'\u2220','angmsd':'\u2221','angmsdaa':'\u29A8','angmsdab':'\u29A9','angmsdac':'\u29AA','angmsdad':'\u29AB','angmsdae':'\u29AC','angmsdaf':'\u29AD','angmsdag':'\u29AE','angmsdah':'\u29AF','angrt':'\u221F','angrtvb':'\u22BE','angrtvbd':'\u299D','angsph':'\u2222','angst':'\xC5','angzarr':'\u237C','aogon':'\u0105','Aogon':'\u0104','aopf':'\uD835\uDD52','Aopf':'\uD835\uDD38','ap':'\u2248','apacir':'\u2A6F','ape':'\u224A','apE':'\u2A70','apid':'\u224B','apos':'\'','ApplyFunction':'\u2061','approx':'\u2248','approxeq':'\u224A','aring':'\xE5','Aring':'\xC5','ascr':'\uD835\uDCB6','Ascr':'\uD835\uDC9C','Assign':'\u2254','ast':'*','asymp':'\u2248','asympeq':'\u224D','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','awconint':'\u2233','awint':'\u2A11','backcong':'\u224C','backepsilon':'\u03F6','backprime':'\u2035','backsim':'\u223D','backsimeq':'\u22CD','Backslash':'\u2216','Barv':'\u2AE7','barvee':'\u22BD','barwed':'\u2305','Barwed':'\u2306','barwedge':'\u2305','bbrk':'\u23B5','bbrktbrk':'\u23B6','bcong':'\u224C','bcy':'\u0431','Bcy':'\u0411','bdquo':'\u201E','becaus':'\u2235','because':'\u2235','Because':'\u2235','bemptyv':'\u29B0','bepsi':'\u03F6','bernou':'\u212C','Bernoullis':'\u212C','beta':'\u03B2','Beta':'\u0392','beth':'\u2136','between':'\u226C','bfr':'\uD835\uDD1F','Bfr':'\uD835\uDD05','bigcap':'\u22C2','bigcirc':'\u25EF','bigcup':'\u22C3','bigodot':'\u2A00','bigoplus':'\u2A01','bigotimes':'\u2A02','bigsqcup':'\u2A06','bigstar':'\u2605','bigtriangledown':'\u25BD','bigtriangleup':'\u25B3','biguplus':'\u2A04','bigvee':'\u22C1','bigwedge':'\u22C0','bkarow':'\u290D','blacklozenge':'\u29EB','blacksquare':'\u25AA','blacktriangle':'\u25B4','blacktriangledown':'\u25BE','blacktriangleleft':'\u25C2','blacktriangleright':'\u25B8','blank':'\u2423','blk12':'\u2592','blk14':'\u2591','blk34':'\u2593','block':'\u2588','bne':'=\u20E5','bnequiv':'\u2261\u20E5','bnot':'\u2310','bNot':'\u2AED','bopf':'\uD835\uDD53','Bopf':'\uD835\uDD39','bot':'\u22A5','bottom':'\u22A5','bowtie':'\u22C8','boxbox':'\u29C9','boxdl':'\u2510','boxdL':'\u2555','boxDl':'\u2556','boxDL':'\u2557','boxdr':'\u250C','boxdR':'\u2552','boxDr':'\u2553','boxDR':'\u2554','boxh':'\u2500','boxH':'\u2550','boxhd':'\u252C','boxhD':'\u2565','boxHd':'\u2564','boxHD':'\u2566','boxhu':'\u2534','boxhU':'\u2568','boxHu':'\u2567','boxHU':'\u2569','boxminus':'\u229F','boxplus':'\u229E','boxtimes':'\u22A0','boxul':'\u2518','boxuL':'\u255B','boxUl':'\u255C','boxUL':'\u255D','boxur':'\u2514','boxuR':'\u2558','boxUr':'\u2559','boxUR':'\u255A','boxv':'\u2502','boxV':'\u2551','boxvh':'\u253C','boxvH':'\u256A','boxVh':'\u256B','boxVH':'\u256C','boxvl':'\u2524','boxvL':'\u2561','boxVl':'\u2562','boxVL':'\u2563','boxvr':'\u251C','boxvR':'\u255E','boxVr':'\u255F','boxVR':'\u2560','bprime':'\u2035','breve':'\u02D8','Breve':'\u02D8','brvbar':'\xA6','bscr':'\uD835\uDCB7','Bscr':'\u212C','bsemi':'\u204F','bsim':'\u223D','bsime':'\u22CD','bsol':'\\','bsolb':'\u29C5','bsolhsub':'\u27C8','bull':'\u2022','bullet':'\u2022','bump':'\u224E','bumpe':'\u224F','bumpE':'\u2AAE','bumpeq':'\u224F','Bumpeq':'\u224E','cacute':'\u0107','Cacute':'\u0106','cap':'\u2229','Cap':'\u22D2','capand':'\u2A44','capbrcup':'\u2A49','capcap':'\u2A4B','capcup':'\u2A47','capdot':'\u2A40','CapitalDifferentialD':'\u2145','caps':'\u2229\uFE00','caret':'\u2041','caron':'\u02C7','Cayleys':'\u212D','ccaps':'\u2A4D','ccaron':'\u010D','Ccaron':'\u010C','ccedil':'\xE7','Ccedil':'\xC7','ccirc':'\u0109','Ccirc':'\u0108','Cconint':'\u2230','ccups':'\u2A4C','ccupssm':'\u2A50','cdot':'\u010B','Cdot':'\u010A','cedil':'\xB8','Cedilla':'\xB8','cemptyv':'\u29B2','cent':'\xA2','centerdot':'\xB7','CenterDot':'\xB7','cfr':'\uD835\uDD20','Cfr':'\u212D','chcy':'\u0447','CHcy':'\u0427','check':'\u2713','checkmark':'\u2713','chi':'\u03C7','Chi':'\u03A7','cir':'\u25CB','circ':'\u02C6','circeq':'\u2257','circlearrowleft':'\u21BA','circlearrowright':'\u21BB','circledast':'\u229B','circledcirc':'\u229A','circleddash':'\u229D','CircleDot':'\u2299','circledR':'\xAE','circledS':'\u24C8','CircleMinus':'\u2296','CirclePlus':'\u2295','CircleTimes':'\u2297','cire':'\u2257','cirE':'\u29C3','cirfnint':'\u2A10','cirmid':'\u2AEF','cirscir':'\u29C2','ClockwiseContourIntegral':'\u2232','CloseCurlyDoubleQuote':'\u201D','CloseCurlyQuote':'\u2019','clubs':'\u2663','clubsuit':'\u2663','colon':':','Colon':'\u2237','colone':'\u2254','Colone':'\u2A74','coloneq':'\u2254','comma':',','commat':'@','comp':'\u2201','compfn':'\u2218','complement':'\u2201','complexes':'\u2102','cong':'\u2245','congdot':'\u2A6D','Congruent':'\u2261','conint':'\u222E','Conint':'\u222F','ContourIntegral':'\u222E','copf':'\uD835\uDD54','Copf':'\u2102','coprod':'\u2210','Coproduct':'\u2210','copy':'\xA9','COPY':'\xA9','copysr':'\u2117','CounterClockwiseContourIntegral':'\u2233','crarr':'\u21B5','cross':'\u2717','Cross':'\u2A2F','cscr':'\uD835\uDCB8','Cscr':'\uD835\uDC9E','csub':'\u2ACF','csube':'\u2AD1','csup':'\u2AD0','csupe':'\u2AD2','ctdot':'\u22EF','cudarrl':'\u2938','cudarrr':'\u2935','cuepr':'\u22DE','cuesc':'\u22DF','cularr':'\u21B6','cularrp':'\u293D','cup':'\u222A','Cup':'\u22D3','cupbrcap':'\u2A48','cupcap':'\u2A46','CupCap':'\u224D','cupcup':'\u2A4A','cupdot':'\u228D','cupor':'\u2A45','cups':'\u222A\uFE00','curarr':'\u21B7','curarrm':'\u293C','curlyeqprec':'\u22DE','curlyeqsucc':'\u22DF','curlyvee':'\u22CE','curlywedge':'\u22CF','curren':'\xA4','curvearrowleft':'\u21B6','curvearrowright':'\u21B7','cuvee':'\u22CE','cuwed':'\u22CF','cwconint':'\u2232','cwint':'\u2231','cylcty':'\u232D','dagger':'\u2020','Dagger':'\u2021','daleth':'\u2138','darr':'\u2193','dArr':'\u21D3','Darr':'\u21A1','dash':'\u2010','dashv':'\u22A3','Dashv':'\u2AE4','dbkarow':'\u290F','dblac':'\u02DD','dcaron':'\u010F','Dcaron':'\u010E','dcy':'\u0434','Dcy':'\u0414','dd':'\u2146','DD':'\u2145','ddagger':'\u2021','ddarr':'\u21CA','DDotrahd':'\u2911','ddotseq':'\u2A77','deg':'\xB0','Del':'\u2207','delta':'\u03B4','Delta':'\u0394','demptyv':'\u29B1','dfisht':'\u297F','dfr':'\uD835\uDD21','Dfr':'\uD835\uDD07','dHar':'\u2965','dharl':'\u21C3','dharr':'\u21C2','DiacriticalAcute':'\xB4','DiacriticalDot':'\u02D9','DiacriticalDoubleAcute':'\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\u02DC','diam':'\u22C4','diamond':'\u22C4','Diamond':'\u22C4','diamondsuit':'\u2666','diams':'\u2666','die':'\xA8','DifferentialD':'\u2146','digamma':'\u03DD','disin':'\u22F2','div':'\xF7','divide':'\xF7','divideontimes':'\u22C7','divonx':'\u22C7','djcy':'\u0452','DJcy':'\u0402','dlcorn':'\u231E','dlcrop':'\u230D','dollar':'$','dopf':'\uD835\uDD55','Dopf':'\uD835\uDD3B','dot':'\u02D9','Dot':'\xA8','DotDot':'\u20DC','doteq':'\u2250','doteqdot':'\u2251','DotEqual':'\u2250','dotminus':'\u2238','dotplus':'\u2214','dotsquare':'\u22A1','doublebarwedge':'\u2306','DoubleContourIntegral':'\u222F','DoubleDot':'\xA8','DoubleDownArrow':'\u21D3','DoubleLeftArrow':'\u21D0','DoubleLeftRightArrow':'\u21D4','DoubleLeftTee':'\u2AE4','DoubleLongLeftArrow':'\u27F8','DoubleLongLeftRightArrow':'\u27FA','DoubleLongRightArrow':'\u27F9','DoubleRightArrow':'\u21D2','DoubleRightTee':'\u22A8','DoubleUpArrow':'\u21D1','DoubleUpDownArrow':'\u21D5','DoubleVerticalBar':'\u2225','downarrow':'\u2193','Downarrow':'\u21D3','DownArrow':'\u2193','DownArrowBar':'\u2913','DownArrowUpArrow':'\u21F5','DownBreve':'\u0311','downdownarrows':'\u21CA','downharpoonleft':'\u21C3','downharpoonright':'\u21C2','DownLeftRightVector':'\u2950','DownLeftTeeVector':'\u295E','DownLeftVector':'\u21BD','DownLeftVectorBar':'\u2956','DownRightTeeVector':'\u295F','DownRightVector':'\u21C1','DownRightVectorBar':'\u2957','DownTee':'\u22A4','DownTeeArrow':'\u21A7','drbkarow':'\u2910','drcorn':'\u231F','drcrop':'\u230C','dscr':'\uD835\uDCB9','Dscr':'\uD835\uDC9F','dscy':'\u0455','DScy':'\u0405','dsol':'\u29F6','dstrok':'\u0111','Dstrok':'\u0110','dtdot':'\u22F1','dtri':'\u25BF','dtrif':'\u25BE','duarr':'\u21F5','duhar':'\u296F','dwangle':'\u29A6','dzcy':'\u045F','DZcy':'\u040F','dzigrarr':'\u27FF','eacute':'\xE9','Eacute':'\xC9','easter':'\u2A6E','ecaron':'\u011B','Ecaron':'\u011A','ecir':'\u2256','ecirc':'\xEA','Ecirc':'\xCA','ecolon':'\u2255','ecy':'\u044D','Ecy':'\u042D','eDDot':'\u2A77','edot':'\u0117','eDot':'\u2251','Edot':'\u0116','ee':'\u2147','efDot':'\u2252','efr':'\uD835\uDD22','Efr':'\uD835\uDD08','eg':'\u2A9A','egrave':'\xE8','Egrave':'\xC8','egs':'\u2A96','egsdot':'\u2A98','el':'\u2A99','Element':'\u2208','elinters':'\u23E7','ell':'\u2113','els':'\u2A95','elsdot':'\u2A97','emacr':'\u0113','Emacr':'\u0112','empty':'\u2205','emptyset':'\u2205','EmptySmallSquare':'\u25FB','emptyv':'\u2205','EmptyVerySmallSquare':'\u25AB','emsp':'\u2003','emsp13':'\u2004','emsp14':'\u2005','eng':'\u014B','ENG':'\u014A','ensp':'\u2002','eogon':'\u0119','Eogon':'\u0118','eopf':'\uD835\uDD56','Eopf':'\uD835\uDD3C','epar':'\u22D5','eparsl':'\u29E3','eplus':'\u2A71','epsi':'\u03B5','epsilon':'\u03B5','Epsilon':'\u0395','epsiv':'\u03F5','eqcirc':'\u2256','eqcolon':'\u2255','eqsim':'\u2242','eqslantgtr':'\u2A96','eqslantless':'\u2A95','Equal':'\u2A75','equals':'=','EqualTilde':'\u2242','equest':'\u225F','Equilibrium':'\u21CC','equiv':'\u2261','equivDD':'\u2A78','eqvparsl':'\u29E5','erarr':'\u2971','erDot':'\u2253','escr':'\u212F','Escr':'\u2130','esdot':'\u2250','esim':'\u2242','Esim':'\u2A73','eta':'\u03B7','Eta':'\u0397','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','euro':'\u20AC','excl':'!','exist':'\u2203','Exists':'\u2203','expectation':'\u2130','exponentiale':'\u2147','ExponentialE':'\u2147','fallingdotseq':'\u2252','fcy':'\u0444','Fcy':'\u0424','female':'\u2640','ffilig':'\uFB03','fflig':'\uFB00','ffllig':'\uFB04','ffr':'\uD835\uDD23','Ffr':'\uD835\uDD09','filig':'\uFB01','FilledSmallSquare':'\u25FC','FilledVerySmallSquare':'\u25AA','fjlig':'fj','flat':'\u266D','fllig':'\uFB02','fltns':'\u25B1','fnof':'\u0192','fopf':'\uD835\uDD57','Fopf':'\uD835\uDD3D','forall':'\u2200','ForAll':'\u2200','fork':'\u22D4','forkv':'\u2AD9','Fouriertrf':'\u2131','fpartint':'\u2A0D','frac12':'\xBD','frac13':'\u2153','frac14':'\xBC','frac15':'\u2155','frac16':'\u2159','frac18':'\u215B','frac23':'\u2154','frac25':'\u2156','frac34':'\xBE','frac35':'\u2157','frac38':'\u215C','frac45':'\u2158','frac56':'\u215A','frac58':'\u215D','frac78':'\u215E','frasl':'\u2044','frown':'\u2322','fscr':'\uD835\uDCBB','Fscr':'\u2131','gacute':'\u01F5','gamma':'\u03B3','Gamma':'\u0393','gammad':'\u03DD','Gammad':'\u03DC','gap':'\u2A86','gbreve':'\u011F','Gbreve':'\u011E','Gcedil':'\u0122','gcirc':'\u011D','Gcirc':'\u011C','gcy':'\u0433','Gcy':'\u0413','gdot':'\u0121','Gdot':'\u0120','ge':'\u2265','gE':'\u2267','gel':'\u22DB','gEl':'\u2A8C','geq':'\u2265','geqq':'\u2267','geqslant':'\u2A7E','ges':'\u2A7E','gescc':'\u2AA9','gesdot':'\u2A80','gesdoto':'\u2A82','gesdotol':'\u2A84','gesl':'\u22DB\uFE00','gesles':'\u2A94','gfr':'\uD835\uDD24','Gfr':'\uD835\uDD0A','gg':'\u226B','Gg':'\u22D9','ggg':'\u22D9','gimel':'\u2137','gjcy':'\u0453','GJcy':'\u0403','gl':'\u2277','gla':'\u2AA5','glE':'\u2A92','glj':'\u2AA4','gnap':'\u2A8A','gnapprox':'\u2A8A','gne':'\u2A88','gnE':'\u2269','gneq':'\u2A88','gneqq':'\u2269','gnsim':'\u22E7','gopf':'\uD835\uDD58','Gopf':'\uD835\uDD3E','grave':'`','GreaterEqual':'\u2265','GreaterEqualLess':'\u22DB','GreaterFullEqual':'\u2267','GreaterGreater':'\u2AA2','GreaterLess':'\u2277','GreaterSlantEqual':'\u2A7E','GreaterTilde':'\u2273','gscr':'\u210A','Gscr':'\uD835\uDCA2','gsim':'\u2273','gsime':'\u2A8E','gsiml':'\u2A90','gt':'>','Gt':'\u226B','GT':'>','gtcc':'\u2AA7','gtcir':'\u2A7A','gtdot':'\u22D7','gtlPar':'\u2995','gtquest':'\u2A7C','gtrapprox':'\u2A86','gtrarr':'\u2978','gtrdot':'\u22D7','gtreqless':'\u22DB','gtreqqless':'\u2A8C','gtrless':'\u2277','gtrsim':'\u2273','gvertneqq':'\u2269\uFE00','gvnE':'\u2269\uFE00','Hacek':'\u02C7','hairsp':'\u200A','half':'\xBD','hamilt':'\u210B','hardcy':'\u044A','HARDcy':'\u042A','harr':'\u2194','hArr':'\u21D4','harrcir':'\u2948','harrw':'\u21AD','Hat':'^','hbar':'\u210F','hcirc':'\u0125','Hcirc':'\u0124','hearts':'\u2665','heartsuit':'\u2665','hellip':'\u2026','hercon':'\u22B9','hfr':'\uD835\uDD25','Hfr':'\u210C','HilbertSpace':'\u210B','hksearow':'\u2925','hkswarow':'\u2926','hoarr':'\u21FF','homtht':'\u223B','hookleftarrow':'\u21A9','hookrightarrow':'\u21AA','hopf':'\uD835\uDD59','Hopf':'\u210D','horbar':'\u2015','HorizontalLine':'\u2500','hscr':'\uD835\uDCBD','Hscr':'\u210B','hslash':'\u210F','hstrok':'\u0127','Hstrok':'\u0126','HumpDownHump':'\u224E','HumpEqual':'\u224F','hybull':'\u2043','hyphen':'\u2010','iacute':'\xED','Iacute':'\xCD','ic':'\u2063','icirc':'\xEE','Icirc':'\xCE','icy':'\u0438','Icy':'\u0418','Idot':'\u0130','iecy':'\u0435','IEcy':'\u0415','iexcl':'\xA1','iff':'\u21D4','ifr':'\uD835\uDD26','Ifr':'\u2111','igrave':'\xEC','Igrave':'\xCC','ii':'\u2148','iiiint':'\u2A0C','iiint':'\u222D','iinfin':'\u29DC','iiota':'\u2129','ijlig':'\u0133','IJlig':'\u0132','Im':'\u2111','imacr':'\u012B','Imacr':'\u012A','image':'\u2111','ImaginaryI':'\u2148','imagline':'\u2110','imagpart':'\u2111','imath':'\u0131','imof':'\u22B7','imped':'\u01B5','Implies':'\u21D2','in':'\u2208','incare':'\u2105','infin':'\u221E','infintie':'\u29DD','inodot':'\u0131','int':'\u222B','Int':'\u222C','intcal':'\u22BA','integers':'\u2124','Integral':'\u222B','intercal':'\u22BA','Intersection':'\u22C2','intlarhk':'\u2A17','intprod':'\u2A3C','InvisibleComma':'\u2063','InvisibleTimes':'\u2062','iocy':'\u0451','IOcy':'\u0401','iogon':'\u012F','Iogon':'\u012E','iopf':'\uD835\uDD5A','Iopf':'\uD835\uDD40','iota':'\u03B9','Iota':'\u0399','iprod':'\u2A3C','iquest':'\xBF','iscr':'\uD835\uDCBE','Iscr':'\u2110','isin':'\u2208','isindot':'\u22F5','isinE':'\u22F9','isins':'\u22F4','isinsv':'\u22F3','isinv':'\u2208','it':'\u2062','itilde':'\u0129','Itilde':'\u0128','iukcy':'\u0456','Iukcy':'\u0406','iuml':'\xEF','Iuml':'\xCF','jcirc':'\u0135','Jcirc':'\u0134','jcy':'\u0439','Jcy':'\u0419','jfr':'\uD835\uDD27','Jfr':'\uD835\uDD0D','jmath':'\u0237','jopf':'\uD835\uDD5B','Jopf':'\uD835\uDD41','jscr':'\uD835\uDCBF','Jscr':'\uD835\uDCA5','jsercy':'\u0458','Jsercy':'\u0408','jukcy':'\u0454','Jukcy':'\u0404','kappa':'\u03BA','Kappa':'\u039A','kappav':'\u03F0','kcedil':'\u0137','Kcedil':'\u0136','kcy':'\u043A','Kcy':'\u041A','kfr':'\uD835\uDD28','Kfr':'\uD835\uDD0E','kgreen':'\u0138','khcy':'\u0445','KHcy':'\u0425','kjcy':'\u045C','KJcy':'\u040C','kopf':'\uD835\uDD5C','Kopf':'\uD835\uDD42','kscr':'\uD835\uDCC0','Kscr':'\uD835\uDCA6','lAarr':'\u21DA','lacute':'\u013A','Lacute':'\u0139','laemptyv':'\u29B4','lagran':'\u2112','lambda':'\u03BB','Lambda':'\u039B','lang':'\u27E8','Lang':'\u27EA','langd':'\u2991','langle':'\u27E8','lap':'\u2A85','Laplacetrf':'\u2112','laquo':'\xAB','larr':'\u2190','lArr':'\u21D0','Larr':'\u219E','larrb':'\u21E4','larrbfs':'\u291F','larrfs':'\u291D','larrhk':'\u21A9','larrlp':'\u21AB','larrpl':'\u2939','larrsim':'\u2973','larrtl':'\u21A2','lat':'\u2AAB','latail':'\u2919','lAtail':'\u291B','late':'\u2AAD','lates':'\u2AAD\uFE00','lbarr':'\u290C','lBarr':'\u290E','lbbrk':'\u2772','lbrace':'{','lbrack':'[','lbrke':'\u298B','lbrksld':'\u298F','lbrkslu':'\u298D','lcaron':'\u013E','Lcaron':'\u013D','lcedil':'\u013C','Lcedil':'\u013B','lceil':'\u2308','lcub':'{','lcy':'\u043B','Lcy':'\u041B','ldca':'\u2936','ldquo':'\u201C','ldquor':'\u201E','ldrdhar':'\u2967','ldrushar':'\u294B','ldsh':'\u21B2','le':'\u2264','lE':'\u2266','LeftAngleBracket':'\u27E8','leftarrow':'\u2190','Leftarrow':'\u21D0','LeftArrow':'\u2190','LeftArrowBar':'\u21E4','LeftArrowRightArrow':'\u21C6','leftarrowtail':'\u21A2','LeftCeiling':'\u2308','LeftDoubleBracket':'\u27E6','LeftDownTeeVector':'\u2961','LeftDownVector':'\u21C3','LeftDownVectorBar':'\u2959','LeftFloor':'\u230A','leftharpoondown':'\u21BD','leftharpoonup':'\u21BC','leftleftarrows':'\u21C7','leftrightarrow':'\u2194','Leftrightarrow':'\u21D4','LeftRightArrow':'\u2194','leftrightarrows':'\u21C6','leftrightharpoons':'\u21CB','leftrightsquigarrow':'\u21AD','LeftRightVector':'\u294E','LeftTee':'\u22A3','LeftTeeArrow':'\u21A4','LeftTeeVector':'\u295A','leftthreetimes':'\u22CB','LeftTriangle':'\u22B2','LeftTriangleBar':'\u29CF','LeftTriangleEqual':'\u22B4','LeftUpDownVector':'\u2951','LeftUpTeeVector':'\u2960','LeftUpVector':'\u21BF','LeftUpVectorBar':'\u2958','LeftVector':'\u21BC','LeftVectorBar':'\u2952','leg':'\u22DA','lEg':'\u2A8B','leq':'\u2264','leqq':'\u2266','leqslant':'\u2A7D','les':'\u2A7D','lescc':'\u2AA8','lesdot':'\u2A7F','lesdoto':'\u2A81','lesdotor':'\u2A83','lesg':'\u22DA\uFE00','lesges':'\u2A93','lessapprox':'\u2A85','lessdot':'\u22D6','lesseqgtr':'\u22DA','lesseqqgtr':'\u2A8B','LessEqualGreater':'\u22DA','LessFullEqual':'\u2266','LessGreater':'\u2276','lessgtr':'\u2276','LessLess':'\u2AA1','lesssim':'\u2272','LessSlantEqual':'\u2A7D','LessTilde':'\u2272','lfisht':'\u297C','lfloor':'\u230A','lfr':'\uD835\uDD29','Lfr':'\uD835\uDD0F','lg':'\u2276','lgE':'\u2A91','lHar':'\u2962','lhard':'\u21BD','lharu':'\u21BC','lharul':'\u296A','lhblk':'\u2584','ljcy':'\u0459','LJcy':'\u0409','ll':'\u226A','Ll':'\u22D8','llarr':'\u21C7','llcorner':'\u231E','Lleftarrow':'\u21DA','llhard':'\u296B','lltri':'\u25FA','lmidot':'\u0140','Lmidot':'\u013F','lmoust':'\u23B0','lmoustache':'\u23B0','lnap':'\u2A89','lnapprox':'\u2A89','lne':'\u2A87','lnE':'\u2268','lneq':'\u2A87','lneqq':'\u2268','lnsim':'\u22E6','loang':'\u27EC','loarr':'\u21FD','lobrk':'\u27E6','longleftarrow':'\u27F5','Longleftarrow':'\u27F8','LongLeftArrow':'\u27F5','longleftrightarrow':'\u27F7','Longleftrightarrow':'\u27FA','LongLeftRightArrow':'\u27F7','longmapsto':'\u27FC','longrightarrow':'\u27F6','Longrightarrow':'\u27F9','LongRightArrow':'\u27F6','looparrowleft':'\u21AB','looparrowright':'\u21AC','lopar':'\u2985','lopf':'\uD835\uDD5D','Lopf':'\uD835\uDD43','loplus':'\u2A2D','lotimes':'\u2A34','lowast':'\u2217','lowbar':'_','LowerLeftArrow':'\u2199','LowerRightArrow':'\u2198','loz':'\u25CA','lozenge':'\u25CA','lozf':'\u29EB','lpar':'(','lparlt':'\u2993','lrarr':'\u21C6','lrcorner':'\u231F','lrhar':'\u21CB','lrhard':'\u296D','lrm':'\u200E','lrtri':'\u22BF','lsaquo':'\u2039','lscr':'\uD835\uDCC1','Lscr':'\u2112','lsh':'\u21B0','Lsh':'\u21B0','lsim':'\u2272','lsime':'\u2A8D','lsimg':'\u2A8F','lsqb':'[','lsquo':'\u2018','lsquor':'\u201A','lstrok':'\u0142','Lstrok':'\u0141','lt':'<','Lt':'\u226A','LT':'<','ltcc':'\u2AA6','ltcir':'\u2A79','ltdot':'\u22D6','lthree':'\u22CB','ltimes':'\u22C9','ltlarr':'\u2976','ltquest':'\u2A7B','ltri':'\u25C3','ltrie':'\u22B4','ltrif':'\u25C2','ltrPar':'\u2996','lurdshar':'\u294A','luruhar':'\u2966','lvertneqq':'\u2268\uFE00','lvnE':'\u2268\uFE00','macr':'\xAF','male':'\u2642','malt':'\u2720','maltese':'\u2720','map':'\u21A6','Map':'\u2905','mapsto':'\u21A6','mapstodown':'\u21A7','mapstoleft':'\u21A4','mapstoup':'\u21A5','marker':'\u25AE','mcomma':'\u2A29','mcy':'\u043C','Mcy':'\u041C','mdash':'\u2014','mDDot':'\u223A','measuredangle':'\u2221','MediumSpace':'\u205F','Mellintrf':'\u2133','mfr':'\uD835\uDD2A','Mfr':'\uD835\uDD10','mho':'\u2127','micro':'\xB5','mid':'\u2223','midast':'*','midcir':'\u2AF0','middot':'\xB7','minus':'\u2212','minusb':'\u229F','minusd':'\u2238','minusdu':'\u2A2A','MinusPlus':'\u2213','mlcp':'\u2ADB','mldr':'\u2026','mnplus':'\u2213','models':'\u22A7','mopf':'\uD835\uDD5E','Mopf':'\uD835\uDD44','mp':'\u2213','mscr':'\uD835\uDCC2','Mscr':'\u2133','mstpos':'\u223E','mu':'\u03BC','Mu':'\u039C','multimap':'\u22B8','mumap':'\u22B8','nabla':'\u2207','nacute':'\u0144','Nacute':'\u0143','nang':'\u2220\u20D2','nap':'\u2249','napE':'\u2A70\u0338','napid':'\u224B\u0338','napos':'\u0149','napprox':'\u2249','natur':'\u266E','natural':'\u266E','naturals':'\u2115','nbsp':'\xA0','nbump':'\u224E\u0338','nbumpe':'\u224F\u0338','ncap':'\u2A43','ncaron':'\u0148','Ncaron':'\u0147','ncedil':'\u0146','Ncedil':'\u0145','ncong':'\u2247','ncongdot':'\u2A6D\u0338','ncup':'\u2A42','ncy':'\u043D','Ncy':'\u041D','ndash':'\u2013','ne':'\u2260','nearhk':'\u2924','nearr':'\u2197','neArr':'\u21D7','nearrow':'\u2197','nedot':'\u2250\u0338','NegativeMediumSpace':'\u200B','NegativeThickSpace':'\u200B','NegativeThinSpace':'\u200B','NegativeVeryThinSpace':'\u200B','nequiv':'\u2262','nesear':'\u2928','nesim':'\u2242\u0338','NestedGreaterGreater':'\u226B','NestedLessLess':'\u226A','NewLine':'\n','nexist':'\u2204','nexists':'\u2204','nfr':'\uD835\uDD2B','Nfr':'\uD835\uDD11','nge':'\u2271','ngE':'\u2267\u0338','ngeq':'\u2271','ngeqq':'\u2267\u0338','ngeqslant':'\u2A7E\u0338','nges':'\u2A7E\u0338','nGg':'\u22D9\u0338','ngsim':'\u2275','ngt':'\u226F','nGt':'\u226B\u20D2','ngtr':'\u226F','nGtv':'\u226B\u0338','nharr':'\u21AE','nhArr':'\u21CE','nhpar':'\u2AF2','ni':'\u220B','nis':'\u22FC','nisd':'\u22FA','niv':'\u220B','njcy':'\u045A','NJcy':'\u040A','nlarr':'\u219A','nlArr':'\u21CD','nldr':'\u2025','nle':'\u2270','nlE':'\u2266\u0338','nleftarrow':'\u219A','nLeftarrow':'\u21CD','nleftrightarrow':'\u21AE','nLeftrightarrow':'\u21CE','nleq':'\u2270','nleqq':'\u2266\u0338','nleqslant':'\u2A7D\u0338','nles':'\u2A7D\u0338','nless':'\u226E','nLl':'\u22D8\u0338','nlsim':'\u2274','nlt':'\u226E','nLt':'\u226A\u20D2','nltri':'\u22EA','nltrie':'\u22EC','nLtv':'\u226A\u0338','nmid':'\u2224','NoBreak':'\u2060','NonBreakingSpace':'\xA0','nopf':'\uD835\uDD5F','Nopf':'\u2115','not':'\xAC','Not':'\u2AEC','NotCongruent':'\u2262','NotCupCap':'\u226D','NotDoubleVerticalBar':'\u2226','NotElement':'\u2209','NotEqual':'\u2260','NotEqualTilde':'\u2242\u0338','NotExists':'\u2204','NotGreater':'\u226F','NotGreaterEqual':'\u2271','NotGreaterFullEqual':'\u2267\u0338','NotGreaterGreater':'\u226B\u0338','NotGreaterLess':'\u2279','NotGreaterSlantEqual':'\u2A7E\u0338','NotGreaterTilde':'\u2275','NotHumpDownHump':'\u224E\u0338','NotHumpEqual':'\u224F\u0338','notin':'\u2209','notindot':'\u22F5\u0338','notinE':'\u22F9\u0338','notinva':'\u2209','notinvb':'\u22F7','notinvc':'\u22F6','NotLeftTriangle':'\u22EA','NotLeftTriangleBar':'\u29CF\u0338','NotLeftTriangleEqual':'\u22EC','NotLess':'\u226E','NotLessEqual':'\u2270','NotLessGreater':'\u2278','NotLessLess':'\u226A\u0338','NotLessSlantEqual':'\u2A7D\u0338','NotLessTilde':'\u2274','NotNestedGreaterGreater':'\u2AA2\u0338','NotNestedLessLess':'\u2AA1\u0338','notni':'\u220C','notniva':'\u220C','notnivb':'\u22FE','notnivc':'\u22FD','NotPrecedes':'\u2280','NotPrecedesEqual':'\u2AAF\u0338','NotPrecedesSlantEqual':'\u22E0','NotReverseElement':'\u220C','NotRightTriangle':'\u22EB','NotRightTriangleBar':'\u29D0\u0338','NotRightTriangleEqual':'\u22ED','NotSquareSubset':'\u228F\u0338','NotSquareSubsetEqual':'\u22E2','NotSquareSuperset':'\u2290\u0338','NotSquareSupersetEqual':'\u22E3','NotSubset':'\u2282\u20D2','NotSubsetEqual':'\u2288','NotSucceeds':'\u2281','NotSucceedsEqual':'\u2AB0\u0338','NotSucceedsSlantEqual':'\u22E1','NotSucceedsTilde':'\u227F\u0338','NotSuperset':'\u2283\u20D2','NotSupersetEqual':'\u2289','NotTilde':'\u2241','NotTildeEqual':'\u2244','NotTildeFullEqual':'\u2247','NotTildeTilde':'\u2249','NotVerticalBar':'\u2224','npar':'\u2226','nparallel':'\u2226','nparsl':'\u2AFD\u20E5','npart':'\u2202\u0338','npolint':'\u2A14','npr':'\u2280','nprcue':'\u22E0','npre':'\u2AAF\u0338','nprec':'\u2280','npreceq':'\u2AAF\u0338','nrarr':'\u219B','nrArr':'\u21CF','nrarrc':'\u2933\u0338','nrarrw':'\u219D\u0338','nrightarrow':'\u219B','nRightarrow':'\u21CF','nrtri':'\u22EB','nrtrie':'\u22ED','nsc':'\u2281','nsccue':'\u22E1','nsce':'\u2AB0\u0338','nscr':'\uD835\uDCC3','Nscr':'\uD835\uDCA9','nshortmid':'\u2224','nshortparallel':'\u2226','nsim':'\u2241','nsime':'\u2244','nsimeq':'\u2244','nsmid':'\u2224','nspar':'\u2226','nsqsube':'\u22E2','nsqsupe':'\u22E3','nsub':'\u2284','nsube':'\u2288','nsubE':'\u2AC5\u0338','nsubset':'\u2282\u20D2','nsubseteq':'\u2288','nsubseteqq':'\u2AC5\u0338','nsucc':'\u2281','nsucceq':'\u2AB0\u0338','nsup':'\u2285','nsupe':'\u2289','nsupE':'\u2AC6\u0338','nsupset':'\u2283\u20D2','nsupseteq':'\u2289','nsupseteqq':'\u2AC6\u0338','ntgl':'\u2279','ntilde':'\xF1','Ntilde':'\xD1','ntlg':'\u2278','ntriangleleft':'\u22EA','ntrianglelefteq':'\u22EC','ntriangleright':'\u22EB','ntrianglerighteq':'\u22ED','nu':'\u03BD','Nu':'\u039D','num':'#','numero':'\u2116','numsp':'\u2007','nvap':'\u224D\u20D2','nvdash':'\u22AC','nvDash':'\u22AD','nVdash':'\u22AE','nVDash':'\u22AF','nvge':'\u2265\u20D2','nvgt':'>\u20D2','nvHarr':'\u2904','nvinfin':'\u29DE','nvlArr':'\u2902','nvle':'\u2264\u20D2','nvlt':'<\u20D2','nvltrie':'\u22B4\u20D2','nvrArr':'\u2903','nvrtrie':'\u22B5\u20D2','nvsim':'\u223C\u20D2','nwarhk':'\u2923','nwarr':'\u2196','nwArr':'\u21D6','nwarrow':'\u2196','nwnear':'\u2927','oacute':'\xF3','Oacute':'\xD3','oast':'\u229B','ocir':'\u229A','ocirc':'\xF4','Ocirc':'\xD4','ocy':'\u043E','Ocy':'\u041E','odash':'\u229D','odblac':'\u0151','Odblac':'\u0150','odiv':'\u2A38','odot':'\u2299','odsold':'\u29BC','oelig':'\u0153','OElig':'\u0152','ofcir':'\u29BF','ofr':'\uD835\uDD2C','Ofr':'\uD835\uDD12','ogon':'\u02DB','ograve':'\xF2','Ograve':'\xD2','ogt':'\u29C1','ohbar':'\u29B5','ohm':'\u03A9','oint':'\u222E','olarr':'\u21BA','olcir':'\u29BE','olcross':'\u29BB','oline':'\u203E','olt':'\u29C0','omacr':'\u014D','Omacr':'\u014C','omega':'\u03C9','Omega':'\u03A9','omicron':'\u03BF','Omicron':'\u039F','omid':'\u29B6','ominus':'\u2296','oopf':'\uD835\uDD60','Oopf':'\uD835\uDD46','opar':'\u29B7','OpenCurlyDoubleQuote':'\u201C','OpenCurlyQuote':'\u2018','operp':'\u29B9','oplus':'\u2295','or':'\u2228','Or':'\u2A54','orarr':'\u21BB','ord':'\u2A5D','order':'\u2134','orderof':'\u2134','ordf':'\xAA','ordm':'\xBA','origof':'\u22B6','oror':'\u2A56','orslope':'\u2A57','orv':'\u2A5B','oS':'\u24C8','oscr':'\u2134','Oscr':'\uD835\uDCAA','oslash':'\xF8','Oslash':'\xD8','osol':'\u2298','otilde':'\xF5','Otilde':'\xD5','otimes':'\u2297','Otimes':'\u2A37','otimesas':'\u2A36','ouml':'\xF6','Ouml':'\xD6','ovbar':'\u233D','OverBar':'\u203E','OverBrace':'\u23DE','OverBracket':'\u23B4','OverParenthesis':'\u23DC','par':'\u2225','para':'\xB6','parallel':'\u2225','parsim':'\u2AF3','parsl':'\u2AFD','part':'\u2202','PartialD':'\u2202','pcy':'\u043F','Pcy':'\u041F','percnt':'%','period':'.','permil':'\u2030','perp':'\u22A5','pertenk':'\u2031','pfr':'\uD835\uDD2D','Pfr':'\uD835\uDD13','phi':'\u03C6','Phi':'\u03A6','phiv':'\u03D5','phmmat':'\u2133','phone':'\u260E','pi':'\u03C0','Pi':'\u03A0','pitchfork':'\u22D4','piv':'\u03D6','planck':'\u210F','planckh':'\u210E','plankv':'\u210F','plus':'+','plusacir':'\u2A23','plusb':'\u229E','pluscir':'\u2A22','plusdo':'\u2214','plusdu':'\u2A25','pluse':'\u2A72','PlusMinus':'\xB1','plusmn':'\xB1','plussim':'\u2A26','plustwo':'\u2A27','pm':'\xB1','Poincareplane':'\u210C','pointint':'\u2A15','popf':'\uD835\uDD61','Popf':'\u2119','pound':'\xA3','pr':'\u227A','Pr':'\u2ABB','prap':'\u2AB7','prcue':'\u227C','pre':'\u2AAF','prE':'\u2AB3','prec':'\u227A','precapprox':'\u2AB7','preccurlyeq':'\u227C','Precedes':'\u227A','PrecedesEqual':'\u2AAF','PrecedesSlantEqual':'\u227C','PrecedesTilde':'\u227E','preceq':'\u2AAF','precnapprox':'\u2AB9','precneqq':'\u2AB5','precnsim':'\u22E8','precsim':'\u227E','prime':'\u2032','Prime':'\u2033','primes':'\u2119','prnap':'\u2AB9','prnE':'\u2AB5','prnsim':'\u22E8','prod':'\u220F','Product':'\u220F','profalar':'\u232E','profline':'\u2312','profsurf':'\u2313','prop':'\u221D','Proportion':'\u2237','Proportional':'\u221D','propto':'\u221D','prsim':'\u227E','prurel':'\u22B0','pscr':'\uD835\uDCC5','Pscr':'\uD835\uDCAB','psi':'\u03C8','Psi':'\u03A8','puncsp':'\u2008','qfr':'\uD835\uDD2E','Qfr':'\uD835\uDD14','qint':'\u2A0C','qopf':'\uD835\uDD62','Qopf':'\u211A','qprime':'\u2057','qscr':'\uD835\uDCC6','Qscr':'\uD835\uDCAC','quaternions':'\u210D','quatint':'\u2A16','quest':'?','questeq':'\u225F','quot':'"','QUOT':'"','rAarr':'\u21DB','race':'\u223D\u0331','racute':'\u0155','Racute':'\u0154','radic':'\u221A','raemptyv':'\u29B3','rang':'\u27E9','Rang':'\u27EB','rangd':'\u2992','range':'\u29A5','rangle':'\u27E9','raquo':'\xBB','rarr':'\u2192','rArr':'\u21D2','Rarr':'\u21A0','rarrap':'\u2975','rarrb':'\u21E5','rarrbfs':'\u2920','rarrc':'\u2933','rarrfs':'\u291E','rarrhk':'\u21AA','rarrlp':'\u21AC','rarrpl':'\u2945','rarrsim':'\u2974','rarrtl':'\u21A3','Rarrtl':'\u2916','rarrw':'\u219D','ratail':'\u291A','rAtail':'\u291C','ratio':'\u2236','rationals':'\u211A','rbarr':'\u290D','rBarr':'\u290F','RBarr':'\u2910','rbbrk':'\u2773','rbrace':'}','rbrack':']','rbrke':'\u298C','rbrksld':'\u298E','rbrkslu':'\u2990','rcaron':'\u0159','Rcaron':'\u0158','rcedil':'\u0157','Rcedil':'\u0156','rceil':'\u2309','rcub':'}','rcy':'\u0440','Rcy':'\u0420','rdca':'\u2937','rdldhar':'\u2969','rdquo':'\u201D','rdquor':'\u201D','rdsh':'\u21B3','Re':'\u211C','real':'\u211C','realine':'\u211B','realpart':'\u211C','reals':'\u211D','rect':'\u25AD','reg':'\xAE','REG':'\xAE','ReverseElement':'\u220B','ReverseEquilibrium':'\u21CB','ReverseUpEquilibrium':'\u296F','rfisht':'\u297D','rfloor':'\u230B','rfr':'\uD835\uDD2F','Rfr':'\u211C','rHar':'\u2964','rhard':'\u21C1','rharu':'\u21C0','rharul':'\u296C','rho':'\u03C1','Rho':'\u03A1','rhov':'\u03F1','RightAngleBracket':'\u27E9','rightarrow':'\u2192','Rightarrow':'\u21D2','RightArrow':'\u2192','RightArrowBar':'\u21E5','RightArrowLeftArrow':'\u21C4','rightarrowtail':'\u21A3','RightCeiling':'\u2309','RightDoubleBracket':'\u27E7','RightDownTeeVector':'\u295D','RightDownVector':'\u21C2','RightDownVectorBar':'\u2955','RightFloor':'\u230B','rightharpoondown':'\u21C1','rightharpoonup':'\u21C0','rightleftarrows':'\u21C4','rightleftharpoons':'\u21CC','rightrightarrows':'\u21C9','rightsquigarrow':'\u219D','RightTee':'\u22A2','RightTeeArrow':'\u21A6','RightTeeVector':'\u295B','rightthreetimes':'\u22CC','RightTriangle':'\u22B3','RightTriangleBar':'\u29D0','RightTriangleEqual':'\u22B5','RightUpDownVector':'\u294F','RightUpTeeVector':'\u295C','RightUpVector':'\u21BE','RightUpVectorBar':'\u2954','RightVector':'\u21C0','RightVectorBar':'\u2953','ring':'\u02DA','risingdotseq':'\u2253','rlarr':'\u21C4','rlhar':'\u21CC','rlm':'\u200F','rmoust':'\u23B1','rmoustache':'\u23B1','rnmid':'\u2AEE','roang':'\u27ED','roarr':'\u21FE','robrk':'\u27E7','ropar':'\u2986','ropf':'\uD835\uDD63','Ropf':'\u211D','roplus':'\u2A2E','rotimes':'\u2A35','RoundImplies':'\u2970','rpar':')','rpargt':'\u2994','rppolint':'\u2A12','rrarr':'\u21C9','Rrightarrow':'\u21DB','rsaquo':'\u203A','rscr':'\uD835\uDCC7','Rscr':'\u211B','rsh':'\u21B1','Rsh':'\u21B1','rsqb':']','rsquo':'\u2019','rsquor':'\u2019','rthree':'\u22CC','rtimes':'\u22CA','rtri':'\u25B9','rtrie':'\u22B5','rtrif':'\u25B8','rtriltri':'\u29CE','RuleDelayed':'\u29F4','ruluhar':'\u2968','rx':'\u211E','sacute':'\u015B','Sacute':'\u015A','sbquo':'\u201A','sc':'\u227B','Sc':'\u2ABC','scap':'\u2AB8','scaron':'\u0161','Scaron':'\u0160','sccue':'\u227D','sce':'\u2AB0','scE':'\u2AB4','scedil':'\u015F','Scedil':'\u015E','scirc':'\u015D','Scirc':'\u015C','scnap':'\u2ABA','scnE':'\u2AB6','scnsim':'\u22E9','scpolint':'\u2A13','scsim':'\u227F','scy':'\u0441','Scy':'\u0421','sdot':'\u22C5','sdotb':'\u22A1','sdote':'\u2A66','searhk':'\u2925','searr':'\u2198','seArr':'\u21D8','searrow':'\u2198','sect':'\xA7','semi':';','seswar':'\u2929','setminus':'\u2216','setmn':'\u2216','sext':'\u2736','sfr':'\uD835\uDD30','Sfr':'\uD835\uDD16','sfrown':'\u2322','sharp':'\u266F','shchcy':'\u0449','SHCHcy':'\u0429','shcy':'\u0448','SHcy':'\u0428','ShortDownArrow':'\u2193','ShortLeftArrow':'\u2190','shortmid':'\u2223','shortparallel':'\u2225','ShortRightArrow':'\u2192','ShortUpArrow':'\u2191','shy':'\xAD','sigma':'\u03C3','Sigma':'\u03A3','sigmaf':'\u03C2','sigmav':'\u03C2','sim':'\u223C','simdot':'\u2A6A','sime':'\u2243','simeq':'\u2243','simg':'\u2A9E','simgE':'\u2AA0','siml':'\u2A9D','simlE':'\u2A9F','simne':'\u2246','simplus':'\u2A24','simrarr':'\u2972','slarr':'\u2190','SmallCircle':'\u2218','smallsetminus':'\u2216','smashp':'\u2A33','smeparsl':'\u29E4','smid':'\u2223','smile':'\u2323','smt':'\u2AAA','smte':'\u2AAC','smtes':'\u2AAC\uFE00','softcy':'\u044C','SOFTcy':'\u042C','sol':'/','solb':'\u29C4','solbar':'\u233F','sopf':'\uD835\uDD64','Sopf':'\uD835\uDD4A','spades':'\u2660','spadesuit':'\u2660','spar':'\u2225','sqcap':'\u2293','sqcaps':'\u2293\uFE00','sqcup':'\u2294','sqcups':'\u2294\uFE00','Sqrt':'\u221A','sqsub':'\u228F','sqsube':'\u2291','sqsubset':'\u228F','sqsubseteq':'\u2291','sqsup':'\u2290','sqsupe':'\u2292','sqsupset':'\u2290','sqsupseteq':'\u2292','squ':'\u25A1','square':'\u25A1','Square':'\u25A1','SquareIntersection':'\u2293','SquareSubset':'\u228F','SquareSubsetEqual':'\u2291','SquareSuperset':'\u2290','SquareSupersetEqual':'\u2292','SquareUnion':'\u2294','squarf':'\u25AA','squf':'\u25AA','srarr':'\u2192','sscr':'\uD835\uDCC8','Sscr':'\uD835\uDCAE','ssetmn':'\u2216','ssmile':'\u2323','sstarf':'\u22C6','star':'\u2606','Star':'\u22C6','starf':'\u2605','straightepsilon':'\u03F5','straightphi':'\u03D5','strns':'\xAF','sub':'\u2282','Sub':'\u22D0','subdot':'\u2ABD','sube':'\u2286','subE':'\u2AC5','subedot':'\u2AC3','submult':'\u2AC1','subne':'\u228A','subnE':'\u2ACB','subplus':'\u2ABF','subrarr':'\u2979','subset':'\u2282','Subset':'\u22D0','subseteq':'\u2286','subseteqq':'\u2AC5','SubsetEqual':'\u2286','subsetneq':'\u228A','subsetneqq':'\u2ACB','subsim':'\u2AC7','subsub':'\u2AD5','subsup':'\u2AD3','succ':'\u227B','succapprox':'\u2AB8','succcurlyeq':'\u227D','Succeeds':'\u227B','SucceedsEqual':'\u2AB0','SucceedsSlantEqual':'\u227D','SucceedsTilde':'\u227F','succeq':'\u2AB0','succnapprox':'\u2ABA','succneqq':'\u2AB6','succnsim':'\u22E9','succsim':'\u227F','SuchThat':'\u220B','sum':'\u2211','Sum':'\u2211','sung':'\u266A','sup':'\u2283','Sup':'\u22D1','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','supdot':'\u2ABE','supdsub':'\u2AD8','supe':'\u2287','supE':'\u2AC6','supedot':'\u2AC4','Superset':'\u2283','SupersetEqual':'\u2287','suphsol':'\u27C9','suphsub':'\u2AD7','suplarr':'\u297B','supmult':'\u2AC2','supne':'\u228B','supnE':'\u2ACC','supplus':'\u2AC0','supset':'\u2283','Supset':'\u22D1','supseteq':'\u2287','supseteqq':'\u2AC6','supsetneq':'\u228B','supsetneqq':'\u2ACC','supsim':'\u2AC8','supsub':'\u2AD4','supsup':'\u2AD6','swarhk':'\u2926','swarr':'\u2199','swArr':'\u21D9','swarrow':'\u2199','swnwar':'\u292A','szlig':'\xDF','Tab':'\t','target':'\u2316','tau':'\u03C4','Tau':'\u03A4','tbrk':'\u23B4','tcaron':'\u0165','Tcaron':'\u0164','tcedil':'\u0163','Tcedil':'\u0162','tcy':'\u0442','Tcy':'\u0422','tdot':'\u20DB','telrec':'\u2315','tfr':'\uD835\uDD31','Tfr':'\uD835\uDD17','there4':'\u2234','therefore':'\u2234','Therefore':'\u2234','theta':'\u03B8','Theta':'\u0398','thetasym':'\u03D1','thetav':'\u03D1','thickapprox':'\u2248','thicksim':'\u223C','ThickSpace':'\u205F\u200A','thinsp':'\u2009','ThinSpace':'\u2009','thkap':'\u2248','thksim':'\u223C','thorn':'\xFE','THORN':'\xDE','tilde':'\u02DC','Tilde':'\u223C','TildeEqual':'\u2243','TildeFullEqual':'\u2245','TildeTilde':'\u2248','times':'\xD7','timesb':'\u22A0','timesbar':'\u2A31','timesd':'\u2A30','tint':'\u222D','toea':'\u2928','top':'\u22A4','topbot':'\u2336','topcir':'\u2AF1','topf':'\uD835\uDD65','Topf':'\uD835\uDD4B','topfork':'\u2ADA','tosa':'\u2929','tprime':'\u2034','trade':'\u2122','TRADE':'\u2122','triangle':'\u25B5','triangledown':'\u25BF','triangleleft':'\u25C3','trianglelefteq':'\u22B4','triangleq':'\u225C','triangleright':'\u25B9','trianglerighteq':'\u22B5','tridot':'\u25EC','trie':'\u225C','triminus':'\u2A3A','TripleDot':'\u20DB','triplus':'\u2A39','trisb':'\u29CD','tritime':'\u2A3B','trpezium':'\u23E2','tscr':'\uD835\uDCC9','Tscr':'\uD835\uDCAF','tscy':'\u0446','TScy':'\u0426','tshcy':'\u045B','TSHcy':'\u040B','tstrok':'\u0167','Tstrok':'\u0166','twixt':'\u226C','twoheadleftarrow':'\u219E','twoheadrightarrow':'\u21A0','uacute':'\xFA','Uacute':'\xDA','uarr':'\u2191','uArr':'\u21D1','Uarr':'\u219F','Uarrocir':'\u2949','ubrcy':'\u045E','Ubrcy':'\u040E','ubreve':'\u016D','Ubreve':'\u016C','ucirc':'\xFB','Ucirc':'\xDB','ucy':'\u0443','Ucy':'\u0423','udarr':'\u21C5','udblac':'\u0171','Udblac':'\u0170','udhar':'\u296E','ufisht':'\u297E','ufr':'\uD835\uDD32','Ufr':'\uD835\uDD18','ugrave':'\xF9','Ugrave':'\xD9','uHar':'\u2963','uharl':'\u21BF','uharr':'\u21BE','uhblk':'\u2580','ulcorn':'\u231C','ulcorner':'\u231C','ulcrop':'\u230F','ultri':'\u25F8','umacr':'\u016B','Umacr':'\u016A','uml':'\xA8','UnderBar':'_','UnderBrace':'\u23DF','UnderBracket':'\u23B5','UnderParenthesis':'\u23DD','Union':'\u22C3','UnionPlus':'\u228E','uogon':'\u0173','Uogon':'\u0172','uopf':'\uD835\uDD66','Uopf':'\uD835\uDD4C','uparrow':'\u2191','Uparrow':'\u21D1','UpArrow':'\u2191','UpArrowBar':'\u2912','UpArrowDownArrow':'\u21C5','updownarrow':'\u2195','Updownarrow':'\u21D5','UpDownArrow':'\u2195','UpEquilibrium':'\u296E','upharpoonleft':'\u21BF','upharpoonright':'\u21BE','uplus':'\u228E','UpperLeftArrow':'\u2196','UpperRightArrow':'\u2197','upsi':'\u03C5','Upsi':'\u03D2','upsih':'\u03D2','upsilon':'\u03C5','Upsilon':'\u03A5','UpTee':'\u22A5','UpTeeArrow':'\u21A5','upuparrows':'\u21C8','urcorn':'\u231D','urcorner':'\u231D','urcrop':'\u230E','uring':'\u016F','Uring':'\u016E','urtri':'\u25F9','uscr':'\uD835\uDCCA','Uscr':'\uD835\uDCB0','utdot':'\u22F0','utilde':'\u0169','Utilde':'\u0168','utri':'\u25B5','utrif':'\u25B4','uuarr':'\u21C8','uuml':'\xFC','Uuml':'\xDC','uwangle':'\u29A7','vangrt':'\u299C','varepsilon':'\u03F5','varkappa':'\u03F0','varnothing':'\u2205','varphi':'\u03D5','varpi':'\u03D6','varpropto':'\u221D','varr':'\u2195','vArr':'\u21D5','varrho':'\u03F1','varsigma':'\u03C2','varsubsetneq':'\u228A\uFE00','varsubsetneqq':'\u2ACB\uFE00','varsupsetneq':'\u228B\uFE00','varsupsetneqq':'\u2ACC\uFE00','vartheta':'\u03D1','vartriangleleft':'\u22B2','vartriangleright':'\u22B3','vBar':'\u2AE8','Vbar':'\u2AEB','vBarv':'\u2AE9','vcy':'\u0432','Vcy':'\u0412','vdash':'\u22A2','vDash':'\u22A8','Vdash':'\u22A9','VDash':'\u22AB','Vdashl':'\u2AE6','vee':'\u2228','Vee':'\u22C1','veebar':'\u22BB','veeeq':'\u225A','vellip':'\u22EE','verbar':'|','Verbar':'\u2016','vert':'|','Vert':'\u2016','VerticalBar':'\u2223','VerticalLine':'|','VerticalSeparator':'\u2758','VerticalTilde':'\u2240','VeryThinSpace':'\u200A','vfr':'\uD835\uDD33','Vfr':'\uD835\uDD19','vltri':'\u22B2','vnsub':'\u2282\u20D2','vnsup':'\u2283\u20D2','vopf':'\uD835\uDD67','Vopf':'\uD835\uDD4D','vprop':'\u221D','vrtri':'\u22B3','vscr':'\uD835\uDCCB','Vscr':'\uD835\uDCB1','vsubne':'\u228A\uFE00','vsubnE':'\u2ACB\uFE00','vsupne':'\u228B\uFE00','vsupnE':'\u2ACC\uFE00','Vvdash':'\u22AA','vzigzag':'\u299A','wcirc':'\u0175','Wcirc':'\u0174','wedbar':'\u2A5F','wedge':'\u2227','Wedge':'\u22C0','wedgeq':'\u2259','weierp':'\u2118','wfr':'\uD835\uDD34','Wfr':'\uD835\uDD1A','wopf':'\uD835\uDD68','Wopf':'\uD835\uDD4E','wp':'\u2118','wr':'\u2240','wreath':'\u2240','wscr':'\uD835\uDCCC','Wscr':'\uD835\uDCB2','xcap':'\u22C2','xcirc':'\u25EF','xcup':'\u22C3','xdtri':'\u25BD','xfr':'\uD835\uDD35','Xfr':'\uD835\uDD1B','xharr':'\u27F7','xhArr':'\u27FA','xi':'\u03BE','Xi':'\u039E','xlarr':'\u27F5','xlArr':'\u27F8','xmap':'\u27FC','xnis':'\u22FB','xodot':'\u2A00','xopf':'\uD835\uDD69','Xopf':'\uD835\uDD4F','xoplus':'\u2A01','xotime':'\u2A02','xrarr':'\u27F6','xrArr':'\u27F9','xscr':'\uD835\uDCCD','Xscr':'\uD835\uDCB3','xsqcup':'\u2A06','xuplus':'\u2A04','xutri':'\u25B3','xvee':'\u22C1','xwedge':'\u22C0','yacute':'\xFD','Yacute':'\xDD','yacy':'\u044F','YAcy':'\u042F','ycirc':'\u0177','Ycirc':'\u0176','ycy':'\u044B','Ycy':'\u042B','yen':'\xA5','yfr':'\uD835\uDD36','Yfr':'\uD835\uDD1C','yicy':'\u0457','YIcy':'\u0407','yopf':'\uD835\uDD6A','Yopf':'\uD835\uDD50','yscr':'\uD835\uDCCE','Yscr':'\uD835\uDCB4','yucy':'\u044E','YUcy':'\u042E','yuml':'\xFF','Yuml':'\u0178','zacute':'\u017A','Zacute':'\u0179','zcaron':'\u017E','Zcaron':'\u017D','zcy':'\u0437','Zcy':'\u0417','zdot':'\u017C','Zdot':'\u017B','zeetrf':'\u2128','ZeroWidthSpace':'\u200B','zeta':'\u03B6','Zeta':'\u0396','zfr':'\uD835\uDD37','Zfr':'\u2128','zhcy':'\u0436','ZHcy':'\u0416','zigrarr':'\u21DD','zopf':'\uD835\uDD6B','Zopf':'\u2124','zscr':'\uD835\uDCCF','Zscr':'\uD835\uDCB5','zwj':'\u200D','zwnj':'\u200C'}; + var decodeMapLegacy = {'aacute':'\xE1','Aacute':'\xC1','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','aelig':'\xE6','AElig':'\xC6','agrave':'\xE0','Agrave':'\xC0','amp':'&','AMP':'&','aring':'\xE5','Aring':'\xC5','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','brvbar':'\xA6','ccedil':'\xE7','Ccedil':'\xC7','cedil':'\xB8','cent':'\xA2','copy':'\xA9','COPY':'\xA9','curren':'\xA4','deg':'\xB0','divide':'\xF7','eacute':'\xE9','Eacute':'\xC9','ecirc':'\xEA','Ecirc':'\xCA','egrave':'\xE8','Egrave':'\xC8','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','frac12':'\xBD','frac14':'\xBC','frac34':'\xBE','gt':'>','GT':'>','iacute':'\xED','Iacute':'\xCD','icirc':'\xEE','Icirc':'\xCE','iexcl':'\xA1','igrave':'\xEC','Igrave':'\xCC','iquest':'\xBF','iuml':'\xEF','Iuml':'\xCF','laquo':'\xAB','lt':'<','LT':'<','macr':'\xAF','micro':'\xB5','middot':'\xB7','nbsp':'\xA0','not':'\xAC','ntilde':'\xF1','Ntilde':'\xD1','oacute':'\xF3','Oacute':'\xD3','ocirc':'\xF4','Ocirc':'\xD4','ograve':'\xF2','Ograve':'\xD2','ordf':'\xAA','ordm':'\xBA','oslash':'\xF8','Oslash':'\xD8','otilde':'\xF5','Otilde':'\xD5','ouml':'\xF6','Ouml':'\xD6','para':'\xB6','plusmn':'\xB1','pound':'\xA3','quot':'"','QUOT':'"','raquo':'\xBB','reg':'\xAE','REG':'\xAE','sect':'\xA7','shy':'\xAD','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','szlig':'\xDF','thorn':'\xFE','THORN':'\xDE','times':'\xD7','uacute':'\xFA','Uacute':'\xDA','ucirc':'\xFB','Ucirc':'\xDB','ugrave':'\xF9','Ugrave':'\xD9','uml':'\xA8','uuml':'\xFC','Uuml':'\xDC','yacute':'\xFD','Yacute':'\xDD','yen':'\xA5','yuml':'\xFF'}; + var decodeMapNumeric = {'0':'\uFFFD','128':'\u20AC','130':'\u201A','131':'\u0192','132':'\u201E','133':'\u2026','134':'\u2020','135':'\u2021','136':'\u02C6','137':'\u2030','138':'\u0160','139':'\u2039','140':'\u0152','142':'\u017D','145':'\u2018','146':'\u2019','147':'\u201C','148':'\u201D','149':'\u2022','150':'\u2013','151':'\u2014','152':'\u02DC','153':'\u2122','154':'\u0161','155':'\u203A','156':'\u0153','158':'\u017E','159':'\u0178'}; + var invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]; + + /*--------------------------------------------------------------------------*/ + + var stringFromCharCode = String.fromCharCode; + + var object = {}; + var hasOwnProperty = object.hasOwnProperty; + var has = function(object, propertyName) { + return hasOwnProperty.call(object, propertyName); + }; + + var contains = function(array, value) { + var index = -1; + var length = array.length; + while (++index < length) { + if (array[index] == value) { + return true; + } + } + return false; + }; + + var merge = function(options, defaults) { + if (!options) { + return defaults; + } + var result = {}; + var key; + for (key in defaults) { + // A `hasOwnProperty` check is not needed here, since only recognized + // option names are used anyway. Any others are ignored. + result[key] = has(options, key) ? options[key] : defaults[key]; + } + return result; + }; + + // Modified version of `ucs2encode`; see https://mths.be/punycode. + var codePointToSymbol = function(codePoint, strict) { + var output = ''; + if ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) { + // See issue #4: + // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is + // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD + // REPLACEMENT CHARACTER.” + if (strict) { + parseError('character reference outside the permissible Unicode range'); + } + return '\uFFFD'; + } + if (has(decodeMapNumeric, codePoint)) { + if (strict) { + parseError('disallowed character reference'); + } + return decodeMapNumeric[codePoint]; + } + if (strict && contains(invalidReferenceCodePoints, codePoint)) { + parseError('disallowed character reference'); + } + if (codePoint > 0xFFFF) { + codePoint -= 0x10000; + output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + output += stringFromCharCode(codePoint); + return output; + }; + + var hexEscape = function(codePoint) { + return '&#x' + codePoint.toString(16).toUpperCase() + ';'; + }; + + var decEscape = function(codePoint) { + return '&#' + codePoint + ';'; + }; + + var parseError = function(message) { + throw Error('Parse error: ' + message); + }; + + /*--------------------------------------------------------------------------*/ + + var encode = function(string, options) { + options = merge(options, encode.options); + var strict = options.strict; + if (strict && regexInvalidRawCodePoint.test(string)) { + parseError('forbidden code point'); + } + var encodeEverything = options.encodeEverything; + var useNamedReferences = options.useNamedReferences; + var allowUnsafeSymbols = options.allowUnsafeSymbols; + var escapeCodePoint = options.decimal ? decEscape : hexEscape; + + var escapeBmpSymbol = function(symbol) { + return escapeCodePoint(symbol.charCodeAt(0)); + }; + + if (encodeEverything) { + // Encode ASCII symbols. + string = string.replace(regexAsciiWhitelist, function(symbol) { + // Use named references if requested & possible. + if (useNamedReferences && has(encodeMap, symbol)) { + return '&' + encodeMap[symbol] + ';'; + } + return escapeBmpSymbol(symbol); + }); + // Shorten a few escapes that represent two symbols, of which at least one + // is within the ASCII range. + if (useNamedReferences) { + string = string + .replace(/>\u20D2/g, '>⃒') + .replace(/<\u20D2/g, '<⃒') + .replace(/fj/g, 'fj'); + } + // Encode non-ASCII symbols. + if (useNamedReferences) { + // Encode non-ASCII symbols that can be replaced with a named reference. + string = string.replace(regexEncodeNonAscii, function(string) { + // Note: there is no need to check `has(encodeMap, string)` here. + return '&' + encodeMap[string] + ';'; + }); + } + // Note: any remaining non-ASCII symbols are handled outside of the `if`. + } else if (useNamedReferences) { + // Apply named character references. + // Encode `<>"'&` using named character references. + if (!allowUnsafeSymbols) { + string = string.replace(regexEscape, function(string) { + return '&' + encodeMap[string] + ';'; // no need to check `has()` here + }); + } + // Shorten escapes that represent two symbols, of which at least one is + // `<>"'&`. + string = string + .replace(/>\u20D2/g, '>⃒') + .replace(/<\u20D2/g, '<⃒'); + // Encode non-ASCII symbols that can be replaced with a named reference. + string = string.replace(regexEncodeNonAscii, function(string) { + // Note: there is no need to check `has(encodeMap, string)` here. + return '&' + encodeMap[string] + ';'; + }); + } else if (!allowUnsafeSymbols) { + // Encode `<>"'&` using hexadecimal escapes, now that they’re not handled + // using named character references. + string = string.replace(regexEscape, escapeBmpSymbol); + } + return string + // Encode astral symbols. + .replace(regexAstralSymbols, function($0) { + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + var high = $0.charCodeAt(0); + var low = $0.charCodeAt(1); + var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000; + return escapeCodePoint(codePoint); + }) + // Encode any remaining BMP symbols that are not printable ASCII symbols + // using a hexadecimal escape. + .replace(regexBmpWhitelist, escapeBmpSymbol); + }; + // Expose default options (so they can be overridden globally). + encode.options = { + 'allowUnsafeSymbols': false, + 'encodeEverything': false, + 'strict': false, + 'useNamedReferences': false, + 'decimal' : false + }; + + var decode = function(html, options) { + options = merge(options, decode.options); + var strict = options.strict; + if (strict && regexInvalidEntity.test(html)) { + parseError('malformed character reference'); + } + return html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) { + var codePoint; + var semicolon; + var decDigits; + var hexDigits; + var reference; + var next; + + if ($1) { + reference = $1; + // Note: there is no need to check `has(decodeMap, reference)`. + return decodeMap[reference]; + } + + if ($2) { + // Decode named character references without trailing `;`, e.g. `&`. + // This is only a parse error if it gets converted to `&`, or if it is + // followed by `=` in an attribute context. + reference = $2; + next = $3; + if (next && options.isAttributeValue) { + if (strict && next == '=') { + parseError('`&` did not start a character reference'); + } + return $0; + } else { + if (strict) { + parseError( + 'named character reference was not terminated by a semicolon' + ); + } + // Note: there is no need to check `has(decodeMapLegacy, reference)`. + return decodeMapLegacy[reference] + (next || ''); + } + } + + if ($4) { + // Decode decimal escapes, e.g. `𝌆`. + decDigits = $4; + semicolon = $5; + if (strict && !semicolon) { + parseError('character reference was not terminated by a semicolon'); + } + codePoint = parseInt(decDigits, 10); + return codePointToSymbol(codePoint, strict); + } + + if ($6) { + // Decode hexadecimal escapes, e.g. `𝌆`. + hexDigits = $6; + semicolon = $7; + if (strict && !semicolon) { + parseError('character reference was not terminated by a semicolon'); + } + codePoint = parseInt(hexDigits, 16); + return codePointToSymbol(codePoint, strict); + } + + // If we’re still here, `if ($7)` is implied; it’s an ambiguous + // ampersand for sure. https://mths.be/notes/ambiguous-ampersands + if (strict) { + parseError( + 'named character reference was not terminated by a semicolon' + ); + } + return $0; + }); + }; + // Expose default options (so they can be overridden globally). + decode.options = { + 'isAttributeValue': false, + 'strict': false + }; + + var escape = function(string) { + return string.replace(regexEscape, function($0) { + // Note: there is no need to check `has(escapeMap, $0)` here. + return escapeMap[$0]; + }); + }; + + /*--------------------------------------------------------------------------*/ + + var he = { + 'version': '1.2.0', + 'encode': encode, + 'decode': decode, + 'escape': escape, + 'unescape': decode + }; + + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + typeof define == 'function' && + typeof define.amd == 'object' && + define.amd + ) { + define(function() { + return he; + }); + } else if (freeExports && !freeExports.nodeType) { + if (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = he; + } else { // in Narwhal or RingoJS v0.7.0- + for (var key in he) { + has(he, key) && (freeExports[key] = he[key]); + } + } + } else { // in Rhino or a web browser + root.he = he; + } + +}(this)); diff --git a/node_modules/he/man/he.1 b/node_modules/he/man/he.1 new file mode 100644 index 0000000..7696628 --- /dev/null +++ b/node_modules/he/man/he.1 @@ -0,0 +1,78 @@ +.Dd April 5, 2016 +.Dt he 1 +.Sh NAME +.Nm he +.Nd encode/decode HTML entities just like a browser would +.Sh SYNOPSIS +.Nm +.Op Fl -escape Ar string +.br +.Op Fl -encode Ar string +.br +.Op Fl -encode Fl -use-named-refs Fl -everything Fl -allow-unsafe Ar string +.br +.Op Fl -decode Ar string +.br +.Op Fl -decode Fl -attribute Ar string +.br +.Op Fl -decode Fl -strict Ar string +.br +.Op Fl v | -version +.br +.Op Fl h | -help +.Sh DESCRIPTION +.Nm +encodes/decodes HTML entities in strings just like a browser would. +.Sh OPTIONS +.Bl -ohang -offset +.It Sy "--escape" +Take a string of text and escape it for use in text contexts in XML or HTML documents. Only the following characters are escaped: `&`, `<`, `>`, `"`, and `'`. +.It Sy "--encode" +Take a string of text and encode any symbols that aren't printable ASCII symbols and that can be replaced with character references. For example, it would turn `©` into `©`, but it wouldn't turn `+` into `+` since there is no point in doing so. Additionally, it replaces any remaining non-ASCII symbols with a hexadecimal escape sequence (e.g. `𝌆`). The return value of this function is always valid HTML. +.It Sy "--encode --use-named-refs" +Enable the use of named character references (like `©`) in the output. If compatibility with older browsers is a concern, don't use this option. +.It Sy "--encode --everything" +Encode every symbol in the input string, even safe printable ASCII symbols. +.It Sy "--encode --allow-unsafe" +Encode non-ASCII characters only. This leaves unsafe HTML/XML symbols like `&`, `<`, `>`, `"`, and `'` intact. +.It Sy "--encode --decimal" +Use decimal digits rather than hexadecimal digits for encoded character references, e.g. output `©` instead of `©`. +.It Sy "--decode" +Takes a string of HTML and decode any named and numerical character references in it using the algorithm described in the HTML spec. +.It Sy "--decode --attribute" +Parse the input as if it was an HTML attribute value rather than a string in an HTML text content. +.It Sy "--decode --strict" +Throw an error if an invalid character reference is encountered. +.It Sy "-v, --version" +Print he's version. +.It Sy "-h, --help" +Show the help screen. +.El +.Sh EXIT STATUS +The +.Nm he +utility exits with one of the following values: +.Pp +.Bl -tag -width flag -compact +.It Li 0 +.Nm +did what it was instructed to do successfully; either it encoded/decoded the input and printed the result, or it printed the version or usage message. +.It Li 1 +.Nm +encountered an error. +.El +.Sh EXAMPLES +.Bl -ohang -offset +.It Sy "he --escape ''" +Print an escaped version of the given string that is safe for use in HTML text contexts, escaping only `&`, `<`, `>`, `"`, and `'`. +.It Sy "he --decode '©𝌆'" +Print the decoded version of the given HTML string. +.It Sy "echo\ '©𝌆'\ |\ he --decode" +Print the decoded version of the HTML string that gets piped in. +.El +.Sh BUGS +he's bug tracker is located at . +.Sh AUTHOR +Mathias Bynens +.Sh WWW + diff --git a/node_modules/he/package.json b/node_modules/he/package.json new file mode 100644 index 0000000..76eff31 --- /dev/null +++ b/node_modules/he/package.json @@ -0,0 +1,58 @@ +{ + "name": "he", + "version": "1.2.0", + "description": "A robust HTML entities encoder/decoder with full Unicode support.", + "homepage": "https://mths.be/he", + "main": "he.js", + "bin": "bin/he", + "keywords": [ + "string", + "entities", + "entity", + "html", + "encode", + "decode", + "unicode" + ], + "license": "MIT", + "author": { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + }, + "repository": { + "type": "git", + "url": "https://github.com/mathiasbynens/he.git" + }, + "bugs": "https://github.com/mathiasbynens/he/issues", + "files": [ + "LICENSE-MIT.txt", + "he.js", + "bin/", + "man/" + ], + "directories": { + "bin": "bin", + "man": "man", + "test": "tests" + }, + "scripts": { + "test": "node tests/tests.js", + "build": "grunt build" + }, + "devDependencies": { + "codecov.io": "^0.1.6", + "grunt": "^0.4.5", + "grunt-cli": "^1.3.1", + "grunt-shell": "^1.1.1", + "grunt-template": "^0.2.3", + "istanbul": "^0.4.2", + "jsesc": "^1.0.0", + "lodash": "^4.8.2", + "qunit-extras": "^1.4.5", + "qunitjs": "~1.11.0", + "regenerate": "^1.2.1", + "regexgen": "^1.3.0", + "requirejs": "^2.1.22", + "sort-object": "^3.0.2" + } +} diff --git a/node_modules/is-fullwidth-code-point/index.d.ts b/node_modules/is-fullwidth-code-point/index.d.ts new file mode 100644 index 0000000..729d202 --- /dev/null +++ b/node_modules/is-fullwidth-code-point/index.d.ts @@ -0,0 +1,17 @@ +/** +Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms). + +@param codePoint - The [code point](https://en.wikipedia.org/wiki/Code_point) of a character. + +@example +``` +import isFullwidthCodePoint from 'is-fullwidth-code-point'; + +isFullwidthCodePoint('谢'.codePointAt(0)); +//=> true + +isFullwidthCodePoint('a'.codePointAt(0)); +//=> false +``` +*/ +export default function isFullwidthCodePoint(codePoint: number): boolean; diff --git a/node_modules/is-fullwidth-code-point/index.js b/node_modules/is-fullwidth-code-point/index.js new file mode 100644 index 0000000..671f97f --- /dev/null +++ b/node_modules/is-fullwidth-code-point/index.js @@ -0,0 +1,50 @@ +/* eslint-disable yoda */ +'use strict'; + +const isFullwidthCodePoint = codePoint => { + if (Number.isNaN(codePoint)) { + return false; + } + + // Code points are derived from: + // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt + if ( + codePoint >= 0x1100 && ( + codePoint <= 0x115F || // Hangul Jamo + codePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET + codePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET + // CJK Radicals Supplement .. Enclosed CJK Letters and Months + (0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) || + // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A + (0x3250 <= codePoint && codePoint <= 0x4DBF) || + // CJK Unified Ideographs .. Yi Radicals + (0x4E00 <= codePoint && codePoint <= 0xA4C6) || + // Hangul Jamo Extended-A + (0xA960 <= codePoint && codePoint <= 0xA97C) || + // Hangul Syllables + (0xAC00 <= codePoint && codePoint <= 0xD7A3) || + // CJK Compatibility Ideographs + (0xF900 <= codePoint && codePoint <= 0xFAFF) || + // Vertical Forms + (0xFE10 <= codePoint && codePoint <= 0xFE19) || + // CJK Compatibility Forms .. Small Form Variants + (0xFE30 <= codePoint && codePoint <= 0xFE6B) || + // Halfwidth and Fullwidth Forms + (0xFF01 <= codePoint && codePoint <= 0xFF60) || + (0xFFE0 <= codePoint && codePoint <= 0xFFE6) || + // Kana Supplement + (0x1B000 <= codePoint && codePoint <= 0x1B001) || + // Enclosed Ideographic Supplement + (0x1F200 <= codePoint && codePoint <= 0x1F251) || + // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane + (0x20000 <= codePoint && codePoint <= 0x3FFFD) + ) + ) { + return true; + } + + return false; +}; + +module.exports = isFullwidthCodePoint; +module.exports.default = isFullwidthCodePoint; diff --git a/node_modules/is-fullwidth-code-point/license b/node_modules/is-fullwidth-code-point/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/node_modules/is-fullwidth-code-point/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (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/node_modules/is-fullwidth-code-point/package.json b/node_modules/is-fullwidth-code-point/package.json new file mode 100644 index 0000000..2137e88 --- /dev/null +++ b/node_modules/is-fullwidth-code-point/package.json @@ -0,0 +1,42 @@ +{ + "name": "is-fullwidth-code-point", + "version": "3.0.0", + "description": "Check if the character represented by a given Unicode code point is fullwidth", + "license": "MIT", + "repository": "sindresorhus/is-fullwidth-code-point", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd-check" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "fullwidth", + "full-width", + "full", + "width", + "unicode", + "character", + "string", + "codepoint", + "code", + "point", + "is", + "detect", + "check" + ], + "devDependencies": { + "ava": "^1.3.1", + "tsd-check": "^0.5.0", + "xo": "^0.24.0" + } +} diff --git a/node_modules/is-fullwidth-code-point/readme.md b/node_modules/is-fullwidth-code-point/readme.md new file mode 100644 index 0000000..4236bba --- /dev/null +++ b/node_modules/is-fullwidth-code-point/readme.md @@ -0,0 +1,39 @@ +# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point) + +> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) + + +## Install + +``` +$ npm install is-fullwidth-code-point +``` + + +## Usage + +```js +const isFullwidthCodePoint = require('is-fullwidth-code-point'); + +isFullwidthCodePoint('谢'.codePointAt(0)); +//=> true + +isFullwidthCodePoint('a'.codePointAt(0)); +//=> false +``` + + +## API + +### isFullwidthCodePoint(codePoint) + +#### codePoint + +Type: `number` + +The [code point](https://en.wikipedia.org/wiki/Code_point) of a character. + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/node_modules/is-plain-obj/index.d.ts b/node_modules/is-plain-obj/index.d.ts new file mode 100644 index 0000000..ac2614d --- /dev/null +++ b/node_modules/is-plain-obj/index.d.ts @@ -0,0 +1,29 @@ +/** +Check if a value is a plain object. + +An object is plain if it's created by either `{}`, `new Object()`, or `Object.create(null)`. + +@example +``` +import isPlainObject = require('is-plain-obj'); + +isPlainObject({foo: 'bar'}); +//=> true + +isPlainObject(new Object()); +//=> true + +isPlainObject(Object.create(null)); +//=> true + +isPlainObject([1, 2, 3]); +//=> false + +class Unicorn {} +isPlainObject(new Unicorn()); +//=> false +``` +*/ +declare function isPlainObj(value: unknown): value is object; + +export = isPlainObj; diff --git a/node_modules/is-plain-obj/index.js b/node_modules/is-plain-obj/index.js new file mode 100644 index 0000000..95079ec --- /dev/null +++ b/node_modules/is-plain-obj/index.js @@ -0,0 +1,10 @@ +'use strict'; + +module.exports = value => { + if (Object.prototype.toString.call(value) !== '[object Object]') { + return false; + } + + const prototype = Object.getPrototypeOf(value); + return prototype === null || prototype === Object.prototype; +}; diff --git a/node_modules/is-plain-obj/license b/node_modules/is-plain-obj/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/node_modules/is-plain-obj/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (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/node_modules/is-plain-obj/package.json b/node_modules/is-plain-obj/package.json new file mode 100644 index 0000000..87512f1 --- /dev/null +++ b/node_modules/is-plain-obj/package.json @@ -0,0 +1,38 @@ +{ + "name": "is-plain-obj", + "version": "2.1.0", + "description": "Check if a value is a plain object", + "license": "MIT", + "repository": "sindresorhus/is-plain-obj", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "object", + "is", + "check", + "test", + "type", + "plain", + "vanilla", + "pure", + "simple" + ], + "devDependencies": { + "ava": "^1.4.1", + "tsd": "^0.7.2", + "xo": "^0.24.0" + } +} diff --git a/node_modules/is-plain-obj/readme.md b/node_modules/is-plain-obj/readme.md new file mode 100644 index 0000000..13571a8 --- /dev/null +++ b/node_modules/is-plain-obj/readme.md @@ -0,0 +1,54 @@ +# is-plain-obj [![Build Status](https://travis-ci.org/sindresorhus/is-plain-obj.svg?branch=master)](https://travis-ci.org/sindresorhus/is-plain-obj) + +> Check if a value is a plain object + +An object is plain if it's created by either `{}`, `new Object()`, or `Object.create(null)`. + + +## Install + +``` +$ npm install is-plain-obj +``` + + +## Usage + +```js +const isPlainObject = require('is-plain-obj'); + +isPlainObject({foo: 'bar'}); +//=> true + +isPlainObject(new Object()); +//=> true + +isPlainObject(Object.create(null)); +//=> true + +isPlainObject([1, 2, 3]); +//=> false + +class Unicorn {} +isPlainObject(new Unicorn()); +//=> false +``` + + +## Related + +- [is-obj](https://github.com/sindresorhus/is-obj) - Check if a value is an object +- [is](https://github.com/sindresorhus/is) - Type check values + + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/is-unicode-supported/index.d.ts b/node_modules/is-unicode-supported/index.d.ts new file mode 100644 index 0000000..275b37b --- /dev/null +++ b/node_modules/is-unicode-supported/index.d.ts @@ -0,0 +1,14 @@ +/** +Detect whether the terminal supports Unicode. + +@example +``` +import isUnicodeSupported = require('is-unicode-supported'); + +isUnicodeSupported(); +//=> true +``` +*/ +declare function isUnicodeSupported(): boolean; + +export = isUnicodeSupported; diff --git a/node_modules/is-unicode-supported/index.js b/node_modules/is-unicode-supported/index.js new file mode 100644 index 0000000..b5a11be --- /dev/null +++ b/node_modules/is-unicode-supported/index.js @@ -0,0 +1,13 @@ +'use strict'; + +module.exports = () => { + if (process.platform !== 'win32') { + return true; + } + + return Boolean(process.env.CI) || + Boolean(process.env.WT_SESSION) || // Windows Terminal + process.env.TERM_PROGRAM === 'vscode' || + process.env.TERM === 'xterm-256color' || + process.env.TERM === 'alacritty'; +}; diff --git a/node_modules/is-unicode-supported/license b/node_modules/is-unicode-supported/license new file mode 100644 index 0000000..fa7ceba --- /dev/null +++ b/node_modules/is-unicode-supported/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://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/node_modules/is-unicode-supported/package.json b/node_modules/is-unicode-supported/package.json new file mode 100644 index 0000000..17e4035 --- /dev/null +++ b/node_modules/is-unicode-supported/package.json @@ -0,0 +1,41 @@ +{ + "name": "is-unicode-supported", + "version": "0.1.0", + "description": "Detect whether the terminal supports Unicode", + "license": "MIT", + "repository": "sindresorhus/is-unicode-supported", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "terminal", + "unicode", + "detect", + "utf8", + "console", + "shell", + "support", + "supports", + "supported", + "check", + "detection" + ], + "devDependencies": { + "ava": "^2.4.0", + "tsd": "^0.14.0", + "xo": "^0.38.2" + } +} diff --git a/node_modules/is-unicode-supported/readme.md b/node_modules/is-unicode-supported/readme.md new file mode 100644 index 0000000..a82e34d --- /dev/null +++ b/node_modules/is-unicode-supported/readme.md @@ -0,0 +1,35 @@ +# is-unicode-supported + +> Detect whether the terminal supports Unicode + +This can be useful to decide whether to use Unicode characters or fallback ASCII characters in command-line output. + +Note that the check is quite naive. It just assumes all non-Windows terminals support Unicode and hard-codes which Windows terminals that do support Unicode. However, I have been using this logic in some popular packages for years without problems. + +## Install + +``` +$ npm install is-unicode-supported +``` + +## Usage + +```js +const isUnicodeSupported = require('is-unicode-supported'); + +isUnicodeSupported(); +//=> true +``` + +## API + +### isUnicodeSupported() + +Returns a `boolean` for whether the terminal supports Unicode. + +## Related + +- [is-interactive](https://github.com/sindresorhus/is-interactive) - Check if stdout or stderr is interactive +- [supports-color](https://github.com/chalk/supports-color) - Detect whether a terminal supports color +- [figures](https://github.com/sindresorhus/figures) - Unicode symbols with Windows fallbacks +- [log-symbols](https://github.com/sindresorhus/log-symbols) - Colored symbols for various log levels diff --git a/node_modules/js-yaml/CHANGELOG.md b/node_modules/js-yaml/CHANGELOG.md new file mode 100644 index 0000000..ff2375e --- /dev/null +++ b/node_modules/js-yaml/CHANGELOG.md @@ -0,0 +1,616 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + + +## [4.1.0] - 2021-04-15 +### Added +- Types are now exported as `yaml.types.XXX`. +- Every type now has `options` property with original arguments kept as they were + (see `yaml.types.int.options` as an example). + +### Changed +- `Schema.extend()` now keeps old type order in case of conflicts + (e.g. Schema.extend([ a, b, c ]).extend([ b, a, d ]) is now ordered as `abcd` instead of `cbad`). + + +## [4.0.0] - 2021-01-03 +### Changed +- Check [migration guide](migrate_v3_to_v4.md) to see details for all breaking changes. +- Breaking: "unsafe" tags `!!js/function`, `!!js/regexp`, `!!js/undefined` are + moved to [js-yaml-js-types](https://github.com/nodeca/js-yaml-js-types) package. +- Breaking: removed `safe*` functions. Use `load`, `loadAll`, `dump` + instead which are all now safe by default. +- `yaml.DEFAULT_SAFE_SCHEMA` and `yaml.DEFAULT_FULL_SCHEMA` are removed, use + `yaml.DEFAULT_SCHEMA` instead. +- `yaml.Schema.create(schema, tags)` is removed, use `schema.extend(tags)` instead. +- `!!binary` now always mapped to `Uint8Array` on load. +- Reduced nesting of `/lib` folder. +- Parse numbers according to YAML 1.2 instead of YAML 1.1 (`01234` is now decimal, + `0o1234` is octal, `1:23` is parsed as string instead of base60). +- `dump()` no longer quotes `:`, `[`, `]`, `(`, `)` except when necessary, #470, #557. +- Line and column in exceptions are now formatted as `(X:Y)` instead of + `at line X, column Y` (also present in compact format), #332. +- Code snippet created in exceptions now contains multiple lines with line numbers. +- `dump()` now serializes `undefined` as `null` in collections and removes keys with + `undefined` in mappings, #571. +- `dump()` with `skipInvalid=true` now serializes invalid items in collections as null. +- Custom tags starting with `!` are now dumped as `!tag` instead of `!`, #576. +- Custom tags starting with `tag:yaml.org,2002:` are now shorthanded using `!!`, #258. + +### Added +- Added `.mjs` (es modules) support. +- Added `quotingType` and `forceQuotes` options for dumper to configure + string literal style, #290, #529. +- Added `styles: { '!!null': 'empty' }` option for dumper + (serializes `{ foo: null }` as "`foo: `"), #570. +- Added `replacer` option (similar to option in JSON.stringify), #339. +- Custom `Tag` can now handle all tags or multiple tags with the same prefix, #385. + +### Fixed +- Astral characters are no longer encoded by `dump()`, #587. +- "duplicate mapping key" exception now points at the correct column, #452. +- Extra commas in flow collections (e.g. `[foo,,bar]`) now throw an exception + instead of producing null, #321. +- `__proto__` key no longer overrides object prototype, #164. +- Removed `bower.json`. +- Tags are now url-decoded in `load()` and url-encoded in `dump()` + (previously usage of custom non-ascii tags may have led to invalid YAML that can't be parsed). +- Anchors now work correctly with empty nodes, #301. +- Fix incorrect parsing of invalid block mapping syntax, #418. +- Throw an error if block sequence/mapping indent contains a tab, #80. + + +## [3.14.1] - 2020-12-07 +### Security +- Fix possible code execution in (already unsafe) `.load()` (in &anchor). + + +## [3.14.0] - 2020-05-22 +### Changed +- Support `safe/loadAll(input, options)` variant of call. +- CI: drop outdated nodejs versions. +- Dev deps bump. + +### Fixed +- Quote `=` in plain scalars #519. +- Check the node type for `!` tag in case user manually specifies it. +- Verify that there are no null-bytes in input. +- Fix wrong quote position when writing condensed flow, #526. + + +## [3.13.1] - 2019-04-05 +### Security +- Fix possible code execution in (already unsafe) `.load()`, #480. + + +## [3.13.0] - 2019-03-20 +### Security +- Security fix: `safeLoad()` can hang when arrays with nested refs + used as key. Now throws exception for nested arrays. #475. + + +## [3.12.2] - 2019-02-26 +### Fixed +- Fix `noArrayIndent` option for root level, #468. + + +## [3.12.1] - 2019-01-05 +### Added +- Added `noArrayIndent` option, #432. + + +## [3.12.0] - 2018-06-02 +### Changed +- Support arrow functions without a block statement, #421. + + +## [3.11.0] - 2018-03-05 +### Added +- Add arrow functions suport for `!!js/function`. + +### Fixed +- Fix dump in bin/octal/hex formats for negative integers, #399. + + +## [3.10.0] - 2017-09-10 +### Fixed +- Fix `condenseFlow` output (quote keys for sure, instead of spaces), #371, #370. +- Dump astrals as codepoints instead of surrogate pair, #368. + + +## [3.9.1] - 2017-07-08 +### Fixed +- Ensure stack is present for custom errors in node 7.+, #351. + + +## [3.9.0] - 2017-07-08 +### Added +- Add `condenseFlow` option (to create pretty URL query params), #346. + +### Fixed +- Support array return from safeLoadAll/loadAll, #350. + + +## [3.8.4] - 2017-05-08 +### Fixed +- Dumper: prevent space after dash for arrays that wrap, #343. + + +## [3.8.3] - 2017-04-05 +### Fixed +- Should not allow numbers to begin and end with underscore, #335. + + +## [3.8.2] - 2017-03-02 +### Fixed +- Fix `!!float 123` (integers) parse, #333. +- Don't allow leading zeros in floats (except 0, 0.xxx). +- Allow positive exponent without sign in floats. + + +## [3.8.1] - 2017-02-07 +### Changed +- Maintenance: update browserified build. + + +## [3.8.0] - 2017-02-07 +### Fixed +- Fix reported position for `duplicated mapping key` errors. + Now points to block start instead of block end. + (#243, thanks to @shockey). + + +## [3.7.0] - 2016-11-12 +### Added +- Support polymorphism for tags (#300, thanks to @monken). + +### Fixed +- Fix parsing of quotes followed by newlines (#304, thanks to @dplepage). + + +## [3.6.1] - 2016-05-11 +### Fixed +- Fix output cut on a pipe, #286. + + +## [3.6.0] - 2016-04-16 +### Fixed +- Dumper rewrite, fix multiple bugs with trailing `\n`. + Big thanks to @aepsilon! +- Loader: fix leading/trailing newlines in block scalars, @aepsilon. + + +## [3.5.5] - 2016-03-17 +### Fixed +- Date parse fix: don't allow dates with on digit in month and day, #268. + + +## [3.5.4] - 2016-03-09 +### Added +- `noCompatMode` for dumper, to disable quoting YAML 1.1 values. + + +## [3.5.3] - 2016-02-11 +### Changed +- Maintenance release. + + +## [3.5.2] - 2016-01-11 +### Changed +- Maintenance: missed comma in bower config. + + +## [3.5.1] - 2016-01-11 +### Changed +- Removed `inherit` dependency, #239. +- Better browserify workaround for esprima load. +- Demo rewrite. + + +## [3.5.0] - 2016-01-10 +### Fixed +- Dumper. Fold strings only, #217. +- Dumper. `norefs` option, to clone linked objects, #229. +- Loader. Throw a warning for duplicate keys, #166. +- Improved browserify support (mark `esprima` & `Buffer` excluded). + + +## [3.4.6] - 2015-11-26 +### Changed +- Use standalone `inherit` to keep browserified files clear. + + +## [3.4.5] - 2015-11-23 +### Added +- Added `lineWidth` option to dumper. + + +## [3.4.4] - 2015-11-21 +### Fixed +- Fixed floats dump (missed dot for scientific format), #220. +- Allow non-printable characters inside quoted scalars, #192. + + +## [3.4.3] - 2015-10-10 +### Changed +- Maintenance release - deps bump (esprima, argparse). + + +## [3.4.2] - 2015-09-09 +### Fixed +- Fixed serialization of duplicated entries in sequences, #205. + Thanks to @vogelsgesang. + + +## [3.4.1] - 2015-09-05 +### Fixed +- Fixed stacktrace handling in generated errors, for browsers (FF/IE). + + +## [3.4.0] - 2015-08-23 +### Changed +- Don't throw on warnings anymore. Use `onWarning` option to catch. +- Throw error on unknown tags (was warning before). +- Reworked internals of error class. + +### Fixed +- Fixed multiline keys dump, #197. Thanks to @tcr. +- Fixed heading line breaks in some scalars (regression). + + +## [3.3.1] - 2015-05-13 +### Added +- Added `.sortKeys` dumper option, thanks to @rjmunro. + +### Fixed +- Fixed astral characters support, #191. + + +## [3.3.0] - 2015-04-26 +### Changed +- Significantly improved long strings formatting in dumper, thanks to @isaacs. +- Strip BOM if exists. + + +## [3.2.7] - 2015-02-19 +### Changed +- Maintenance release. +- Updated dependencies. +- HISTORY.md -> CHANGELOG.md + + +## [3.2.6] - 2015-02-07 +### Fixed +- Fixed encoding of UTF-16 surrogate pairs. (e.g. "\U0001F431" CAT FACE). +- Fixed demo dates dump (#113, thanks to @Hypercubed). + + +## [3.2.5] - 2014-12-28 +### Fixed +- Fixed resolving of all built-in types on empty nodes. +- Fixed invalid warning on empty lines within quoted scalars and flow collections. +- Fixed bug: Tag on an empty node didn't resolve in some cases. + + +## [3.2.4] - 2014-12-19 +### Fixed +- Fixed resolving of !!null tag on an empty node. + + +## [3.2.3] - 2014-11-08 +### Fixed +- Implemented dumping of objects with circular and cross references. +- Partially fixed aliasing of constructed objects. (see issue #141 for details) + + +## [3.2.2] - 2014-09-07 +### Fixed +- Fixed infinite loop on unindented block scalars. +- Rewritten base64 encode/decode in binary type, to keep code licence clear. + + +## [3.2.1] - 2014-08-24 +### Fixed +- Nothig new. Just fix npm publish error. + + +## [3.2.0] - 2014-08-24 +### Added +- Added input piping support to CLI. + +### Fixed +- Fixed typo, that could cause hand on initial indent (#139). + + +## [3.1.0] - 2014-07-07 +### Changed +- 1.5x-2x speed boost. +- Removed deprecated `require('xxx.yml')` support. +- Significant code cleanup and refactoring. +- Internal API changed. If you used custom types - see updated examples. + Others are not affected. +- Even if the input string has no trailing line break character, + it will be parsed as if it has one. +- Added benchmark scripts. +- Moved bower files to /dist folder +- Bugfixes. + + +## [3.0.2] - 2014-02-27 +### Fixed +- Fixed bug: "constructor" string parsed as `null`. + + +## [3.0.1] - 2013-12-22 +### Fixed +- Fixed parsing of literal scalars. (issue #108) +- Prevented adding unnecessary spaces in object dumps. (issue #68) +- Fixed dumping of objects with very long (> 1024 in length) keys. + + +## [3.0.0] - 2013-12-16 +### Changed +- Refactored code. Changed API for custom types. +- Removed output colors in CLI, dump json by default. +- Removed big dependencies from browser version (esprima, buffer). Load `esprima` manually, if `!!js/function` needed. `!!bin` now returns Array in browser +- AMD support. +- Don't quote dumped strings because of `-` & `?` (if not first char). +- __Deprecated__ loading yaml files via `require()`, as not recommended + behaviour for node. + + +## [2.1.3] - 2013-10-16 +### Fixed +- Fix wrong loading of empty block scalars. + + +## [2.1.2] - 2013-10-07 +### Fixed +- Fix unwanted line breaks in folded scalars. + + +## [2.1.1] - 2013-10-02 +### Fixed +- Dumper now respects deprecated booleans syntax from YAML 1.0/1.1 +- Fixed reader bug in JSON-like sequences/mappings. + + +## [2.1.0] - 2013-06-05 +### Added +- Add standard YAML schemas: Failsafe (`FAILSAFE_SCHEMA`), + JSON (`JSON_SCHEMA`) and Core (`CORE_SCHEMA`). +- Add `skipInvalid` dumper option. + +### Changed +- Rename `DEFAULT_SCHEMA` to `DEFAULT_FULL_SCHEMA` + and `SAFE_SCHEMA` to `DEFAULT_SAFE_SCHEMA`. +- Use `safeLoad` for `require` extension. + +### Fixed +- Bug fix: export `NIL` constant from the public interface. + + +## [2.0.5] - 2013-04-26 +### Security +- Close security issue in !!js/function constructor. + Big thanks to @nealpoole for security audit. + + +## [2.0.4] - 2013-04-08 +### Changed +- Updated .npmignore to reduce package size + + +## [2.0.3] - 2013-02-26 +### Fixed +- Fixed dumping of empty arrays ans objects. ([] and {} instead of null) + + +## [2.0.2] - 2013-02-15 +### Fixed +- Fixed input validation: tabs are printable characters. + + +## [2.0.1] - 2013-02-09 +### Fixed +- Fixed error, when options not passed to function cass + + +## [2.0.0] - 2013-02-09 +### Changed +- Full rewrite. New architecture. Fast one-stage parsing. +- Changed custom types API. +- Added YAML dumper. + + +## [1.0.3] - 2012-11-05 +### Fixed +- Fixed utf-8 files loading. + + +## [1.0.2] - 2012-08-02 +### Fixed +- Pull out hand-written shims. Use ES5-Shims for old browsers support. See #44. +- Fix timstamps incorectly parsed in local time when no time part specified. + + +## [1.0.1] - 2012-07-07 +### Fixed +- Fixes `TypeError: 'undefined' is not an object` under Safari. Thanks Phuong. +- Fix timestamps incorrectly parsed in local time. Thanks @caolan. Closes #46. + + +## [1.0.0] - 2012-07-01 +### Changed +- `y`, `yes`, `n`, `no`, `on`, `off` are not converted to Booleans anymore. + Fixes #42. +- `require(filename)` now returns a single document and throws an Error if + file contains more than one document. +- CLI was merged back from js-yaml.bin + + +## [0.3.7] - 2012-02-28 +### Fixed +- Fix export of `addConstructor()`. Closes #39. + + +## [0.3.6] - 2012-02-22 +### Changed +- Removed AMD parts - too buggy to use. Need help to rewrite from scratch + +### Fixed +- Removed YUI compressor warning (renamed `double` variable). Closes #40. + + +## [0.3.5] - 2012-01-10 +### Fixed +- Workagound for .npmignore fuckup under windows. Thanks to airportyh. + + +## [0.3.4] - 2011-12-24 +### Fixed +- Fixes str[] for oldIEs support. +- Adds better has change support for browserified demo. +- improves compact output of Error. Closes #33. + + +## [0.3.3] - 2011-12-20 +### Added +- adds `compact` stringification of Errors. + +### Changed +- jsyaml executable moved to separate module. + + +## [0.3.2] - 2011-12-16 +### Added +- Added jsyaml executable. +- Added !!js/function support. Closes #12. + +### Fixed +- Fixes ug with block style scalars. Closes #26. +- All sources are passing JSLint now. +- Fixes bug in Safari. Closes #28. +- Fixes bug in Opers. Closes #29. +- Improves browser support. Closes #20. + + +## [0.3.1] - 2011-11-18 +### Added +- Added AMD support for browserified version. +- Added permalinks for online demo YAML snippets. Now we have YPaste service, lol. +- Added !!js/regexp and !!js/undefined types. Partially solves #12. + +### Changed +- Wrapped browserified js-yaml into closure. + +### Fixed +- Fixed the resolvement of non-specific tags. Closes #17. +- Fixed !!set mapping. +- Fixed month parse in dates. Closes #19. + + +## [0.3.0] - 2011-11-09 +### Added +- Added browserified version. Closes #13. +- Added live demo of browserified version. +- Ported some of the PyYAML tests. See #14. + +### Fixed +- Removed JS.Class dependency. Closes #3. +- Fixed timestamp bug when fraction was given. + + +## [0.2.2] - 2011-11-06 +### Fixed +- Fixed crash on docs without ---. Closes #8. +- Fixed multiline string parse +- Fixed tests/comments for using array as key + + +## [0.2.1] - 2011-11-02 +### Fixed +- Fixed short file read (<4k). Closes #9. + + +## [0.2.0] - 2011-11-02 +### Changed +- First public release + + +[4.1.0]: https://github.com/nodeca/js-yaml/compare/4.0.0...4.1.0 +[4.0.0]: https://github.com/nodeca/js-yaml/compare/3.14.0...4.0.0 +[3.14.0]: https://github.com/nodeca/js-yaml/compare/3.13.1...3.14.0 +[3.13.1]: https://github.com/nodeca/js-yaml/compare/3.13.0...3.13.1 +[3.13.0]: https://github.com/nodeca/js-yaml/compare/3.12.2...3.13.0 +[3.12.2]: https://github.com/nodeca/js-yaml/compare/3.12.1...3.12.2 +[3.12.1]: https://github.com/nodeca/js-yaml/compare/3.12.0...3.12.1 +[3.12.0]: https://github.com/nodeca/js-yaml/compare/3.11.0...3.12.0 +[3.11.0]: https://github.com/nodeca/js-yaml/compare/3.10.0...3.11.0 +[3.10.0]: https://github.com/nodeca/js-yaml/compare/3.9.1...3.10.0 +[3.9.1]: https://github.com/nodeca/js-yaml/compare/3.9.0...3.9.1 +[3.9.0]: https://github.com/nodeca/js-yaml/compare/3.8.4...3.9.0 +[3.8.4]: https://github.com/nodeca/js-yaml/compare/3.8.3...3.8.4 +[3.8.3]: https://github.com/nodeca/js-yaml/compare/3.8.2...3.8.3 +[3.8.2]: https://github.com/nodeca/js-yaml/compare/3.8.1...3.8.2 +[3.8.1]: https://github.com/nodeca/js-yaml/compare/3.8.0...3.8.1 +[3.8.0]: https://github.com/nodeca/js-yaml/compare/3.7.0...3.8.0 +[3.7.0]: https://github.com/nodeca/js-yaml/compare/3.6.1...3.7.0 +[3.6.1]: https://github.com/nodeca/js-yaml/compare/3.6.0...3.6.1 +[3.6.0]: https://github.com/nodeca/js-yaml/compare/3.5.5...3.6.0 +[3.5.5]: https://github.com/nodeca/js-yaml/compare/3.5.4...3.5.5 +[3.5.4]: https://github.com/nodeca/js-yaml/compare/3.5.3...3.5.4 +[3.5.3]: https://github.com/nodeca/js-yaml/compare/3.5.2...3.5.3 +[3.5.2]: https://github.com/nodeca/js-yaml/compare/3.5.1...3.5.2 +[3.5.1]: https://github.com/nodeca/js-yaml/compare/3.5.0...3.5.1 +[3.5.0]: https://github.com/nodeca/js-yaml/compare/3.4.6...3.5.0 +[3.4.6]: https://github.com/nodeca/js-yaml/compare/3.4.5...3.4.6 +[3.4.5]: https://github.com/nodeca/js-yaml/compare/3.4.4...3.4.5 +[3.4.4]: https://github.com/nodeca/js-yaml/compare/3.4.3...3.4.4 +[3.4.3]: https://github.com/nodeca/js-yaml/compare/3.4.2...3.4.3 +[3.4.2]: https://github.com/nodeca/js-yaml/compare/3.4.1...3.4.2 +[3.4.1]: https://github.com/nodeca/js-yaml/compare/3.4.0...3.4.1 +[3.4.0]: https://github.com/nodeca/js-yaml/compare/3.3.1...3.4.0 +[3.3.1]: https://github.com/nodeca/js-yaml/compare/3.3.0...3.3.1 +[3.3.0]: https://github.com/nodeca/js-yaml/compare/3.2.7...3.3.0 +[3.2.7]: https://github.com/nodeca/js-yaml/compare/3.2.6...3.2.7 +[3.2.6]: https://github.com/nodeca/js-yaml/compare/3.2.5...3.2.6 +[3.2.5]: https://github.com/nodeca/js-yaml/compare/3.2.4...3.2.5 +[3.2.4]: https://github.com/nodeca/js-yaml/compare/3.2.3...3.2.4 +[3.2.3]: https://github.com/nodeca/js-yaml/compare/3.2.2...3.2.3 +[3.2.2]: https://github.com/nodeca/js-yaml/compare/3.2.1...3.2.2 +[3.2.1]: https://github.com/nodeca/js-yaml/compare/3.2.0...3.2.1 +[3.2.0]: https://github.com/nodeca/js-yaml/compare/3.1.0...3.2.0 +[3.1.0]: https://github.com/nodeca/js-yaml/compare/3.0.2...3.1.0 +[3.0.2]: https://github.com/nodeca/js-yaml/compare/3.0.1...3.0.2 +[3.0.1]: https://github.com/nodeca/js-yaml/compare/3.0.0...3.0.1 +[3.0.0]: https://github.com/nodeca/js-yaml/compare/2.1.3...3.0.0 +[2.1.3]: https://github.com/nodeca/js-yaml/compare/2.1.2...2.1.3 +[2.1.2]: https://github.com/nodeca/js-yaml/compare/2.1.1...2.1.2 +[2.1.1]: https://github.com/nodeca/js-yaml/compare/2.1.0...2.1.1 +[2.1.0]: https://github.com/nodeca/js-yaml/compare/2.0.5...2.1.0 +[2.0.5]: https://github.com/nodeca/js-yaml/compare/2.0.4...2.0.5 +[2.0.4]: https://github.com/nodeca/js-yaml/compare/2.0.3...2.0.4 +[2.0.3]: https://github.com/nodeca/js-yaml/compare/2.0.2...2.0.3 +[2.0.2]: https://github.com/nodeca/js-yaml/compare/2.0.1...2.0.2 +[2.0.1]: https://github.com/nodeca/js-yaml/compare/2.0.0...2.0.1 +[2.0.0]: https://github.com/nodeca/js-yaml/compare/1.0.3...2.0.0 +[1.0.3]: https://github.com/nodeca/js-yaml/compare/1.0.2...1.0.3 +[1.0.2]: https://github.com/nodeca/js-yaml/compare/1.0.1...1.0.2 +[1.0.1]: https://github.com/nodeca/js-yaml/compare/1.0.0...1.0.1 +[1.0.0]: https://github.com/nodeca/js-yaml/compare/0.3.7...1.0.0 +[0.3.7]: https://github.com/nodeca/js-yaml/compare/0.3.6...0.3.7 +[0.3.6]: https://github.com/nodeca/js-yaml/compare/0.3.5...0.3.6 +[0.3.5]: https://github.com/nodeca/js-yaml/compare/0.3.4...0.3.5 +[0.3.4]: https://github.com/nodeca/js-yaml/compare/0.3.3...0.3.4 +[0.3.3]: https://github.com/nodeca/js-yaml/compare/0.3.2...0.3.3 +[0.3.2]: https://github.com/nodeca/js-yaml/compare/0.3.1...0.3.2 +[0.3.1]: https://github.com/nodeca/js-yaml/compare/0.3.0...0.3.1 +[0.3.0]: https://github.com/nodeca/js-yaml/compare/0.2.2...0.3.0 +[0.2.2]: https://github.com/nodeca/js-yaml/compare/0.2.1...0.2.2 +[0.2.1]: https://github.com/nodeca/js-yaml/compare/0.2.0...0.2.1 +[0.2.0]: https://github.com/nodeca/js-yaml/releases/tag/0.2.0 diff --git a/node_modules/js-yaml/LICENSE b/node_modules/js-yaml/LICENSE new file mode 100644 index 0000000..09d3a29 --- /dev/null +++ b/node_modules/js-yaml/LICENSE @@ -0,0 +1,21 @@ +(The MIT License) + +Copyright (C) 2011-2015 by Vitaly Puzrin + +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/node_modules/js-yaml/README.md b/node_modules/js-yaml/README.md new file mode 100644 index 0000000..3cbc4bd --- /dev/null +++ b/node_modules/js-yaml/README.md @@ -0,0 +1,246 @@ +JS-YAML - YAML 1.2 parser / writer for JavaScript +================================================= + +[![CI](https://github.com/nodeca/js-yaml/workflows/CI/badge.svg?branch=master)](https://github.com/nodeca/js-yaml/actions) +[![NPM version](https://img.shields.io/npm/v/js-yaml.svg)](https://www.npmjs.org/package/js-yaml) + +__[Online Demo](http://nodeca.github.com/js-yaml/)__ + + +This is an implementation of [YAML](http://yaml.org/), a human-friendly data +serialization language. Started as [PyYAML](http://pyyaml.org/) port, it was +completely rewritten from scratch. Now it's very fast, and supports 1.2 spec. + + +Installation +------------ + +### YAML module for node.js + +``` +npm install js-yaml +``` + + +### CLI executable + +If you want to inspect your YAML files from CLI, install js-yaml globally: + +``` +npm install -g js-yaml +``` + +#### Usage + +``` +usage: js-yaml [-h] [-v] [-c] [-t] file + +Positional arguments: + file File with YAML document(s) + +Optional arguments: + -h, --help Show this help message and exit. + -v, --version Show program's version number and exit. + -c, --compact Display errors in compact mode + -t, --trace Show stack trace on error +``` + + +API +--- + +Here we cover the most 'useful' methods. If you need advanced details (creating +your own tags), see [examples](https://github.com/nodeca/js-yaml/tree/master/examples) +for more info. + +``` javascript +const yaml = require('js-yaml'); +const fs = require('fs'); + +// Get document, or throw exception on error +try { + const doc = yaml.load(fs.readFileSync('/home/ixti/example.yml', 'utf8')); + console.log(doc); +} catch (e) { + console.log(e); +} +``` + + +### load (string [ , options ]) + +Parses `string` as single YAML document. Returns either a +plain object, a string, a number, `null` or `undefined`, or throws `YAMLException` on error. By default, does +not support regexps, functions and undefined. + +options: + +- `filename` _(default: null)_ - string to be used as a file path in + error/warning messages. +- `onWarning` _(default: null)_ - function to call on warning messages. + Loader will call this function with an instance of `YAMLException` for each warning. +- `schema` _(default: `DEFAULT_SCHEMA`)_ - specifies a schema to use. + - `FAILSAFE_SCHEMA` - only strings, arrays and plain objects: + http://www.yaml.org/spec/1.2/spec.html#id2802346 + - `JSON_SCHEMA` - all JSON-supported types: + http://www.yaml.org/spec/1.2/spec.html#id2803231 + - `CORE_SCHEMA` - same as `JSON_SCHEMA`: + http://www.yaml.org/spec/1.2/spec.html#id2804923 + - `DEFAULT_SCHEMA` - all supported YAML types. +- `json` _(default: false)_ - compatibility with JSON.parse behaviour. If true, then duplicate keys in a mapping will override values rather than throwing an error. + +NOTE: This function **does not** understand multi-document sources, it throws +exception on those. + +NOTE: JS-YAML **does not** support schema-specific tag resolution restrictions. +So, the JSON schema is not as strictly defined in the YAML specification. +It allows numbers in any notation, use `Null` and `NULL` as `null`, etc. +The core schema also has no such restrictions. It allows binary notation for integers. + + +### loadAll (string [, iterator] [, options ]) + +Same as `load()`, but understands multi-document sources. Applies +`iterator` to each document if specified, or returns array of documents. + +``` javascript +const yaml = require('js-yaml'); + +yaml.loadAll(data, function (doc) { + console.log(doc); +}); +``` + + +### dump (object [ , options ]) + +Serializes `object` as a YAML document. Uses `DEFAULT_SCHEMA`, so it will +throw an exception if you try to dump regexps or functions. However, you can +disable exceptions by setting the `skipInvalid` option to `true`. + +options: + +- `indent` _(default: 2)_ - indentation width to use (in spaces). +- `noArrayIndent` _(default: false)_ - when true, will not add an indentation level to array elements +- `skipInvalid` _(default: false)_ - do not throw on invalid types (like function + in the safe schema) and skip pairs and single values with such types. +- `flowLevel` _(default: -1)_ - specifies level of nesting, when to switch from + block to flow style for collections. -1 means block style everwhere +- `styles` - "tag" => "style" map. Each tag may have own set of styles. +- `schema` _(default: `DEFAULT_SCHEMA`)_ specifies a schema to use. +- `sortKeys` _(default: `false`)_ - if `true`, sort keys when dumping YAML. If a + function, use the function to sort the keys. +- `lineWidth` _(default: `80`)_ - set max line width. Set `-1` for unlimited width. +- `noRefs` _(default: `false`)_ - if `true`, don't convert duplicate objects into references +- `noCompatMode` _(default: `false`)_ - if `true` don't try to be compatible with older + yaml versions. Currently: don't quote "yes", "no" and so on, as required for YAML 1.1 +- `condenseFlow` _(default: `false`)_ - if `true` flow sequences will be condensed, omitting the space between `a, b`. Eg. `'[a,b]'`, and omitting the space between `key: value` and quoting the key. Eg. `'{"a":b}'` Can be useful when using yaml for pretty URL query params as spaces are %-encoded. +- `quotingType` _(`'` or `"`, default: `'`)_ - strings will be quoted using this quoting style. If you specify single quotes, double quotes will still be used for non-printable characters. +- `forceQuotes` _(default: `false`)_ - if `true`, all non-key strings will be quoted even if they normally don't need to. +- `replacer` - callback `function (key, value)` called recursively on each key/value in source object (see `replacer` docs for `JSON.stringify`). + +The following table show availlable styles (e.g. "canonical", +"binary"...) available for each tag (.e.g. !!null, !!int ...). Yaml +output is shown on the right side after `=>` (default setting) or `->`: + +``` none +!!null + "canonical" -> "~" + "lowercase" => "null" + "uppercase" -> "NULL" + "camelcase" -> "Null" + +!!int + "binary" -> "0b1", "0b101010", "0b1110001111010" + "octal" -> "0o1", "0o52", "0o16172" + "decimal" => "1", "42", "7290" + "hexadecimal" -> "0x1", "0x2A", "0x1C7A" + +!!bool + "lowercase" => "true", "false" + "uppercase" -> "TRUE", "FALSE" + "camelcase" -> "True", "False" + +!!float + "lowercase" => ".nan", '.inf' + "uppercase" -> ".NAN", '.INF' + "camelcase" -> ".NaN", '.Inf' +``` + +Example: + +``` javascript +dump(object, { + 'styles': { + '!!null': 'canonical' // dump null as ~ + }, + 'sortKeys': true // sort object keys +}); +``` + +Supported YAML types +-------------------- + +The list of standard YAML tags and corresponding JavaScript types. See also +[YAML tag discussion](http://pyyaml.org/wiki/YAMLTagDiscussion) and +[YAML types repository](http://yaml.org/type/). + +``` +!!null '' # null +!!bool 'yes' # bool +!!int '3...' # number +!!float '3.14...' # number +!!binary '...base64...' # buffer +!!timestamp 'YYYY-...' # date +!!omap [ ... ] # array of key-value pairs +!!pairs [ ... ] # array or array pairs +!!set { ... } # array of objects with given keys and null values +!!str '...' # string +!!seq [ ... ] # array +!!map { ... } # object +``` + +**JavaScript-specific tags** + +See [js-yaml-js-types](https://github.com/nodeca/js-yaml-js-types) for +extra types. + + +Caveats +------- + +Note, that you use arrays or objects as key in JS-YAML. JS does not allow objects +or arrays as keys, and stringifies (by calling `toString()` method) them at the +moment of adding them. + +``` yaml +--- +? [ foo, bar ] +: - baz +? { foo: bar } +: - baz + - baz +``` + +``` javascript +{ "foo,bar": ["baz"], "[object Object]": ["baz", "baz"] } +``` + +Also, reading of properties on implicit block mapping keys is not supported yet. +So, the following YAML document cannot be loaded. + +``` yaml +&anchor foo: + foo: bar + *anchor: duplicate key + baz: bat + *anchor: duplicate key +``` + + +js-yaml for enterprise +---------------------- + +Available as part of the Tidelift Subscription + +The maintainers of js-yaml and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-js-yaml?utm_source=npm-js-yaml&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/node_modules/js-yaml/bin/js-yaml.js b/node_modules/js-yaml/bin/js-yaml.js new file mode 100644 index 0000000..a182f1a --- /dev/null +++ b/node_modules/js-yaml/bin/js-yaml.js @@ -0,0 +1,126 @@ +#!/usr/bin/env node + + +'use strict'; + +/*eslint-disable no-console*/ + + +var fs = require('fs'); +var argparse = require('argparse'); +var yaml = require('..'); + + +//////////////////////////////////////////////////////////////////////////////// + + +var cli = new argparse.ArgumentParser({ + prog: 'js-yaml', + add_help: true +}); + +cli.add_argument('-v', '--version', { + action: 'version', + version: require('../package.json').version +}); + +cli.add_argument('-c', '--compact', { + help: 'Display errors in compact mode', + action: 'store_true' +}); + +// deprecated (not needed after we removed output colors) +// option suppressed, but not completely removed for compatibility +cli.add_argument('-j', '--to-json', { + help: argparse.SUPPRESS, + dest: 'json', + action: 'store_true' +}); + +cli.add_argument('-t', '--trace', { + help: 'Show stack trace on error', + action: 'store_true' +}); + +cli.add_argument('file', { + help: 'File to read, utf-8 encoded without BOM', + nargs: '?', + default: '-' +}); + + +//////////////////////////////////////////////////////////////////////////////// + + +var options = cli.parse_args(); + + +//////////////////////////////////////////////////////////////////////////////// + +function readFile(filename, encoding, callback) { + if (options.file === '-') { + // read from stdin + + var chunks = []; + + process.stdin.on('data', function (chunk) { + chunks.push(chunk); + }); + + process.stdin.on('end', function () { + return callback(null, Buffer.concat(chunks).toString(encoding)); + }); + } else { + fs.readFile(filename, encoding, callback); + } +} + +readFile(options.file, 'utf8', function (error, input) { + var output, isYaml; + + if (error) { + if (error.code === 'ENOENT') { + console.error('File not found: ' + options.file); + process.exit(2); + } + + console.error( + options.trace && error.stack || + error.message || + String(error)); + + process.exit(1); + } + + try { + output = JSON.parse(input); + isYaml = false; + } catch (err) { + if (err instanceof SyntaxError) { + try { + output = []; + yaml.loadAll(input, function (doc) { output.push(doc); }, {}); + isYaml = true; + + if (output.length === 0) output = null; + else if (output.length === 1) output = output[0]; + + } catch (e) { + if (options.trace && err.stack) console.error(e.stack); + else console.error(e.toString(options.compact)); + + process.exit(1); + } + } else { + console.error( + options.trace && err.stack || + err.message || + String(err)); + + process.exit(1); + } + } + + if (isYaml) console.log(JSON.stringify(output, null, ' ')); + else console.log(yaml.dump(output)); +}); diff --git a/node_modules/js-yaml/dist/js-yaml.js b/node_modules/js-yaml/dist/js-yaml.js new file mode 100644 index 0000000..4cc0ddf --- /dev/null +++ b/node_modules/js-yaml/dist/js-yaml.js @@ -0,0 +1,3874 @@ + +/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jsyaml = {})); +}(this, (function (exports) { 'use strict'; + + function isNothing(subject) { + return (typeof subject === 'undefined') || (subject === null); + } + + + function isObject(subject) { + return (typeof subject === 'object') && (subject !== null); + } + + + function toArray(sequence) { + if (Array.isArray(sequence)) return sequence; + else if (isNothing(sequence)) return []; + + return [ sequence ]; + } + + + function extend(target, source) { + var index, length, key, sourceKeys; + + if (source) { + sourceKeys = Object.keys(source); + + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } + } + + return target; + } + + + function repeat(string, count) { + var result = '', cycle; + + for (cycle = 0; cycle < count; cycle += 1) { + result += string; + } + + return result; + } + + + function isNegativeZero(number) { + return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); + } + + + var isNothing_1 = isNothing; + var isObject_1 = isObject; + var toArray_1 = toArray; + var repeat_1 = repeat; + var isNegativeZero_1 = isNegativeZero; + var extend_1 = extend; + + var common = { + isNothing: isNothing_1, + isObject: isObject_1, + toArray: toArray_1, + repeat: repeat_1, + isNegativeZero: isNegativeZero_1, + extend: extend_1 + }; + + // YAML error class. http://stackoverflow.com/questions/8458984 + + + function formatError(exception, compact) { + var where = '', message = exception.reason || '(unknown reason)'; + + if (!exception.mark) return message; + + if (exception.mark.name) { + where += 'in "' + exception.mark.name + '" '; + } + + where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')'; + + if (!compact && exception.mark.snippet) { + where += '\n\n' + exception.mark.snippet; + } + + return message + ' ' + where; + } + + + function YAMLException$1(reason, mark) { + // Super constructor + Error.call(this); + + this.name = 'YAMLException'; + this.reason = reason; + this.mark = mark; + this.message = formatError(this, false); + + // Include stack trace in error object + if (Error.captureStackTrace) { + // Chrome and NodeJS + Error.captureStackTrace(this, this.constructor); + } else { + // FF, IE 10+ and Safari 6+. Fallback for others + this.stack = (new Error()).stack || ''; + } + } + + + // Inherit from Error + YAMLException$1.prototype = Object.create(Error.prototype); + YAMLException$1.prototype.constructor = YAMLException$1; + + + YAMLException$1.prototype.toString = function toString(compact) { + return this.name + ': ' + formatError(this, compact); + }; + + + var exception = YAMLException$1; + + // get snippet for a single line, respecting maxLength + function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { + var head = ''; + var tail = ''; + var maxHalfLength = Math.floor(maxLineLength / 2) - 1; + + if (position - lineStart > maxHalfLength) { + head = ' ... '; + lineStart = position - maxHalfLength + head.length; + } + + if (lineEnd - position > maxHalfLength) { + tail = ' ...'; + lineEnd = position + maxHalfLength - tail.length; + } + + return { + str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, '→') + tail, + pos: position - lineStart + head.length // relative position + }; + } + + + function padStart(string, max) { + return common.repeat(' ', max - string.length) + string; + } + + + function makeSnippet(mark, options) { + options = Object.create(options || null); + + if (!mark.buffer) return null; + + if (!options.maxLength) options.maxLength = 79; + if (typeof options.indent !== 'number') options.indent = 1; + if (typeof options.linesBefore !== 'number') options.linesBefore = 3; + if (typeof options.linesAfter !== 'number') options.linesAfter = 2; + + var re = /\r?\n|\r|\0/g; + var lineStarts = [ 0 ]; + var lineEnds = []; + var match; + var foundLineNo = -1; + + while ((match = re.exec(mark.buffer))) { + lineEnds.push(match.index); + lineStarts.push(match.index + match[0].length); + + if (mark.position <= match.index && foundLineNo < 0) { + foundLineNo = lineStarts.length - 2; + } + } + + if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; + + var result = '', i, line; + var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; + var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); + + for (i = 1; i <= options.linesBefore; i++) { + if (foundLineNo - i < 0) break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo - i], + lineEnds[foundLineNo - i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), + maxLineLength + ); + result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n' + result; + } + + line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); + result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n'; + result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\n'; + + for (i = 1; i <= options.linesAfter; i++) { + if (foundLineNo + i >= lineEnds.length) break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo + i], + lineEnds[foundLineNo + i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), + maxLineLength + ); + result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n'; + } + + return result.replace(/\n$/, ''); + } + + + var snippet = makeSnippet; + + var TYPE_CONSTRUCTOR_OPTIONS = [ + 'kind', + 'multi', + 'resolve', + 'construct', + 'instanceOf', + 'predicate', + 'represent', + 'representName', + 'defaultStyle', + 'styleAliases' + ]; + + var YAML_NODE_KINDS = [ + 'scalar', + 'sequence', + 'mapping' + ]; + + function compileStyleAliases(map) { + var result = {}; + + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); + } + + return result; + } + + function Type$1(tag, options) { + options = options || {}; + + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new exception('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + } + }); + + // TODO: Add tag format check. + this.options = options; // keep original options in case user wants to extend this type later + this.tag = tag; + this.kind = options['kind'] || null; + this.resolve = options['resolve'] || function () { return true; }; + this.construct = options['construct'] || function (data) { return data; }; + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.representName = options['representName'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.multi = options['multi'] || false; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new exception('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } + } + + var type = Type$1; + + /*eslint-disable max-len*/ + + + + + + function compileList(schema, name) { + var result = []; + + schema[name].forEach(function (currentType) { + var newIndex = result.length; + + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && + previousType.kind === currentType.kind && + previousType.multi === currentType.multi) { + + newIndex = previousIndex; + } + }); + + result[newIndex] = currentType; + }); + + return result; + } + + + function compileMap(/* lists... */) { + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {}, + multi: { + scalar: [], + sequence: [], + mapping: [], + fallback: [] + } + }, index, length; + + function collectType(type) { + if (type.multi) { + result.multi[type.kind].push(type); + result.multi['fallback'].push(type); + } else { + result[type.kind][type.tag] = result['fallback'][type.tag] = type; + } + } + + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + return result; + } + + + function Schema$1(definition) { + return this.extend(definition); + } + + + Schema$1.prototype.extend = function extend(definition) { + var implicit = []; + var explicit = []; + + if (definition instanceof type) { + // Schema.extend(type) + explicit.push(definition); + + } else if (Array.isArray(definition)) { + // Schema.extend([ type1, type2, ... ]) + explicit = explicit.concat(definition); + + } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { + // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] }) + if (definition.implicit) implicit = implicit.concat(definition.implicit); + if (definition.explicit) explicit = explicit.concat(definition.explicit); + + } else { + throw new exception('Schema.extend argument should be a Type, [ Type ], ' + + 'or a schema definition ({ implicit: [...], explicit: [...] })'); + } + + implicit.forEach(function (type$1) { + if (!(type$1 instanceof type)) { + throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + + if (type$1.loadKind && type$1.loadKind !== 'scalar') { + throw new exception('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + } + + if (type$1.multi) { + throw new exception('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.'); + } + }); + + explicit.forEach(function (type$1) { + if (!(type$1 instanceof type)) { + throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + }); + + var result = Object.create(Schema$1.prototype); + + result.implicit = (this.implicit || []).concat(implicit); + result.explicit = (this.explicit || []).concat(explicit); + + result.compiledImplicit = compileList(result, 'implicit'); + result.compiledExplicit = compileList(result, 'explicit'); + result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); + + return result; + }; + + + var schema = Schema$1; + + var str = new type('tag:yaml.org,2002:str', { + kind: 'scalar', + construct: function (data) { return data !== null ? data : ''; } + }); + + var seq = new type('tag:yaml.org,2002:seq', { + kind: 'sequence', + construct: function (data) { return data !== null ? data : []; } + }); + + var map = new type('tag:yaml.org,2002:map', { + kind: 'mapping', + construct: function (data) { return data !== null ? data : {}; } + }); + + var failsafe = new schema({ + explicit: [ + str, + seq, + map + ] + }); + + function resolveYamlNull(data) { + if (data === null) return true; + + var max = data.length; + + return (max === 1 && data === '~') || + (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); + } + + function constructYamlNull() { + return null; + } + + function isNull(object) { + return object === null; + } + + var _null = new type('tag:yaml.org,2002:null', { + kind: 'scalar', + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function () { return '~'; }, + lowercase: function () { return 'null'; }, + uppercase: function () { return 'NULL'; }, + camelcase: function () { return 'Null'; }, + empty: function () { return ''; } + }, + defaultStyle: 'lowercase' + }); + + function resolveYamlBoolean(data) { + if (data === null) return false; + + var max = data.length; + + return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || + (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); + } + + function constructYamlBoolean(data) { + return data === 'true' || + data === 'True' || + data === 'TRUE'; + } + + function isBoolean(object) { + return Object.prototype.toString.call(object) === '[object Boolean]'; + } + + var bool = new type('tag:yaml.org,2002:bool', { + kind: 'scalar', + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function (object) { return object ? 'true' : 'false'; }, + uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, + camelcase: function (object) { return object ? 'True' : 'False'; } + }, + defaultStyle: 'lowercase' + }); + + function isHexCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || + ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || + ((0x61/* a */ <= c) && (c <= 0x66/* f */)); + } + + function isOctCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); + } + + function isDecCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); + } + + function resolveYamlInteger(data) { + if (data === null) return false; + + var max = data.length, + index = 0, + hasDigits = false, + ch; + + if (!max) return false; + + ch = data[index]; + + // sign + if (ch === '-' || ch === '+') { + ch = data[++index]; + } + + if (ch === '0') { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; + + // base 2, base 8, base 16 + + if (ch === 'b') { + // base 2 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch !== '0' && ch !== '1') return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + + + if (ch === 'x') { + // base 16 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + + + if (ch === 'o') { + // base 8 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + } + + // base 10 (except 0) + + // value should not start with `_`; + if (ch === '_') return false; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } + + // Should have digits and should not end with `_` + if (!hasDigits || ch === '_') return false; + + return true; + } + + function constructYamlInteger(data) { + var value = data, sign = 1, ch; + + if (value.indexOf('_') !== -1) { + value = value.replace(/_/g, ''); + } + + ch = value[0]; + + if (ch === '-' || ch === '+') { + if (ch === '-') sign = -1; + value = value.slice(1); + ch = value[0]; + } + + if (value === '0') return 0; + + if (ch === '0') { + if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); + if (value[1] === 'x') return sign * parseInt(value.slice(2), 16); + if (value[1] === 'o') return sign * parseInt(value.slice(2), 8); + } + + return sign * parseInt(value, 10); + } + + function isInteger(object) { + return (Object.prototype.toString.call(object)) === '[object Number]' && + (object % 1 === 0 && !common.isNegativeZero(object)); + } + + var int = new type('tag:yaml.org,2002:int', { + kind: 'scalar', + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, + octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); }, + decimal: function (obj) { return obj.toString(10); }, + /* eslint-disable max-len */ + hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } + }, + defaultStyle: 'decimal', + styleAliases: { + binary: [ 2, 'bin' ], + octal: [ 8, 'oct' ], + decimal: [ 10, 'dec' ], + hexadecimal: [ 16, 'hex' ] + } + }); + + var YAML_FLOAT_PATTERN = new RegExp( + // 2.5e4, 2.5 and integers + '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + + // .2e4, .2 + // special case, seems not from spec + '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + + // .inf + '|[-+]?\\.(?:inf|Inf|INF)' + + // .nan + '|\\.(?:nan|NaN|NAN))$'); + + function resolveYamlFloat(data) { + if (data === null) return false; + + if (!YAML_FLOAT_PATTERN.test(data) || + // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === '_') { + return false; + } + + return true; + } + + function constructYamlFloat(data) { + var value, sign; + + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; + + if ('+-'.indexOf(value[0]) >= 0) { + value = value.slice(1); + } + + if (value === '.inf') { + return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + + } else if (value === '.nan') { + return NaN; + } + return sign * parseFloat(value, 10); + } + + + var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + + function representYamlFloat(object, style) { + var res; + + if (isNaN(object)) { + switch (style) { + case 'lowercase': return '.nan'; + case 'uppercase': return '.NAN'; + case 'camelcase': return '.NaN'; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '.inf'; + case 'uppercase': return '.INF'; + case 'camelcase': return '.Inf'; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '-.inf'; + case 'uppercase': return '-.INF'; + case 'camelcase': return '-.Inf'; + } + } else if (common.isNegativeZero(object)) { + return '-0.0'; + } + + res = object.toString(10); + + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack + + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; + } + + function isFloat(object) { + return (Object.prototype.toString.call(object) === '[object Number]') && + (object % 1 !== 0 || common.isNegativeZero(object)); + } + + var float = new type('tag:yaml.org,2002:float', { + kind: 'scalar', + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: 'lowercase' + }); + + var json = failsafe.extend({ + implicit: [ + _null, + bool, + int, + float + ] + }); + + var core = json; + + var YAML_DATE_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$'); // [3] day + + var YAML_TIMESTAMP_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour + '(?::([0-9][0-9]))?))?$'); // [11] tz_minute + + function resolveYamlTimestamp(data) { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; + } + + function constructYamlTimestamp(data) { + var match, year, month, day, hour, minute, second, fraction = 0, + delta = null, tz_hour, tz_minute, date; + + match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + + if (match === null) throw new Error('Date resolve error'); + + // match: [1] year [2] month [3] day + + year = +(match[1]); + month = +(match[2]) - 1; // JS month starts with 0 + day = +(match[3]); + + if (!match[4]) { // no hour + return new Date(Date.UTC(year, month, day)); + } + + // match: [4] hour [5] minute [6] second [7] fraction + + hour = +(match[4]); + minute = +(match[5]); + second = +(match[6]); + + if (match[7]) { + fraction = match[7].slice(0, 3); + while (fraction.length < 3) { // milli-seconds + fraction += '0'; + } + fraction = +fraction; + } + + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + if (match[9]) { + tz_hour = +(match[10]); + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + if (match[9] === '-') delta = -delta; + } + + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + + if (delta) date.setTime(date.getTime() - delta); + + return date; + } + + function representYamlTimestamp(object /*, style*/) { + return object.toISOString(); + } + + var timestamp = new type('tag:yaml.org,2002:timestamp', { + kind: 'scalar', + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp + }); + + function resolveYamlMerge(data) { + return data === '<<' || data === null; + } + + var merge = new type('tag:yaml.org,2002:merge', { + kind: 'scalar', + resolve: resolveYamlMerge + }); + + /*eslint-disable no-bitwise*/ + + + + + + // [ 64, 65, 66 ] -> [ padding, CR, LF ] + var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; + + + function resolveYamlBinary(data) { + if (data === null) return false; + + var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; + + // Convert one by one. + for (idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); + + // Skip CR/LF + if (code > 64) continue; + + // Fail on illegal characters + if (code < 0) return false; + + bitlen += 6; + } + + // If there are any bits left, source was corrupted + return (bitlen % 8) === 0; + } + + function constructYamlBinary(data) { + var idx, tailbits, + input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan + max = input.length, + map = BASE64_MAP, + bits = 0, + result = []; + + // Collect by 6*4 bits (3 bytes) + + for (idx = 0; idx < max; idx++) { + if ((idx % 4 === 0) && idx) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } + + bits = (bits << 6) | map.indexOf(input.charAt(idx)); + } + + // Dump tail + + tailbits = (max % 4) * 6; + + if (tailbits === 0) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } else if (tailbits === 18) { + result.push((bits >> 10) & 0xFF); + result.push((bits >> 2) & 0xFF); + } else if (tailbits === 12) { + result.push((bits >> 4) & 0xFF); + } + + return new Uint8Array(result); + } + + function representYamlBinary(object /*, style*/) { + var result = '', bits = 0, idx, tail, + max = object.length, + map = BASE64_MAP; + + // Convert every three bytes to 4 ASCII characters. + + for (idx = 0; idx < max; idx++) { + if ((idx % 3 === 0) && idx) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } + + bits = (bits << 8) + object[idx]; + } + + // Dump tail + + tail = max % 3; + + if (tail === 0) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } else if (tail === 2) { + result += map[(bits >> 10) & 0x3F]; + result += map[(bits >> 4) & 0x3F]; + result += map[(bits << 2) & 0x3F]; + result += map[64]; + } else if (tail === 1) { + result += map[(bits >> 2) & 0x3F]; + result += map[(bits << 4) & 0x3F]; + result += map[64]; + result += map[64]; + } + + return result; + } + + function isBinary(obj) { + return Object.prototype.toString.call(obj) === '[object Uint8Array]'; + } + + var binary = new type('tag:yaml.org,2002:binary', { + kind: 'scalar', + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary + }); + + var _hasOwnProperty$3 = Object.prototype.hasOwnProperty; + var _toString$2 = Object.prototype.toString; + + function resolveYamlOmap(data) { + if (data === null) return true; + + var objectKeys = [], index, length, pair, pairKey, pairHasKey, + object = data; + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; + + if (_toString$2.call(pair) !== '[object Object]') return false; + + for (pairKey in pair) { + if (_hasOwnProperty$3.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true; + else return false; + } + } + + if (!pairHasKey) return false; + + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); + else return false; + } + + return true; + } + + function constructYamlOmap(data) { + return data !== null ? data : []; + } + + var omap = new type('tag:yaml.org,2002:omap', { + kind: 'sequence', + resolve: resolveYamlOmap, + construct: constructYamlOmap + }); + + var _toString$1 = Object.prototype.toString; + + function resolveYamlPairs(data) { + if (data === null) return true; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + if (_toString$1.call(pair) !== '[object Object]') return false; + + keys = Object.keys(pair); + + if (keys.length !== 1) return false; + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return true; + } + + function constructYamlPairs(data) { + if (data === null) return []; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + keys = Object.keys(pair); + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return result; + } + + var pairs = new type('tag:yaml.org,2002:pairs', { + kind: 'sequence', + resolve: resolveYamlPairs, + construct: constructYamlPairs + }); + + var _hasOwnProperty$2 = Object.prototype.hasOwnProperty; + + function resolveYamlSet(data) { + if (data === null) return true; + + var key, object = data; + + for (key in object) { + if (_hasOwnProperty$2.call(object, key)) { + if (object[key] !== null) return false; + } + } + + return true; + } + + function constructYamlSet(data) { + return data !== null ? data : {}; + } + + var set = new type('tag:yaml.org,2002:set', { + kind: 'mapping', + resolve: resolveYamlSet, + construct: constructYamlSet + }); + + var _default = core.extend({ + implicit: [ + timestamp, + merge + ], + explicit: [ + binary, + omap, + pairs, + set + ] + }); + + /*eslint-disable max-len,no-use-before-define*/ + + + + + + + + var _hasOwnProperty$1 = Object.prototype.hasOwnProperty; + + + var CONTEXT_FLOW_IN = 1; + var CONTEXT_FLOW_OUT = 2; + var CONTEXT_BLOCK_IN = 3; + var CONTEXT_BLOCK_OUT = 4; + + + var CHOMPING_CLIP = 1; + var CHOMPING_STRIP = 2; + var CHOMPING_KEEP = 3; + + + var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; + var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; + var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; + var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; + var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + + + function _class(obj) { return Object.prototype.toString.call(obj); } + + function is_EOL(c) { + return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); + } + + function is_WHITE_SPACE(c) { + return (c === 0x09/* Tab */) || (c === 0x20/* Space */); + } + + function is_WS_OR_EOL(c) { + return (c === 0x09/* Tab */) || + (c === 0x20/* Space */) || + (c === 0x0A/* LF */) || + (c === 0x0D/* CR */); + } + + function is_FLOW_INDICATOR(c) { + return c === 0x2C/* , */ || + c === 0x5B/* [ */ || + c === 0x5D/* ] */ || + c === 0x7B/* { */ || + c === 0x7D/* } */; + } + + function fromHexCode(c) { + var lc; + + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + /*eslint-disable no-bitwise*/ + lc = c | 0x20; + + if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { + return lc - 0x61 + 10; + } + + return -1; + } + + function escapedHexLen(c) { + if (c === 0x78/* x */) { return 2; } + if (c === 0x75/* u */) { return 4; } + if (c === 0x55/* U */) { return 8; } + return 0; + } + + function fromDecimalCode(c) { + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + return -1; + } + + function simpleEscapeSequence(c) { + /* eslint-disable indent */ + return (c === 0x30/* 0 */) ? '\x00' : + (c === 0x61/* a */) ? '\x07' : + (c === 0x62/* b */) ? '\x08' : + (c === 0x74/* t */) ? '\x09' : + (c === 0x09/* Tab */) ? '\x09' : + (c === 0x6E/* n */) ? '\x0A' : + (c === 0x76/* v */) ? '\x0B' : + (c === 0x66/* f */) ? '\x0C' : + (c === 0x72/* r */) ? '\x0D' : + (c === 0x65/* e */) ? '\x1B' : + (c === 0x20/* Space */) ? ' ' : + (c === 0x22/* " */) ? '\x22' : + (c === 0x2F/* / */) ? '/' : + (c === 0x5C/* \ */) ? '\x5C' : + (c === 0x4E/* N */) ? '\x85' : + (c === 0x5F/* _ */) ? '\xA0' : + (c === 0x4C/* L */) ? '\u2028' : + (c === 0x50/* P */) ? '\u2029' : ''; + } + + function charFromCodepoint(c) { + if (c <= 0xFFFF) { + return String.fromCharCode(c); + } + // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode( + ((c - 0x010000) >> 10) + 0xD800, + ((c - 0x010000) & 0x03FF) + 0xDC00 + ); + } + + var simpleEscapeCheck = new Array(256); // integer, for fast access + var simpleEscapeMap = new Array(256); + for (var i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); + } + + + function State$1(input, options) { + this.input = input; + + this.filename = options['filename'] || null; + this.schema = options['schema'] || _default; + this.onWarning = options['onWarning'] || null; + // (Hidden) Remove? makes the loader to expect YAML 1.1 documents + // if such documents have no explicit %YAML directive + this.legacy = options['legacy'] || false; + + this.json = options['json'] || false; + this.listener = options['listener'] || null; + + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; + + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; + + // position of first leading tab in the current line, + // used to make sure there are no tabs in the indentation + this.firstTabInLine = -1; + + this.documents = []; + + /* + this.version; + this.checkLineBreaks; + this.tagMap; + this.anchorMap; + this.tag; + this.anchor; + this.kind; + this.result;*/ + + } + + + function generateError(state, message) { + var mark = { + name: state.filename, + buffer: state.input.slice(0, -1), // omit trailing \0 + position: state.position, + line: state.line, + column: state.position - state.lineStart + }; + + mark.snippet = snippet(mark); + + return new exception(message, mark); + } + + function throwError(state, message) { + throw generateError(state, message); + } + + function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); + } + } + + + var directiveHandlers = { + + YAML: function handleYamlDirective(state, name, args) { + + var match, major, minor; + + if (state.version !== null) { + throwError(state, 'duplication of %YAML directive'); + } + + if (args.length !== 1) { + throwError(state, 'YAML directive accepts exactly one argument'); + } + + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + + if (match === null) { + throwError(state, 'ill-formed argument of the YAML directive'); + } + + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); + + if (major !== 1) { + throwError(state, 'unacceptable YAML version of the document'); + } + + state.version = args[0]; + state.checkLineBreaks = (minor < 2); + + if (minor !== 1 && minor !== 2) { + throwWarning(state, 'unsupported YAML version of the document'); + } + }, + + TAG: function handleTagDirective(state, name, args) { + + var handle, prefix; + + if (args.length !== 2) { + throwError(state, 'TAG directive accepts exactly two arguments'); + } + + handle = args[0]; + prefix = args[1]; + + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + } + + if (_hasOwnProperty$1.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + } + + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + } + + try { + prefix = decodeURIComponent(prefix); + } catch (err) { + throwError(state, 'tag prefix is malformed: ' + prefix); + } + + state.tagMap[handle] = prefix; + } + }; + + + function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; + + if (start < end) { + _result = state.input.slice(start, end); + + if (checkJson) { + for (_position = 0, _length = _result.length; _position < _length; _position += 1) { + _character = _result.charCodeAt(_position); + if (!(_character === 0x09 || + (0x20 <= _character && _character <= 0x10FFFF))) { + throwError(state, 'expected valid JSON character'); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, 'the stream contains non-printable characters'); + } + + state.result += _result; + } + } + + function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; + + if (!common.isObject(source)) { + throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); + } + + sourceKeys = Object.keys(source); + + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; + + if (!_hasOwnProperty$1.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; + } + } + } + + function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, + startLine, startLineStart, startPos) { + + var index, quantity; + + // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); + + for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { + if (Array.isArray(keyNode[index])) { + throwError(state, 'nested arrays are not supported inside keys'); + } + + if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { + keyNode[index] = '[object Object]'; + } + } + } + + // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { + keyNode = '[object Object]'; + } + + + keyNode = String(keyNode); + + if (_result === null) { + _result = {}; + } + + if (keyTag === 'tag:yaml.org,2002:merge') { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, _result, valueNode, overridableKeys); + } + } else { + if (!state.json && + !_hasOwnProperty$1.call(overridableKeys, keyNode) && + _hasOwnProperty$1.call(_result, keyNode)) { + state.line = startLine || state.line; + state.lineStart = startLineStart || state.lineStart; + state.position = startPos || state.position; + throwError(state, 'duplicated mapping key'); + } + + // used for this specific key only because Object.defineProperty is slow + if (keyNode === '__proto__') { + Object.defineProperty(_result, keyNode, { + configurable: true, + enumerable: true, + writable: true, + value: valueNode + }); + } else { + _result[keyNode] = valueNode; + } + delete overridableKeys[keyNode]; + } + + return _result; + } + + function readLineBreak(state) { + var ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x0A/* LF */) { + state.position++; + } else if (ch === 0x0D/* CR */) { + state.position++; + if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { + state.position++; + } + } else { + throwError(state, 'a line break is expected'); + } + + state.line += 1; + state.lineStart = state.position; + state.firstTabInLine = -1; + } + + function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) { + state.firstTabInLine = state.position; + } + ch = state.input.charCodeAt(++state.position); + } + + if (allowComments && ch === 0x23/* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); + } + + if (is_EOL(ch)) { + readLineBreak(state); + + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; + + while (ch === 0x20/* Space */) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } + + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, 'deficient indentation'); + } + + return lineBreaks; + } + + function testDocumentSeparator(state) { + var _position = state.position, + ch; + + ch = state.input.charCodeAt(_position); + + // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && + ch === state.input.charCodeAt(_position + 1) && + ch === state.input.charCodeAt(_position + 2)) { + + _position += 3; + + ch = state.input.charCodeAt(_position); + + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; + } + } + + return false; + } + + function writeFoldedLines(state, count) { + if (count === 1) { + state.result += ' '; + } else if (count > 1) { + state.result += common.repeat('\n', count - 1); + } + } + + + function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, + following, + captureStart, + captureEnd, + hasPendingContent, + _line, + _lineStart, + _lineIndent, + _kind = state.kind, + _result = state.result, + ch; + + ch = state.input.charCodeAt(state.position); + + if (is_WS_OR_EOL(ch) || + is_FLOW_INDICATOR(ch) || + ch === 0x23/* # */ || + ch === 0x26/* & */ || + ch === 0x2A/* * */ || + ch === 0x21/* ! */ || + ch === 0x7C/* | */ || + ch === 0x3E/* > */ || + ch === 0x27/* ' */ || + ch === 0x22/* " */ || + ch === 0x25/* % */ || + ch === 0x40/* @ */ || + ch === 0x60/* ` */) { + return false; + } + + if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; + } + } + + state.kind = 'scalar'; + state.result = ''; + captureStart = captureEnd = state.position; + hasPendingContent = false; + + while (ch !== 0) { + if (ch === 0x3A/* : */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } + + } else if (ch === 0x23/* # */) { + preceding = state.input.charCodeAt(state.position - 1); + + if (is_WS_OR_EOL(preceding)) { + break; + } + + } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || + withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; + + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; + } + } + + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } + + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; + } + + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, captureEnd, false); + + if (state.result) { + return true; + } + + state.kind = _kind; + state.result = _result; + return false; + } + + function readSingleQuotedScalar(state, nodeIndent) { + var ch, + captureStart, captureEnd; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x27/* ' */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27/* ' */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x27/* ' */) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a single quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a single quoted scalar'); + } + + function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, + captureEnd, + hexLength, + hexResult, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x22/* " */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22/* " */) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; + + } else if (ch === 0x5C/* \ */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); + + // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; + + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + + } else { + throwError(state, 'expected hexadecimal character'); + } + } + + state.result += charFromCodepoint(hexResult); + + state.position++; + + } else { + throwError(state, 'unknown escape sequence'); + } + + captureStart = captureEnd = state.position; + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a double quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a double quoted scalar'); + } + + function readFlowCollection(state, nodeIndent) { + var readNext = true, + _line, + _lineStart, + _pos, + _tag = state.tag, + _result, + _anchor = state.anchor, + following, + terminator, + isPair, + isExplicitPair, + isMapping, + overridableKeys = Object.create(null), + keyNode, + keyTag, + valueNode, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x5B/* [ */) { + terminator = 0x5D;/* ] */ + isMapping = false; + _result = []; + } else if (ch === 0x7B/* { */) { + terminator = 0x7D;/* } */ + isMapping = true; + _result = {}; + } else { + return false; + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(++state.position); + + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? 'mapping' : 'sequence'; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, 'missed comma between flow collection entries'); + } else if (ch === 0x2C/* , */) { + // "flow collection entries can never be completely empty", as per YAML 1.2, section 7.4 + throwError(state, "expected the node content, but found ','"); + } + + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + + if (ch === 0x3F/* ? */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } + + _line = state.line; // Save the current line. + _lineStart = state.lineStart; + _pos = state.position; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } + + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); + } else { + _result.push(keyNode); + } + + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x2C/* , */) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } + } + + throwError(state, 'unexpected end of the stream within a flow collection'); + } + + function readBlockScalar(state, nodeIndent) { + var captureStart, + folding, + chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x7C/* | */) { + folding = false; + } else if (ch === 0x3E/* > */) { + folding = true; + } else { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { + if (CHOMPING_CLIP === chomping) { + chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); + } + + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throwError(state, 'repeat of an indentation width identifier'); + } + + } else { + break; + } + } + + if (is_WHITE_SPACE(ch)) { + do { ch = state.input.charCodeAt(++state.position); } + while (is_WHITE_SPACE(ch)); + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (!is_EOL(ch) && (ch !== 0)); + } + } + + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; + + ch = state.input.charCodeAt(state.position); + + while ((!detectedIndent || state.lineIndent < textIndent) && + (ch === 0x20/* Space */)) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } + + if (is_EOL(ch)) { + emptyLines++; + continue; + } + + // End of the scalar. + if (state.lineIndent < textIndent) { + + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { // i.e. only if the scalar is not empty. + state.result += '\n'; + } + } + + // Break this `while` cycle and go to the funciton's epilogue. + break; + } + + // Folded style: use fancy rules to handle line breaks. + if (folding) { + + // Lines starting with white space characters (more-indented lines) are not folded. + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat('\n', emptyLines + 1); + + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { // i.e. only if we have already read some scalar content. + state.result += ' '; + } + + // Several line breaks - perceive as different lines. + } else { + state.result += common.repeat('\n', emptyLines); + } + + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } + + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; + + while (!is_EOL(ch) && (ch !== 0)) { + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, state.position, false); + } + + return true; + } + + function readBlockSequence(state, nodeIndent) { + var _line, + _tag = state.tag, + _anchor = state.anchor, + _result = [], + following, + detected = false, + ch; + + // there is a leading tab before this token, so it can't be a block sequence/mapping; + // it can still be flow sequence/mapping or a scalar + if (state.firstTabInLine !== -1) return false; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, 'tab characters must not be used in indentation'); + } + + if (ch !== 0x2D/* - */) { + break; + } + + following = state.input.charCodeAt(state.position + 1); + + if (!is_WS_OR_EOL(following)) { + break; + } + + detected = true; + state.position++; + + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + ch = state.input.charCodeAt(state.position); + continue; + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state.result); + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a sequence entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'sequence'; + state.result = _result; + return true; + } + return false; + } + + function readBlockMapping(state, nodeIndent, flowIndent) { + var following, + allowCompact, + _line, + _keyLine, + _keyLineStart, + _keyPos, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, + overridableKeys = Object.create(null), + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch; + + // there is a leading tab before this token, so it can't be a block sequence/mapping; + // it can still be flow sequence/mapping or a scalar + if (state.firstTabInLine !== -1) return false; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (!atExplicitKey && state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, 'tab characters must not be used in indentation'); + } + + following = state.input.charCodeAt(state.position + 1); + _line = state.line; // Save the current line. + + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { + + if (ch === 0x3F/* ? */) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = true; + allowCompact = true; + + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + + } else { + throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); + } + + state.position += 1; + ch = following; + + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + + if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + // Neither implicit nor explicit notation. + // Reading is done. Go to the epilogue. + break; + } + + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); + + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x3A/* : */) { + ch = state.input.charCodeAt(++state.position); + + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } + + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + + } else if (detected) { + throwError(state, 'can not read an implicit mapping pair; a colon is missed'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + + } else if (detected) { + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + } + + // + // Common reading code for both explicit and implicit notations. + // + if (state.line === _line || state.lineIndent > nodeIndent) { + if (atExplicitKey) { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + } + + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } + + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a mapping entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + // + // Epilogue. + // + + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + } + + // Expose the resulting mapping. + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'mapping'; + state.result = _result; + } + + return detected; + } + + function readTagProperty(state) { + var _position, + isVerbatim = false, + isNamed = false, + tagHandle, + tagName, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x21/* ! */) return false; + + if (state.tag !== null) { + throwError(state, 'duplication of a tag property'); + } + + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x3C/* < */) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + + } else if (ch === 0x21/* ! */) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); + + } else { + tagHandle = '!'; + } + + _position = state.position; + + if (isVerbatim) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && ch !== 0x3E/* > */); + + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, 'unexpected end of the stream within a verbatim tag'); + } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + + if (ch === 0x21/* ! */) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); + + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } + + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); + } + } + + ch = state.input.charCodeAt(++state.position); + } + + tagName = state.input.slice(_position, state.position); + + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, 'tag suffix cannot contain flow indicator characters'); + } + } + + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, 'tag name cannot contain such characters: ' + tagName); + } + + try { + tagName = decodeURIComponent(tagName); + } catch (err) { + throwError(state, 'tag name is malformed: ' + tagName); + } + + if (isVerbatim) { + state.tag = tagName; + + } else if (_hasOwnProperty$1.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; + + } else if (tagHandle === '!') { + state.tag = '!' + tagName; + + } else if (tagHandle === '!!') { + state.tag = 'tag:yaml.org,2002:' + tagName; + + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + } + + return true; + } + + function readAnchorProperty(state) { + var _position, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x26/* & */) return false; + + if (state.anchor !== null) { + throwError(state, 'duplication of an anchor property'); + } + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an anchor node must contain at least one character'); + } + + state.anchor = state.input.slice(_position, state.position); + return true; + } + + function readAlias(state) { + var _position, alias, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x2A/* * */) return false; + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an alias node must contain at least one character'); + } + + alias = state.input.slice(_position, state.position); + + if (!_hasOwnProperty$1.call(state.anchorMap, alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); + } + + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; + } + + function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, + allowBlockScalars, + allowBlockCollections, + indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } + + blockIndent = state.position - state.lineStart; + + if (indentStatus === 1) { + if (allowBlockCollections && + (readBlockSequence(state, blockIndent) || + readBlockMapping(state, blockIndent, flowIndent)) || + readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || + readSingleQuotedScalar(state, flowIndent) || + readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; + + } else if (readAlias(state)) { + hasContent = true; + + if (state.tag !== null || state.anchor !== null) { + throwError(state, 'alias node should not have any properties'); + } + + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; + + if (state.tag === null) { + state.tag = '?'; + } + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + } + } + + if (state.tag === null) { + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + + } else if (state.tag === '?') { + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only automatically assigned to plain scalars. + // + // We only need to check kind conformity in case user explicitly assigns '?' + // tag, for example like this: "! [0]" + // + if (state.result !== null && state.kind !== 'scalar') { + throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); + } + + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type = state.implicitTypes[typeIndex]; + + if (type.resolve(state.result)) { // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if (state.tag !== '!') { + if (_hasOwnProperty$1.call(state.typeMap[state.kind || 'fallback'], state.tag)) { + type = state.typeMap[state.kind || 'fallback'][state.tag]; + } else { + // looking for multi type + type = null; + typeList = state.typeMap.multi[state.kind || 'fallback']; + + for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { + if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { + type = typeList[typeIndex]; + break; + } + } + } + + if (!type) { + throwError(state, 'unknown tag !<' + state.tag + '>'); + } + + if (state.result !== null && type.kind !== state.kind) { + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + } + + if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + } else { + state.result = type.construct(state.result, state.tag); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } + + if (state.listener !== null) { + state.listener('close', state); + } + return state.tag !== null || state.anchor !== null || hasContent; + } + + function readDocument(state) { + var documentStart = state.position, + _position, + directiveName, + directiveArgs, + hasDirectives = false, + ch; + + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = Object.create(null); + state.anchorMap = Object.create(null); + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if (state.lineIndent > 0 || ch !== 0x25/* % */) { + break; + } + + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; + + if (directiveName.length < 1) { + throwError(state, 'directive name must not be less than one character in length'); + } + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && !is_EOL(ch)); + break; + } + + if (is_EOL(ch)) break; + + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveArgs.push(state.input.slice(_position, state.position)); + } + + if (ch !== 0) readLineBreak(state); + + if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); + } + } + + skipSeparationSpace(state, true, -1); + + if (state.lineIndent === 0 && + state.input.charCodeAt(state.position) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + + } else if (hasDirectives) { + throwError(state, 'directives end mark is expected'); + } + + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); + + if (state.checkLineBreaks && + PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + } + + state.documents.push(state.result); + + if (state.position === state.lineStart && testDocumentSeparator(state)) { + + if (state.input.charCodeAt(state.position) === 0x2E/* . */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + return; + } + + if (state.position < (state.length - 1)) { + throwError(state, 'end of the stream or a document separator is expected'); + } else { + return; + } + } + + + function loadDocuments(input, options) { + input = String(input); + options = options || {}; + + if (input.length !== 0) { + + // Add tailing `\n` if not exists + if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && + input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { + input += '\n'; + } + + // Strip BOM + if (input.charCodeAt(0) === 0xFEFF) { + input = input.slice(1); + } + } + + var state = new State$1(input, options); + + var nullpos = input.indexOf('\0'); + + if (nullpos !== -1) { + state.position = nullpos; + throwError(state, 'null byte is not allowed in input'); + } + + // Use 0 as string terminator. That significantly simplifies bounds check. + state.input += '\0'; + + while (state.input.charCodeAt(state.position) === 0x20/* Space */) { + state.lineIndent += 1; + state.position += 1; + } + + while (state.position < (state.length - 1)) { + readDocument(state); + } + + return state.documents; + } + + + function loadAll$1(input, iterator, options) { + if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { + options = iterator; + iterator = null; + } + + var documents = loadDocuments(input, options); + + if (typeof iterator !== 'function') { + return documents; + } + + for (var index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } + } + + + function load$1(input, options) { + var documents = loadDocuments(input, options); + + if (documents.length === 0) { + /*eslint-disable no-undefined*/ + return undefined; + } else if (documents.length === 1) { + return documents[0]; + } + throw new exception('expected a single document in the stream, but found more'); + } + + + var loadAll_1 = loadAll$1; + var load_1 = load$1; + + var loader = { + loadAll: loadAll_1, + load: load_1 + }; + + /*eslint-disable no-use-before-define*/ + + + + + + var _toString = Object.prototype.toString; + var _hasOwnProperty = Object.prototype.hasOwnProperty; + + var CHAR_BOM = 0xFEFF; + var CHAR_TAB = 0x09; /* Tab */ + var CHAR_LINE_FEED = 0x0A; /* LF */ + var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ + var CHAR_SPACE = 0x20; /* Space */ + var CHAR_EXCLAMATION = 0x21; /* ! */ + var CHAR_DOUBLE_QUOTE = 0x22; /* " */ + var CHAR_SHARP = 0x23; /* # */ + var CHAR_PERCENT = 0x25; /* % */ + var CHAR_AMPERSAND = 0x26; /* & */ + var CHAR_SINGLE_QUOTE = 0x27; /* ' */ + var CHAR_ASTERISK = 0x2A; /* * */ + var CHAR_COMMA = 0x2C; /* , */ + var CHAR_MINUS = 0x2D; /* - */ + var CHAR_COLON = 0x3A; /* : */ + var CHAR_EQUALS = 0x3D; /* = */ + var CHAR_GREATER_THAN = 0x3E; /* > */ + var CHAR_QUESTION = 0x3F; /* ? */ + var CHAR_COMMERCIAL_AT = 0x40; /* @ */ + var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ + var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ + var CHAR_GRAVE_ACCENT = 0x60; /* ` */ + var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ + var CHAR_VERTICAL_LINE = 0x7C; /* | */ + var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ + + var ESCAPE_SEQUENCES = {}; + + ESCAPE_SEQUENCES[0x00] = '\\0'; + ESCAPE_SEQUENCES[0x07] = '\\a'; + ESCAPE_SEQUENCES[0x08] = '\\b'; + ESCAPE_SEQUENCES[0x09] = '\\t'; + ESCAPE_SEQUENCES[0x0A] = '\\n'; + ESCAPE_SEQUENCES[0x0B] = '\\v'; + ESCAPE_SEQUENCES[0x0C] = '\\f'; + ESCAPE_SEQUENCES[0x0D] = '\\r'; + ESCAPE_SEQUENCES[0x1B] = '\\e'; + ESCAPE_SEQUENCES[0x22] = '\\"'; + ESCAPE_SEQUENCES[0x5C] = '\\\\'; + ESCAPE_SEQUENCES[0x85] = '\\N'; + ESCAPE_SEQUENCES[0xA0] = '\\_'; + ESCAPE_SEQUENCES[0x2028] = '\\L'; + ESCAPE_SEQUENCES[0x2029] = '\\P'; + + var DEPRECATED_BOOLEANS_SYNTAX = [ + 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', + 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' + ]; + + var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; + + function compileStyleMap(schema, map) { + var result, keys, index, length, tag, style, type; + + if (map === null) return {}; + + result = {}; + keys = Object.keys(map); + + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]); + + if (tag.slice(0, 2) === '!!') { + tag = 'tag:yaml.org,2002:' + tag.slice(2); + } + type = schema.compiledTypeMap['fallback'][tag]; + + if (type && _hasOwnProperty.call(type.styleAliases, style)) { + style = type.styleAliases[style]; + } + + result[tag] = style; + } + + return result; + } + + function encodeHex(character) { + var string, handle, length; + + string = character.toString(16).toUpperCase(); + + if (character <= 0xFF) { + handle = 'x'; + length = 2; + } else if (character <= 0xFFFF) { + handle = 'u'; + length = 4; + } else if (character <= 0xFFFFFFFF) { + handle = 'U'; + length = 8; + } else { + throw new exception('code point within a string may not be greater than 0xFFFFFFFF'); + } + + return '\\' + handle + common.repeat('0', length - string.length) + string; + } + + + var QUOTING_TYPE_SINGLE = 1, + QUOTING_TYPE_DOUBLE = 2; + + function State(options) { + this.schema = options['schema'] || _default; + this.indent = Math.max(1, (options['indent'] || 2)); + this.noArrayIndent = options['noArrayIndent'] || false; + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + this.condenseFlow = options['condenseFlow'] || false; + this.quotingType = options['quotingType'] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; + this.forceQuotes = options['forceQuotes'] || false; + this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null; + + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; + + this.tag = null; + this.result = ''; + + this.duplicates = []; + this.usedDuplicates = null; + } + + // Indents every line in a string. Empty lines (\n only) are not indented. + function indentString(string, spaces) { + var ind = common.repeat(' ', spaces), + position = 0, + next = -1, + result = '', + line, + length = string.length; + + while (position < length) { + next = string.indexOf('\n', position); + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } + + if (line.length && line !== '\n') result += ind; + + result += line; + } + + return result; + } + + function generateNextLine(state, level) { + return '\n' + common.repeat(' ', state.indent * level); + } + + function testImplicitResolving(state, str) { + var index, length, type; + + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type = state.implicitTypes[index]; + + if (type.resolve(str)) { + return true; + } + } + + return false; + } + + // [33] s-white ::= s-space | s-tab + function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; + } + + // Returns true if the character can be printed without escaping. + // From YAML 1.2: "any allowed characters known to be non-printable + // should also be escaped. [However,] This isn’t mandatory" + // Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. + function isPrintable(c) { + return (0x00020 <= c && c <= 0x00007E) + || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) + || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM) + || (0x10000 <= c && c <= 0x10FFFF); + } + + // [34] ns-char ::= nb-char - s-white + // [27] nb-char ::= c-printable - b-char - c-byte-order-mark + // [26] b-char ::= b-line-feed | b-carriage-return + // Including s-white (for some reason, examples doesn't match specs in this aspect) + // ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark + function isNsCharOrWhitespace(c) { + return isPrintable(c) + && c !== CHAR_BOM + // - b-char + && c !== CHAR_CARRIAGE_RETURN + && c !== CHAR_LINE_FEED; + } + + // [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out + // c = flow-in ⇒ ns-plain-safe-in + // c = block-key ⇒ ns-plain-safe-out + // c = flow-key ⇒ ns-plain-safe-in + // [128] ns-plain-safe-out ::= ns-char + // [129] ns-plain-safe-in ::= ns-char - c-flow-indicator + // [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” ) + // | ( /* An ns-char preceding */ “#” ) + // | ( “:” /* Followed by an ns-plain-safe(c) */ ) + function isPlainSafe(c, prev, inblock) { + var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); + var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); + return ( + // ns-plain-safe + inblock ? // c = flow-in + cIsNsCharOrWhitespace + : cIsNsCharOrWhitespace + // - c-flow-indicator + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + ) + // ns-plain-char + && c !== CHAR_SHARP // false on '#' + && !(prev === CHAR_COLON && !cIsNsChar) // false on ': ' + || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#' + || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]' + } + + // Simplified test for values allowed as the first character in plain style. + function isPlainSafeFirst(c) { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part + return isPrintable(c) && c !== CHAR_BOM + && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS + && c !== CHAR_QUESTION + && c !== CHAR_COLON + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” + && c !== CHAR_SHARP + && c !== CHAR_AMPERSAND + && c !== CHAR_ASTERISK + && c !== CHAR_EXCLAMATION + && c !== CHAR_VERTICAL_LINE + && c !== CHAR_EQUALS + && c !== CHAR_GREATER_THAN + && c !== CHAR_SINGLE_QUOTE + && c !== CHAR_DOUBLE_QUOTE + // | “%” | “@” | “`”) + && c !== CHAR_PERCENT + && c !== CHAR_COMMERCIAL_AT + && c !== CHAR_GRAVE_ACCENT; + } + + // Simplified test for values allowed as the last character in plain style. + function isPlainSafeLast(c) { + // just not whitespace or colon, it will be checked to be plain character later + return !isWhitespace(c) && c !== CHAR_COLON; + } + + // Same as 'string'.codePointAt(pos), but works in older browsers. + function codePointAt(string, pos) { + var first = string.charCodeAt(pos), second; + if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) { + second = string.charCodeAt(pos + 1); + if (second >= 0xDC00 && second <= 0xDFFF) { + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + } + } + return first; + } + + // Determines whether block indentation indicator is required. + function needIndentIndicator(string) { + var leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); + } + + var STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; + + // Determines which scalar styles are possible and returns the preferred style. + // lineWidth = -1 => no limit. + // Pre-conditions: str.length > 0. + // Post-conditions: + // STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. + // STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). + // STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). + function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, + testAmbiguousType, quotingType, forceQuotes, inblock) { + + var i; + var char = 0; + var prevChar = null; + var hasLineBreak = false; + var hasFoldableLine = false; // only checked if shouldTrackWidth + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; // count the first line correctly + var plain = isPlainSafeFirst(codePointAt(string, 0)) + && isPlainSafeLast(codePointAt(string, string.length - 1)); + + if (singleLineOnly || forceQuotes) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || + // Foldable line = too long, and not more-indented. + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' '); + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || (shouldTrackWidth && + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' ')); + } + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + if (plain && !forceQuotes && !testAmbiguousType(string)) { + return STYLE_PLAIN; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; + } + // Edge case: block indentation indicator can only have one digit. + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + if (!forceQuotes) { + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; + } + + // Note: line breaking/folding is implemented for only the folded style. + // NB. We drop the last trailing newline (if any) of a returned block scalar + // since the dumper adds its own newline. This always works: + // • No ending newline => unaffected; already using strip "-" chomping. + // • Ending newline => removed then restored. + // Importantly, this keeps the "+" chomp indicator from gaining an extra line. + function writeScalar(state, string, level, iskey, inblock) { + state.dump = (function () { + if (string.length === 0) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; + } + if (!state.noCompatMode) { + if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? ('"' + string + '"') : ("'" + string + "'"); + } + } + + var indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower bound. + // This behaves better than a constant minimum width which disallows narrower options, + // or an indent threshold which causes the width to suddenly increase. + var lineWidth = state.lineWidth === -1 + ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + + // Without knowing if keys are implicit/explicit, assume implicit for safety. + var singleLineOnly = iskey + // No block styles in flow mode. + || (state.flowLevel > -1 && level >= state.flowLevel); + function testAmbiguity(string) { + return testImplicitResolving(state, string); + } + + switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, + testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) { + + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + case STYLE_LITERAL: + return '|' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(string, indent)); + case STYLE_FOLDED: + return '>' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + case STYLE_DOUBLE: + return '"' + escapeString(string) + '"'; + default: + throw new exception('impossible error: invalid scalar style'); + } + }()); + } + + // Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. + function blockHeader(string, indentPerLevel) { + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; + + // note the special case: the string '\n' counts as a "trailing" empty line. + var clip = string[string.length - 1] === '\n'; + var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); + var chomp = keep ? '+' : (clip ? '' : '-'); + + return indentIndicator + chomp + '\n'; + } + + // (See the note for writeScalar.) + function dropEndingNewline(string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; + } + + // Note: a long line without a suitable break point will exceed the width limit. + // Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. + function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + var lineRe = /(\n+)([^\n]*)/g; + + // first line (possibly an empty line) + var result = (function () { + var nextLF = string.indexOf('\n'); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }()); + // If we haven't reached the first content line yet, don't add an extra \n. + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; + var moreIndented; + + // rest of the lines + var match; + while ((match = lineRe.exec(string))) { + var prefix = match[1], line = match[2]; + moreIndented = (line[0] === ' '); + result += prefix + + (!prevMoreIndented && !moreIndented && line !== '' + ? '\n' : '') + + foldLine(line, width); + prevMoreIndented = moreIndented; + } + + return result; + } + + // Greedy line breaking. + // Picks the longest line under the limit each time, + // otherwise settles for the shortest line over the limit. + // NB. More-indented lines *cannot* be folded, as that would add an extra \n. + function foldLine(line, width) { + if (line === '' || line[0] === ' ') return line; + + // Since a more-indented line adds a \n, breaks can't be followed by a space. + var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + var match; + // start is an inclusive index. end, curr, and next are exclusive. + var start = 0, end, curr = 0, next = 0; + var result = ''; + + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + while ((match = breakRe.exec(line))) { + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = (curr > start) ? curr : next; // derive end <= length-2 + result += '\n' + line.slice(start, end); + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 + } + curr = next; + } + + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + result += '\n'; + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + } else { + result += line.slice(start); + } + + return result.slice(1); // drop extra \n joiner + } + + // Escapes a double-quoted string. + function escapeString(string) { + var result = ''; + var char = 0; + var escapeSeq; + + for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + escapeSeq = ESCAPE_SEQUENCES[char]; + + if (!escapeSeq && isPrintable(char)) { + result += string[i]; + if (char >= 0x10000) result += string[i + 1]; + } else { + result += escapeSeq || encodeHex(char); + } + } + + return result; + } + + function writeFlowSequence(state, level, object) { + var _result = '', + _tag = state.tag, + index, + length, + value; + + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; + + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + + // Write only valid elements, put null instead of invalid elements. + if (writeNode(state, level, value, false, false) || + (typeof value === 'undefined' && + writeNode(state, level, null, false, false))) { + + if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : ''); + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = '[' + _result + ']'; + } + + function writeBlockSequence(state, level, object, compact) { + var _result = '', + _tag = state.tag, + index, + length, + value; + + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; + + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + + // Write only valid elements, put null instead of invalid elements. + if (writeNode(state, level + 1, value, true, true, false, true) || + (typeof value === 'undefined' && + writeNode(state, level + 1, null, true, true, false, true))) { + + if (!compact || _result !== '') { + _result += generateNextLine(state, level); + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += '-'; + } else { + _result += '- '; + } + + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = _result || '[]'; // Empty sequence if no valid values. + } + + function writeFlowMapping(state, level, object) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + pairBuffer; + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + + pairBuffer = ''; + if (_result !== '') pairBuffer += ', '; + + if (state.condenseFlow) pairBuffer += '"'; + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } + + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } + + if (state.dump.length > 1024) pairBuffer += '? '; + + pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); + + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = '{' + _result + '}'; + } + + function writeBlockMapping(state, level, object, compact) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + explicitPair, + pairBuffer; + + // Allow sorting keys so that the output file is deterministic + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === 'function') { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new exception('sortKeys must be a boolean or a function'); + } + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + + if (!compact || _result !== '') { + pairBuffer += generateNextLine(state, level); + } + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } + + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } + + explicitPair = (state.tag !== null && state.tag !== '?') || + (state.dump && state.dump.length > 1024); + + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += '?'; + } else { + pairBuffer += '? '; + } + } + + pairBuffer += state.dump; + + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } + + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ':'; + } else { + pairBuffer += ': '; + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = _result || '{}'; // Empty mapping if no valid pairs. + } + + function detectType(state, object, explicit) { + var _result, typeList, index, length, type, style; + + typeList = explicit ? state.explicitTypes : state.implicitTypes; + + for (index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; + + if ((type.instanceOf || type.predicate) && + (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && + (!type.predicate || type.predicate(object))) { + + if (explicit) { + if (type.multi && type.representName) { + state.tag = type.representName(object); + } else { + state.tag = type.tag; + } + } else { + state.tag = '?'; + } + + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + + if (_toString.call(type.represent) === '[object Function]') { + _result = type.represent(object, style); + } else if (_hasOwnProperty.call(type.represent, style)) { + _result = type.represent[style](object, style); + } else { + throw new exception('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); + } + + state.dump = _result; + } + + return true; + } + } + + return false; + } + + // Serializes `object` and writes it to global `result`. + // Returns true on success, or false on invalid object. + // + function writeNode(state, level, object, block, compact, iskey, isblockseq) { + state.tag = null; + state.dump = object; + + if (!detectType(state, object, false)) { + detectType(state, object, true); + } + + var type = _toString.call(state.dump); + var inblock = block; + var tagStr; + + if (block) { + block = (state.flowLevel < 0 || state.flowLevel > level); + } + + var objectOrArray = type === '[object Object]' || type === '[object Array]', + duplicateIndex, + duplicate; + + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } + + if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { + compact = false; + } + + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = '*ref_' + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + if (type === '[object Object]') { + if (block && (Object.keys(state.dump).length !== 0)) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object Array]') { + if (block && (state.dump.length !== 0)) { + if (state.noArrayIndent && !isblockseq && level > 0) { + writeBlockSequence(state, level - 1, state.dump, compact); + } else { + writeBlockSequence(state, level, state.dump, compact); + } + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowSequence(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object String]') { + if (state.tag !== '?') { + writeScalar(state, state.dump, level, iskey, inblock); + } + } else if (type === '[object Undefined]') { + return false; + } else { + if (state.skipInvalid) return false; + throw new exception('unacceptable kind of an object to dump ' + type); + } + + if (state.tag !== null && state.tag !== '?') { + // Need to encode all characters except those allowed by the spec: + // + // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */ + // [36] ns-hex-digit ::= ns-dec-digit + // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */ + // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */ + // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-” + // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#” + // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,” + // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]” + // + // Also need to encode '!' because it has special meaning (end of tag prefix). + // + tagStr = encodeURI( + state.tag[0] === '!' ? state.tag.slice(1) : state.tag + ).replace(/!/g, '%21'); + + if (state.tag[0] === '!') { + tagStr = '!' + tagStr; + } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') { + tagStr = '!!' + tagStr.slice(18); + } else { + tagStr = '!<' + tagStr + '>'; + } + + state.dump = tagStr + ' ' + state.dump; + } + } + + return true; + } + + function getDuplicateReferences(object, state) { + var objects = [], + duplicatesIndexes = [], + index, + length; + + inspectNode(object, objects, duplicatesIndexes); + + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + state.usedDuplicates = new Array(length); + } + + function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, + index, + length; + + if (object !== null && typeof object === 'object') { + index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); + + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + } + } + } + } + } + + function dump$1(input, options) { + options = options || {}; + + var state = new State(options); + + if (!state.noRefs) getDuplicateReferences(input, state); + + var value = input; + + if (state.replacer) { + value = state.replacer.call({ '': value }, '', value); + } + + if (writeNode(state, 0, value, true, true)) return state.dump + '\n'; + + return ''; + } + + var dump_1 = dump$1; + + var dumper = { + dump: dump_1 + }; + + function renamed(from, to) { + return function () { + throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' + + 'Use yaml.' + to + ' instead, which is now safe by default.'); + }; + } + + + var Type = type; + var Schema = schema; + var FAILSAFE_SCHEMA = failsafe; + var JSON_SCHEMA = json; + var CORE_SCHEMA = core; + var DEFAULT_SCHEMA = _default; + var load = loader.load; + var loadAll = loader.loadAll; + var dump = dumper.dump; + var YAMLException = exception; + + // Re-export all types in case user wants to create custom schema + var types = { + binary: binary, + float: float, + map: map, + null: _null, + pairs: pairs, + set: set, + timestamp: timestamp, + bool: bool, + int: int, + merge: merge, + omap: omap, + seq: seq, + str: str + }; + + // Removed functions from JS-YAML 3.0.x + var safeLoad = renamed('safeLoad', 'load'); + var safeLoadAll = renamed('safeLoadAll', 'loadAll'); + var safeDump = renamed('safeDump', 'dump'); + + var jsYaml = { + Type: Type, + Schema: Schema, + FAILSAFE_SCHEMA: FAILSAFE_SCHEMA, + JSON_SCHEMA: JSON_SCHEMA, + CORE_SCHEMA: CORE_SCHEMA, + DEFAULT_SCHEMA: DEFAULT_SCHEMA, + load: load, + loadAll: loadAll, + dump: dump, + YAMLException: YAMLException, + types: types, + safeLoad: safeLoad, + safeLoadAll: safeLoadAll, + safeDump: safeDump + }; + + exports.CORE_SCHEMA = CORE_SCHEMA; + exports.DEFAULT_SCHEMA = DEFAULT_SCHEMA; + exports.FAILSAFE_SCHEMA = FAILSAFE_SCHEMA; + exports.JSON_SCHEMA = JSON_SCHEMA; + exports.Schema = Schema; + exports.Type = Type; + exports.YAMLException = YAMLException; + exports.default = jsYaml; + exports.dump = dump; + exports.load = load; + exports.loadAll = loadAll; + exports.safeDump = safeDump; + exports.safeLoad = safeLoad; + exports.safeLoadAll = safeLoadAll; + exports.types = types; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); diff --git a/node_modules/js-yaml/dist/js-yaml.min.js b/node_modules/js-yaml/dist/js-yaml.min.js new file mode 100644 index 0000000..bdd8eef --- /dev/null +++ b/node_modules/js-yaml/dist/js-yaml.min.js @@ -0,0 +1,2 @@ +/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jsyaml={})}(this,(function(e){"use strict";function t(e){return null==e}var n={isNothing:t,isObject:function(e){return"object"==typeof e&&null!==e},toArray:function(e){return Array.isArray(e)?e:t(e)?[]:[e]},repeat:function(e,t){var n,i="";for(n=0;nl&&(t=i-l+(o=" ... ").length),n-i>l&&(n=i+l-(a=" ...").length),{str:o+e.slice(t,n).replace(/\t/g,"→")+a,pos:i-t+o.length}}function l(e,t){return n.repeat(" ",t-e.length)+e}var c=function(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),"number"!=typeof t.indent&&(t.indent=1),"number"!=typeof t.linesBefore&&(t.linesBefore=3),"number"!=typeof t.linesAfter&&(t.linesAfter=2);for(var i,r=/\r?\n|\r|\0/g,o=[0],c=[],s=-1;i=r.exec(e.buffer);)c.push(i.index),o.push(i.index+i[0].length),e.position<=i.index&&s<0&&(s=o.length-2);s<0&&(s=o.length-1);var u,p,f="",d=Math.min(e.line+t.linesAfter,c.length).toString().length,h=t.maxLength-(t.indent+d+3);for(u=1;u<=t.linesBefore&&!(s-u<0);u++)p=a(e.buffer,o[s-u],c[s-u],e.position-(o[s]-o[s-u]),h),f=n.repeat(" ",t.indent)+l((e.line-u+1).toString(),d)+" | "+p.str+"\n"+f;for(p=a(e.buffer,o[s],c[s],e.position,h),f+=n.repeat(" ",t.indent)+l((e.line+1).toString(),d)+" | "+p.str+"\n",f+=n.repeat("-",t.indent+d+3+p.pos)+"^\n",u=1;u<=t.linesAfter&&!(s+u>=c.length);u++)p=a(e.buffer,o[s+u],c[s+u],e.position-(o[s]-o[s+u]),h),f+=n.repeat(" ",t.indent)+l((e.line+u+1).toString(),d)+" | "+p.str+"\n";return f.replace(/\n$/,"")},s=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],u=["scalar","sequence","mapping"];var p=function(e,t){if(t=t||{},Object.keys(t).forEach((function(t){if(-1===s.indexOf(t))throw new o('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')})),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=function(e){var t={};return null!==e&&Object.keys(e).forEach((function(n){e[n].forEach((function(e){t[String(e)]=n}))})),t}(t.styleAliases||null),-1===u.indexOf(this.kind))throw new o('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')};function f(e,t){var n=[];return e[t].forEach((function(e){var t=n.length;n.forEach((function(n,i){n.tag===e.tag&&n.kind===e.kind&&n.multi===e.multi&&(t=i)})),n[t]=e})),n}function d(e){return this.extend(e)}d.prototype.extend=function(e){var t=[],n=[];if(e instanceof p)n.push(e);else if(Array.isArray(e))n=n.concat(e);else{if(!e||!Array.isArray(e.implicit)&&!Array.isArray(e.explicit))throw new o("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");e.implicit&&(t=t.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit))}t.forEach((function(e){if(!(e instanceof p))throw new o("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(e.loadKind&&"scalar"!==e.loadKind)throw new o("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(e.multi)throw new o("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),n.forEach((function(e){if(!(e instanceof p))throw new o("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var i=Object.create(d.prototype);return i.implicit=(this.implicit||[]).concat(t),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=f(i,"implicit"),i.compiledExplicit=f(i,"explicit"),i.compiledTypeMap=function(){var e,t,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function i(e){e.multi?(n.multi[e.kind].push(e),n.multi.fallback.push(e)):n[e.kind][e.tag]=n.fallback[e.tag]=e}for(e=0,t=arguments.length;e=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),x=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var I=/^[-+]?[0-9]+e/;var S=new p("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!x.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||n.isNegativeZero(e))},represent:function(e,t){var i;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(n.isNegativeZero(e))return"-0.0";return i=e.toString(10),I.test(i)?i.replace("e",".e"):i},defaultStyle:"lowercase"}),O=b.extend({implicit:[A,v,C,S]}),j=O,T=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),N=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");var F=new p("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(e){return null!==e&&(null!==T.exec(e)||null!==N.exec(e))},construct:function(e){var t,n,i,r,o,a,l,c,s=0,u=null;if(null===(t=T.exec(e))&&(t=N.exec(e)),null===t)throw new Error("Date resolve error");if(n=+t[1],i=+t[2]-1,r=+t[3],!t[4])return new Date(Date.UTC(n,i,r));if(o=+t[4],a=+t[5],l=+t[6],t[7]){for(s=t[7].slice(0,3);s.length<3;)s+="0";s=+s}return t[9]&&(u=6e4*(60*+t[10]+ +(t[11]||0)),"-"===t[9]&&(u=-u)),c=new Date(Date.UTC(n,i,r,o,a,l,s)),u&&c.setTime(c.getTime()-u),c},instanceOf:Date,represent:function(e){return e.toISOString()}});var E=new p("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}}),M="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";var L=new p("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,i=0,r=e.length,o=M;for(n=0;n64)){if(t<0)return!1;i+=6}return i%8==0},construct:function(e){var t,n,i=e.replace(/[\r\n=]/g,""),r=i.length,o=M,a=0,l=[];for(t=0;t>16&255),l.push(a>>8&255),l.push(255&a)),a=a<<6|o.indexOf(i.charAt(t));return 0===(n=r%4*6)?(l.push(a>>16&255),l.push(a>>8&255),l.push(255&a)):18===n?(l.push(a>>10&255),l.push(a>>2&255)):12===n&&l.push(a>>4&255),new Uint8Array(l)},predicate:function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)},represent:function(e){var t,n,i="",r=0,o=e.length,a=M;for(t=0;t>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]),r=(r<<8)+e[t];return 0===(n=o%3)?(i+=a[r>>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]):2===n?(i+=a[r>>10&63],i+=a[r>>4&63],i+=a[r<<2&63],i+=a[64]):1===n&&(i+=a[r>>2&63],i+=a[r<<4&63],i+=a[64],i+=a[64]),i}}),_=Object.prototype.hasOwnProperty,D=Object.prototype.toString;var U=new p("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,n,i,r,o,a=[],l=e;for(t=0,n=l.length;t>10),56320+(e-65536&1023))}for(var ie=new Array(256),re=new Array(256),oe=0;oe<256;oe++)ie[oe]=te(oe)?1:0,re[oe]=te(oe);function ae(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||K,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function le(e,t){var n={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return n.snippet=c(n),new o(t,n)}function ce(e,t){throw le(e,t)}function se(e,t){e.onWarning&&e.onWarning.call(null,le(e,t))}var ue={YAML:function(e,t,n){var i,r,o;null!==e.version&&ce(e,"duplication of %YAML directive"),1!==n.length&&ce(e,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&ce(e,"ill-formed argument of the YAML directive"),r=parseInt(i[1],10),o=parseInt(i[2],10),1!==r&&ce(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=o<2,1!==o&&2!==o&&se(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var i,r;2!==n.length&&ce(e,"TAG directive accepts exactly two arguments"),i=n[0],r=n[1],G.test(i)||ce(e,"ill-formed tag handle (first argument) of the TAG directive"),P.call(e.tagMap,i)&&ce(e,'there is a previously declared suffix for "'+i+'" tag handle'),V.test(r)||ce(e,"ill-formed tag prefix (second argument) of the TAG directive");try{r=decodeURIComponent(r)}catch(t){ce(e,"tag prefix is malformed: "+r)}e.tagMap[i]=r}};function pe(e,t,n,i){var r,o,a,l;if(t1&&(e.result+=n.repeat("\n",t-1))}function be(e,t){var n,i,r=e.tag,o=e.anchor,a=[],l=!1;if(-1!==e.firstTabInLine)return!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=a),i=e.input.charCodeAt(e.position);0!==i&&(-1!==e.firstTabInLine&&(e.position=e.firstTabInLine,ce(e,"tab characters must not be used in indentation")),45===i)&&z(e.input.charCodeAt(e.position+1));)if(l=!0,e.position++,ge(e,!0,-1)&&e.lineIndent<=t)a.push(null),i=e.input.charCodeAt(e.position);else if(n=e.line,we(e,t,3,!1,!0),a.push(e.result),ge(e,!0,-1),i=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&0!==i)ce(e,"bad indentation of a sequence entry");else if(e.lineIndentt?g=1:e.lineIndent===t?g=0:e.lineIndentt?g=1:e.lineIndent===t?g=0:e.lineIndentt)&&(y&&(a=e.line,l=e.lineStart,c=e.position),we(e,t,4,!0,r)&&(y?g=e.result:m=e.result),y||(de(e,f,d,h,g,m,a,l,c),h=g=m=null),ge(e,!0,-1),s=e.input.charCodeAt(e.position)),(e.line===o||e.lineIndent>t)&&0!==s)ce(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===o?ce(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):u?ce(e,"repeat of an indentation width identifier"):(p=t+o-1,u=!0)}if(Q(a)){do{a=e.input.charCodeAt(++e.position)}while(Q(a));if(35===a)do{a=e.input.charCodeAt(++e.position)}while(!J(a)&&0!==a)}for(;0!==a;){for(he(e),e.lineIndent=0,a=e.input.charCodeAt(e.position);(!u||e.lineIndentp&&(p=e.lineIndent),J(a))f++;else{if(e.lineIndent0){for(r=a,o=0;r>0;r--)(a=ee(l=e.input.charCodeAt(++e.position)))>=0?o=(o<<4)+a:ce(e,"expected hexadecimal character");e.result+=ne(o),e.position++}else ce(e,"unknown escape sequence");n=i=e.position}else J(l)?(pe(e,n,i,!0),ye(e,ge(e,!1,t)),n=i=e.position):e.position===e.lineStart&&me(e)?ce(e,"unexpected end of the document within a double quoted scalar"):(e.position++,i=e.position)}ce(e,"unexpected end of the stream within a double quoted scalar")}(e,d)?y=!0:!function(e){var t,n,i;if(42!==(i=e.input.charCodeAt(e.position)))return!1;for(i=e.input.charCodeAt(++e.position),t=e.position;0!==i&&!z(i)&&!X(i);)i=e.input.charCodeAt(++e.position);return e.position===t&&ce(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),P.call(e.anchorMap,n)||ce(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],ge(e,!0,-1),!0}(e)?function(e,t,n){var i,r,o,a,l,c,s,u,p=e.kind,f=e.result;if(z(u=e.input.charCodeAt(e.position))||X(u)||35===u||38===u||42===u||33===u||124===u||62===u||39===u||34===u||37===u||64===u||96===u)return!1;if((63===u||45===u)&&(z(i=e.input.charCodeAt(e.position+1))||n&&X(i)))return!1;for(e.kind="scalar",e.result="",r=o=e.position,a=!1;0!==u;){if(58===u){if(z(i=e.input.charCodeAt(e.position+1))||n&&X(i))break}else if(35===u){if(z(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&me(e)||n&&X(u))break;if(J(u)){if(l=e.line,c=e.lineStart,s=e.lineIndent,ge(e,!1,-1),e.lineIndent>=t){a=!0,u=e.input.charCodeAt(e.position);continue}e.position=o,e.line=l,e.lineStart=c,e.lineIndent=s;break}}a&&(pe(e,r,o,!1),ye(e,e.line-l),r=o=e.position,a=!1),Q(u)||(o=e.position+1),u=e.input.charCodeAt(++e.position)}return pe(e,r,o,!1),!!e.result||(e.kind=p,e.result=f,!1)}(e,d,1===i)&&(y=!0,null===e.tag&&(e.tag="?")):(y=!0,null===e.tag&&null===e.anchor||ce(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===g&&(y=c&&be(e,h))),null===e.tag)null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);else if("?"===e.tag){for(null!==e.result&&"scalar"!==e.kind&&ce(e,'unacceptable node kind for ! tag; it should be "scalar", not "'+e.kind+'"'),s=0,u=e.implicitTypes.length;s"),null!==e.result&&f.kind!==e.kind&&ce(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+f.kind+'", not "'+e.kind+'"'),f.resolve(e.result,e.tag)?(e.result=f.construct(e.result,e.tag),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):ce(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||y}function ke(e){var t,n,i,r,o=e.position,a=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);0!==(r=e.input.charCodeAt(e.position))&&(ge(e,!0,-1),r=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==r));){for(a=!0,r=e.input.charCodeAt(++e.position),t=e.position;0!==r&&!z(r);)r=e.input.charCodeAt(++e.position);for(i=[],(n=e.input.slice(t,e.position)).length<1&&ce(e,"directive name must not be less than one character in length");0!==r;){for(;Q(r);)r=e.input.charCodeAt(++e.position);if(35===r){do{r=e.input.charCodeAt(++e.position)}while(0!==r&&!J(r));break}if(J(r))break;for(t=e.position;0!==r&&!z(r);)r=e.input.charCodeAt(++e.position);i.push(e.input.slice(t,e.position))}0!==r&&he(e),P.call(ue,n)?ue[n](e,n,i):se(e,'unknown document directive "'+n+'"')}ge(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,ge(e,!0,-1)):a&&ce(e,"directives end mark is expected"),we(e,e.lineIndent-1,4,!1,!0),ge(e,!0,-1),e.checkLineBreaks&&H.test(e.input.slice(o,e.position))&&se(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&me(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,ge(e,!0,-1)):e.position=55296&&i<=56319&&t+1=56320&&n<=57343?1024*(i-55296)+n-56320+65536:i}function Re(e){return/^\n* /.test(e)}function Be(e,t,n,i,r,o,a,l){var c,s,u=0,p=null,f=!1,d=!1,h=-1!==i,g=-1,m=De(s=Ye(e,0))&&s!==Oe&&!_e(s)&&45!==s&&63!==s&&58!==s&&44!==s&&91!==s&&93!==s&&123!==s&&125!==s&&35!==s&&38!==s&&42!==s&&33!==s&&124!==s&&61!==s&&62!==s&&39!==s&&34!==s&&37!==s&&64!==s&&96!==s&&function(e){return!_e(e)&&58!==e}(Ye(e,e.length-1));if(t||a)for(c=0;c=65536?c+=2:c++){if(!De(u=Ye(e,c)))return 5;m=m&&qe(u,p,l),p=u}else{for(c=0;c=65536?c+=2:c++){if(10===(u=Ye(e,c)))f=!0,h&&(d=d||c-g-1>i&&" "!==e[g+1],g=c);else if(!De(u))return 5;m=m&&qe(u,p,l),p=u}d=d||h&&c-g-1>i&&" "!==e[g+1]}return f||d?n>9&&Re(e)?5:a?2===o?5:2:d?4:3:!m||a||r(e)?2===o?5:2:1}function Ke(e,t,n,i,r){e.dump=function(){if(0===t.length)return 2===e.quotingType?'""':"''";if(!e.noCompatMode&&(-1!==Te.indexOf(t)||Ne.test(t)))return 2===e.quotingType?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,n),l=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),c=i||e.flowLevel>-1&&n>=e.flowLevel;switch(Be(t,c,e.indent,l,(function(t){return function(e,t){var n,i;for(n=0,i=e.implicitTypes.length;n"+Pe(t,e.indent)+We(Me(function(e,t){var n,i,r=/(\n+)([^\n]*)/g,o=(l=e.indexOf("\n"),l=-1!==l?l:e.length,r.lastIndex=l,He(e.slice(0,l),t)),a="\n"===e[0]||" "===e[0];var l;for(;i=r.exec(e);){var c=i[1],s=i[2];n=" "===s[0],o+=c+(a||n||""===s?"":"\n")+He(s,t),a=n}return o}(t,l),a));case 5:return'"'+function(e){for(var t,n="",i=0,r=0;r=65536?r+=2:r++)i=Ye(e,r),!(t=je[i])&&De(i)?(n+=e[r],i>=65536&&(n+=e[r+1])):n+=t||Fe(i);return n}(t)+'"';default:throw new o("impossible error: invalid scalar style")}}()}function Pe(e,t){var n=Re(e)?String(t):"",i="\n"===e[e.length-1];return n+(i&&("\n"===e[e.length-2]||"\n"===e)?"+":i?"":"-")+"\n"}function We(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function He(e,t){if(""===e||" "===e[0])return e;for(var n,i,r=/ [^ ]/g,o=0,a=0,l=0,c="";n=r.exec(e);)(l=n.index)-o>t&&(i=a>o?a:l,c+="\n"+e.slice(o,i),o=i+1),a=l;return c+="\n",e.length-o>t&&a>o?c+=e.slice(o,a)+"\n"+e.slice(a+1):c+=e.slice(o),c.slice(1)}function $e(e,t,n,i){var r,o,a,l="",c=e.tag;for(r=0,o=n.length;r tag resolver accepts not "'+s+'" style');i=c.represent[s](t,s)}e.dump=i}return!0}return!1}function Ve(e,t,n,i,r,a,l){e.tag=null,e.dump=n,Ge(e,n,!1)||Ge(e,n,!0);var c,s=Ie.call(e.dump),u=i;i&&(i=e.flowLevel<0||e.flowLevel>t);var p,f,d="[object Object]"===s||"[object Array]"===s;if(d&&(f=-1!==(p=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||f||2!==e.indent&&t>0)&&(r=!1),f&&e.usedDuplicates[p])e.dump="*ref_"+p;else{if(d&&f&&!e.usedDuplicates[p]&&(e.usedDuplicates[p]=!0),"[object Object]"===s)i&&0!==Object.keys(e.dump).length?(!function(e,t,n,i){var r,a,l,c,s,u,p="",f=e.tag,d=Object.keys(n);if(!0===e.sortKeys)d.sort();else if("function"==typeof e.sortKeys)d.sort(e.sortKeys);else if(e.sortKeys)throw new o("sortKeys must be a boolean or a function");for(r=0,a=d.length;r1024)&&(e.dump&&10===e.dump.charCodeAt(0)?u+="?":u+="? "),u+=e.dump,s&&(u+=Le(e,t)),Ve(e,t+1,c,!0,s)&&(e.dump&&10===e.dump.charCodeAt(0)?u+=":":u+=": ",p+=u+=e.dump));e.tag=f,e.dump=p||"{}"}(e,t,e.dump,r),f&&(e.dump="&ref_"+p+e.dump)):(!function(e,t,n){var i,r,o,a,l,c="",s=e.tag,u=Object.keys(n);for(i=0,r=u.length;i1024&&(l+="? "),l+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Ve(e,t,a,!1,!1)&&(c+=l+=e.dump));e.tag=s,e.dump="{"+c+"}"}(e,t,e.dump),f&&(e.dump="&ref_"+p+" "+e.dump));else if("[object Array]"===s)i&&0!==e.dump.length?(e.noArrayIndent&&!l&&t>0?$e(e,t-1,e.dump,r):$e(e,t,e.dump,r),f&&(e.dump="&ref_"+p+e.dump)):(!function(e,t,n){var i,r,o,a="",l=e.tag;for(i=0,r=n.length;i",e.dump=c+" "+e.dump)}return!0}function Ze(e,t){var n,i,r=[],o=[];for(Je(e,r,o),n=0,i=o.length;n maxHalfLength) { + head = ' ... '; + lineStart = position - maxHalfLength + head.length; + } + + if (lineEnd - position > maxHalfLength) { + tail = ' ...'; + lineEnd = position + maxHalfLength - tail.length; + } + + return { + str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, '→') + tail, + pos: position - lineStart + head.length // relative position + }; +} + + +function padStart(string, max) { + return common.repeat(' ', max - string.length) + string; +} + + +function makeSnippet(mark, options) { + options = Object.create(options || null); + + if (!mark.buffer) return null; + + if (!options.maxLength) options.maxLength = 79; + if (typeof options.indent !== 'number') options.indent = 1; + if (typeof options.linesBefore !== 'number') options.linesBefore = 3; + if (typeof options.linesAfter !== 'number') options.linesAfter = 2; + + var re = /\r?\n|\r|\0/g; + var lineStarts = [ 0 ]; + var lineEnds = []; + var match; + var foundLineNo = -1; + + while ((match = re.exec(mark.buffer))) { + lineEnds.push(match.index); + lineStarts.push(match.index + match[0].length); + + if (mark.position <= match.index && foundLineNo < 0) { + foundLineNo = lineStarts.length - 2; + } + } + + if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; + + var result = '', i, line; + var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; + var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); + + for (i = 1; i <= options.linesBefore; i++) { + if (foundLineNo - i < 0) break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo - i], + lineEnds[foundLineNo - i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), + maxLineLength + ); + result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n' + result; + } + + line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); + result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n'; + result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\n'; + + for (i = 1; i <= options.linesAfter; i++) { + if (foundLineNo + i >= lineEnds.length) break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo + i], + lineEnds[foundLineNo + i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), + maxLineLength + ); + result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n'; + } + + return result.replace(/\n$/, ''); +} + + +var snippet = makeSnippet; + +var TYPE_CONSTRUCTOR_OPTIONS = [ + 'kind', + 'multi', + 'resolve', + 'construct', + 'instanceOf', + 'predicate', + 'represent', + 'representName', + 'defaultStyle', + 'styleAliases' +]; + +var YAML_NODE_KINDS = [ + 'scalar', + 'sequence', + 'mapping' +]; + +function compileStyleAliases(map) { + var result = {}; + + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); + } + + return result; +} + +function Type$1(tag, options) { + options = options || {}; + + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new exception('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + } + }); + + // TODO: Add tag format check. + this.options = options; // keep original options in case user wants to extend this type later + this.tag = tag; + this.kind = options['kind'] || null; + this.resolve = options['resolve'] || function () { return true; }; + this.construct = options['construct'] || function (data) { return data; }; + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.representName = options['representName'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.multi = options['multi'] || false; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new exception('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } +} + +var type = Type$1; + +/*eslint-disable max-len*/ + + + + + +function compileList(schema, name) { + var result = []; + + schema[name].forEach(function (currentType) { + var newIndex = result.length; + + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && + previousType.kind === currentType.kind && + previousType.multi === currentType.multi) { + + newIndex = previousIndex; + } + }); + + result[newIndex] = currentType; + }); + + return result; +} + + +function compileMap(/* lists... */) { + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {}, + multi: { + scalar: [], + sequence: [], + mapping: [], + fallback: [] + } + }, index, length; + + function collectType(type) { + if (type.multi) { + result.multi[type.kind].push(type); + result.multi['fallback'].push(type); + } else { + result[type.kind][type.tag] = result['fallback'][type.tag] = type; + } + } + + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + return result; +} + + +function Schema$1(definition) { + return this.extend(definition); +} + + +Schema$1.prototype.extend = function extend(definition) { + var implicit = []; + var explicit = []; + + if (definition instanceof type) { + // Schema.extend(type) + explicit.push(definition); + + } else if (Array.isArray(definition)) { + // Schema.extend([ type1, type2, ... ]) + explicit = explicit.concat(definition); + + } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { + // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] }) + if (definition.implicit) implicit = implicit.concat(definition.implicit); + if (definition.explicit) explicit = explicit.concat(definition.explicit); + + } else { + throw new exception('Schema.extend argument should be a Type, [ Type ], ' + + 'or a schema definition ({ implicit: [...], explicit: [...] })'); + } + + implicit.forEach(function (type$1) { + if (!(type$1 instanceof type)) { + throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + + if (type$1.loadKind && type$1.loadKind !== 'scalar') { + throw new exception('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + } + + if (type$1.multi) { + throw new exception('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.'); + } + }); + + explicit.forEach(function (type$1) { + if (!(type$1 instanceof type)) { + throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + }); + + var result = Object.create(Schema$1.prototype); + + result.implicit = (this.implicit || []).concat(implicit); + result.explicit = (this.explicit || []).concat(explicit); + + result.compiledImplicit = compileList(result, 'implicit'); + result.compiledExplicit = compileList(result, 'explicit'); + result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); + + return result; +}; + + +var schema = Schema$1; + +var str = new type('tag:yaml.org,2002:str', { + kind: 'scalar', + construct: function (data) { return data !== null ? data : ''; } +}); + +var seq = new type('tag:yaml.org,2002:seq', { + kind: 'sequence', + construct: function (data) { return data !== null ? data : []; } +}); + +var map = new type('tag:yaml.org,2002:map', { + kind: 'mapping', + construct: function (data) { return data !== null ? data : {}; } +}); + +var failsafe = new schema({ + explicit: [ + str, + seq, + map + ] +}); + +function resolveYamlNull(data) { + if (data === null) return true; + + var max = data.length; + + return (max === 1 && data === '~') || + (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); +} + +function constructYamlNull() { + return null; +} + +function isNull(object) { + return object === null; +} + +var _null = new type('tag:yaml.org,2002:null', { + kind: 'scalar', + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function () { return '~'; }, + lowercase: function () { return 'null'; }, + uppercase: function () { return 'NULL'; }, + camelcase: function () { return 'Null'; }, + empty: function () { return ''; } + }, + defaultStyle: 'lowercase' +}); + +function resolveYamlBoolean(data) { + if (data === null) return false; + + var max = data.length; + + return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || + (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); +} + +function constructYamlBoolean(data) { + return data === 'true' || + data === 'True' || + data === 'TRUE'; +} + +function isBoolean(object) { + return Object.prototype.toString.call(object) === '[object Boolean]'; +} + +var bool = new type('tag:yaml.org,2002:bool', { + kind: 'scalar', + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function (object) { return object ? 'true' : 'false'; }, + uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, + camelcase: function (object) { return object ? 'True' : 'False'; } + }, + defaultStyle: 'lowercase' +}); + +function isHexCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || + ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || + ((0x61/* a */ <= c) && (c <= 0x66/* f */)); +} + +function isOctCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); +} + +function isDecCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); +} + +function resolveYamlInteger(data) { + if (data === null) return false; + + var max = data.length, + index = 0, + hasDigits = false, + ch; + + if (!max) return false; + + ch = data[index]; + + // sign + if (ch === '-' || ch === '+') { + ch = data[++index]; + } + + if (ch === '0') { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; + + // base 2, base 8, base 16 + + if (ch === 'b') { + // base 2 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch !== '0' && ch !== '1') return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + + + if (ch === 'x') { + // base 16 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + + + if (ch === 'o') { + // base 8 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + } + + // base 10 (except 0) + + // value should not start with `_`; + if (ch === '_') return false; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } + + // Should have digits and should not end with `_` + if (!hasDigits || ch === '_') return false; + + return true; +} + +function constructYamlInteger(data) { + var value = data, sign = 1, ch; + + if (value.indexOf('_') !== -1) { + value = value.replace(/_/g, ''); + } + + ch = value[0]; + + if (ch === '-' || ch === '+') { + if (ch === '-') sign = -1; + value = value.slice(1); + ch = value[0]; + } + + if (value === '0') return 0; + + if (ch === '0') { + if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); + if (value[1] === 'x') return sign * parseInt(value.slice(2), 16); + if (value[1] === 'o') return sign * parseInt(value.slice(2), 8); + } + + return sign * parseInt(value, 10); +} + +function isInteger(object) { + return (Object.prototype.toString.call(object)) === '[object Number]' && + (object % 1 === 0 && !common.isNegativeZero(object)); +} + +var int = new type('tag:yaml.org,2002:int', { + kind: 'scalar', + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, + octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); }, + decimal: function (obj) { return obj.toString(10); }, + /* eslint-disable max-len */ + hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } + }, + defaultStyle: 'decimal', + styleAliases: { + binary: [ 2, 'bin' ], + octal: [ 8, 'oct' ], + decimal: [ 10, 'dec' ], + hexadecimal: [ 16, 'hex' ] + } +}); + +var YAML_FLOAT_PATTERN = new RegExp( + // 2.5e4, 2.5 and integers + '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + + // .2e4, .2 + // special case, seems not from spec + '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + + // .inf + '|[-+]?\\.(?:inf|Inf|INF)' + + // .nan + '|\\.(?:nan|NaN|NAN))$'); + +function resolveYamlFloat(data) { + if (data === null) return false; + + if (!YAML_FLOAT_PATTERN.test(data) || + // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === '_') { + return false; + } + + return true; +} + +function constructYamlFloat(data) { + var value, sign; + + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; + + if ('+-'.indexOf(value[0]) >= 0) { + value = value.slice(1); + } + + if (value === '.inf') { + return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + + } else if (value === '.nan') { + return NaN; + } + return sign * parseFloat(value, 10); +} + + +var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + +function representYamlFloat(object, style) { + var res; + + if (isNaN(object)) { + switch (style) { + case 'lowercase': return '.nan'; + case 'uppercase': return '.NAN'; + case 'camelcase': return '.NaN'; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '.inf'; + case 'uppercase': return '.INF'; + case 'camelcase': return '.Inf'; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '-.inf'; + case 'uppercase': return '-.INF'; + case 'camelcase': return '-.Inf'; + } + } else if (common.isNegativeZero(object)) { + return '-0.0'; + } + + res = object.toString(10); + + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack + + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; +} + +function isFloat(object) { + return (Object.prototype.toString.call(object) === '[object Number]') && + (object % 1 !== 0 || common.isNegativeZero(object)); +} + +var float = new type('tag:yaml.org,2002:float', { + kind: 'scalar', + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: 'lowercase' +}); + +var json = failsafe.extend({ + implicit: [ + _null, + bool, + int, + float + ] +}); + +var core = json; + +var YAML_DATE_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$'); // [3] day + +var YAML_TIMESTAMP_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour + '(?::([0-9][0-9]))?))?$'); // [11] tz_minute + +function resolveYamlTimestamp(data) { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; +} + +function constructYamlTimestamp(data) { + var match, year, month, day, hour, minute, second, fraction = 0, + delta = null, tz_hour, tz_minute, date; + + match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + + if (match === null) throw new Error('Date resolve error'); + + // match: [1] year [2] month [3] day + + year = +(match[1]); + month = +(match[2]) - 1; // JS month starts with 0 + day = +(match[3]); + + if (!match[4]) { // no hour + return new Date(Date.UTC(year, month, day)); + } + + // match: [4] hour [5] minute [6] second [7] fraction + + hour = +(match[4]); + minute = +(match[5]); + second = +(match[6]); + + if (match[7]) { + fraction = match[7].slice(0, 3); + while (fraction.length < 3) { // milli-seconds + fraction += '0'; + } + fraction = +fraction; + } + + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + if (match[9]) { + tz_hour = +(match[10]); + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + if (match[9] === '-') delta = -delta; + } + + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + + if (delta) date.setTime(date.getTime() - delta); + + return date; +} + +function representYamlTimestamp(object /*, style*/) { + return object.toISOString(); +} + +var timestamp = new type('tag:yaml.org,2002:timestamp', { + kind: 'scalar', + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp +}); + +function resolveYamlMerge(data) { + return data === '<<' || data === null; +} + +var merge = new type('tag:yaml.org,2002:merge', { + kind: 'scalar', + resolve: resolveYamlMerge +}); + +/*eslint-disable no-bitwise*/ + + + + + +// [ 64, 65, 66 ] -> [ padding, CR, LF ] +var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; + + +function resolveYamlBinary(data) { + if (data === null) return false; + + var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; + + // Convert one by one. + for (idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); + + // Skip CR/LF + if (code > 64) continue; + + // Fail on illegal characters + if (code < 0) return false; + + bitlen += 6; + } + + // If there are any bits left, source was corrupted + return (bitlen % 8) === 0; +} + +function constructYamlBinary(data) { + var idx, tailbits, + input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan + max = input.length, + map = BASE64_MAP, + bits = 0, + result = []; + + // Collect by 6*4 bits (3 bytes) + + for (idx = 0; idx < max; idx++) { + if ((idx % 4 === 0) && idx) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } + + bits = (bits << 6) | map.indexOf(input.charAt(idx)); + } + + // Dump tail + + tailbits = (max % 4) * 6; + + if (tailbits === 0) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } else if (tailbits === 18) { + result.push((bits >> 10) & 0xFF); + result.push((bits >> 2) & 0xFF); + } else if (tailbits === 12) { + result.push((bits >> 4) & 0xFF); + } + + return new Uint8Array(result); +} + +function representYamlBinary(object /*, style*/) { + var result = '', bits = 0, idx, tail, + max = object.length, + map = BASE64_MAP; + + // Convert every three bytes to 4 ASCII characters. + + for (idx = 0; idx < max; idx++) { + if ((idx % 3 === 0) && idx) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } + + bits = (bits << 8) + object[idx]; + } + + // Dump tail + + tail = max % 3; + + if (tail === 0) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } else if (tail === 2) { + result += map[(bits >> 10) & 0x3F]; + result += map[(bits >> 4) & 0x3F]; + result += map[(bits << 2) & 0x3F]; + result += map[64]; + } else if (tail === 1) { + result += map[(bits >> 2) & 0x3F]; + result += map[(bits << 4) & 0x3F]; + result += map[64]; + result += map[64]; + } + + return result; +} + +function isBinary(obj) { + return Object.prototype.toString.call(obj) === '[object Uint8Array]'; +} + +var binary = new type('tag:yaml.org,2002:binary', { + kind: 'scalar', + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary +}); + +var _hasOwnProperty$3 = Object.prototype.hasOwnProperty; +var _toString$2 = Object.prototype.toString; + +function resolveYamlOmap(data) { + if (data === null) return true; + + var objectKeys = [], index, length, pair, pairKey, pairHasKey, + object = data; + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; + + if (_toString$2.call(pair) !== '[object Object]') return false; + + for (pairKey in pair) { + if (_hasOwnProperty$3.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true; + else return false; + } + } + + if (!pairHasKey) return false; + + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); + else return false; + } + + return true; +} + +function constructYamlOmap(data) { + return data !== null ? data : []; +} + +var omap = new type('tag:yaml.org,2002:omap', { + kind: 'sequence', + resolve: resolveYamlOmap, + construct: constructYamlOmap +}); + +var _toString$1 = Object.prototype.toString; + +function resolveYamlPairs(data) { + if (data === null) return true; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + if (_toString$1.call(pair) !== '[object Object]') return false; + + keys = Object.keys(pair); + + if (keys.length !== 1) return false; + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return true; +} + +function constructYamlPairs(data) { + if (data === null) return []; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + keys = Object.keys(pair); + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return result; +} + +var pairs = new type('tag:yaml.org,2002:pairs', { + kind: 'sequence', + resolve: resolveYamlPairs, + construct: constructYamlPairs +}); + +var _hasOwnProperty$2 = Object.prototype.hasOwnProperty; + +function resolveYamlSet(data) { + if (data === null) return true; + + var key, object = data; + + for (key in object) { + if (_hasOwnProperty$2.call(object, key)) { + if (object[key] !== null) return false; + } + } + + return true; +} + +function constructYamlSet(data) { + return data !== null ? data : {}; +} + +var set = new type('tag:yaml.org,2002:set', { + kind: 'mapping', + resolve: resolveYamlSet, + construct: constructYamlSet +}); + +var _default = core.extend({ + implicit: [ + timestamp, + merge + ], + explicit: [ + binary, + omap, + pairs, + set + ] +}); + +/*eslint-disable max-len,no-use-before-define*/ + + + + + + + +var _hasOwnProperty$1 = Object.prototype.hasOwnProperty; + + +var CONTEXT_FLOW_IN = 1; +var CONTEXT_FLOW_OUT = 2; +var CONTEXT_BLOCK_IN = 3; +var CONTEXT_BLOCK_OUT = 4; + + +var CHOMPING_CLIP = 1; +var CHOMPING_STRIP = 2; +var CHOMPING_KEEP = 3; + + +var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + + +function _class(obj) { return Object.prototype.toString.call(obj); } + +function is_EOL(c) { + return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); +} + +function is_WHITE_SPACE(c) { + return (c === 0x09/* Tab */) || (c === 0x20/* Space */); +} + +function is_WS_OR_EOL(c) { + return (c === 0x09/* Tab */) || + (c === 0x20/* Space */) || + (c === 0x0A/* LF */) || + (c === 0x0D/* CR */); +} + +function is_FLOW_INDICATOR(c) { + return c === 0x2C/* , */ || + c === 0x5B/* [ */ || + c === 0x5D/* ] */ || + c === 0x7B/* { */ || + c === 0x7D/* } */; +} + +function fromHexCode(c) { + var lc; + + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + /*eslint-disable no-bitwise*/ + lc = c | 0x20; + + if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { + return lc - 0x61 + 10; + } + + return -1; +} + +function escapedHexLen(c) { + if (c === 0x78/* x */) { return 2; } + if (c === 0x75/* u */) { return 4; } + if (c === 0x55/* U */) { return 8; } + return 0; +} + +function fromDecimalCode(c) { + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + return -1; +} + +function simpleEscapeSequence(c) { + /* eslint-disable indent */ + return (c === 0x30/* 0 */) ? '\x00' : + (c === 0x61/* a */) ? '\x07' : + (c === 0x62/* b */) ? '\x08' : + (c === 0x74/* t */) ? '\x09' : + (c === 0x09/* Tab */) ? '\x09' : + (c === 0x6E/* n */) ? '\x0A' : + (c === 0x76/* v */) ? '\x0B' : + (c === 0x66/* f */) ? '\x0C' : + (c === 0x72/* r */) ? '\x0D' : + (c === 0x65/* e */) ? '\x1B' : + (c === 0x20/* Space */) ? ' ' : + (c === 0x22/* " */) ? '\x22' : + (c === 0x2F/* / */) ? '/' : + (c === 0x5C/* \ */) ? '\x5C' : + (c === 0x4E/* N */) ? '\x85' : + (c === 0x5F/* _ */) ? '\xA0' : + (c === 0x4C/* L */) ? '\u2028' : + (c === 0x50/* P */) ? '\u2029' : ''; +} + +function charFromCodepoint(c) { + if (c <= 0xFFFF) { + return String.fromCharCode(c); + } + // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode( + ((c - 0x010000) >> 10) + 0xD800, + ((c - 0x010000) & 0x03FF) + 0xDC00 + ); +} + +var simpleEscapeCheck = new Array(256); // integer, for fast access +var simpleEscapeMap = new Array(256); +for (var i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} + + +function State$1(input, options) { + this.input = input; + + this.filename = options['filename'] || null; + this.schema = options['schema'] || _default; + this.onWarning = options['onWarning'] || null; + // (Hidden) Remove? makes the loader to expect YAML 1.1 documents + // if such documents have no explicit %YAML directive + this.legacy = options['legacy'] || false; + + this.json = options['json'] || false; + this.listener = options['listener'] || null; + + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; + + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; + + // position of first leading tab in the current line, + // used to make sure there are no tabs in the indentation + this.firstTabInLine = -1; + + this.documents = []; + + /* + this.version; + this.checkLineBreaks; + this.tagMap; + this.anchorMap; + this.tag; + this.anchor; + this.kind; + this.result;*/ + +} + + +function generateError(state, message) { + var mark = { + name: state.filename, + buffer: state.input.slice(0, -1), // omit trailing \0 + position: state.position, + line: state.line, + column: state.position - state.lineStart + }; + + mark.snippet = snippet(mark); + + return new exception(message, mark); +} + +function throwError(state, message) { + throw generateError(state, message); +} + +function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); + } +} + + +var directiveHandlers = { + + YAML: function handleYamlDirective(state, name, args) { + + var match, major, minor; + + if (state.version !== null) { + throwError(state, 'duplication of %YAML directive'); + } + + if (args.length !== 1) { + throwError(state, 'YAML directive accepts exactly one argument'); + } + + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + + if (match === null) { + throwError(state, 'ill-formed argument of the YAML directive'); + } + + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); + + if (major !== 1) { + throwError(state, 'unacceptable YAML version of the document'); + } + + state.version = args[0]; + state.checkLineBreaks = (minor < 2); + + if (minor !== 1 && minor !== 2) { + throwWarning(state, 'unsupported YAML version of the document'); + } + }, + + TAG: function handleTagDirective(state, name, args) { + + var handle, prefix; + + if (args.length !== 2) { + throwError(state, 'TAG directive accepts exactly two arguments'); + } + + handle = args[0]; + prefix = args[1]; + + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + } + + if (_hasOwnProperty$1.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + } + + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + } + + try { + prefix = decodeURIComponent(prefix); + } catch (err) { + throwError(state, 'tag prefix is malformed: ' + prefix); + } + + state.tagMap[handle] = prefix; + } +}; + + +function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; + + if (start < end) { + _result = state.input.slice(start, end); + + if (checkJson) { + for (_position = 0, _length = _result.length; _position < _length; _position += 1) { + _character = _result.charCodeAt(_position); + if (!(_character === 0x09 || + (0x20 <= _character && _character <= 0x10FFFF))) { + throwError(state, 'expected valid JSON character'); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, 'the stream contains non-printable characters'); + } + + state.result += _result; + } +} + +function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; + + if (!common.isObject(source)) { + throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); + } + + sourceKeys = Object.keys(source); + + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; + + if (!_hasOwnProperty$1.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; + } + } +} + +function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, + startLine, startLineStart, startPos) { + + var index, quantity; + + // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); + + for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { + if (Array.isArray(keyNode[index])) { + throwError(state, 'nested arrays are not supported inside keys'); + } + + if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { + keyNode[index] = '[object Object]'; + } + } + } + + // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { + keyNode = '[object Object]'; + } + + + keyNode = String(keyNode); + + if (_result === null) { + _result = {}; + } + + if (keyTag === 'tag:yaml.org,2002:merge') { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, _result, valueNode, overridableKeys); + } + } else { + if (!state.json && + !_hasOwnProperty$1.call(overridableKeys, keyNode) && + _hasOwnProperty$1.call(_result, keyNode)) { + state.line = startLine || state.line; + state.lineStart = startLineStart || state.lineStart; + state.position = startPos || state.position; + throwError(state, 'duplicated mapping key'); + } + + // used for this specific key only because Object.defineProperty is slow + if (keyNode === '__proto__') { + Object.defineProperty(_result, keyNode, { + configurable: true, + enumerable: true, + writable: true, + value: valueNode + }); + } else { + _result[keyNode] = valueNode; + } + delete overridableKeys[keyNode]; + } + + return _result; +} + +function readLineBreak(state) { + var ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x0A/* LF */) { + state.position++; + } else if (ch === 0x0D/* CR */) { + state.position++; + if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { + state.position++; + } + } else { + throwError(state, 'a line break is expected'); + } + + state.line += 1; + state.lineStart = state.position; + state.firstTabInLine = -1; +} + +function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) { + state.firstTabInLine = state.position; + } + ch = state.input.charCodeAt(++state.position); + } + + if (allowComments && ch === 0x23/* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); + } + + if (is_EOL(ch)) { + readLineBreak(state); + + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; + + while (ch === 0x20/* Space */) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } + + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, 'deficient indentation'); + } + + return lineBreaks; +} + +function testDocumentSeparator(state) { + var _position = state.position, + ch; + + ch = state.input.charCodeAt(_position); + + // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && + ch === state.input.charCodeAt(_position + 1) && + ch === state.input.charCodeAt(_position + 2)) { + + _position += 3; + + ch = state.input.charCodeAt(_position); + + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; + } + } + + return false; +} + +function writeFoldedLines(state, count) { + if (count === 1) { + state.result += ' '; + } else if (count > 1) { + state.result += common.repeat('\n', count - 1); + } +} + + +function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, + following, + captureStart, + captureEnd, + hasPendingContent, + _line, + _lineStart, + _lineIndent, + _kind = state.kind, + _result = state.result, + ch; + + ch = state.input.charCodeAt(state.position); + + if (is_WS_OR_EOL(ch) || + is_FLOW_INDICATOR(ch) || + ch === 0x23/* # */ || + ch === 0x26/* & */ || + ch === 0x2A/* * */ || + ch === 0x21/* ! */ || + ch === 0x7C/* | */ || + ch === 0x3E/* > */ || + ch === 0x27/* ' */ || + ch === 0x22/* " */ || + ch === 0x25/* % */ || + ch === 0x40/* @ */ || + ch === 0x60/* ` */) { + return false; + } + + if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; + } + } + + state.kind = 'scalar'; + state.result = ''; + captureStart = captureEnd = state.position; + hasPendingContent = false; + + while (ch !== 0) { + if (ch === 0x3A/* : */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } + + } else if (ch === 0x23/* # */) { + preceding = state.input.charCodeAt(state.position - 1); + + if (is_WS_OR_EOL(preceding)) { + break; + } + + } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || + withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; + + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; + } + } + + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } + + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; + } + + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, captureEnd, false); + + if (state.result) { + return true; + } + + state.kind = _kind; + state.result = _result; + return false; +} + +function readSingleQuotedScalar(state, nodeIndent) { + var ch, + captureStart, captureEnd; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x27/* ' */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27/* ' */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x27/* ' */) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a single quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a single quoted scalar'); +} + +function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, + captureEnd, + hexLength, + hexResult, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x22/* " */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22/* " */) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; + + } else if (ch === 0x5C/* \ */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); + + // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; + + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + + } else { + throwError(state, 'expected hexadecimal character'); + } + } + + state.result += charFromCodepoint(hexResult); + + state.position++; + + } else { + throwError(state, 'unknown escape sequence'); + } + + captureStart = captureEnd = state.position; + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a double quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a double quoted scalar'); +} + +function readFlowCollection(state, nodeIndent) { + var readNext = true, + _line, + _lineStart, + _pos, + _tag = state.tag, + _result, + _anchor = state.anchor, + following, + terminator, + isPair, + isExplicitPair, + isMapping, + overridableKeys = Object.create(null), + keyNode, + keyTag, + valueNode, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x5B/* [ */) { + terminator = 0x5D;/* ] */ + isMapping = false; + _result = []; + } else if (ch === 0x7B/* { */) { + terminator = 0x7D;/* } */ + isMapping = true; + _result = {}; + } else { + return false; + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(++state.position); + + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? 'mapping' : 'sequence'; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, 'missed comma between flow collection entries'); + } else if (ch === 0x2C/* , */) { + // "flow collection entries can never be completely empty", as per YAML 1.2, section 7.4 + throwError(state, "expected the node content, but found ','"); + } + + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + + if (ch === 0x3F/* ? */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } + + _line = state.line; // Save the current line. + _lineStart = state.lineStart; + _pos = state.position; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } + + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); + } else { + _result.push(keyNode); + } + + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x2C/* , */) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } + } + + throwError(state, 'unexpected end of the stream within a flow collection'); +} + +function readBlockScalar(state, nodeIndent) { + var captureStart, + folding, + chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x7C/* | */) { + folding = false; + } else if (ch === 0x3E/* > */) { + folding = true; + } else { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { + if (CHOMPING_CLIP === chomping) { + chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); + } + + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throwError(state, 'repeat of an indentation width identifier'); + } + + } else { + break; + } + } + + if (is_WHITE_SPACE(ch)) { + do { ch = state.input.charCodeAt(++state.position); } + while (is_WHITE_SPACE(ch)); + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (!is_EOL(ch) && (ch !== 0)); + } + } + + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; + + ch = state.input.charCodeAt(state.position); + + while ((!detectedIndent || state.lineIndent < textIndent) && + (ch === 0x20/* Space */)) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } + + if (is_EOL(ch)) { + emptyLines++; + continue; + } + + // End of the scalar. + if (state.lineIndent < textIndent) { + + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { // i.e. only if the scalar is not empty. + state.result += '\n'; + } + } + + // Break this `while` cycle and go to the funciton's epilogue. + break; + } + + // Folded style: use fancy rules to handle line breaks. + if (folding) { + + // Lines starting with white space characters (more-indented lines) are not folded. + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat('\n', emptyLines + 1); + + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { // i.e. only if we have already read some scalar content. + state.result += ' '; + } + + // Several line breaks - perceive as different lines. + } else { + state.result += common.repeat('\n', emptyLines); + } + + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } + + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; + + while (!is_EOL(ch) && (ch !== 0)) { + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, state.position, false); + } + + return true; +} + +function readBlockSequence(state, nodeIndent) { + var _line, + _tag = state.tag, + _anchor = state.anchor, + _result = [], + following, + detected = false, + ch; + + // there is a leading tab before this token, so it can't be a block sequence/mapping; + // it can still be flow sequence/mapping or a scalar + if (state.firstTabInLine !== -1) return false; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, 'tab characters must not be used in indentation'); + } + + if (ch !== 0x2D/* - */) { + break; + } + + following = state.input.charCodeAt(state.position + 1); + + if (!is_WS_OR_EOL(following)) { + break; + } + + detected = true; + state.position++; + + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + ch = state.input.charCodeAt(state.position); + continue; + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state.result); + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a sequence entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'sequence'; + state.result = _result; + return true; + } + return false; +} + +function readBlockMapping(state, nodeIndent, flowIndent) { + var following, + allowCompact, + _line, + _keyLine, + _keyLineStart, + _keyPos, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, + overridableKeys = Object.create(null), + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch; + + // there is a leading tab before this token, so it can't be a block sequence/mapping; + // it can still be flow sequence/mapping or a scalar + if (state.firstTabInLine !== -1) return false; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (!atExplicitKey && state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, 'tab characters must not be used in indentation'); + } + + following = state.input.charCodeAt(state.position + 1); + _line = state.line; // Save the current line. + + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { + + if (ch === 0x3F/* ? */) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = true; + allowCompact = true; + + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + + } else { + throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); + } + + state.position += 1; + ch = following; + + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + + if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + // Neither implicit nor explicit notation. + // Reading is done. Go to the epilogue. + break; + } + + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); + + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x3A/* : */) { + ch = state.input.charCodeAt(++state.position); + + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } + + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + + } else if (detected) { + throwError(state, 'can not read an implicit mapping pair; a colon is missed'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + + } else if (detected) { + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + } + + // + // Common reading code for both explicit and implicit notations. + // + if (state.line === _line || state.lineIndent > nodeIndent) { + if (atExplicitKey) { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + } + + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } + + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a mapping entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + // + // Epilogue. + // + + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + } + + // Expose the resulting mapping. + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'mapping'; + state.result = _result; + } + + return detected; +} + +function readTagProperty(state) { + var _position, + isVerbatim = false, + isNamed = false, + tagHandle, + tagName, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x21/* ! */) return false; + + if (state.tag !== null) { + throwError(state, 'duplication of a tag property'); + } + + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x3C/* < */) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + + } else if (ch === 0x21/* ! */) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); + + } else { + tagHandle = '!'; + } + + _position = state.position; + + if (isVerbatim) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && ch !== 0x3E/* > */); + + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, 'unexpected end of the stream within a verbatim tag'); + } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + + if (ch === 0x21/* ! */) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); + + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } + + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); + } + } + + ch = state.input.charCodeAt(++state.position); + } + + tagName = state.input.slice(_position, state.position); + + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, 'tag suffix cannot contain flow indicator characters'); + } + } + + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, 'tag name cannot contain such characters: ' + tagName); + } + + try { + tagName = decodeURIComponent(tagName); + } catch (err) { + throwError(state, 'tag name is malformed: ' + tagName); + } + + if (isVerbatim) { + state.tag = tagName; + + } else if (_hasOwnProperty$1.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; + + } else if (tagHandle === '!') { + state.tag = '!' + tagName; + + } else if (tagHandle === '!!') { + state.tag = 'tag:yaml.org,2002:' + tagName; + + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + } + + return true; +} + +function readAnchorProperty(state) { + var _position, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x26/* & */) return false; + + if (state.anchor !== null) { + throwError(state, 'duplication of an anchor property'); + } + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an anchor node must contain at least one character'); + } + + state.anchor = state.input.slice(_position, state.position); + return true; +} + +function readAlias(state) { + var _position, alias, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x2A/* * */) return false; + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an alias node must contain at least one character'); + } + + alias = state.input.slice(_position, state.position); + + if (!_hasOwnProperty$1.call(state.anchorMap, alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); + } + + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; +} + +function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, + allowBlockScalars, + allowBlockCollections, + indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } + + blockIndent = state.position - state.lineStart; + + if (indentStatus === 1) { + if (allowBlockCollections && + (readBlockSequence(state, blockIndent) || + readBlockMapping(state, blockIndent, flowIndent)) || + readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || + readSingleQuotedScalar(state, flowIndent) || + readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; + + } else if (readAlias(state)) { + hasContent = true; + + if (state.tag !== null || state.anchor !== null) { + throwError(state, 'alias node should not have any properties'); + } + + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; + + if (state.tag === null) { + state.tag = '?'; + } + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + } + } + + if (state.tag === null) { + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + + } else if (state.tag === '?') { + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only automatically assigned to plain scalars. + // + // We only need to check kind conformity in case user explicitly assigns '?' + // tag, for example like this: "! [0]" + // + if (state.result !== null && state.kind !== 'scalar') { + throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); + } + + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type = state.implicitTypes[typeIndex]; + + if (type.resolve(state.result)) { // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if (state.tag !== '!') { + if (_hasOwnProperty$1.call(state.typeMap[state.kind || 'fallback'], state.tag)) { + type = state.typeMap[state.kind || 'fallback'][state.tag]; + } else { + // looking for multi type + type = null; + typeList = state.typeMap.multi[state.kind || 'fallback']; + + for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { + if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { + type = typeList[typeIndex]; + break; + } + } + } + + if (!type) { + throwError(state, 'unknown tag !<' + state.tag + '>'); + } + + if (state.result !== null && type.kind !== state.kind) { + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + } + + if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + } else { + state.result = type.construct(state.result, state.tag); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } + + if (state.listener !== null) { + state.listener('close', state); + } + return state.tag !== null || state.anchor !== null || hasContent; +} + +function readDocument(state) { + var documentStart = state.position, + _position, + directiveName, + directiveArgs, + hasDirectives = false, + ch; + + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = Object.create(null); + state.anchorMap = Object.create(null); + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if (state.lineIndent > 0 || ch !== 0x25/* % */) { + break; + } + + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; + + if (directiveName.length < 1) { + throwError(state, 'directive name must not be less than one character in length'); + } + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && !is_EOL(ch)); + break; + } + + if (is_EOL(ch)) break; + + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveArgs.push(state.input.slice(_position, state.position)); + } + + if (ch !== 0) readLineBreak(state); + + if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); + } + } + + skipSeparationSpace(state, true, -1); + + if (state.lineIndent === 0 && + state.input.charCodeAt(state.position) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + + } else if (hasDirectives) { + throwError(state, 'directives end mark is expected'); + } + + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); + + if (state.checkLineBreaks && + PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + } + + state.documents.push(state.result); + + if (state.position === state.lineStart && testDocumentSeparator(state)) { + + if (state.input.charCodeAt(state.position) === 0x2E/* . */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + return; + } + + if (state.position < (state.length - 1)) { + throwError(state, 'end of the stream or a document separator is expected'); + } else { + return; + } +} + + +function loadDocuments(input, options) { + input = String(input); + options = options || {}; + + if (input.length !== 0) { + + // Add tailing `\n` if not exists + if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && + input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { + input += '\n'; + } + + // Strip BOM + if (input.charCodeAt(0) === 0xFEFF) { + input = input.slice(1); + } + } + + var state = new State$1(input, options); + + var nullpos = input.indexOf('\0'); + + if (nullpos !== -1) { + state.position = nullpos; + throwError(state, 'null byte is not allowed in input'); + } + + // Use 0 as string terminator. That significantly simplifies bounds check. + state.input += '\0'; + + while (state.input.charCodeAt(state.position) === 0x20/* Space */) { + state.lineIndent += 1; + state.position += 1; + } + + while (state.position < (state.length - 1)) { + readDocument(state); + } + + return state.documents; +} + + +function loadAll$1(input, iterator, options) { + if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { + options = iterator; + iterator = null; + } + + var documents = loadDocuments(input, options); + + if (typeof iterator !== 'function') { + return documents; + } + + for (var index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } +} + + +function load$1(input, options) { + var documents = loadDocuments(input, options); + + if (documents.length === 0) { + /*eslint-disable no-undefined*/ + return undefined; + } else if (documents.length === 1) { + return documents[0]; + } + throw new exception('expected a single document in the stream, but found more'); +} + + +var loadAll_1 = loadAll$1; +var load_1 = load$1; + +var loader = { + loadAll: loadAll_1, + load: load_1 +}; + +/*eslint-disable no-use-before-define*/ + + + + + +var _toString = Object.prototype.toString; +var _hasOwnProperty = Object.prototype.hasOwnProperty; + +var CHAR_BOM = 0xFEFF; +var CHAR_TAB = 0x09; /* Tab */ +var CHAR_LINE_FEED = 0x0A; /* LF */ +var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ +var CHAR_SPACE = 0x20; /* Space */ +var CHAR_EXCLAMATION = 0x21; /* ! */ +var CHAR_DOUBLE_QUOTE = 0x22; /* " */ +var CHAR_SHARP = 0x23; /* # */ +var CHAR_PERCENT = 0x25; /* % */ +var CHAR_AMPERSAND = 0x26; /* & */ +var CHAR_SINGLE_QUOTE = 0x27; /* ' */ +var CHAR_ASTERISK = 0x2A; /* * */ +var CHAR_COMMA = 0x2C; /* , */ +var CHAR_MINUS = 0x2D; /* - */ +var CHAR_COLON = 0x3A; /* : */ +var CHAR_EQUALS = 0x3D; /* = */ +var CHAR_GREATER_THAN = 0x3E; /* > */ +var CHAR_QUESTION = 0x3F; /* ? */ +var CHAR_COMMERCIAL_AT = 0x40; /* @ */ +var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ +var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ +var CHAR_GRAVE_ACCENT = 0x60; /* ` */ +var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ +var CHAR_VERTICAL_LINE = 0x7C; /* | */ +var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ + +var ESCAPE_SEQUENCES = {}; + +ESCAPE_SEQUENCES[0x00] = '\\0'; +ESCAPE_SEQUENCES[0x07] = '\\a'; +ESCAPE_SEQUENCES[0x08] = '\\b'; +ESCAPE_SEQUENCES[0x09] = '\\t'; +ESCAPE_SEQUENCES[0x0A] = '\\n'; +ESCAPE_SEQUENCES[0x0B] = '\\v'; +ESCAPE_SEQUENCES[0x0C] = '\\f'; +ESCAPE_SEQUENCES[0x0D] = '\\r'; +ESCAPE_SEQUENCES[0x1B] = '\\e'; +ESCAPE_SEQUENCES[0x22] = '\\"'; +ESCAPE_SEQUENCES[0x5C] = '\\\\'; +ESCAPE_SEQUENCES[0x85] = '\\N'; +ESCAPE_SEQUENCES[0xA0] = '\\_'; +ESCAPE_SEQUENCES[0x2028] = '\\L'; +ESCAPE_SEQUENCES[0x2029] = '\\P'; + +var DEPRECATED_BOOLEANS_SYNTAX = [ + 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', + 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' +]; + +var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; + +function compileStyleMap(schema, map) { + var result, keys, index, length, tag, style, type; + + if (map === null) return {}; + + result = {}; + keys = Object.keys(map); + + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]); + + if (tag.slice(0, 2) === '!!') { + tag = 'tag:yaml.org,2002:' + tag.slice(2); + } + type = schema.compiledTypeMap['fallback'][tag]; + + if (type && _hasOwnProperty.call(type.styleAliases, style)) { + style = type.styleAliases[style]; + } + + result[tag] = style; + } + + return result; +} + +function encodeHex(character) { + var string, handle, length; + + string = character.toString(16).toUpperCase(); + + if (character <= 0xFF) { + handle = 'x'; + length = 2; + } else if (character <= 0xFFFF) { + handle = 'u'; + length = 4; + } else if (character <= 0xFFFFFFFF) { + handle = 'U'; + length = 8; + } else { + throw new exception('code point within a string may not be greater than 0xFFFFFFFF'); + } + + return '\\' + handle + common.repeat('0', length - string.length) + string; +} + + +var QUOTING_TYPE_SINGLE = 1, + QUOTING_TYPE_DOUBLE = 2; + +function State(options) { + this.schema = options['schema'] || _default; + this.indent = Math.max(1, (options['indent'] || 2)); + this.noArrayIndent = options['noArrayIndent'] || false; + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + this.condenseFlow = options['condenseFlow'] || false; + this.quotingType = options['quotingType'] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; + this.forceQuotes = options['forceQuotes'] || false; + this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null; + + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; + + this.tag = null; + this.result = ''; + + this.duplicates = []; + this.usedDuplicates = null; +} + +// Indents every line in a string. Empty lines (\n only) are not indented. +function indentString(string, spaces) { + var ind = common.repeat(' ', spaces), + position = 0, + next = -1, + result = '', + line, + length = string.length; + + while (position < length) { + next = string.indexOf('\n', position); + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } + + if (line.length && line !== '\n') result += ind; + + result += line; + } + + return result; +} + +function generateNextLine(state, level) { + return '\n' + common.repeat(' ', state.indent * level); +} + +function testImplicitResolving(state, str) { + var index, length, type; + + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type = state.implicitTypes[index]; + + if (type.resolve(str)) { + return true; + } + } + + return false; +} + +// [33] s-white ::= s-space | s-tab +function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; +} + +// Returns true if the character can be printed without escaping. +// From YAML 1.2: "any allowed characters known to be non-printable +// should also be escaped. [However,] This isn’t mandatory" +// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. +function isPrintable(c) { + return (0x00020 <= c && c <= 0x00007E) + || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) + || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM) + || (0x10000 <= c && c <= 0x10FFFF); +} + +// [34] ns-char ::= nb-char - s-white +// [27] nb-char ::= c-printable - b-char - c-byte-order-mark +// [26] b-char ::= b-line-feed | b-carriage-return +// Including s-white (for some reason, examples doesn't match specs in this aspect) +// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark +function isNsCharOrWhitespace(c) { + return isPrintable(c) + && c !== CHAR_BOM + // - b-char + && c !== CHAR_CARRIAGE_RETURN + && c !== CHAR_LINE_FEED; +} + +// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out +// c = flow-in ⇒ ns-plain-safe-in +// c = block-key ⇒ ns-plain-safe-out +// c = flow-key ⇒ ns-plain-safe-in +// [128] ns-plain-safe-out ::= ns-char +// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator +// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” ) +// | ( /* An ns-char preceding */ “#” ) +// | ( “:” /* Followed by an ns-plain-safe(c) */ ) +function isPlainSafe(c, prev, inblock) { + var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); + var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); + return ( + // ns-plain-safe + inblock ? // c = flow-in + cIsNsCharOrWhitespace + : cIsNsCharOrWhitespace + // - c-flow-indicator + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + ) + // ns-plain-char + && c !== CHAR_SHARP // false on '#' + && !(prev === CHAR_COLON && !cIsNsChar) // false on ': ' + || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#' + || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]' +} + +// Simplified test for values allowed as the first character in plain style. +function isPlainSafeFirst(c) { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part + return isPrintable(c) && c !== CHAR_BOM + && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS + && c !== CHAR_QUESTION + && c !== CHAR_COLON + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” + && c !== CHAR_SHARP + && c !== CHAR_AMPERSAND + && c !== CHAR_ASTERISK + && c !== CHAR_EXCLAMATION + && c !== CHAR_VERTICAL_LINE + && c !== CHAR_EQUALS + && c !== CHAR_GREATER_THAN + && c !== CHAR_SINGLE_QUOTE + && c !== CHAR_DOUBLE_QUOTE + // | “%” | “@” | “`”) + && c !== CHAR_PERCENT + && c !== CHAR_COMMERCIAL_AT + && c !== CHAR_GRAVE_ACCENT; +} + +// Simplified test for values allowed as the last character in plain style. +function isPlainSafeLast(c) { + // just not whitespace or colon, it will be checked to be plain character later + return !isWhitespace(c) && c !== CHAR_COLON; +} + +// Same as 'string'.codePointAt(pos), but works in older browsers. +function codePointAt(string, pos) { + var first = string.charCodeAt(pos), second; + if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) { + second = string.charCodeAt(pos + 1); + if (second >= 0xDC00 && second <= 0xDFFF) { + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + } + } + return first; +} + +// Determines whether block indentation indicator is required. +function needIndentIndicator(string) { + var leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); +} + +var STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; + +// Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). +function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, + testAmbiguousType, quotingType, forceQuotes, inblock) { + + var i; + var char = 0; + var prevChar = null; + var hasLineBreak = false; + var hasFoldableLine = false; // only checked if shouldTrackWidth + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; // count the first line correctly + var plain = isPlainSafeFirst(codePointAt(string, 0)) + && isPlainSafeLast(codePointAt(string, string.length - 1)); + + if (singleLineOnly || forceQuotes) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || + // Foldable line = too long, and not more-indented. + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' '); + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || (shouldTrackWidth && + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' ')); + } + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + if (plain && !forceQuotes && !testAmbiguousType(string)) { + return STYLE_PLAIN; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; + } + // Edge case: block indentation indicator can only have one digit. + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + if (!forceQuotes) { + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; +} + +// Note: line breaking/folding is implemented for only the folded style. +// NB. We drop the last trailing newline (if any) of a returned block scalar +// since the dumper adds its own newline. This always works: +// • No ending newline => unaffected; already using strip "-" chomping. +// • Ending newline => removed then restored. +// Importantly, this keeps the "+" chomp indicator from gaining an extra line. +function writeScalar(state, string, level, iskey, inblock) { + state.dump = (function () { + if (string.length === 0) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; + } + if (!state.noCompatMode) { + if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? ('"' + string + '"') : ("'" + string + "'"); + } + } + + var indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower bound. + // This behaves better than a constant minimum width which disallows narrower options, + // or an indent threshold which causes the width to suddenly increase. + var lineWidth = state.lineWidth === -1 + ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + + // Without knowing if keys are implicit/explicit, assume implicit for safety. + var singleLineOnly = iskey + // No block styles in flow mode. + || (state.flowLevel > -1 && level >= state.flowLevel); + function testAmbiguity(string) { + return testImplicitResolving(state, string); + } + + switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, + testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) { + + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + case STYLE_LITERAL: + return '|' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(string, indent)); + case STYLE_FOLDED: + return '>' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + case STYLE_DOUBLE: + return '"' + escapeString(string) + '"'; + default: + throw new exception('impossible error: invalid scalar style'); + } + }()); +} + +// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. +function blockHeader(string, indentPerLevel) { + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; + + // note the special case: the string '\n' counts as a "trailing" empty line. + var clip = string[string.length - 1] === '\n'; + var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); + var chomp = keep ? '+' : (clip ? '' : '-'); + + return indentIndicator + chomp + '\n'; +} + +// (See the note for writeScalar.) +function dropEndingNewline(string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; +} + +// Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. +function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + var lineRe = /(\n+)([^\n]*)/g; + + // first line (possibly an empty line) + var result = (function () { + var nextLF = string.indexOf('\n'); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }()); + // If we haven't reached the first content line yet, don't add an extra \n. + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; + var moreIndented; + + // rest of the lines + var match; + while ((match = lineRe.exec(string))) { + var prefix = match[1], line = match[2]; + moreIndented = (line[0] === ' '); + result += prefix + + (!prevMoreIndented && !moreIndented && line !== '' + ? '\n' : '') + + foldLine(line, width); + prevMoreIndented = moreIndented; + } + + return result; +} + +// Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. +function foldLine(line, width) { + if (line === '' || line[0] === ' ') return line; + + // Since a more-indented line adds a \n, breaks can't be followed by a space. + var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + var match; + // start is an inclusive index. end, curr, and next are exclusive. + var start = 0, end, curr = 0, next = 0; + var result = ''; + + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + while ((match = breakRe.exec(line))) { + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = (curr > start) ? curr : next; // derive end <= length-2 + result += '\n' + line.slice(start, end); + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 + } + curr = next; + } + + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + result += '\n'; + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + } else { + result += line.slice(start); + } + + return result.slice(1); // drop extra \n joiner +} + +// Escapes a double-quoted string. +function escapeString(string) { + var result = ''; + var char = 0; + var escapeSeq; + + for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + escapeSeq = ESCAPE_SEQUENCES[char]; + + if (!escapeSeq && isPrintable(char)) { + result += string[i]; + if (char >= 0x10000) result += string[i + 1]; + } else { + result += escapeSeq || encodeHex(char); + } + } + + return result; +} + +function writeFlowSequence(state, level, object) { + var _result = '', + _tag = state.tag, + index, + length, + value; + + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; + + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + + // Write only valid elements, put null instead of invalid elements. + if (writeNode(state, level, value, false, false) || + (typeof value === 'undefined' && + writeNode(state, level, null, false, false))) { + + if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : ''); + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = '[' + _result + ']'; +} + +function writeBlockSequence(state, level, object, compact) { + var _result = '', + _tag = state.tag, + index, + length, + value; + + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; + + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + + // Write only valid elements, put null instead of invalid elements. + if (writeNode(state, level + 1, value, true, true, false, true) || + (typeof value === 'undefined' && + writeNode(state, level + 1, null, true, true, false, true))) { + + if (!compact || _result !== '') { + _result += generateNextLine(state, level); + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += '-'; + } else { + _result += '- '; + } + + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = _result || '[]'; // Empty sequence if no valid values. +} + +function writeFlowMapping(state, level, object) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + pairBuffer; + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + + pairBuffer = ''; + if (_result !== '') pairBuffer += ', '; + + if (state.condenseFlow) pairBuffer += '"'; + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } + + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } + + if (state.dump.length > 1024) pairBuffer += '? '; + + pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); + + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = '{' + _result + '}'; +} + +function writeBlockMapping(state, level, object, compact) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + explicitPair, + pairBuffer; + + // Allow sorting keys so that the output file is deterministic + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === 'function') { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new exception('sortKeys must be a boolean or a function'); + } + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + + if (!compact || _result !== '') { + pairBuffer += generateNextLine(state, level); + } + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } + + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } + + explicitPair = (state.tag !== null && state.tag !== '?') || + (state.dump && state.dump.length > 1024); + + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += '?'; + } else { + pairBuffer += '? '; + } + } + + pairBuffer += state.dump; + + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } + + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ':'; + } else { + pairBuffer += ': '; + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = _result || '{}'; // Empty mapping if no valid pairs. +} + +function detectType(state, object, explicit) { + var _result, typeList, index, length, type, style; + + typeList = explicit ? state.explicitTypes : state.implicitTypes; + + for (index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; + + if ((type.instanceOf || type.predicate) && + (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && + (!type.predicate || type.predicate(object))) { + + if (explicit) { + if (type.multi && type.representName) { + state.tag = type.representName(object); + } else { + state.tag = type.tag; + } + } else { + state.tag = '?'; + } + + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + + if (_toString.call(type.represent) === '[object Function]') { + _result = type.represent(object, style); + } else if (_hasOwnProperty.call(type.represent, style)) { + _result = type.represent[style](object, style); + } else { + throw new exception('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); + } + + state.dump = _result; + } + + return true; + } + } + + return false; +} + +// Serializes `object` and writes it to global `result`. +// Returns true on success, or false on invalid object. +// +function writeNode(state, level, object, block, compact, iskey, isblockseq) { + state.tag = null; + state.dump = object; + + if (!detectType(state, object, false)) { + detectType(state, object, true); + } + + var type = _toString.call(state.dump); + var inblock = block; + var tagStr; + + if (block) { + block = (state.flowLevel < 0 || state.flowLevel > level); + } + + var objectOrArray = type === '[object Object]' || type === '[object Array]', + duplicateIndex, + duplicate; + + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } + + if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { + compact = false; + } + + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = '*ref_' + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + if (type === '[object Object]') { + if (block && (Object.keys(state.dump).length !== 0)) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object Array]') { + if (block && (state.dump.length !== 0)) { + if (state.noArrayIndent && !isblockseq && level > 0) { + writeBlockSequence(state, level - 1, state.dump, compact); + } else { + writeBlockSequence(state, level, state.dump, compact); + } + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowSequence(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object String]') { + if (state.tag !== '?') { + writeScalar(state, state.dump, level, iskey, inblock); + } + } else if (type === '[object Undefined]') { + return false; + } else { + if (state.skipInvalid) return false; + throw new exception('unacceptable kind of an object to dump ' + type); + } + + if (state.tag !== null && state.tag !== '?') { + // Need to encode all characters except those allowed by the spec: + // + // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */ + // [36] ns-hex-digit ::= ns-dec-digit + // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */ + // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */ + // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-” + // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#” + // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,” + // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]” + // + // Also need to encode '!' because it has special meaning (end of tag prefix). + // + tagStr = encodeURI( + state.tag[0] === '!' ? state.tag.slice(1) : state.tag + ).replace(/!/g, '%21'); + + if (state.tag[0] === '!') { + tagStr = '!' + tagStr; + } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') { + tagStr = '!!' + tagStr.slice(18); + } else { + tagStr = '!<' + tagStr + '>'; + } + + state.dump = tagStr + ' ' + state.dump; + } + } + + return true; +} + +function getDuplicateReferences(object, state) { + var objects = [], + duplicatesIndexes = [], + index, + length; + + inspectNode(object, objects, duplicatesIndexes); + + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + state.usedDuplicates = new Array(length); +} + +function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, + index, + length; + + if (object !== null && typeof object === 'object') { + index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); + + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + } + } + } + } +} + +function dump$1(input, options) { + options = options || {}; + + var state = new State(options); + + if (!state.noRefs) getDuplicateReferences(input, state); + + var value = input; + + if (state.replacer) { + value = state.replacer.call({ '': value }, '', value); + } + + if (writeNode(state, 0, value, true, true)) return state.dump + '\n'; + + return ''; +} + +var dump_1 = dump$1; + +var dumper = { + dump: dump_1 +}; + +function renamed(from, to) { + return function () { + throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' + + 'Use yaml.' + to + ' instead, which is now safe by default.'); + }; +} + + +var Type = type; +var Schema = schema; +var FAILSAFE_SCHEMA = failsafe; +var JSON_SCHEMA = json; +var CORE_SCHEMA = core; +var DEFAULT_SCHEMA = _default; +var load = loader.load; +var loadAll = loader.loadAll; +var dump = dumper.dump; +var YAMLException = exception; + +// Re-export all types in case user wants to create custom schema +var types = { + binary: binary, + float: float, + map: map, + null: _null, + pairs: pairs, + set: set, + timestamp: timestamp, + bool: bool, + int: int, + merge: merge, + omap: omap, + seq: seq, + str: str +}; + +// Removed functions from JS-YAML 3.0.x +var safeLoad = renamed('safeLoad', 'load'); +var safeLoadAll = renamed('safeLoadAll', 'loadAll'); +var safeDump = renamed('safeDump', 'dump'); + +var jsYaml = { + Type: Type, + Schema: Schema, + FAILSAFE_SCHEMA: FAILSAFE_SCHEMA, + JSON_SCHEMA: JSON_SCHEMA, + CORE_SCHEMA: CORE_SCHEMA, + DEFAULT_SCHEMA: DEFAULT_SCHEMA, + load: load, + loadAll: loadAll, + dump: dump, + YAMLException: YAMLException, + types: types, + safeLoad: safeLoad, + safeLoadAll: safeLoadAll, + safeDump: safeDump +}; + +export default jsYaml; +export { CORE_SCHEMA, DEFAULT_SCHEMA, FAILSAFE_SCHEMA, JSON_SCHEMA, Schema, Type, YAMLException, dump, load, loadAll, safeDump, safeLoad, safeLoadAll, types }; diff --git a/node_modules/js-yaml/index.js b/node_modules/js-yaml/index.js new file mode 100644 index 0000000..bcb7eba --- /dev/null +++ b/node_modules/js-yaml/index.js @@ -0,0 +1,47 @@ +'use strict'; + + +var loader = require('./lib/loader'); +var dumper = require('./lib/dumper'); + + +function renamed(from, to) { + return function () { + throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' + + 'Use yaml.' + to + ' instead, which is now safe by default.'); + }; +} + + +module.exports.Type = require('./lib/type'); +module.exports.Schema = require('./lib/schema'); +module.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe'); +module.exports.JSON_SCHEMA = require('./lib/schema/json'); +module.exports.CORE_SCHEMA = require('./lib/schema/core'); +module.exports.DEFAULT_SCHEMA = require('./lib/schema/default'); +module.exports.load = loader.load; +module.exports.loadAll = loader.loadAll; +module.exports.dump = dumper.dump; +module.exports.YAMLException = require('./lib/exception'); + +// Re-export all types in case user wants to create custom schema +module.exports.types = { + binary: require('./lib/type/binary'), + float: require('./lib/type/float'), + map: require('./lib/type/map'), + null: require('./lib/type/null'), + pairs: require('./lib/type/pairs'), + set: require('./lib/type/set'), + timestamp: require('./lib/type/timestamp'), + bool: require('./lib/type/bool'), + int: require('./lib/type/int'), + merge: require('./lib/type/merge'), + omap: require('./lib/type/omap'), + seq: require('./lib/type/seq'), + str: require('./lib/type/str') +}; + +// Removed functions from JS-YAML 3.0.x +module.exports.safeLoad = renamed('safeLoad', 'load'); +module.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll'); +module.exports.safeDump = renamed('safeDump', 'dump'); diff --git a/node_modules/js-yaml/lib/common.js b/node_modules/js-yaml/lib/common.js new file mode 100644 index 0000000..25ef7d8 --- /dev/null +++ b/node_modules/js-yaml/lib/common.js @@ -0,0 +1,59 @@ +'use strict'; + + +function isNothing(subject) { + return (typeof subject === 'undefined') || (subject === null); +} + + +function isObject(subject) { + return (typeof subject === 'object') && (subject !== null); +} + + +function toArray(sequence) { + if (Array.isArray(sequence)) return sequence; + else if (isNothing(sequence)) return []; + + return [ sequence ]; +} + + +function extend(target, source) { + var index, length, key, sourceKeys; + + if (source) { + sourceKeys = Object.keys(source); + + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } + } + + return target; +} + + +function repeat(string, count) { + var result = '', cycle; + + for (cycle = 0; cycle < count; cycle += 1) { + result += string; + } + + return result; +} + + +function isNegativeZero(number) { + return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); +} + + +module.exports.isNothing = isNothing; +module.exports.isObject = isObject; +module.exports.toArray = toArray; +module.exports.repeat = repeat; +module.exports.isNegativeZero = isNegativeZero; +module.exports.extend = extend; diff --git a/node_modules/js-yaml/lib/dumper.js b/node_modules/js-yaml/lib/dumper.js new file mode 100644 index 0000000..f357a6a --- /dev/null +++ b/node_modules/js-yaml/lib/dumper.js @@ -0,0 +1,965 @@ +'use strict'; + +/*eslint-disable no-use-before-define*/ + +var common = require('./common'); +var YAMLException = require('./exception'); +var DEFAULT_SCHEMA = require('./schema/default'); + +var _toString = Object.prototype.toString; +var _hasOwnProperty = Object.prototype.hasOwnProperty; + +var CHAR_BOM = 0xFEFF; +var CHAR_TAB = 0x09; /* Tab */ +var CHAR_LINE_FEED = 0x0A; /* LF */ +var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ +var CHAR_SPACE = 0x20; /* Space */ +var CHAR_EXCLAMATION = 0x21; /* ! */ +var CHAR_DOUBLE_QUOTE = 0x22; /* " */ +var CHAR_SHARP = 0x23; /* # */ +var CHAR_PERCENT = 0x25; /* % */ +var CHAR_AMPERSAND = 0x26; /* & */ +var CHAR_SINGLE_QUOTE = 0x27; /* ' */ +var CHAR_ASTERISK = 0x2A; /* * */ +var CHAR_COMMA = 0x2C; /* , */ +var CHAR_MINUS = 0x2D; /* - */ +var CHAR_COLON = 0x3A; /* : */ +var CHAR_EQUALS = 0x3D; /* = */ +var CHAR_GREATER_THAN = 0x3E; /* > */ +var CHAR_QUESTION = 0x3F; /* ? */ +var CHAR_COMMERCIAL_AT = 0x40; /* @ */ +var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ +var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ +var CHAR_GRAVE_ACCENT = 0x60; /* ` */ +var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ +var CHAR_VERTICAL_LINE = 0x7C; /* | */ +var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ + +var ESCAPE_SEQUENCES = {}; + +ESCAPE_SEQUENCES[0x00] = '\\0'; +ESCAPE_SEQUENCES[0x07] = '\\a'; +ESCAPE_SEQUENCES[0x08] = '\\b'; +ESCAPE_SEQUENCES[0x09] = '\\t'; +ESCAPE_SEQUENCES[0x0A] = '\\n'; +ESCAPE_SEQUENCES[0x0B] = '\\v'; +ESCAPE_SEQUENCES[0x0C] = '\\f'; +ESCAPE_SEQUENCES[0x0D] = '\\r'; +ESCAPE_SEQUENCES[0x1B] = '\\e'; +ESCAPE_SEQUENCES[0x22] = '\\"'; +ESCAPE_SEQUENCES[0x5C] = '\\\\'; +ESCAPE_SEQUENCES[0x85] = '\\N'; +ESCAPE_SEQUENCES[0xA0] = '\\_'; +ESCAPE_SEQUENCES[0x2028] = '\\L'; +ESCAPE_SEQUENCES[0x2029] = '\\P'; + +var DEPRECATED_BOOLEANS_SYNTAX = [ + 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', + 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' +]; + +var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; + +function compileStyleMap(schema, map) { + var result, keys, index, length, tag, style, type; + + if (map === null) return {}; + + result = {}; + keys = Object.keys(map); + + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]); + + if (tag.slice(0, 2) === '!!') { + tag = 'tag:yaml.org,2002:' + tag.slice(2); + } + type = schema.compiledTypeMap['fallback'][tag]; + + if (type && _hasOwnProperty.call(type.styleAliases, style)) { + style = type.styleAliases[style]; + } + + result[tag] = style; + } + + return result; +} + +function encodeHex(character) { + var string, handle, length; + + string = character.toString(16).toUpperCase(); + + if (character <= 0xFF) { + handle = 'x'; + length = 2; + } else if (character <= 0xFFFF) { + handle = 'u'; + length = 4; + } else if (character <= 0xFFFFFFFF) { + handle = 'U'; + length = 8; + } else { + throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); + } + + return '\\' + handle + common.repeat('0', length - string.length) + string; +} + + +var QUOTING_TYPE_SINGLE = 1, + QUOTING_TYPE_DOUBLE = 2; + +function State(options) { + this.schema = options['schema'] || DEFAULT_SCHEMA; + this.indent = Math.max(1, (options['indent'] || 2)); + this.noArrayIndent = options['noArrayIndent'] || false; + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + this.condenseFlow = options['condenseFlow'] || false; + this.quotingType = options['quotingType'] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; + this.forceQuotes = options['forceQuotes'] || false; + this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null; + + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; + + this.tag = null; + this.result = ''; + + this.duplicates = []; + this.usedDuplicates = null; +} + +// Indents every line in a string. Empty lines (\n only) are not indented. +function indentString(string, spaces) { + var ind = common.repeat(' ', spaces), + position = 0, + next = -1, + result = '', + line, + length = string.length; + + while (position < length) { + next = string.indexOf('\n', position); + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } + + if (line.length && line !== '\n') result += ind; + + result += line; + } + + return result; +} + +function generateNextLine(state, level) { + return '\n' + common.repeat(' ', state.indent * level); +} + +function testImplicitResolving(state, str) { + var index, length, type; + + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type = state.implicitTypes[index]; + + if (type.resolve(str)) { + return true; + } + } + + return false; +} + +// [33] s-white ::= s-space | s-tab +function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; +} + +// Returns true if the character can be printed without escaping. +// From YAML 1.2: "any allowed characters known to be non-printable +// should also be escaped. [However,] This isn’t mandatory" +// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. +function isPrintable(c) { + return (0x00020 <= c && c <= 0x00007E) + || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) + || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM) + || (0x10000 <= c && c <= 0x10FFFF); +} + +// [34] ns-char ::= nb-char - s-white +// [27] nb-char ::= c-printable - b-char - c-byte-order-mark +// [26] b-char ::= b-line-feed | b-carriage-return +// Including s-white (for some reason, examples doesn't match specs in this aspect) +// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark +function isNsCharOrWhitespace(c) { + return isPrintable(c) + && c !== CHAR_BOM + // - b-char + && c !== CHAR_CARRIAGE_RETURN + && c !== CHAR_LINE_FEED; +} + +// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out +// c = flow-in ⇒ ns-plain-safe-in +// c = block-key ⇒ ns-plain-safe-out +// c = flow-key ⇒ ns-plain-safe-in +// [128] ns-plain-safe-out ::= ns-char +// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator +// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” ) +// | ( /* An ns-char preceding */ “#” ) +// | ( “:” /* Followed by an ns-plain-safe(c) */ ) +function isPlainSafe(c, prev, inblock) { + var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); + var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); + return ( + // ns-plain-safe + inblock ? // c = flow-in + cIsNsCharOrWhitespace + : cIsNsCharOrWhitespace + // - c-flow-indicator + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + ) + // ns-plain-char + && c !== CHAR_SHARP // false on '#' + && !(prev === CHAR_COLON && !cIsNsChar) // false on ': ' + || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#' + || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]' +} + +// Simplified test for values allowed as the first character in plain style. +function isPlainSafeFirst(c) { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part + return isPrintable(c) && c !== CHAR_BOM + && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS + && c !== CHAR_QUESTION + && c !== CHAR_COLON + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” + && c !== CHAR_SHARP + && c !== CHAR_AMPERSAND + && c !== CHAR_ASTERISK + && c !== CHAR_EXCLAMATION + && c !== CHAR_VERTICAL_LINE + && c !== CHAR_EQUALS + && c !== CHAR_GREATER_THAN + && c !== CHAR_SINGLE_QUOTE + && c !== CHAR_DOUBLE_QUOTE + // | “%” | “@” | “`”) + && c !== CHAR_PERCENT + && c !== CHAR_COMMERCIAL_AT + && c !== CHAR_GRAVE_ACCENT; +} + +// Simplified test for values allowed as the last character in plain style. +function isPlainSafeLast(c) { + // just not whitespace or colon, it will be checked to be plain character later + return !isWhitespace(c) && c !== CHAR_COLON; +} + +// Same as 'string'.codePointAt(pos), but works in older browsers. +function codePointAt(string, pos) { + var first = string.charCodeAt(pos), second; + if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) { + second = string.charCodeAt(pos + 1); + if (second >= 0xDC00 && second <= 0xDFFF) { + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + } + } + return first; +} + +// Determines whether block indentation indicator is required. +function needIndentIndicator(string) { + var leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); +} + +var STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; + +// Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). +function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, + testAmbiguousType, quotingType, forceQuotes, inblock) { + + var i; + var char = 0; + var prevChar = null; + var hasLineBreak = false; + var hasFoldableLine = false; // only checked if shouldTrackWidth + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; // count the first line correctly + var plain = isPlainSafeFirst(codePointAt(string, 0)) + && isPlainSafeLast(codePointAt(string, string.length - 1)); + + if (singleLineOnly || forceQuotes) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || + // Foldable line = too long, and not more-indented. + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' '); + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || (shouldTrackWidth && + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' ')); + } + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + if (plain && !forceQuotes && !testAmbiguousType(string)) { + return STYLE_PLAIN; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; + } + // Edge case: block indentation indicator can only have one digit. + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + if (!forceQuotes) { + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; +} + +// Note: line breaking/folding is implemented for only the folded style. +// NB. We drop the last trailing newline (if any) of a returned block scalar +// since the dumper adds its own newline. This always works: +// • No ending newline => unaffected; already using strip "-" chomping. +// • Ending newline => removed then restored. +// Importantly, this keeps the "+" chomp indicator from gaining an extra line. +function writeScalar(state, string, level, iskey, inblock) { + state.dump = (function () { + if (string.length === 0) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; + } + if (!state.noCompatMode) { + if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? ('"' + string + '"') : ("'" + string + "'"); + } + } + + var indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower bound. + // This behaves better than a constant minimum width which disallows narrower options, + // or an indent threshold which causes the width to suddenly increase. + var lineWidth = state.lineWidth === -1 + ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + + // Without knowing if keys are implicit/explicit, assume implicit for safety. + var singleLineOnly = iskey + // No block styles in flow mode. + || (state.flowLevel > -1 && level >= state.flowLevel); + function testAmbiguity(string) { + return testImplicitResolving(state, string); + } + + switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, + testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) { + + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + case STYLE_LITERAL: + return '|' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(string, indent)); + case STYLE_FOLDED: + return '>' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + case STYLE_DOUBLE: + return '"' + escapeString(string, lineWidth) + '"'; + default: + throw new YAMLException('impossible error: invalid scalar style'); + } + }()); +} + +// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. +function blockHeader(string, indentPerLevel) { + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; + + // note the special case: the string '\n' counts as a "trailing" empty line. + var clip = string[string.length - 1] === '\n'; + var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); + var chomp = keep ? '+' : (clip ? '' : '-'); + + return indentIndicator + chomp + '\n'; +} + +// (See the note for writeScalar.) +function dropEndingNewline(string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; +} + +// Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. +function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + var lineRe = /(\n+)([^\n]*)/g; + + // first line (possibly an empty line) + var result = (function () { + var nextLF = string.indexOf('\n'); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }()); + // If we haven't reached the first content line yet, don't add an extra \n. + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; + var moreIndented; + + // rest of the lines + var match; + while ((match = lineRe.exec(string))) { + var prefix = match[1], line = match[2]; + moreIndented = (line[0] === ' '); + result += prefix + + (!prevMoreIndented && !moreIndented && line !== '' + ? '\n' : '') + + foldLine(line, width); + prevMoreIndented = moreIndented; + } + + return result; +} + +// Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. +function foldLine(line, width) { + if (line === '' || line[0] === ' ') return line; + + // Since a more-indented line adds a \n, breaks can't be followed by a space. + var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + var match; + // start is an inclusive index. end, curr, and next are exclusive. + var start = 0, end, curr = 0, next = 0; + var result = ''; + + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + while ((match = breakRe.exec(line))) { + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = (curr > start) ? curr : next; // derive end <= length-2 + result += '\n' + line.slice(start, end); + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 + } + curr = next; + } + + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + result += '\n'; + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + } else { + result += line.slice(start); + } + + return result.slice(1); // drop extra \n joiner +} + +// Escapes a double-quoted string. +function escapeString(string) { + var result = ''; + var char = 0; + var escapeSeq; + + for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + escapeSeq = ESCAPE_SEQUENCES[char]; + + if (!escapeSeq && isPrintable(char)) { + result += string[i]; + if (char >= 0x10000) result += string[i + 1]; + } else { + result += escapeSeq || encodeHex(char); + } + } + + return result; +} + +function writeFlowSequence(state, level, object) { + var _result = '', + _tag = state.tag, + index, + length, + value; + + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; + + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + + // Write only valid elements, put null instead of invalid elements. + if (writeNode(state, level, value, false, false) || + (typeof value === 'undefined' && + writeNode(state, level, null, false, false))) { + + if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : ''); + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = '[' + _result + ']'; +} + +function writeBlockSequence(state, level, object, compact) { + var _result = '', + _tag = state.tag, + index, + length, + value; + + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; + + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } + + // Write only valid elements, put null instead of invalid elements. + if (writeNode(state, level + 1, value, true, true, false, true) || + (typeof value === 'undefined' && + writeNode(state, level + 1, null, true, true, false, true))) { + + if (!compact || _result !== '') { + _result += generateNextLine(state, level); + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += '-'; + } else { + _result += '- '; + } + + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = _result || '[]'; // Empty sequence if no valid values. +} + +function writeFlowMapping(state, level, object) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + pairBuffer; + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + + pairBuffer = ''; + if (_result !== '') pairBuffer += ', '; + + if (state.condenseFlow) pairBuffer += '"'; + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } + + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } + + if (state.dump.length > 1024) pairBuffer += '? '; + + pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); + + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = '{' + _result + '}'; +} + +function writeBlockMapping(state, level, object, compact) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + explicitPair, + pairBuffer; + + // Allow sorting keys so that the output file is deterministic + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === 'function') { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new YAMLException('sortKeys must be a boolean or a function'); + } + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + + if (!compact || _result !== '') { + pairBuffer += generateNextLine(state, level); + } + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } + + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } + + explicitPair = (state.tag !== null && state.tag !== '?') || + (state.dump && state.dump.length > 1024); + + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += '?'; + } else { + pairBuffer += '? '; + } + } + + pairBuffer += state.dump; + + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } + + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ':'; + } else { + pairBuffer += ': '; + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = _result || '{}'; // Empty mapping if no valid pairs. +} + +function detectType(state, object, explicit) { + var _result, typeList, index, length, type, style; + + typeList = explicit ? state.explicitTypes : state.implicitTypes; + + for (index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; + + if ((type.instanceOf || type.predicate) && + (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && + (!type.predicate || type.predicate(object))) { + + if (explicit) { + if (type.multi && type.representName) { + state.tag = type.representName(object); + } else { + state.tag = type.tag; + } + } else { + state.tag = '?'; + } + + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + + if (_toString.call(type.represent) === '[object Function]') { + _result = type.represent(object, style); + } else if (_hasOwnProperty.call(type.represent, style)) { + _result = type.represent[style](object, style); + } else { + throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); + } + + state.dump = _result; + } + + return true; + } + } + + return false; +} + +// Serializes `object` and writes it to global `result`. +// Returns true on success, or false on invalid object. +// +function writeNode(state, level, object, block, compact, iskey, isblockseq) { + state.tag = null; + state.dump = object; + + if (!detectType(state, object, false)) { + detectType(state, object, true); + } + + var type = _toString.call(state.dump); + var inblock = block; + var tagStr; + + if (block) { + block = (state.flowLevel < 0 || state.flowLevel > level); + } + + var objectOrArray = type === '[object Object]' || type === '[object Array]', + duplicateIndex, + duplicate; + + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } + + if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { + compact = false; + } + + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = '*ref_' + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + if (type === '[object Object]') { + if (block && (Object.keys(state.dump).length !== 0)) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object Array]') { + if (block && (state.dump.length !== 0)) { + if (state.noArrayIndent && !isblockseq && level > 0) { + writeBlockSequence(state, level - 1, state.dump, compact); + } else { + writeBlockSequence(state, level, state.dump, compact); + } + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowSequence(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object String]') { + if (state.tag !== '?') { + writeScalar(state, state.dump, level, iskey, inblock); + } + } else if (type === '[object Undefined]') { + return false; + } else { + if (state.skipInvalid) return false; + throw new YAMLException('unacceptable kind of an object to dump ' + type); + } + + if (state.tag !== null && state.tag !== '?') { + // Need to encode all characters except those allowed by the spec: + // + // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */ + // [36] ns-hex-digit ::= ns-dec-digit + // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */ + // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */ + // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-” + // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#” + // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,” + // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]” + // + // Also need to encode '!' because it has special meaning (end of tag prefix). + // + tagStr = encodeURI( + state.tag[0] === '!' ? state.tag.slice(1) : state.tag + ).replace(/!/g, '%21'); + + if (state.tag[0] === '!') { + tagStr = '!' + tagStr; + } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') { + tagStr = '!!' + tagStr.slice(18); + } else { + tagStr = '!<' + tagStr + '>'; + } + + state.dump = tagStr + ' ' + state.dump; + } + } + + return true; +} + +function getDuplicateReferences(object, state) { + var objects = [], + duplicatesIndexes = [], + index, + length; + + inspectNode(object, objects, duplicatesIndexes); + + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + state.usedDuplicates = new Array(length); +} + +function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, + index, + length; + + if (object !== null && typeof object === 'object') { + index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); + + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + } + } + } + } +} + +function dump(input, options) { + options = options || {}; + + var state = new State(options); + + if (!state.noRefs) getDuplicateReferences(input, state); + + var value = input; + + if (state.replacer) { + value = state.replacer.call({ '': value }, '', value); + } + + if (writeNode(state, 0, value, true, true)) return state.dump + '\n'; + + return ''; +} + +module.exports.dump = dump; diff --git a/node_modules/js-yaml/lib/exception.js b/node_modules/js-yaml/lib/exception.js new file mode 100644 index 0000000..7f62daa --- /dev/null +++ b/node_modules/js-yaml/lib/exception.js @@ -0,0 +1,55 @@ +// YAML error class. http://stackoverflow.com/questions/8458984 +// +'use strict'; + + +function formatError(exception, compact) { + var where = '', message = exception.reason || '(unknown reason)'; + + if (!exception.mark) return message; + + if (exception.mark.name) { + where += 'in "' + exception.mark.name + '" '; + } + + where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')'; + + if (!compact && exception.mark.snippet) { + where += '\n\n' + exception.mark.snippet; + } + + return message + ' ' + where; +} + + +function YAMLException(reason, mark) { + // Super constructor + Error.call(this); + + this.name = 'YAMLException'; + this.reason = reason; + this.mark = mark; + this.message = formatError(this, false); + + // Include stack trace in error object + if (Error.captureStackTrace) { + // Chrome and NodeJS + Error.captureStackTrace(this, this.constructor); + } else { + // FF, IE 10+ and Safari 6+. Fallback for others + this.stack = (new Error()).stack || ''; + } +} + + +// Inherit from Error +YAMLException.prototype = Object.create(Error.prototype); +YAMLException.prototype.constructor = YAMLException; + + +YAMLException.prototype.toString = function toString(compact) { + return this.name + ': ' + formatError(this, compact); +}; + + +module.exports = YAMLException; diff --git a/node_modules/js-yaml/lib/loader.js b/node_modules/js-yaml/lib/loader.js new file mode 100644 index 0000000..39f13f5 --- /dev/null +++ b/node_modules/js-yaml/lib/loader.js @@ -0,0 +1,1727 @@ +'use strict'; + +/*eslint-disable max-len,no-use-before-define*/ + +var common = require('./common'); +var YAMLException = require('./exception'); +var makeSnippet = require('./snippet'); +var DEFAULT_SCHEMA = require('./schema/default'); + + +var _hasOwnProperty = Object.prototype.hasOwnProperty; + + +var CONTEXT_FLOW_IN = 1; +var CONTEXT_FLOW_OUT = 2; +var CONTEXT_BLOCK_IN = 3; +var CONTEXT_BLOCK_OUT = 4; + + +var CHOMPING_CLIP = 1; +var CHOMPING_STRIP = 2; +var CHOMPING_KEEP = 3; + + +var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + + +function _class(obj) { return Object.prototype.toString.call(obj); } + +function is_EOL(c) { + return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); +} + +function is_WHITE_SPACE(c) { + return (c === 0x09/* Tab */) || (c === 0x20/* Space */); +} + +function is_WS_OR_EOL(c) { + return (c === 0x09/* Tab */) || + (c === 0x20/* Space */) || + (c === 0x0A/* LF */) || + (c === 0x0D/* CR */); +} + +function is_FLOW_INDICATOR(c) { + return c === 0x2C/* , */ || + c === 0x5B/* [ */ || + c === 0x5D/* ] */ || + c === 0x7B/* { */ || + c === 0x7D/* } */; +} + +function fromHexCode(c) { + var lc; + + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + /*eslint-disable no-bitwise*/ + lc = c | 0x20; + + if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { + return lc - 0x61 + 10; + } + + return -1; +} + +function escapedHexLen(c) { + if (c === 0x78/* x */) { return 2; } + if (c === 0x75/* u */) { return 4; } + if (c === 0x55/* U */) { return 8; } + return 0; +} + +function fromDecimalCode(c) { + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + return -1; +} + +function simpleEscapeSequence(c) { + /* eslint-disable indent */ + return (c === 0x30/* 0 */) ? '\x00' : + (c === 0x61/* a */) ? '\x07' : + (c === 0x62/* b */) ? '\x08' : + (c === 0x74/* t */) ? '\x09' : + (c === 0x09/* Tab */) ? '\x09' : + (c === 0x6E/* n */) ? '\x0A' : + (c === 0x76/* v */) ? '\x0B' : + (c === 0x66/* f */) ? '\x0C' : + (c === 0x72/* r */) ? '\x0D' : + (c === 0x65/* e */) ? '\x1B' : + (c === 0x20/* Space */) ? ' ' : + (c === 0x22/* " */) ? '\x22' : + (c === 0x2F/* / */) ? '/' : + (c === 0x5C/* \ */) ? '\x5C' : + (c === 0x4E/* N */) ? '\x85' : + (c === 0x5F/* _ */) ? '\xA0' : + (c === 0x4C/* L */) ? '\u2028' : + (c === 0x50/* P */) ? '\u2029' : ''; +} + +function charFromCodepoint(c) { + if (c <= 0xFFFF) { + return String.fromCharCode(c); + } + // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode( + ((c - 0x010000) >> 10) + 0xD800, + ((c - 0x010000) & 0x03FF) + 0xDC00 + ); +} + +var simpleEscapeCheck = new Array(256); // integer, for fast access +var simpleEscapeMap = new Array(256); +for (var i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} + + +function State(input, options) { + this.input = input; + + this.filename = options['filename'] || null; + this.schema = options['schema'] || DEFAULT_SCHEMA; + this.onWarning = options['onWarning'] || null; + // (Hidden) Remove? makes the loader to expect YAML 1.1 documents + // if such documents have no explicit %YAML directive + this.legacy = options['legacy'] || false; + + this.json = options['json'] || false; + this.listener = options['listener'] || null; + + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; + + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; + + // position of first leading tab in the current line, + // used to make sure there are no tabs in the indentation + this.firstTabInLine = -1; + + this.documents = []; + + /* + this.version; + this.checkLineBreaks; + this.tagMap; + this.anchorMap; + this.tag; + this.anchor; + this.kind; + this.result;*/ + +} + + +function generateError(state, message) { + var mark = { + name: state.filename, + buffer: state.input.slice(0, -1), // omit trailing \0 + position: state.position, + line: state.line, + column: state.position - state.lineStart + }; + + mark.snippet = makeSnippet(mark); + + return new YAMLException(message, mark); +} + +function throwError(state, message) { + throw generateError(state, message); +} + +function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); + } +} + + +var directiveHandlers = { + + YAML: function handleYamlDirective(state, name, args) { + + var match, major, minor; + + if (state.version !== null) { + throwError(state, 'duplication of %YAML directive'); + } + + if (args.length !== 1) { + throwError(state, 'YAML directive accepts exactly one argument'); + } + + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + + if (match === null) { + throwError(state, 'ill-formed argument of the YAML directive'); + } + + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); + + if (major !== 1) { + throwError(state, 'unacceptable YAML version of the document'); + } + + state.version = args[0]; + state.checkLineBreaks = (minor < 2); + + if (minor !== 1 && minor !== 2) { + throwWarning(state, 'unsupported YAML version of the document'); + } + }, + + TAG: function handleTagDirective(state, name, args) { + + var handle, prefix; + + if (args.length !== 2) { + throwError(state, 'TAG directive accepts exactly two arguments'); + } + + handle = args[0]; + prefix = args[1]; + + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + } + + if (_hasOwnProperty.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + } + + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + } + + try { + prefix = decodeURIComponent(prefix); + } catch (err) { + throwError(state, 'tag prefix is malformed: ' + prefix); + } + + state.tagMap[handle] = prefix; + } +}; + + +function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; + + if (start < end) { + _result = state.input.slice(start, end); + + if (checkJson) { + for (_position = 0, _length = _result.length; _position < _length; _position += 1) { + _character = _result.charCodeAt(_position); + if (!(_character === 0x09 || + (0x20 <= _character && _character <= 0x10FFFF))) { + throwError(state, 'expected valid JSON character'); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, 'the stream contains non-printable characters'); + } + + state.result += _result; + } +} + +function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; + + if (!common.isObject(source)) { + throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); + } + + sourceKeys = Object.keys(source); + + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; + + if (!_hasOwnProperty.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; + } + } +} + +function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, + startLine, startLineStart, startPos) { + + var index, quantity; + + // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); + + for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { + if (Array.isArray(keyNode[index])) { + throwError(state, 'nested arrays are not supported inside keys'); + } + + if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { + keyNode[index] = '[object Object]'; + } + } + } + + // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { + keyNode = '[object Object]'; + } + + + keyNode = String(keyNode); + + if (_result === null) { + _result = {}; + } + + if (keyTag === 'tag:yaml.org,2002:merge') { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, _result, valueNode, overridableKeys); + } + } else { + if (!state.json && + !_hasOwnProperty.call(overridableKeys, keyNode) && + _hasOwnProperty.call(_result, keyNode)) { + state.line = startLine || state.line; + state.lineStart = startLineStart || state.lineStart; + state.position = startPos || state.position; + throwError(state, 'duplicated mapping key'); + } + + // used for this specific key only because Object.defineProperty is slow + if (keyNode === '__proto__') { + Object.defineProperty(_result, keyNode, { + configurable: true, + enumerable: true, + writable: true, + value: valueNode + }); + } else { + _result[keyNode] = valueNode; + } + delete overridableKeys[keyNode]; + } + + return _result; +} + +function readLineBreak(state) { + var ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x0A/* LF */) { + state.position++; + } else if (ch === 0x0D/* CR */) { + state.position++; + if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { + state.position++; + } + } else { + throwError(state, 'a line break is expected'); + } + + state.line += 1; + state.lineStart = state.position; + state.firstTabInLine = -1; +} + +function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) { + state.firstTabInLine = state.position; + } + ch = state.input.charCodeAt(++state.position); + } + + if (allowComments && ch === 0x23/* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); + } + + if (is_EOL(ch)) { + readLineBreak(state); + + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; + + while (ch === 0x20/* Space */) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } + + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, 'deficient indentation'); + } + + return lineBreaks; +} + +function testDocumentSeparator(state) { + var _position = state.position, + ch; + + ch = state.input.charCodeAt(_position); + + // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && + ch === state.input.charCodeAt(_position + 1) && + ch === state.input.charCodeAt(_position + 2)) { + + _position += 3; + + ch = state.input.charCodeAt(_position); + + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; + } + } + + return false; +} + +function writeFoldedLines(state, count) { + if (count === 1) { + state.result += ' '; + } else if (count > 1) { + state.result += common.repeat('\n', count - 1); + } +} + + +function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, + following, + captureStart, + captureEnd, + hasPendingContent, + _line, + _lineStart, + _lineIndent, + _kind = state.kind, + _result = state.result, + ch; + + ch = state.input.charCodeAt(state.position); + + if (is_WS_OR_EOL(ch) || + is_FLOW_INDICATOR(ch) || + ch === 0x23/* # */ || + ch === 0x26/* & */ || + ch === 0x2A/* * */ || + ch === 0x21/* ! */ || + ch === 0x7C/* | */ || + ch === 0x3E/* > */ || + ch === 0x27/* ' */ || + ch === 0x22/* " */ || + ch === 0x25/* % */ || + ch === 0x40/* @ */ || + ch === 0x60/* ` */) { + return false; + } + + if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; + } + } + + state.kind = 'scalar'; + state.result = ''; + captureStart = captureEnd = state.position; + hasPendingContent = false; + + while (ch !== 0) { + if (ch === 0x3A/* : */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } + + } else if (ch === 0x23/* # */) { + preceding = state.input.charCodeAt(state.position - 1); + + if (is_WS_OR_EOL(preceding)) { + break; + } + + } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || + withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; + + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; + } + } + + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } + + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; + } + + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, captureEnd, false); + + if (state.result) { + return true; + } + + state.kind = _kind; + state.result = _result; + return false; +} + +function readSingleQuotedScalar(state, nodeIndent) { + var ch, + captureStart, captureEnd; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x27/* ' */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27/* ' */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x27/* ' */) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a single quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a single quoted scalar'); +} + +function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, + captureEnd, + hexLength, + hexResult, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x22/* " */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22/* " */) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; + + } else if (ch === 0x5C/* \ */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); + + // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; + + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + + } else { + throwError(state, 'expected hexadecimal character'); + } + } + + state.result += charFromCodepoint(hexResult); + + state.position++; + + } else { + throwError(state, 'unknown escape sequence'); + } + + captureStart = captureEnd = state.position; + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a double quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a double quoted scalar'); +} + +function readFlowCollection(state, nodeIndent) { + var readNext = true, + _line, + _lineStart, + _pos, + _tag = state.tag, + _result, + _anchor = state.anchor, + following, + terminator, + isPair, + isExplicitPair, + isMapping, + overridableKeys = Object.create(null), + keyNode, + keyTag, + valueNode, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x5B/* [ */) { + terminator = 0x5D;/* ] */ + isMapping = false; + _result = []; + } else if (ch === 0x7B/* { */) { + terminator = 0x7D;/* } */ + isMapping = true; + _result = {}; + } else { + return false; + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(++state.position); + + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? 'mapping' : 'sequence'; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, 'missed comma between flow collection entries'); + } else if (ch === 0x2C/* , */) { + // "flow collection entries can never be completely empty", as per YAML 1.2, section 7.4 + throwError(state, "expected the node content, but found ','"); + } + + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + + if (ch === 0x3F/* ? */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } + + _line = state.line; // Save the current line. + _lineStart = state.lineStart; + _pos = state.position; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } + + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); + } else { + _result.push(keyNode); + } + + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x2C/* , */) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } + } + + throwError(state, 'unexpected end of the stream within a flow collection'); +} + +function readBlockScalar(state, nodeIndent) { + var captureStart, + folding, + chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x7C/* | */) { + folding = false; + } else if (ch === 0x3E/* > */) { + folding = true; + } else { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { + if (CHOMPING_CLIP === chomping) { + chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); + } + + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throwError(state, 'repeat of an indentation width identifier'); + } + + } else { + break; + } + } + + if (is_WHITE_SPACE(ch)) { + do { ch = state.input.charCodeAt(++state.position); } + while (is_WHITE_SPACE(ch)); + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (!is_EOL(ch) && (ch !== 0)); + } + } + + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; + + ch = state.input.charCodeAt(state.position); + + while ((!detectedIndent || state.lineIndent < textIndent) && + (ch === 0x20/* Space */)) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } + + if (is_EOL(ch)) { + emptyLines++; + continue; + } + + // End of the scalar. + if (state.lineIndent < textIndent) { + + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { // i.e. only if the scalar is not empty. + state.result += '\n'; + } + } + + // Break this `while` cycle and go to the funciton's epilogue. + break; + } + + // Folded style: use fancy rules to handle line breaks. + if (folding) { + + // Lines starting with white space characters (more-indented lines) are not folded. + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat('\n', emptyLines + 1); + + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { // i.e. only if we have already read some scalar content. + state.result += ' '; + } + + // Several line breaks - perceive as different lines. + } else { + state.result += common.repeat('\n', emptyLines); + } + + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } + + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; + + while (!is_EOL(ch) && (ch !== 0)) { + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, state.position, false); + } + + return true; +} + +function readBlockSequence(state, nodeIndent) { + var _line, + _tag = state.tag, + _anchor = state.anchor, + _result = [], + following, + detected = false, + ch; + + // there is a leading tab before this token, so it can't be a block sequence/mapping; + // it can still be flow sequence/mapping or a scalar + if (state.firstTabInLine !== -1) return false; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, 'tab characters must not be used in indentation'); + } + + if (ch !== 0x2D/* - */) { + break; + } + + following = state.input.charCodeAt(state.position + 1); + + if (!is_WS_OR_EOL(following)) { + break; + } + + detected = true; + state.position++; + + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + ch = state.input.charCodeAt(state.position); + continue; + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state.result); + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a sequence entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'sequence'; + state.result = _result; + return true; + } + return false; +} + +function readBlockMapping(state, nodeIndent, flowIndent) { + var following, + allowCompact, + _line, + _keyLine, + _keyLineStart, + _keyPos, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, + overridableKeys = Object.create(null), + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch; + + // there is a leading tab before this token, so it can't be a block sequence/mapping; + // it can still be flow sequence/mapping or a scalar + if (state.firstTabInLine !== -1) return false; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (!atExplicitKey && state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, 'tab characters must not be used in indentation'); + } + + following = state.input.charCodeAt(state.position + 1); + _line = state.line; // Save the current line. + + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { + + if (ch === 0x3F/* ? */) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = true; + allowCompact = true; + + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + + } else { + throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); + } + + state.position += 1; + ch = following; + + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + + if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + // Neither implicit nor explicit notation. + // Reading is done. Go to the epilogue. + break; + } + + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); + + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x3A/* : */) { + ch = state.input.charCodeAt(++state.position); + + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } + + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + + } else if (detected) { + throwError(state, 'can not read an implicit mapping pair; a colon is missed'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + + } else if (detected) { + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + } + + // + // Common reading code for both explicit and implicit notations. + // + if (state.line === _line || state.lineIndent > nodeIndent) { + if (atExplicitKey) { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + } + + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } + + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a mapping entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + // + // Epilogue. + // + + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + } + + // Expose the resulting mapping. + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'mapping'; + state.result = _result; + } + + return detected; +} + +function readTagProperty(state) { + var _position, + isVerbatim = false, + isNamed = false, + tagHandle, + tagName, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x21/* ! */) return false; + + if (state.tag !== null) { + throwError(state, 'duplication of a tag property'); + } + + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x3C/* < */) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + + } else if (ch === 0x21/* ! */) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); + + } else { + tagHandle = '!'; + } + + _position = state.position; + + if (isVerbatim) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && ch !== 0x3E/* > */); + + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, 'unexpected end of the stream within a verbatim tag'); + } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + + if (ch === 0x21/* ! */) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); + + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } + + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); + } + } + + ch = state.input.charCodeAt(++state.position); + } + + tagName = state.input.slice(_position, state.position); + + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, 'tag suffix cannot contain flow indicator characters'); + } + } + + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, 'tag name cannot contain such characters: ' + tagName); + } + + try { + tagName = decodeURIComponent(tagName); + } catch (err) { + throwError(state, 'tag name is malformed: ' + tagName); + } + + if (isVerbatim) { + state.tag = tagName; + + } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; + + } else if (tagHandle === '!') { + state.tag = '!' + tagName; + + } else if (tagHandle === '!!') { + state.tag = 'tag:yaml.org,2002:' + tagName; + + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + } + + return true; +} + +function readAnchorProperty(state) { + var _position, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x26/* & */) return false; + + if (state.anchor !== null) { + throwError(state, 'duplication of an anchor property'); + } + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an anchor node must contain at least one character'); + } + + state.anchor = state.input.slice(_position, state.position); + return true; +} + +function readAlias(state) { + var _position, alias, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x2A/* * */) return false; + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an alias node must contain at least one character'); + } + + alias = state.input.slice(_position, state.position); + + if (!_hasOwnProperty.call(state.anchorMap, alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); + } + + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; +} + +function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, + allowBlockScalars, + allowBlockCollections, + indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } + + blockIndent = state.position - state.lineStart; + + if (indentStatus === 1) { + if (allowBlockCollections && + (readBlockSequence(state, blockIndent) || + readBlockMapping(state, blockIndent, flowIndent)) || + readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || + readSingleQuotedScalar(state, flowIndent) || + readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; + + } else if (readAlias(state)) { + hasContent = true; + + if (state.tag !== null || state.anchor !== null) { + throwError(state, 'alias node should not have any properties'); + } + + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; + + if (state.tag === null) { + state.tag = '?'; + } + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + } + } + + if (state.tag === null) { + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + + } else if (state.tag === '?') { + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only automatically assigned to plain scalars. + // + // We only need to check kind conformity in case user explicitly assigns '?' + // tag, for example like this: "! [0]" + // + if (state.result !== null && state.kind !== 'scalar') { + throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); + } + + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type = state.implicitTypes[typeIndex]; + + if (type.resolve(state.result)) { // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if (state.tag !== '!') { + if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { + type = state.typeMap[state.kind || 'fallback'][state.tag]; + } else { + // looking for multi type + type = null; + typeList = state.typeMap.multi[state.kind || 'fallback']; + + for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { + if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { + type = typeList[typeIndex]; + break; + } + } + } + + if (!type) { + throwError(state, 'unknown tag !<' + state.tag + '>'); + } + + if (state.result !== null && type.kind !== state.kind) { + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + } + + if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + } else { + state.result = type.construct(state.result, state.tag); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } + + if (state.listener !== null) { + state.listener('close', state); + } + return state.tag !== null || state.anchor !== null || hasContent; +} + +function readDocument(state) { + var documentStart = state.position, + _position, + directiveName, + directiveArgs, + hasDirectives = false, + ch; + + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = Object.create(null); + state.anchorMap = Object.create(null); + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if (state.lineIndent > 0 || ch !== 0x25/* % */) { + break; + } + + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; + + if (directiveName.length < 1) { + throwError(state, 'directive name must not be less than one character in length'); + } + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && !is_EOL(ch)); + break; + } + + if (is_EOL(ch)) break; + + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveArgs.push(state.input.slice(_position, state.position)); + } + + if (ch !== 0) readLineBreak(state); + + if (_hasOwnProperty.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); + } + } + + skipSeparationSpace(state, true, -1); + + if (state.lineIndent === 0 && + state.input.charCodeAt(state.position) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + + } else if (hasDirectives) { + throwError(state, 'directives end mark is expected'); + } + + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); + + if (state.checkLineBreaks && + PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + } + + state.documents.push(state.result); + + if (state.position === state.lineStart && testDocumentSeparator(state)) { + + if (state.input.charCodeAt(state.position) === 0x2E/* . */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + return; + } + + if (state.position < (state.length - 1)) { + throwError(state, 'end of the stream or a document separator is expected'); + } else { + return; + } +} + + +function loadDocuments(input, options) { + input = String(input); + options = options || {}; + + if (input.length !== 0) { + + // Add tailing `\n` if not exists + if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && + input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { + input += '\n'; + } + + // Strip BOM + if (input.charCodeAt(0) === 0xFEFF) { + input = input.slice(1); + } + } + + var state = new State(input, options); + + var nullpos = input.indexOf('\0'); + + if (nullpos !== -1) { + state.position = nullpos; + throwError(state, 'null byte is not allowed in input'); + } + + // Use 0 as string terminator. That significantly simplifies bounds check. + state.input += '\0'; + + while (state.input.charCodeAt(state.position) === 0x20/* Space */) { + state.lineIndent += 1; + state.position += 1; + } + + while (state.position < (state.length - 1)) { + readDocument(state); + } + + return state.documents; +} + + +function loadAll(input, iterator, options) { + if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { + options = iterator; + iterator = null; + } + + var documents = loadDocuments(input, options); + + if (typeof iterator !== 'function') { + return documents; + } + + for (var index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } +} + + +function load(input, options) { + var documents = loadDocuments(input, options); + + if (documents.length === 0) { + /*eslint-disable no-undefined*/ + return undefined; + } else if (documents.length === 1) { + return documents[0]; + } + throw new YAMLException('expected a single document in the stream, but found more'); +} + + +module.exports.loadAll = loadAll; +module.exports.load = load; diff --git a/node_modules/js-yaml/lib/schema.js b/node_modules/js-yaml/lib/schema.js new file mode 100644 index 0000000..65b41f4 --- /dev/null +++ b/node_modules/js-yaml/lib/schema.js @@ -0,0 +1,121 @@ +'use strict'; + +/*eslint-disable max-len*/ + +var YAMLException = require('./exception'); +var Type = require('./type'); + + +function compileList(schema, name) { + var result = []; + + schema[name].forEach(function (currentType) { + var newIndex = result.length; + + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && + previousType.kind === currentType.kind && + previousType.multi === currentType.multi) { + + newIndex = previousIndex; + } + }); + + result[newIndex] = currentType; + }); + + return result; +} + + +function compileMap(/* lists... */) { + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {}, + multi: { + scalar: [], + sequence: [], + mapping: [], + fallback: [] + } + }, index, length; + + function collectType(type) { + if (type.multi) { + result.multi[type.kind].push(type); + result.multi['fallback'].push(type); + } else { + result[type.kind][type.tag] = result['fallback'][type.tag] = type; + } + } + + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + return result; +} + + +function Schema(definition) { + return this.extend(definition); +} + + +Schema.prototype.extend = function extend(definition) { + var implicit = []; + var explicit = []; + + if (definition instanceof Type) { + // Schema.extend(type) + explicit.push(definition); + + } else if (Array.isArray(definition)) { + // Schema.extend([ type1, type2, ... ]) + explicit = explicit.concat(definition); + + } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { + // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] }) + if (definition.implicit) implicit = implicit.concat(definition.implicit); + if (definition.explicit) explicit = explicit.concat(definition.explicit); + + } else { + throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' + + 'or a schema definition ({ implicit: [...], explicit: [...] })'); + } + + implicit.forEach(function (type) { + if (!(type instanceof Type)) { + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + + if (type.loadKind && type.loadKind !== 'scalar') { + throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + } + + if (type.multi) { + throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.'); + } + }); + + explicit.forEach(function (type) { + if (!(type instanceof Type)) { + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + }); + + var result = Object.create(Schema.prototype); + + result.implicit = (this.implicit || []).concat(implicit); + result.explicit = (this.explicit || []).concat(explicit); + + result.compiledImplicit = compileList(result, 'implicit'); + result.compiledExplicit = compileList(result, 'explicit'); + result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); + + return result; +}; + + +module.exports = Schema; diff --git a/node_modules/js-yaml/lib/schema/core.js b/node_modules/js-yaml/lib/schema/core.js new file mode 100644 index 0000000..608b26d --- /dev/null +++ b/node_modules/js-yaml/lib/schema/core.js @@ -0,0 +1,11 @@ +// Standard YAML's Core schema. +// http://www.yaml.org/spec/1.2/spec.html#id2804923 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, Core schema has no distinctions from JSON schema is JS-YAML. + + +'use strict'; + + +module.exports = require('./json'); diff --git a/node_modules/js-yaml/lib/schema/default.js b/node_modules/js-yaml/lib/schema/default.js new file mode 100644 index 0000000..3af0520 --- /dev/null +++ b/node_modules/js-yaml/lib/schema/default.js @@ -0,0 +1,22 @@ +// JS-YAML's default schema for `safeLoad` function. +// It is not described in the YAML specification. +// +// This schema is based on standard YAML's Core schema and includes most of +// extra types described at YAML tag repository. (http://yaml.org/type/) + + +'use strict'; + + +module.exports = require('./core').extend({ + implicit: [ + require('../type/timestamp'), + require('../type/merge') + ], + explicit: [ + require('../type/binary'), + require('../type/omap'), + require('../type/pairs'), + require('../type/set') + ] +}); diff --git a/node_modules/js-yaml/lib/schema/failsafe.js b/node_modules/js-yaml/lib/schema/failsafe.js new file mode 100644 index 0000000..b7a33eb --- /dev/null +++ b/node_modules/js-yaml/lib/schema/failsafe.js @@ -0,0 +1,17 @@ +// Standard YAML's Failsafe schema. +// http://www.yaml.org/spec/1.2/spec.html#id2802346 + + +'use strict'; + + +var Schema = require('../schema'); + + +module.exports = new Schema({ + explicit: [ + require('../type/str'), + require('../type/seq'), + require('../type/map') + ] +}); diff --git a/node_modules/js-yaml/lib/schema/json.js b/node_modules/js-yaml/lib/schema/json.js new file mode 100644 index 0000000..b73df78 --- /dev/null +++ b/node_modules/js-yaml/lib/schema/json.js @@ -0,0 +1,19 @@ +// Standard YAML's JSON schema. +// http://www.yaml.org/spec/1.2/spec.html#id2803231 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, this schema is not such strict as defined in the YAML specification. +// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. + + +'use strict'; + + +module.exports = require('./failsafe').extend({ + implicit: [ + require('../type/null'), + require('../type/bool'), + require('../type/int'), + require('../type/float') + ] +}); diff --git a/node_modules/js-yaml/lib/snippet.js b/node_modules/js-yaml/lib/snippet.js new file mode 100644 index 0000000..00e2133 --- /dev/null +++ b/node_modules/js-yaml/lib/snippet.js @@ -0,0 +1,101 @@ +'use strict'; + + +var common = require('./common'); + + +// get snippet for a single line, respecting maxLength +function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { + var head = ''; + var tail = ''; + var maxHalfLength = Math.floor(maxLineLength / 2) - 1; + + if (position - lineStart > maxHalfLength) { + head = ' ... '; + lineStart = position - maxHalfLength + head.length; + } + + if (lineEnd - position > maxHalfLength) { + tail = ' ...'; + lineEnd = position + maxHalfLength - tail.length; + } + + return { + str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, '→') + tail, + pos: position - lineStart + head.length // relative position + }; +} + + +function padStart(string, max) { + return common.repeat(' ', max - string.length) + string; +} + + +function makeSnippet(mark, options) { + options = Object.create(options || null); + + if (!mark.buffer) return null; + + if (!options.maxLength) options.maxLength = 79; + if (typeof options.indent !== 'number') options.indent = 1; + if (typeof options.linesBefore !== 'number') options.linesBefore = 3; + if (typeof options.linesAfter !== 'number') options.linesAfter = 2; + + var re = /\r?\n|\r|\0/g; + var lineStarts = [ 0 ]; + var lineEnds = []; + var match; + var foundLineNo = -1; + + while ((match = re.exec(mark.buffer))) { + lineEnds.push(match.index); + lineStarts.push(match.index + match[0].length); + + if (mark.position <= match.index && foundLineNo < 0) { + foundLineNo = lineStarts.length - 2; + } + } + + if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; + + var result = '', i, line; + var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; + var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); + + for (i = 1; i <= options.linesBefore; i++) { + if (foundLineNo - i < 0) break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo - i], + lineEnds[foundLineNo - i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), + maxLineLength + ); + result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n' + result; + } + + line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); + result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n'; + result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\n'; + + for (i = 1; i <= options.linesAfter; i++) { + if (foundLineNo + i >= lineEnds.length) break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo + i], + lineEnds[foundLineNo + i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), + maxLineLength + ); + result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n'; + } + + return result.replace(/\n$/, ''); +} + + +module.exports = makeSnippet; diff --git a/node_modules/js-yaml/lib/type.js b/node_modules/js-yaml/lib/type.js new file mode 100644 index 0000000..5e57877 --- /dev/null +++ b/node_modules/js-yaml/lib/type.js @@ -0,0 +1,66 @@ +'use strict'; + +var YAMLException = require('./exception'); + +var TYPE_CONSTRUCTOR_OPTIONS = [ + 'kind', + 'multi', + 'resolve', + 'construct', + 'instanceOf', + 'predicate', + 'represent', + 'representName', + 'defaultStyle', + 'styleAliases' +]; + +var YAML_NODE_KINDS = [ + 'scalar', + 'sequence', + 'mapping' +]; + +function compileStyleAliases(map) { + var result = {}; + + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); + } + + return result; +} + +function Type(tag, options) { + options = options || {}; + + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + } + }); + + // TODO: Add tag format check. + this.options = options; // keep original options in case user wants to extend this type later + this.tag = tag; + this.kind = options['kind'] || null; + this.resolve = options['resolve'] || function () { return true; }; + this.construct = options['construct'] || function (data) { return data; }; + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.representName = options['representName'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.multi = options['multi'] || false; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } +} + +module.exports = Type; diff --git a/node_modules/js-yaml/lib/type/binary.js b/node_modules/js-yaml/lib/type/binary.js new file mode 100644 index 0000000..e152351 --- /dev/null +++ b/node_modules/js-yaml/lib/type/binary.js @@ -0,0 +1,125 @@ +'use strict'; + +/*eslint-disable no-bitwise*/ + + +var Type = require('../type'); + + +// [ 64, 65, 66 ] -> [ padding, CR, LF ] +var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; + + +function resolveYamlBinary(data) { + if (data === null) return false; + + var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; + + // Convert one by one. + for (idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); + + // Skip CR/LF + if (code > 64) continue; + + // Fail on illegal characters + if (code < 0) return false; + + bitlen += 6; + } + + // If there are any bits left, source was corrupted + return (bitlen % 8) === 0; +} + +function constructYamlBinary(data) { + var idx, tailbits, + input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan + max = input.length, + map = BASE64_MAP, + bits = 0, + result = []; + + // Collect by 6*4 bits (3 bytes) + + for (idx = 0; idx < max; idx++) { + if ((idx % 4 === 0) && idx) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } + + bits = (bits << 6) | map.indexOf(input.charAt(idx)); + } + + // Dump tail + + tailbits = (max % 4) * 6; + + if (tailbits === 0) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } else if (tailbits === 18) { + result.push((bits >> 10) & 0xFF); + result.push((bits >> 2) & 0xFF); + } else if (tailbits === 12) { + result.push((bits >> 4) & 0xFF); + } + + return new Uint8Array(result); +} + +function representYamlBinary(object /*, style*/) { + var result = '', bits = 0, idx, tail, + max = object.length, + map = BASE64_MAP; + + // Convert every three bytes to 4 ASCII characters. + + for (idx = 0; idx < max; idx++) { + if ((idx % 3 === 0) && idx) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } + + bits = (bits << 8) + object[idx]; + } + + // Dump tail + + tail = max % 3; + + if (tail === 0) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } else if (tail === 2) { + result += map[(bits >> 10) & 0x3F]; + result += map[(bits >> 4) & 0x3F]; + result += map[(bits << 2) & 0x3F]; + result += map[64]; + } else if (tail === 1) { + result += map[(bits >> 2) & 0x3F]; + result += map[(bits << 4) & 0x3F]; + result += map[64]; + result += map[64]; + } + + return result; +} + +function isBinary(obj) { + return Object.prototype.toString.call(obj) === '[object Uint8Array]'; +} + +module.exports = new Type('tag:yaml.org,2002:binary', { + kind: 'scalar', + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary +}); diff --git a/node_modules/js-yaml/lib/type/bool.js b/node_modules/js-yaml/lib/type/bool.js new file mode 100644 index 0000000..cb77459 --- /dev/null +++ b/node_modules/js-yaml/lib/type/bool.js @@ -0,0 +1,35 @@ +'use strict'; + +var Type = require('../type'); + +function resolveYamlBoolean(data) { + if (data === null) return false; + + var max = data.length; + + return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || + (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); +} + +function constructYamlBoolean(data) { + return data === 'true' || + data === 'True' || + data === 'TRUE'; +} + +function isBoolean(object) { + return Object.prototype.toString.call(object) === '[object Boolean]'; +} + +module.exports = new Type('tag:yaml.org,2002:bool', { + kind: 'scalar', + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function (object) { return object ? 'true' : 'false'; }, + uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, + camelcase: function (object) { return object ? 'True' : 'False'; } + }, + defaultStyle: 'lowercase' +}); diff --git a/node_modules/js-yaml/lib/type/float.js b/node_modules/js-yaml/lib/type/float.js new file mode 100644 index 0000000..74d77ec --- /dev/null +++ b/node_modules/js-yaml/lib/type/float.js @@ -0,0 +1,97 @@ +'use strict'; + +var common = require('../common'); +var Type = require('../type'); + +var YAML_FLOAT_PATTERN = new RegExp( + // 2.5e4, 2.5 and integers + '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + + // .2e4, .2 + // special case, seems not from spec + '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + + // .inf + '|[-+]?\\.(?:inf|Inf|INF)' + + // .nan + '|\\.(?:nan|NaN|NAN))$'); + +function resolveYamlFloat(data) { + if (data === null) return false; + + if (!YAML_FLOAT_PATTERN.test(data) || + // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === '_') { + return false; + } + + return true; +} + +function constructYamlFloat(data) { + var value, sign; + + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; + + if ('+-'.indexOf(value[0]) >= 0) { + value = value.slice(1); + } + + if (value === '.inf') { + return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + + } else if (value === '.nan') { + return NaN; + } + return sign * parseFloat(value, 10); +} + + +var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + +function representYamlFloat(object, style) { + var res; + + if (isNaN(object)) { + switch (style) { + case 'lowercase': return '.nan'; + case 'uppercase': return '.NAN'; + case 'camelcase': return '.NaN'; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '.inf'; + case 'uppercase': return '.INF'; + case 'camelcase': return '.Inf'; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '-.inf'; + case 'uppercase': return '-.INF'; + case 'camelcase': return '-.Inf'; + } + } else if (common.isNegativeZero(object)) { + return '-0.0'; + } + + res = object.toString(10); + + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack + + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; +} + +function isFloat(object) { + return (Object.prototype.toString.call(object) === '[object Number]') && + (object % 1 !== 0 || common.isNegativeZero(object)); +} + +module.exports = new Type('tag:yaml.org,2002:float', { + kind: 'scalar', + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: 'lowercase' +}); diff --git a/node_modules/js-yaml/lib/type/int.js b/node_modules/js-yaml/lib/type/int.js new file mode 100644 index 0000000..3fe3a44 --- /dev/null +++ b/node_modules/js-yaml/lib/type/int.js @@ -0,0 +1,156 @@ +'use strict'; + +var common = require('../common'); +var Type = require('../type'); + +function isHexCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || + ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || + ((0x61/* a */ <= c) && (c <= 0x66/* f */)); +} + +function isOctCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); +} + +function isDecCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); +} + +function resolveYamlInteger(data) { + if (data === null) return false; + + var max = data.length, + index = 0, + hasDigits = false, + ch; + + if (!max) return false; + + ch = data[index]; + + // sign + if (ch === '-' || ch === '+') { + ch = data[++index]; + } + + if (ch === '0') { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; + + // base 2, base 8, base 16 + + if (ch === 'b') { + // base 2 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch !== '0' && ch !== '1') return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + + + if (ch === 'x') { + // base 16 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + + + if (ch === 'o') { + // base 8 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + } + + // base 10 (except 0) + + // value should not start with `_`; + if (ch === '_') return false; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } + + // Should have digits and should not end with `_` + if (!hasDigits || ch === '_') return false; + + return true; +} + +function constructYamlInteger(data) { + var value = data, sign = 1, ch; + + if (value.indexOf('_') !== -1) { + value = value.replace(/_/g, ''); + } + + ch = value[0]; + + if (ch === '-' || ch === '+') { + if (ch === '-') sign = -1; + value = value.slice(1); + ch = value[0]; + } + + if (value === '0') return 0; + + if (ch === '0') { + if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); + if (value[1] === 'x') return sign * parseInt(value.slice(2), 16); + if (value[1] === 'o') return sign * parseInt(value.slice(2), 8); + } + + return sign * parseInt(value, 10); +} + +function isInteger(object) { + return (Object.prototype.toString.call(object)) === '[object Number]' && + (object % 1 === 0 && !common.isNegativeZero(object)); +} + +module.exports = new Type('tag:yaml.org,2002:int', { + kind: 'scalar', + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, + octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); }, + decimal: function (obj) { return obj.toString(10); }, + /* eslint-disable max-len */ + hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } + }, + defaultStyle: 'decimal', + styleAliases: { + binary: [ 2, 'bin' ], + octal: [ 8, 'oct' ], + decimal: [ 10, 'dec' ], + hexadecimal: [ 16, 'hex' ] + } +}); diff --git a/node_modules/js-yaml/lib/type/map.js b/node_modules/js-yaml/lib/type/map.js new file mode 100644 index 0000000..f327bee --- /dev/null +++ b/node_modules/js-yaml/lib/type/map.js @@ -0,0 +1,8 @@ +'use strict'; + +var Type = require('../type'); + +module.exports = new Type('tag:yaml.org,2002:map', { + kind: 'mapping', + construct: function (data) { return data !== null ? data : {}; } +}); diff --git a/node_modules/js-yaml/lib/type/merge.js b/node_modules/js-yaml/lib/type/merge.js new file mode 100644 index 0000000..ae08a86 --- /dev/null +++ b/node_modules/js-yaml/lib/type/merge.js @@ -0,0 +1,12 @@ +'use strict'; + +var Type = require('../type'); + +function resolveYamlMerge(data) { + return data === '<<' || data === null; +} + +module.exports = new Type('tag:yaml.org,2002:merge', { + kind: 'scalar', + resolve: resolveYamlMerge +}); diff --git a/node_modules/js-yaml/lib/type/null.js b/node_modules/js-yaml/lib/type/null.js new file mode 100644 index 0000000..315ca4e --- /dev/null +++ b/node_modules/js-yaml/lib/type/null.js @@ -0,0 +1,35 @@ +'use strict'; + +var Type = require('../type'); + +function resolveYamlNull(data) { + if (data === null) return true; + + var max = data.length; + + return (max === 1 && data === '~') || + (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); +} + +function constructYamlNull() { + return null; +} + +function isNull(object) { + return object === null; +} + +module.exports = new Type('tag:yaml.org,2002:null', { + kind: 'scalar', + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function () { return '~'; }, + lowercase: function () { return 'null'; }, + uppercase: function () { return 'NULL'; }, + camelcase: function () { return 'Null'; }, + empty: function () { return ''; } + }, + defaultStyle: 'lowercase' +}); diff --git a/node_modules/js-yaml/lib/type/omap.js b/node_modules/js-yaml/lib/type/omap.js new file mode 100644 index 0000000..b2b5323 --- /dev/null +++ b/node_modules/js-yaml/lib/type/omap.js @@ -0,0 +1,44 @@ +'use strict'; + +var Type = require('../type'); + +var _hasOwnProperty = Object.prototype.hasOwnProperty; +var _toString = Object.prototype.toString; + +function resolveYamlOmap(data) { + if (data === null) return true; + + var objectKeys = [], index, length, pair, pairKey, pairHasKey, + object = data; + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; + + if (_toString.call(pair) !== '[object Object]') return false; + + for (pairKey in pair) { + if (_hasOwnProperty.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true; + else return false; + } + } + + if (!pairHasKey) return false; + + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); + else return false; + } + + return true; +} + +function constructYamlOmap(data) { + return data !== null ? data : []; +} + +module.exports = new Type('tag:yaml.org,2002:omap', { + kind: 'sequence', + resolve: resolveYamlOmap, + construct: constructYamlOmap +}); diff --git a/node_modules/js-yaml/lib/type/pairs.js b/node_modules/js-yaml/lib/type/pairs.js new file mode 100644 index 0000000..74b5240 --- /dev/null +++ b/node_modules/js-yaml/lib/type/pairs.js @@ -0,0 +1,53 @@ +'use strict'; + +var Type = require('../type'); + +var _toString = Object.prototype.toString; + +function resolveYamlPairs(data) { + if (data === null) return true; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + if (_toString.call(pair) !== '[object Object]') return false; + + keys = Object.keys(pair); + + if (keys.length !== 1) return false; + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return true; +} + +function constructYamlPairs(data) { + if (data === null) return []; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + keys = Object.keys(pair); + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return result; +} + +module.exports = new Type('tag:yaml.org,2002:pairs', { + kind: 'sequence', + resolve: resolveYamlPairs, + construct: constructYamlPairs +}); diff --git a/node_modules/js-yaml/lib/type/seq.js b/node_modules/js-yaml/lib/type/seq.js new file mode 100644 index 0000000..be8f77f --- /dev/null +++ b/node_modules/js-yaml/lib/type/seq.js @@ -0,0 +1,8 @@ +'use strict'; + +var Type = require('../type'); + +module.exports = new Type('tag:yaml.org,2002:seq', { + kind: 'sequence', + construct: function (data) { return data !== null ? data : []; } +}); diff --git a/node_modules/js-yaml/lib/type/set.js b/node_modules/js-yaml/lib/type/set.js new file mode 100644 index 0000000..f885a32 --- /dev/null +++ b/node_modules/js-yaml/lib/type/set.js @@ -0,0 +1,29 @@ +'use strict'; + +var Type = require('../type'); + +var _hasOwnProperty = Object.prototype.hasOwnProperty; + +function resolveYamlSet(data) { + if (data === null) return true; + + var key, object = data; + + for (key in object) { + if (_hasOwnProperty.call(object, key)) { + if (object[key] !== null) return false; + } + } + + return true; +} + +function constructYamlSet(data) { + return data !== null ? data : {}; +} + +module.exports = new Type('tag:yaml.org,2002:set', { + kind: 'mapping', + resolve: resolveYamlSet, + construct: constructYamlSet +}); diff --git a/node_modules/js-yaml/lib/type/str.js b/node_modules/js-yaml/lib/type/str.js new file mode 100644 index 0000000..27acc10 --- /dev/null +++ b/node_modules/js-yaml/lib/type/str.js @@ -0,0 +1,8 @@ +'use strict'; + +var Type = require('../type'); + +module.exports = new Type('tag:yaml.org,2002:str', { + kind: 'scalar', + construct: function (data) { return data !== null ? data : ''; } +}); diff --git a/node_modules/js-yaml/lib/type/timestamp.js b/node_modules/js-yaml/lib/type/timestamp.js new file mode 100644 index 0000000..8fa9c58 --- /dev/null +++ b/node_modules/js-yaml/lib/type/timestamp.js @@ -0,0 +1,88 @@ +'use strict'; + +var Type = require('../type'); + +var YAML_DATE_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$'); // [3] day + +var YAML_TIMESTAMP_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour + '(?::([0-9][0-9]))?))?$'); // [11] tz_minute + +function resolveYamlTimestamp(data) { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; +} + +function constructYamlTimestamp(data) { + var match, year, month, day, hour, minute, second, fraction = 0, + delta = null, tz_hour, tz_minute, date; + + match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + + if (match === null) throw new Error('Date resolve error'); + + // match: [1] year [2] month [3] day + + year = +(match[1]); + month = +(match[2]) - 1; // JS month starts with 0 + day = +(match[3]); + + if (!match[4]) { // no hour + return new Date(Date.UTC(year, month, day)); + } + + // match: [4] hour [5] minute [6] second [7] fraction + + hour = +(match[4]); + minute = +(match[5]); + second = +(match[6]); + + if (match[7]) { + fraction = match[7].slice(0, 3); + while (fraction.length < 3) { // milli-seconds + fraction += '0'; + } + fraction = +fraction; + } + + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + if (match[9]) { + tz_hour = +(match[10]); + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + if (match[9] === '-') delta = -delta; + } + + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + + if (delta) date.setTime(date.getTime() - delta); + + return date; +} + +function representYamlTimestamp(object /*, style*/) { + return object.toISOString(); +} + +module.exports = new Type('tag:yaml.org,2002:timestamp', { + kind: 'scalar', + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp +}); diff --git a/node_modules/js-yaml/package.json b/node_modules/js-yaml/package.json new file mode 100644 index 0000000..17574da --- /dev/null +++ b/node_modules/js-yaml/package.json @@ -0,0 +1,66 @@ +{ + "name": "js-yaml", + "version": "4.1.0", + "description": "YAML 1.2 parser and serializer", + "keywords": [ + "yaml", + "parser", + "serializer", + "pyyaml" + ], + "author": "Vladimir Zapparov ", + "contributors": [ + "Aleksey V Zapparov (http://www.ixti.net/)", + "Vitaly Puzrin (https://github.com/puzrin)", + "Martin Grenfell (http://got-ravings.blogspot.com)" + ], + "license": "MIT", + "repository": "nodeca/js-yaml", + "files": [ + "index.js", + "lib/", + "bin/", + "dist/" + ], + "bin": { + "js-yaml": "bin/js-yaml.js" + }, + "module": "./dist/js-yaml.mjs", + "exports": { + ".": { + "import": "./dist/js-yaml.mjs", + "require": "./index.js" + }, + "./package.json": "./package.json" + }, + "scripts": { + "lint": "eslint .", + "test": "npm run lint && mocha", + "coverage": "npm run lint && nyc mocha && nyc report --reporter html", + "demo": "npm run lint && node support/build_demo.js", + "gh-demo": "npm run demo && gh-pages -d demo -f", + "browserify": "rollup -c support/rollup.config.js", + "prepublishOnly": "npm run gh-demo" + }, + "unpkg": "dist/js-yaml.min.js", + "jsdelivr": "dist/js-yaml.min.js", + "dependencies": { + "argparse": "^2.0.1" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^17.0.0", + "@rollup/plugin-node-resolve": "^11.0.0", + "ansi": "^0.3.1", + "benchmark": "^2.1.4", + "codemirror": "^5.13.4", + "eslint": "^7.0.0", + "fast-check": "^2.8.0", + "gh-pages": "^3.1.0", + "mocha": "^8.2.1", + "nyc": "^15.1.0", + "rollup": "^2.34.1", + "rollup-plugin-node-polyfills": "^0.2.1", + "rollup-plugin-terser": "^7.0.2", + "shelljs": "^0.8.4" + } +} diff --git a/node_modules/locate-path/index.d.ts b/node_modules/locate-path/index.d.ts new file mode 100644 index 0000000..a714f1d --- /dev/null +++ b/node_modules/locate-path/index.d.ts @@ -0,0 +1,83 @@ +declare namespace locatePath { + interface Options { + /** + Current working directory. + + @default process.cwd() + */ + readonly cwd?: string; + + /** + Type of path to match. + + @default 'file' + */ + readonly type?: 'file' | 'directory'; + + /** + Allow symbolic links to match if they point to the requested path type. + + @default true + */ + readonly allowSymlinks?: boolean; + } + + interface AsyncOptions extends Options { + /** + Number of concurrently pending promises. Minimum: `1`. + + @default Infinity + */ + readonly concurrency?: number; + + /** + Preserve `paths` order when searching. + + Disable this to improve performance if you don't care about the order. + + @default true + */ + readonly preserveOrder?: boolean; + } +} + +declare const locatePath: { + /** + Synchronously get the first path that exists on disk of multiple paths. + + @param paths - Paths to check. + @returns The first path that exists or `undefined` if none exists. + */ + sync: ( + paths: Iterable, + options?: locatePath.Options + ) => string | undefined; + + /** + Get the first path that exists on disk of multiple paths. + + @param paths - Paths to check. + @returns The first path that exists or `undefined` if none exists. + + @example + ``` + import locatePath = require('locate-path'); + + const files = [ + 'unicorn.png', + 'rainbow.png', // Only this one actually exists on disk + 'pony.png' + ]; + + (async () => { + console(await locatePath(files)); + //=> 'rainbow' + })(); + ``` + */ + (paths: Iterable, options?: locatePath.AsyncOptions): Promise< + string | undefined + >; +}; + +export = locatePath; diff --git a/node_modules/locate-path/index.js b/node_modules/locate-path/index.js new file mode 100644 index 0000000..a6358e5 --- /dev/null +++ b/node_modules/locate-path/index.js @@ -0,0 +1,68 @@ +'use strict'; +const path = require('path'); +const fs = require('fs'); +const {promisify} = require('util'); +const pLocate = require('p-locate'); + +const fsStat = promisify(fs.stat); +const fsLStat = promisify(fs.lstat); + +const typeMappings = { + directory: 'isDirectory', + file: 'isFile' +}; + +function checkType({type}) { + if (type in typeMappings) { + return; + } + + throw new Error(`Invalid type specified: ${type}`); +} + +const matchType = (type, stat) => type === undefined || stat[typeMappings[type]](); + +module.exports = async (paths, options) => { + options = { + cwd: process.cwd(), + type: 'file', + allowSymlinks: true, + ...options + }; + + checkType(options); + + const statFn = options.allowSymlinks ? fsStat : fsLStat; + + return pLocate(paths, async path_ => { + try { + const stat = await statFn(path.resolve(options.cwd, path_)); + return matchType(options.type, stat); + } catch { + return false; + } + }, options); +}; + +module.exports.sync = (paths, options) => { + options = { + cwd: process.cwd(), + allowSymlinks: true, + type: 'file', + ...options + }; + + checkType(options); + + const statFn = options.allowSymlinks ? fs.statSync : fs.lstatSync; + + for (const path_ of paths) { + try { + const stat = statFn(path.resolve(options.cwd, path_)); + + if (matchType(options.type, stat)) { + return path_; + } + } catch {} + } +}; diff --git a/node_modules/locate-path/license b/node_modules/locate-path/license new file mode 100644 index 0000000..fa7ceba --- /dev/null +++ b/node_modules/locate-path/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://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/node_modules/locate-path/package.json b/node_modules/locate-path/package.json new file mode 100644 index 0000000..08bea50 --- /dev/null +++ b/node_modules/locate-path/package.json @@ -0,0 +1,46 @@ +{ + "name": "locate-path", + "version": "6.0.0", + "description": "Get the first path that exists on disk of multiple paths", + "license": "MIT", + "repository": "sindresorhus/locate-path", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && ava && tsd" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "locate", + "path", + "paths", + "file", + "files", + "exists", + "find", + "finder", + "search", + "searcher", + "array", + "iterable", + "iterator" + ], + "dependencies": { + "p-locate": "^5.0.0" + }, + "devDependencies": { + "ava": "^2.4.0", + "tsd": "^0.13.1", + "xo": "^0.32.1" + } +} diff --git a/node_modules/locate-path/readme.md b/node_modules/locate-path/readme.md new file mode 100644 index 0000000..1002bcd --- /dev/null +++ b/node_modules/locate-path/readme.md @@ -0,0 +1,125 @@ +# locate-path [![Build Status](https://travis-ci.com/sindresorhus/locate-path.svg?branch=master)](https://travis-ci.com/github/sindresorhus/locate-path) + +> Get the first path that exists on disk of multiple paths + +## Install + +``` +$ npm install locate-path +``` + +## Usage + +Here we find the first file that exists on disk, in array order. + +```js +const locatePath = require('locate-path'); + +const files = [ + 'unicorn.png', + 'rainbow.png', // Only this one actually exists on disk + 'pony.png' +]; + +(async () => { + console(await locatePath(files)); + //=> 'rainbow' +})(); +``` + +## API + +### locatePath(paths, options?) + +Returns a `Promise` for the first path that exists or `undefined` if none exists. + +#### paths + +Type: `Iterable` + +Paths to check. + +#### options + +Type: `object` + +##### concurrency + +Type: `number`\ +Default: `Infinity`\ +Minimum: `1` + +Number of concurrently pending promises. + +##### preserveOrder + +Type: `boolean`\ +Default: `true` + +Preserve `paths` order when searching. + +Disable this to improve performance if you don't care about the order. + +##### cwd + +Type: `string`\ +Default: `process.cwd()` + +Current working directory. + +##### type + +Type: `string`\ +Default: `'file'`\ +Values: `'file' | 'directory'` + +The type of paths that can match. + +##### allowSymlinks + +Type: `boolean`\ +Default: `true` + +Allow symbolic links to match if they point to the chosen path type. + +### locatePath.sync(paths, options?) + +Returns the first path that exists or `undefined` if none exists. + +#### paths + +Type: `Iterable` + +Paths to check. + +#### options + +Type: `object` + +##### cwd + +Same as above. + +##### type + +Same as above. + +##### allowSymlinks + +Same as above. + +## Related + +- [path-exists](https://github.com/sindresorhus/path-exists) - Check if a path exists + +--- + +
+ + Get professional support for this package with a Tidelift subscription + +
+ + Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies. +
+
diff --git a/node_modules/log-symbols/browser.js b/node_modules/log-symbols/browser.js new file mode 100644 index 0000000..a66f8ec --- /dev/null +++ b/node_modules/log-symbols/browser.js @@ -0,0 +1,8 @@ +'use strict'; + +module.exports = { + info: 'ℹ️', + success: '✅', + warning: '⚠️', + error: '❌️' +}; diff --git a/node_modules/log-symbols/index.d.ts b/node_modules/log-symbols/index.d.ts new file mode 100644 index 0000000..8e4bdc5 --- /dev/null +++ b/node_modules/log-symbols/index.d.ts @@ -0,0 +1,25 @@ +/** +Colored symbols for various log levels. + +Includes fallbacks for Windows CMD which only supports a [limited character set](https://en.wikipedia.org/wiki/Code_page_437). + +@example +``` +import logSymbols = require('log-symbols'); + +console.log(logSymbols.success, 'Finished successfully!'); +// Terminals with Unicode support: ✔ Finished successfully! +// Terminals without Unicode support: √ Finished successfully! +``` +*/ +declare const logSymbols: { + readonly info: string; + + readonly success: string; + + readonly warning: string; + + readonly error: string; +}; + +export = logSymbols; diff --git a/node_modules/log-symbols/index.js b/node_modules/log-symbols/index.js new file mode 100644 index 0000000..12347e0 --- /dev/null +++ b/node_modules/log-symbols/index.js @@ -0,0 +1,19 @@ +'use strict'; +const chalk = require('chalk'); +const isUnicodeSupported = require('is-unicode-supported'); + +const main = { + info: chalk.blue('ℹ'), + success: chalk.green('✔'), + warning: chalk.yellow('⚠'), + error: chalk.red('✖') +}; + +const fallback = { + info: chalk.blue('i'), + success: chalk.green('√'), + warning: chalk.yellow('‼'), + error: chalk.red('×') +}; + +module.exports = isUnicodeSupported() ? main : fallback; diff --git a/node_modules/log-symbols/license b/node_modules/log-symbols/license new file mode 100644 index 0000000..fa7ceba --- /dev/null +++ b/node_modules/log-symbols/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://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/node_modules/log-symbols/node_modules/ansi-styles/index.d.ts b/node_modules/log-symbols/node_modules/ansi-styles/index.d.ts new file mode 100644 index 0000000..44a907e --- /dev/null +++ b/node_modules/log-symbols/node_modules/ansi-styles/index.d.ts @@ -0,0 +1,345 @@ +declare type CSSColor = + | 'aliceblue' + | 'antiquewhite' + | 'aqua' + | 'aquamarine' + | 'azure' + | 'beige' + | 'bisque' + | 'black' + | 'blanchedalmond' + | 'blue' + | 'blueviolet' + | 'brown' + | 'burlywood' + | 'cadetblue' + | 'chartreuse' + | 'chocolate' + | 'coral' + | 'cornflowerblue' + | 'cornsilk' + | 'crimson' + | 'cyan' + | 'darkblue' + | 'darkcyan' + | 'darkgoldenrod' + | 'darkgray' + | 'darkgreen' + | 'darkgrey' + | 'darkkhaki' + | 'darkmagenta' + | 'darkolivegreen' + | 'darkorange' + | 'darkorchid' + | 'darkred' + | 'darksalmon' + | 'darkseagreen' + | 'darkslateblue' + | 'darkslategray' + | 'darkslategrey' + | 'darkturquoise' + | 'darkviolet' + | 'deeppink' + | 'deepskyblue' + | 'dimgray' + | 'dimgrey' + | 'dodgerblue' + | 'firebrick' + | 'floralwhite' + | 'forestgreen' + | 'fuchsia' + | 'gainsboro' + | 'ghostwhite' + | 'gold' + | 'goldenrod' + | 'gray' + | 'green' + | 'greenyellow' + | 'grey' + | 'honeydew' + | 'hotpink' + | 'indianred' + | 'indigo' + | 'ivory' + | 'khaki' + | 'lavender' + | 'lavenderblush' + | 'lawngreen' + | 'lemonchiffon' + | 'lightblue' + | 'lightcoral' + | 'lightcyan' + | 'lightgoldenrodyellow' + | 'lightgray' + | 'lightgreen' + | 'lightgrey' + | 'lightpink' + | 'lightsalmon' + | 'lightseagreen' + | 'lightskyblue' + | 'lightslategray' + | 'lightslategrey' + | 'lightsteelblue' + | 'lightyellow' + | 'lime' + | 'limegreen' + | 'linen' + | 'magenta' + | 'maroon' + | 'mediumaquamarine' + | 'mediumblue' + | 'mediumorchid' + | 'mediumpurple' + | 'mediumseagreen' + | 'mediumslateblue' + | 'mediumspringgreen' + | 'mediumturquoise' + | 'mediumvioletred' + | 'midnightblue' + | 'mintcream' + | 'mistyrose' + | 'moccasin' + | 'navajowhite' + | 'navy' + | 'oldlace' + | 'olive' + | 'olivedrab' + | 'orange' + | 'orangered' + | 'orchid' + | 'palegoldenrod' + | 'palegreen' + | 'paleturquoise' + | 'palevioletred' + | 'papayawhip' + | 'peachpuff' + | 'peru' + | 'pink' + | 'plum' + | 'powderblue' + | 'purple' + | 'rebeccapurple' + | 'red' + | 'rosybrown' + | 'royalblue' + | 'saddlebrown' + | 'salmon' + | 'sandybrown' + | 'seagreen' + | 'seashell' + | 'sienna' + | 'silver' + | 'skyblue' + | 'slateblue' + | 'slategray' + | 'slategrey' + | 'snow' + | 'springgreen' + | 'steelblue' + | 'tan' + | 'teal' + | 'thistle' + | 'tomato' + | 'turquoise' + | 'violet' + | 'wheat' + | 'white' + | 'whitesmoke' + | 'yellow' + | 'yellowgreen'; + +declare namespace ansiStyles { + interface ColorConvert { + /** + The RGB color space. + + @param red - (`0`-`255`) + @param green - (`0`-`255`) + @param blue - (`0`-`255`) + */ + rgb(red: number, green: number, blue: number): string; + + /** + The RGB HEX color space. + + @param hex - A hexadecimal string containing RGB data. + */ + hex(hex: string): string; + + /** + @param keyword - A CSS color name. + */ + keyword(keyword: CSSColor): string; + + /** + The HSL color space. + + @param hue - (`0`-`360`) + @param saturation - (`0`-`100`) + @param lightness - (`0`-`100`) + */ + hsl(hue: number, saturation: number, lightness: number): string; + + /** + The HSV color space. + + @param hue - (`0`-`360`) + @param saturation - (`0`-`100`) + @param value - (`0`-`100`) + */ + hsv(hue: number, saturation: number, value: number): string; + + /** + The HSV color space. + + @param hue - (`0`-`360`) + @param whiteness - (`0`-`100`) + @param blackness - (`0`-`100`) + */ + hwb(hue: number, whiteness: number, blackness: number): string; + + /** + Use a [4-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4-bit) to set text color. + */ + ansi(ansi: number): string; + + /** + Use an [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color. + */ + ansi256(ansi: number): string; + } + + interface CSPair { + /** + The ANSI terminal control sequence for starting this style. + */ + readonly open: string; + + /** + The ANSI terminal control sequence for ending this style. + */ + readonly close: string; + } + + interface ColorBase { + readonly ansi: ColorConvert; + readonly ansi256: ColorConvert; + readonly ansi16m: ColorConvert; + + /** + The ANSI terminal control sequence for ending this color. + */ + readonly close: string; + } + + interface Modifier { + /** + Resets the current color chain. + */ + readonly reset: CSPair; + + /** + Make text bold. + */ + readonly bold: CSPair; + + /** + Emitting only a small amount of light. + */ + readonly dim: CSPair; + + /** + Make text italic. (Not widely supported) + */ + readonly italic: CSPair; + + /** + Make text underline. (Not widely supported) + */ + readonly underline: CSPair; + + /** + Inverse background and foreground colors. + */ + readonly inverse: CSPair; + + /** + Prints the text, but makes it invisible. + */ + readonly hidden: CSPair; + + /** + Puts a horizontal line through the center of the text. (Not widely supported) + */ + readonly strikethrough: CSPair; + } + + interface ForegroundColor { + readonly black: CSPair; + readonly red: CSPair; + readonly green: CSPair; + readonly yellow: CSPair; + readonly blue: CSPair; + readonly cyan: CSPair; + readonly magenta: CSPair; + readonly white: CSPair; + + /** + Alias for `blackBright`. + */ + readonly gray: CSPair; + + /** + Alias for `blackBright`. + */ + readonly grey: CSPair; + + readonly blackBright: CSPair; + readonly redBright: CSPair; + readonly greenBright: CSPair; + readonly yellowBright: CSPair; + readonly blueBright: CSPair; + readonly cyanBright: CSPair; + readonly magentaBright: CSPair; + readonly whiteBright: CSPair; + } + + interface BackgroundColor { + readonly bgBlack: CSPair; + readonly bgRed: CSPair; + readonly bgGreen: CSPair; + readonly bgYellow: CSPair; + readonly bgBlue: CSPair; + readonly bgCyan: CSPair; + readonly bgMagenta: CSPair; + readonly bgWhite: CSPair; + + /** + Alias for `bgBlackBright`. + */ + readonly bgGray: CSPair; + + /** + Alias for `bgBlackBright`. + */ + readonly bgGrey: CSPair; + + readonly bgBlackBright: CSPair; + readonly bgRedBright: CSPair; + readonly bgGreenBright: CSPair; + readonly bgYellowBright: CSPair; + readonly bgBlueBright: CSPair; + readonly bgCyanBright: CSPair; + readonly bgMagentaBright: CSPair; + readonly bgWhiteBright: CSPair; + } +} + +declare const ansiStyles: { + readonly modifier: ansiStyles.Modifier; + readonly color: ansiStyles.ForegroundColor & ansiStyles.ColorBase; + readonly bgColor: ansiStyles.BackgroundColor & ansiStyles.ColorBase; + readonly codes: ReadonlyMap; +} & ansiStyles.BackgroundColor & ansiStyles.ForegroundColor & ansiStyles.Modifier; + +export = ansiStyles; diff --git a/node_modules/log-symbols/node_modules/ansi-styles/index.js b/node_modules/log-symbols/node_modules/ansi-styles/index.js new file mode 100644 index 0000000..5d82581 --- /dev/null +++ b/node_modules/log-symbols/node_modules/ansi-styles/index.js @@ -0,0 +1,163 @@ +'use strict'; + +const wrapAnsi16 = (fn, offset) => (...args) => { + const code = fn(...args); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => (...args) => { + const code = fn(...args); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => (...args) => { + const rgb = fn(...args); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +const ansi2ansi = n => n; +const rgb2rgb = (r, g, b) => [r, g, b]; + +const setLazyProperty = (object, property, get) => { + Object.defineProperty(object, property, { + get: () => { + const value = get(); + + Object.defineProperty(object, property, { + value, + enumerable: true, + configurable: true + }); + + return value; + }, + enumerable: true, + configurable: true + }); +}; + +/** @type {typeof import('color-convert')} */ +let colorConvert; +const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { + if (colorConvert === undefined) { + colorConvert = require('color-convert'); + } + + const offset = isBackground ? 10 : 0; + const styles = {}; + + for (const [sourceSpace, suite] of Object.entries(colorConvert)) { + const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace; + if (sourceSpace === targetSpace) { + styles[name] = wrap(identity, offset); + } else if (typeof suite === 'object') { + styles[name] = wrap(suite[targetSpace], offset); + } + } + + return styles; +}; + +function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + + // Bright color + blackBright: [90, 39], + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + + // Alias bright black as gray (and grey) + styles.color.gray = styles.color.blackBright; + styles.bgColor.bgGray = styles.bgColor.bgBlackBright; + styles.color.grey = styles.color.blackBright; + styles.bgColor.bgGrey = styles.bgColor.bgBlackBright; + + for (const [groupName, group] of Object.entries(styles)) { + for (const [styleName, style] of Object.entries(group)) { + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + + group[styleName] = styles[styleName]; + + codes.set(style[0], style[1]); + } + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + } + + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false + }); + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false)); + setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false)); + setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false)); + setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true)); + setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true)); + setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true)); + + return styles; +} + +// Make the export immutable +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); diff --git a/node_modules/log-symbols/node_modules/ansi-styles/license b/node_modules/log-symbols/node_modules/ansi-styles/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/node_modules/log-symbols/node_modules/ansi-styles/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (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/node_modules/log-symbols/node_modules/ansi-styles/package.json b/node_modules/log-symbols/node_modules/ansi-styles/package.json new file mode 100644 index 0000000..7539328 --- /dev/null +++ b/node_modules/log-symbols/node_modules/ansi-styles/package.json @@ -0,0 +1,56 @@ +{ + "name": "ansi-styles", + "version": "4.3.0", + "description": "ANSI escape codes for styling strings in the terminal", + "license": "MIT", + "repository": "chalk/ansi-styles", + "funding": "https://github.com/chalk/ansi-styles?sponsor=1", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd", + "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "color-convert": "^2.0.1" + }, + "devDependencies": { + "@types/color-convert": "^1.9.0", + "ava": "^2.3.0", + "svg-term-cli": "^2.1.1", + "tsd": "^0.11.0", + "xo": "^0.25.3" + } +} diff --git a/node_modules/log-symbols/node_modules/ansi-styles/readme.md b/node_modules/log-symbols/node_modules/ansi-styles/readme.md new file mode 100644 index 0000000..24883de --- /dev/null +++ b/node_modules/log-symbols/node_modules/ansi-styles/readme.md @@ -0,0 +1,152 @@ +# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) + +> [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal + +You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. + + + +## Install + +``` +$ npm install ansi-styles +``` + +## Usage + +```js +const style = require('ansi-styles'); + +console.log(`${style.green.open}Hello world!${style.green.close}`); + + +// Color conversion between 16/256/truecolor +// NOTE: If conversion goes to 16 colors or 256 colors, the original color +// may be degraded to fit that color palette. This means terminals +// that do not support 16 million colors will best-match the +// original color. +console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close); +console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close); +console.log(style.color.ansi16m.hex('#abcdef') + 'Hello world!' + style.color.close); +``` + +## API + +Each style has an `open` and `close` property. + +## Styles + +### Modifiers + +- `reset` +- `bold` +- `dim` +- `italic` *(Not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(Not widely supported)* + +### Colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `blackBright` (alias: `gray`, `grey`) +- `redBright` +- `greenBright` +- `yellowBright` +- `blueBright` +- `magentaBright` +- `cyanBright` +- `whiteBright` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` +- `bgBlackBright` (alias: `bgGray`, `bgGrey`) +- `bgRedBright` +- `bgGreenBright` +- `bgYellowBright` +- `bgBlueBright` +- `bgMagentaBright` +- `bgCyanBright` +- `bgWhiteBright` + +## Advanced usage + +By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. + +- `style.modifier` +- `style.color` +- `style.bgColor` + +###### Example + +```js +console.log(style.color.green.open); +``` + +Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values. + +###### Example + +```js +console.log(style.codes.get(36)); +//=> 39 +``` + +## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728) + +`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors. + +The following color spaces from `color-convert` are supported: + +- `rgb` +- `hex` +- `keyword` +- `hsl` +- `hsv` +- `hwb` +- `ansi` +- `ansi256` + +To use these, call the associated conversion function with the intended output, for example: + +```js +style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code +style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code + +style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code +style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code + +style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code +style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code +``` + +## Related + +- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + +## For enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of `ansi-styles` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-ansi-styles?utm_source=npm-ansi-styles&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/node_modules/log-symbols/node_modules/chalk/index.d.ts b/node_modules/log-symbols/node_modules/chalk/index.d.ts new file mode 100644 index 0000000..9cd88f3 --- /dev/null +++ b/node_modules/log-symbols/node_modules/chalk/index.d.ts @@ -0,0 +1,415 @@ +/** +Basic foreground colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type ForegroundColor = + | 'black' + | 'red' + | 'green' + | 'yellow' + | 'blue' + | 'magenta' + | 'cyan' + | 'white' + | 'gray' + | 'grey' + | 'blackBright' + | 'redBright' + | 'greenBright' + | 'yellowBright' + | 'blueBright' + | 'magentaBright' + | 'cyanBright' + | 'whiteBright'; + +/** +Basic background colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type BackgroundColor = + | 'bgBlack' + | 'bgRed' + | 'bgGreen' + | 'bgYellow' + | 'bgBlue' + | 'bgMagenta' + | 'bgCyan' + | 'bgWhite' + | 'bgGray' + | 'bgGrey' + | 'bgBlackBright' + | 'bgRedBright' + | 'bgGreenBright' + | 'bgYellowBright' + | 'bgBlueBright' + | 'bgMagentaBright' + | 'bgCyanBright' + | 'bgWhiteBright'; + +/** +Basic colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type Color = ForegroundColor | BackgroundColor; + +declare type Modifiers = + | 'reset' + | 'bold' + | 'dim' + | 'italic' + | 'underline' + | 'inverse' + | 'hidden' + | 'strikethrough' + | 'visible'; + +declare namespace chalk { + /** + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + type Level = 0 | 1 | 2 | 3; + + interface Options { + /** + Specify the color support for Chalk. + + By default, color support is automatically detected based on the environment. + + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + level?: Level; + } + + /** + Return a new Chalk instance. + */ + type Instance = new (options?: Options) => Chalk; + + /** + Detect whether the terminal supports color. + */ + interface ColorSupport { + /** + The color level used by Chalk. + */ + level: Level; + + /** + Return whether Chalk supports basic 16 colors. + */ + hasBasic: boolean; + + /** + Return whether Chalk supports ANSI 256 colors. + */ + has256: boolean; + + /** + Return whether Chalk supports Truecolor 16 million colors. + */ + has16m: boolean; + } + + interface ChalkFunction { + /** + Use a template string. + + @remarks Template literals are unsupported for nested calls (see [issue #341](https://github.com/chalk/chalk/issues/341)) + + @example + ``` + import chalk = require('chalk'); + + log(chalk` + CPU: {red ${cpu.totalPercent}%} + RAM: {green ${ram.used / ram.total * 100}%} + DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} + `); + ``` + + @example + ``` + import chalk = require('chalk'); + + log(chalk.red.bgBlack`2 + 3 = {bold ${2 + 3}}`) + ``` + */ + (text: TemplateStringsArray, ...placeholders: unknown[]): string; + + (...text: unknown[]): string; + } + + interface Chalk extends ChalkFunction { + /** + Return a new Chalk instance. + */ + Instance: Instance; + + /** + The color support for Chalk. + + By default, color support is automatically detected based on the environment. + + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + level: Level; + + /** + Use HEX value to set text color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.hex('#DEADED'); + ``` + */ + hex(color: string): Chalk; + + /** + Use keyword color value to set text color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.keyword('orange'); + ``` + */ + keyword(color: string): Chalk; + + /** + Use RGB values to set text color. + */ + rgb(red: number, green: number, blue: number): Chalk; + + /** + Use HSL values to set text color. + */ + hsl(hue: number, saturation: number, lightness: number): Chalk; + + /** + Use HSV values to set text color. + */ + hsv(hue: number, saturation: number, value: number): Chalk; + + /** + Use HWB values to set text color. + */ + hwb(hue: number, whiteness: number, blackness: number): Chalk; + + /** + Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set text color. + + 30 <= code && code < 38 || 90 <= code && code < 98 + For example, 31 for red, 91 for redBright. + */ + ansi(code: number): Chalk; + + /** + Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color. + */ + ansi256(index: number): Chalk; + + /** + Use HEX value to set background color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgHex('#DEADED'); + ``` + */ + bgHex(color: string): Chalk; + + /** + Use keyword color value to set background color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgKeyword('orange'); + ``` + */ + bgKeyword(color: string): Chalk; + + /** + Use RGB values to set background color. + */ + bgRgb(red: number, green: number, blue: number): Chalk; + + /** + Use HSL values to set background color. + */ + bgHsl(hue: number, saturation: number, lightness: number): Chalk; + + /** + Use HSV values to set background color. + */ + bgHsv(hue: number, saturation: number, value: number): Chalk; + + /** + Use HWB values to set background color. + */ + bgHwb(hue: number, whiteness: number, blackness: number): Chalk; + + /** + Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set background color. + + 30 <= code && code < 38 || 90 <= code && code < 98 + For example, 31 for red, 91 for redBright. + Use the foreground code, not the background code (for example, not 41, nor 101). + */ + bgAnsi(code: number): Chalk; + + /** + Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set background color. + */ + bgAnsi256(index: number): Chalk; + + /** + Modifier: Resets the current color chain. + */ + readonly reset: Chalk; + + /** + Modifier: Make text bold. + */ + readonly bold: Chalk; + + /** + Modifier: Emitting only a small amount of light. + */ + readonly dim: Chalk; + + /** + Modifier: Make text italic. (Not widely supported) + */ + readonly italic: Chalk; + + /** + Modifier: Make text underline. (Not widely supported) + */ + readonly underline: Chalk; + + /** + Modifier: Inverse background and foreground colors. + */ + readonly inverse: Chalk; + + /** + Modifier: Prints the text, but makes it invisible. + */ + readonly hidden: Chalk; + + /** + Modifier: Puts a horizontal line through the center of the text. (Not widely supported) + */ + readonly strikethrough: Chalk; + + /** + Modifier: Prints the text only when Chalk has a color support level > 0. + Can be useful for things that are purely cosmetic. + */ + readonly visible: Chalk; + + readonly black: Chalk; + readonly red: Chalk; + readonly green: Chalk; + readonly yellow: Chalk; + readonly blue: Chalk; + readonly magenta: Chalk; + readonly cyan: Chalk; + readonly white: Chalk; + + /* + Alias for `blackBright`. + */ + readonly gray: Chalk; + + /* + Alias for `blackBright`. + */ + readonly grey: Chalk; + + readonly blackBright: Chalk; + readonly redBright: Chalk; + readonly greenBright: Chalk; + readonly yellowBright: Chalk; + readonly blueBright: Chalk; + readonly magentaBright: Chalk; + readonly cyanBright: Chalk; + readonly whiteBright: Chalk; + + readonly bgBlack: Chalk; + readonly bgRed: Chalk; + readonly bgGreen: Chalk; + readonly bgYellow: Chalk; + readonly bgBlue: Chalk; + readonly bgMagenta: Chalk; + readonly bgCyan: Chalk; + readonly bgWhite: Chalk; + + /* + Alias for `bgBlackBright`. + */ + readonly bgGray: Chalk; + + /* + Alias for `bgBlackBright`. + */ + readonly bgGrey: Chalk; + + readonly bgBlackBright: Chalk; + readonly bgRedBright: Chalk; + readonly bgGreenBright: Chalk; + readonly bgYellowBright: Chalk; + readonly bgBlueBright: Chalk; + readonly bgMagentaBright: Chalk; + readonly bgCyanBright: Chalk; + readonly bgWhiteBright: Chalk; + } +} + +/** +Main Chalk object that allows to chain styles together. +Call the last one as a method with a string argument. +Order doesn't matter, and later styles take precedent in case of a conflict. +This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`. +*/ +declare const chalk: chalk.Chalk & chalk.ChalkFunction & { + supportsColor: chalk.ColorSupport | false; + Level: chalk.Level; + Color: Color; + ForegroundColor: ForegroundColor; + BackgroundColor: BackgroundColor; + Modifiers: Modifiers; + stderr: chalk.Chalk & {supportsColor: chalk.ColorSupport | false}; +}; + +export = chalk; diff --git a/node_modules/log-symbols/node_modules/chalk/license b/node_modules/log-symbols/node_modules/chalk/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/node_modules/log-symbols/node_modules/chalk/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (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/node_modules/log-symbols/node_modules/chalk/package.json b/node_modules/log-symbols/node_modules/chalk/package.json new file mode 100644 index 0000000..47c23f2 --- /dev/null +++ b/node_modules/log-symbols/node_modules/chalk/package.json @@ -0,0 +1,68 @@ +{ + "name": "chalk", + "version": "4.1.2", + "description": "Terminal string styling done right", + "license": "MIT", + "repository": "chalk/chalk", + "funding": "https://github.com/chalk/chalk?sponsor=1", + "main": "source", + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && nyc ava && tsd", + "bench": "matcha benchmark.js" + }, + "files": [ + "source", + "index.d.ts" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "str", + "ansi", + "style", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "devDependencies": { + "ava": "^2.4.0", + "coveralls": "^3.0.7", + "execa": "^4.0.0", + "import-fresh": "^3.1.0", + "matcha": "^0.7.0", + "nyc": "^15.0.0", + "resolve-from": "^5.0.0", + "tsd": "^0.7.4", + "xo": "^0.28.2" + }, + "xo": { + "rules": { + "unicorn/prefer-string-slice": "off", + "unicorn/prefer-includes": "off", + "@typescript-eslint/member-ordering": "off", + "no-redeclare": "off", + "unicorn/string-content": "off", + "unicorn/better-regex": "off" + } + } +} diff --git a/node_modules/log-symbols/node_modules/chalk/readme.md b/node_modules/log-symbols/node_modules/chalk/readme.md new file mode 100644 index 0000000..a055d21 --- /dev/null +++ b/node_modules/log-symbols/node_modules/chalk/readme.md @@ -0,0 +1,341 @@ +

+
+
+ Chalk +
+
+
+

+ +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![npm dependents](https://badgen.net/npm/dependents/chalk)](https://www.npmjs.com/package/chalk?activeTab=dependents) [![Downloads](https://badgen.net/npm/dt/chalk)](https://www.npmjs.com/package/chalk) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) ![TypeScript-ready](https://img.shields.io/npm/types/chalk.svg) [![run on repl.it](https://repl.it/badge/github/chalk/chalk)](https://repl.it/github/chalk/chalk) + + + +
+ +--- + + + +--- + +
+ +## Highlights + +- Expressive API +- Highly performant +- Ability to nest styles +- [256/Truecolor color support](#256-and-truecolor-color-support) +- Auto-detects color support +- Doesn't extend `String.prototype` +- Clean and focused +- Actively maintained +- [Used by ~50,000 packages](https://www.npmjs.com/browse/depended/chalk) as of January 1, 2020 + +## Install + +```console +$ npm install chalk +``` + +## Usage + +```js +const chalk = require('chalk'); + +console.log(chalk.blue('Hello world!')); +``` + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +const chalk = require('chalk'); +const log = console.log; + +// Combine styled and normal strings +log(chalk.blue('Hello') + ' World' + chalk.red('!')); + +// Compose multiple styles using the chainable API +log(chalk.blue.bgRed.bold('Hello world!')); + +// Pass in multiple arguments +log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz')); + +// Nest styles +log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!')); + +// Nest styles of the same type even (color, underline, background) +log(chalk.green( + 'I am a green line ' + + chalk.blue.underline.bold('with a blue substring') + + ' that becomes green again!' +)); + +// ES2015 template literal +log(` +CPU: ${chalk.red('90%')} +RAM: ${chalk.green('40%')} +DISK: ${chalk.yellow('70%')} +`); + +// ES2015 tagged template literal +log(chalk` +CPU: {red ${cpu.totalPercent}%} +RAM: {green ${ram.used / ram.total * 100}%} +DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} +`); + +// Use RGB colors in terminal emulators that support it. +log(chalk.keyword('orange')('Yay for orange colored text!')); +log(chalk.rgb(123, 45, 67).underline('Underlined reddish color')); +log(chalk.hex('#DEADED').bold('Bold gray!')); +``` + +Easily define your own themes: + +```js +const chalk = require('chalk'); + +const error = chalk.bold.red; +const warning = chalk.keyword('orange'); + +console.log(error('Error!')); +console.log(warning('Warning!')); +``` + +Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args): + +```js +const name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> 'Hello Sindre' +``` + +## API + +### chalk.`