From 087531914809e2ca8cebc095c638047f01a961a0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 11 Apr 2025 20:56:32 +0000 Subject: [PATCH] chore(deps): update dependency rollup to v4 --- .../npm_translate_lock_LTE4Nzc1MDcwNjU= | 6 +- js/private/coverage/bundle/BUILD.bazel | 4 +- js/private/coverage/bundle/package.json | 8 +- .../{rollup.config.js => rollup.config.mjs} | 0 js/private/coverage/coverage.js | 13599 ++++++++-------- js/private/worker/src/BUILD.bazel | 5 +- js/private/worker/src/package.json | 11 +- .../{rollup.config.js => rollup.config.mjs} | 6 +- js/private/worker/worker.js | 1260 +- npm/private/lifecycle/package.json | 8 +- .../test/snapshots/bzlmod/npm_defs.bzl | 3901 ++--- pnpm-lock.yaml | 445 +- 12 files changed, 10431 insertions(+), 8822 deletions(-) rename js/private/coverage/bundle/{rollup.config.js => rollup.config.mjs} (100%) rename js/private/worker/src/{rollup.config.js => rollup.config.mjs} (58%) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_LTE4Nzc1MDcwNjU= b/.aspect/rules/external_repository_action_cache/npm_translate_lock_LTE4Nzc1MDcwNjU= index f9cc6aa66..71cef3d6a 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_LTE4Nzc1MDcwNjU= +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_LTE4Nzc1MDcwNjU= @@ -21,10 +21,10 @@ examples/npm_package/packages/pkg_e/package.json=-2145239245 examples/runfiles/package.json=-1545884645 examples/stack_traces/package.json=2011229626 examples/webpack_cli/package.json=1911342006 -js/private/coverage/bundle/package.json=-24783848 +js/private/coverage/bundle/package.json=-989821457 js/private/test/image/package.json=1430754959 js/private/test/js_run_devserver/package.json=-381403605 -js/private/worker/src/package.json=-1243560410 +js/private/worker/src/package.json=-934312314 npm/private/test/npm_package/package.json=-1991705133 npm/private/test/npm_package_publish/package.json=-646566766 npm/private/test/package.json=606610593 @@ -32,5 +32,5 @@ npm/private/test/vendored/is-odd/package.json=1041695223 npm/private/test/vendored/lodash-4.17.21.tgz=-1206623349 npm/private/test/vendored/semver-max/package.json=578664053 package.json=1510979981 -pnpm-lock.yaml=-553986311 +pnpm-lock.yaml=-46840469 pnpm-workspace.yaml=854106668 diff --git a/js/private/coverage/bundle/BUILD.bazel b/js/private/coverage/bundle/BUILD.bazel index e92c0d959..670a5a4d7 100644 --- a/js/private/coverage/bundle/BUILD.bazel +++ b/js/private/coverage/bundle/BUILD.bazel @@ -8,7 +8,7 @@ rollup_bin.rollup( srcs = [ "c8.js", "package.json", - "rollup.config.js", + "rollup.config.mjs", ":node_modules/@rollup/plugin-commonjs", ":node_modules/@rollup/plugin-json", ":node_modules/@rollup/plugin-node-resolve", @@ -20,7 +20,7 @@ rollup_bin.rollup( args = [ "c8.js", "--config", - "rollup.config.js", + "rollup.config.mjs", "--format", "cjs", "--file", diff --git a/js/private/coverage/bundle/package.json b/js/private/coverage/bundle/package.json index e7244a4d9..6b2eeeb7a 100644 --- a/js/private/coverage/bundle/package.json +++ b/js/private/coverage/bundle/package.json @@ -4,9 +4,9 @@ "c8": "7.13.0" }, "devDependencies": { - "@rollup/plugin-commonjs": "23.0.7", - "@rollup/plugin-json": "5.0.2", - "@rollup/plugin-node-resolve": "15.3.0", - "rollup": "3.29.5" + "@rollup/plugin-commonjs": "28.0.3", + "@rollup/plugin-json": "6.1.0", + "@rollup/plugin-node-resolve": "16.0.1", + "rollup": "4.39.0" } } diff --git a/js/private/coverage/bundle/rollup.config.js b/js/private/coverage/bundle/rollup.config.mjs similarity index 100% rename from js/private/coverage/bundle/rollup.config.js rename to js/private/coverage/bundle/rollup.config.mjs diff --git a/js/private/coverage/coverage.js b/js/private/coverage/coverage.js index d1da99f5a..778b8d6f6 100644 --- a/js/private/coverage/coverage.js +++ b/js/private/coverage/coverage.js @@ -10,18 +10,13 @@ var require$$1 = require('tty'); var require$$1$1 = require('url'); var require$$12 = require('module'); -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function getAugmentedNamespace(n) { - if (n.__esModule) return n; + if (Object.prototype.hasOwnProperty.call(n, '__esModule')) return n; var f = n.default; if (typeof f == "function") { var a = function a () { if (this instanceof a) { - var args = [null]; - args.push.apply(args, arguments); - var Ctor = Function.bind.apply(f, args); - return new Ctor(); + return Reflect.construct(f, arguments, this.constructor); } return f.apply(this, arguments); }; @@ -40,1622 +35,1663 @@ function getAugmentedNamespace(n) { return a; } -var old$1 = {}; - -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -var pathModule = require$$0; -var isWindows = process.platform === 'win32'; -var fs$5 = require$$0$1; - -// JavaScript implementation of realpath, ported from node pre-v6 - -var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); - -function rethrow() { - // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and - // is fairly slow to generate. - var callback; - if (DEBUG) { - var backtrace = new Error; - callback = debugCallback; - } else - callback = missingCallback; - - return callback; - - function debugCallback(err) { - if (err) { - backtrace.message = err.message; - err = backtrace; - missingCallback(err); - } - } - - function missingCallback(err) { - if (err) { - if (process.throwDeprecation) - throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs - else if (!process.noDeprecation) { - var msg = 'fs: missing callback ' + (err.stack || err.message); - if (process.traceDeprecation) - console.trace(msg); - else - console.error(msg); - } - } - } -} - -function maybeCallback(cb) { - return typeof cb === 'function' ? cb : rethrow(); -} - -pathModule.normalize; - -// Regexp that finds the next partion of a (partial) path -// result is [base_with_slash, base], e.g. ['somedir/', 'somedir'] -if (isWindows) { - var nextPartRe = /(.*?)(?:[\/\\]+|$)/g; -} else { - var nextPartRe = /(.*?)(?:[\/]+|$)/g; -} +var c8 = {}; -// Regex to find the device root, including trailing slash. E.g. 'c:\\'. -if (isWindows) { - var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; -} else { - var splitRootRe = /^[\/]*/; -} +var old = {}; -old$1.realpathSync = function realpathSync(p, cache) { - // make p is absolute - p = pathModule.resolve(p); - - if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { - return cache[p]; - } - - var original = p, - seenLinks = {}, - knownHard = {}; - - // current character position in p - var pos; - // the partial path so far, including a trailing slash if any - var current; - // the partial path without a trailing slash (except when pointing at a root) - var base; - // the partial path scanned in the previous round, with slash - var previous; - - start(); - - function start() { - // Skip over roots - var m = splitRootRe.exec(p); - pos = m[0].length; - current = m[0]; - base = m[0]; - previous = ''; - - // On windows, check that the root exists. On unix there is no need. - if (isWindows && !knownHard[base]) { - fs$5.lstatSync(base); - knownHard[base] = true; - } - } - - // walk down the path, swapping out linked pathparts for their real - // values - // NB: p.length changes. - while (pos < p.length) { - // find the next part - nextPartRe.lastIndex = pos; - var result = nextPartRe.exec(p); - previous = current; - current += result[0]; - base = previous + result[1]; - pos = nextPartRe.lastIndex; - - // continue if not a symlink - if (knownHard[base] || (cache && cache[base] === base)) { - continue; - } +var hasRequiredOld; - var resolvedLink; - if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { - // some known symbolic link. no need to stat again. - resolvedLink = cache[base]; - } else { - var stat = fs$5.lstatSync(base); - if (!stat.isSymbolicLink()) { - knownHard[base] = true; - if (cache) cache[base] = base; - continue; - } - - // read the link if it wasn't read before - // dev/ino always return 0 on windows, so skip the check. - var linkTarget = null; - if (!isWindows) { - var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); - if (seenLinks.hasOwnProperty(id)) { - linkTarget = seenLinks[id]; - } - } - if (linkTarget === null) { - fs$5.statSync(base); - linkTarget = fs$5.readlinkSync(base); - } - resolvedLink = pathModule.resolve(previous, linkTarget); - // track this, if given a cache. - if (cache) cache[base] = resolvedLink; - if (!isWindows) seenLinks[id] = linkTarget; - } +function requireOld () { + if (hasRequiredOld) return old; + hasRequiredOld = 1; + // Copyright Joyent, Inc. and other Node contributors. + // + // 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. + + var pathModule = require$$0; + var isWindows = process.platform === 'win32'; + var fs = require$$0$1; - // resolve the link, then start over - p = pathModule.resolve(resolvedLink, p.slice(pos)); - start(); - } + // JavaScript implementation of realpath, ported from node pre-v6 - if (cache) cache[original] = p; + var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); - return p; -}; + function rethrow() { + // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and + // is fairly slow to generate. + var callback; + if (DEBUG) { + var backtrace = new Error; + callback = debugCallback; + } else + callback = missingCallback; + return callback; -old$1.realpath = function realpath(p, cache, cb) { - if (typeof cb !== 'function') { - cb = maybeCallback(cache); - cache = null; - } - - // make p is absolute - p = pathModule.resolve(p); - - if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { - return process.nextTick(cb.bind(null, null, cache[p])); - } - - var original = p, - seenLinks = {}, - knownHard = {}; - - // current character position in p - var pos; - // the partial path so far, including a trailing slash if any - var current; - // the partial path without a trailing slash (except when pointing at a root) - var base; - // the partial path scanned in the previous round, with slash - var previous; - - start(); - - function start() { - // Skip over roots - var m = splitRootRe.exec(p); - pos = m[0].length; - current = m[0]; - base = m[0]; - previous = ''; - - // On windows, check that the root exists. On unix there is no need. - if (isWindows && !knownHard[base]) { - fs$5.lstat(base, function(err) { - if (err) return cb(err); - knownHard[base] = true; - LOOP(); - }); - } else { - process.nextTick(LOOP); - } - } - - // walk down the path, swapping out linked pathparts for their real - // values - function LOOP() { - // stop if scanned past end of path - if (pos >= p.length) { - if (cache) cache[original] = p; - return cb(null, p); - } + function debugCallback(err) { + if (err) { + backtrace.message = err.message; + err = backtrace; + missingCallback(err); + } + } - // find the next part - nextPartRe.lastIndex = pos; - var result = nextPartRe.exec(p); - previous = current; - current += result[0]; - base = previous + result[1]; - pos = nextPartRe.lastIndex; - - // continue if not a symlink - if (knownHard[base] || (cache && cache[base] === base)) { - return process.nextTick(LOOP); - } + function missingCallback(err) { + if (err) { + if (process.throwDeprecation) + throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs + else if (!process.noDeprecation) { + var msg = 'fs: missing callback ' + (err.stack || err.message); + if (process.traceDeprecation) + console.trace(msg); + else + console.error(msg); + } + } + } + } - if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { - // known symbolic link. no need to stat again. - return gotResolvedLink(cache[base]); - } + function maybeCallback(cb) { + return typeof cb === 'function' ? cb : rethrow(); + } - return fs$5.lstat(base, gotStat); - } + pathModule.normalize; - function gotStat(err, stat) { - if (err) return cb(err); + // Regexp that finds the next partion of a (partial) path + // result is [base_with_slash, base], e.g. ['somedir/', 'somedir'] + if (isWindows) { + var nextPartRe = /(.*?)(?:[\/\\]+|$)/g; + } else { + var nextPartRe = /(.*?)(?:[\/]+|$)/g; + } - // if not a symlink, skip to the next path part - if (!stat.isSymbolicLink()) { - knownHard[base] = true; - if (cache) cache[base] = base; - return process.nextTick(LOOP); - } + // Regex to find the device root, including trailing slash. E.g. 'c:\\'. + if (isWindows) { + var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; + } else { + var splitRootRe = /^[\/]*/; + } - // stat & read the link if not read before - // call gotTarget as soon as the link target is known - // dev/ino always return 0 on windows, so skip the check. - if (!isWindows) { - var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); - if (seenLinks.hasOwnProperty(id)) { - return gotTarget(null, seenLinks[id], base); - } - } - fs$5.stat(base, function(err) { - if (err) return cb(err); + old.realpathSync = function realpathSync(p, cache) { + // make p is absolute + p = pathModule.resolve(p); + + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return cache[p]; + } + + var original = p, + seenLinks = {}, + knownHard = {}; + + // current character position in p + var pos; + // the partial path so far, including a trailing slash if any + var current; + // the partial path without a trailing slash (except when pointing at a root) + var base; + // the partial path scanned in the previous round, with slash + var previous; + + start(); + + function start() { + // Skip over roots + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ''; + + // On windows, check that the root exists. On unix there is no need. + if (isWindows && !knownHard[base]) { + fs.lstatSync(base); + knownHard[base] = true; + } + } - fs$5.readlink(base, function(err, target) { - if (!isWindows) seenLinks[id] = target; - gotTarget(err, target); - }); - }); - } + // walk down the path, swapping out linked pathparts for their real + // values + // NB: p.length changes. + while (pos < p.length) { + // find the next part + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + + // continue if not a symlink + if (knownHard[base] || (cache && cache[base] === base)) { + continue; + } - function gotTarget(err, target, base) { - if (err) return cb(err); + var resolvedLink; + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + // some known symbolic link. no need to stat again. + resolvedLink = cache[base]; + } else { + var stat = fs.lstatSync(base); + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) cache[base] = base; + continue; + } - var resolvedLink = pathModule.resolve(previous, target); - if (cache) cache[base] = resolvedLink; - gotResolvedLink(resolvedLink); - } + // read the link if it wasn't read before + // dev/ino always return 0 on windows, so skip the check. + var linkTarget = null; + if (!isWindows) { + var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + linkTarget = seenLinks[id]; + } + } + if (linkTarget === null) { + fs.statSync(base); + linkTarget = fs.readlinkSync(base); + } + resolvedLink = pathModule.resolve(previous, linkTarget); + // track this, if given a cache. + if (cache) cache[base] = resolvedLink; + if (!isWindows) seenLinks[id] = linkTarget; + } - function gotResolvedLink(resolvedLink) { - // resolve the link, then start over - p = pathModule.resolve(resolvedLink, p.slice(pos)); - start(); - } -}; + // resolve the link, then start over + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } -var fs_realpath = realpath; -realpath.realpath = realpath; -realpath.sync = realpathSync; -realpath.realpathSync = realpathSync; -realpath.monkeypatch = monkeypatch; -realpath.unmonkeypatch = unmonkeypatch; - -var fs$4 = require$$0$1; -var origRealpath = fs$4.realpath; -var origRealpathSync = fs$4.realpathSync; - -var version$1 = process.version; -var ok = /^v[0-5]\./.test(version$1); -var old = old$1; - -function newError (er) { - return er && er.syscall === 'realpath' && ( - er.code === 'ELOOP' || - er.code === 'ENOMEM' || - er.code === 'ENAMETOOLONG' - ) -} + if (cache) cache[original] = p; -function realpath (p, cache, cb) { - if (ok) { - return origRealpath(p, cache, cb) - } - - if (typeof cache === 'function') { - cb = cache; - cache = null; - } - origRealpath(p, cache, function (er, result) { - if (newError(er)) { - old.realpath(p, cache, cb); - } else { - cb(er, result); - } - }); -} + return p; + }; -function realpathSync (p, cache) { - if (ok) { - return origRealpathSync(p, cache) - } - - try { - return origRealpathSync(p, cache) - } catch (er) { - if (newError(er)) { - return old.realpathSync(p, cache) - } else { - throw er - } - } -} -function monkeypatch () { - fs$4.realpath = realpath; - fs$4.realpathSync = realpathSync; -} + old.realpath = function realpath(p, cache, cb) { + if (typeof cb !== 'function') { + cb = maybeCallback(cache); + cache = null; + } -function unmonkeypatch () { - fs$4.realpath = origRealpath; - fs$4.realpathSync = origRealpathSync; -} + // make p is absolute + p = pathModule.resolve(p); -var concatMap$1 = function (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - var x = fn(xs[i], i); - if (isArray(x)) res.push.apply(res, x); - else res.push(x); - } - return res; -}; + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return process.nextTick(cb.bind(null, null, cache[p])); + } -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; + var original = p, + seenLinks = {}, + knownHard = {}; -var balancedMatch = balanced$1; -function balanced$1(a, b, str) { - if (a instanceof RegExp) a = maybeMatch(a, str); - if (b instanceof RegExp) b = maybeMatch(b, str); + // current character position in p + var pos; + // the partial path so far, including a trailing slash if any + var current; + // the partial path without a trailing slash (except when pointing at a root) + var base; + // the partial path scanned in the previous round, with slash + var previous; - var r = range$1(a, b, str); + start(); - return r && { - start: r[0], - end: r[1], - pre: str.slice(0, r[0]), - body: str.slice(r[0] + a.length, r[1]), - post: str.slice(r[1] + b.length) - }; -} + function start() { + // Skip over roots + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ''; -function maybeMatch(reg, str) { - var m = str.match(reg); - return m ? m[0] : null; -} + // On windows, check that the root exists. On unix there is no need. + if (isWindows && !knownHard[base]) { + fs.lstat(base, function(err) { + if (err) return cb(err); + knownHard[base] = true; + LOOP(); + }); + } else { + process.nextTick(LOOP); + } + } -balanced$1.range = range$1; -function range$1(a, b, str) { - var begs, beg, left, right, result; - var ai = str.indexOf(a); - var bi = str.indexOf(b, ai + 1); - var i = ai; + // walk down the path, swapping out linked pathparts for their real + // values + function LOOP() { + // stop if scanned past end of path + if (pos >= p.length) { + if (cache) cache[original] = p; + return cb(null, p); + } - if (ai >= 0 && bi > 0) { - if(a===b) { - return [ai, bi]; - } - begs = []; - left = str.length; - - while (i >= 0 && !result) { - if (i == ai) { - begs.push(i); - ai = str.indexOf(a, i + 1); - } else if (begs.length == 1) { - result = [ begs.pop(), bi ]; - } else { - beg = begs.pop(); - if (beg < left) { - left = beg; - right = bi; - } + // find the next part + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + + // continue if not a symlink + if (knownHard[base] || (cache && cache[base] === base)) { + return process.nextTick(LOOP); + } - bi = str.indexOf(b, i + 1); - } + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + // known symbolic link. no need to stat again. + return gotResolvedLink(cache[base]); + } - i = ai < bi && ai >= 0 ? ai : bi; - } + return fs.lstat(base, gotStat); + } - if (begs.length) { - result = [ left, right ]; - } - } + function gotStat(err, stat) { + if (err) return cb(err); - return result; -} + // if not a symlink, skip to the next path part + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) cache[base] = base; + return process.nextTick(LOOP); + } -var concatMap = concatMap$1; -var balanced = balancedMatch; + // stat & read the link if not read before + // call gotTarget as soon as the link target is known + // dev/ino always return 0 on windows, so skip the check. + if (!isWindows) { + var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + return gotTarget(null, seenLinks[id], base); + } + } + fs.stat(base, function(err) { + if (err) return cb(err); -var braceExpansion = expandTop; + fs.readlink(base, function(err, target) { + if (!isWindows) seenLinks[id] = target; + gotTarget(err, target); + }); + }); + } -var escSlash = '\0SLASH'+Math.random()+'\0'; -var escOpen = '\0OPEN'+Math.random()+'\0'; -var escClose = '\0CLOSE'+Math.random()+'\0'; -var escComma = '\0COMMA'+Math.random()+'\0'; -var escPeriod = '\0PERIOD'+Math.random()+'\0'; + function gotTarget(err, target, base) { + if (err) return cb(err); -function numeric(str) { - return parseInt(str, 10) == str - ? parseInt(str, 10) - : str.charCodeAt(0); -} + var resolvedLink = pathModule.resolve(previous, target); + if (cache) cache[base] = resolvedLink; + gotResolvedLink(resolvedLink); + } -function escapeBraces(str) { - return str.split('\\\\').join(escSlash) - .split('\\{').join(escOpen) - .split('\\}').join(escClose) - .split('\\,').join(escComma) - .split('\\.').join(escPeriod); + function gotResolvedLink(resolvedLink) { + // resolve the link, then start over + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } + }; + return old; } -function unescapeBraces(str) { - return str.split(escSlash).join('\\') - .split(escOpen).join('{') - .split(escClose).join('}') - .split(escComma).join(',') - .split(escPeriod).join('.'); -} +var fs_realpath; +var hasRequiredFs_realpath; +function requireFs_realpath () { + if (hasRequiredFs_realpath) return fs_realpath; + hasRequiredFs_realpath = 1; + fs_realpath = realpath; + realpath.realpath = realpath; + realpath.sync = realpathSync; + realpath.realpathSync = realpathSync; + realpath.monkeypatch = monkeypatch; + realpath.unmonkeypatch = unmonkeypatch; -// Basically just str.split(","), but handling cases -// where we have nested braced sections, which should be -// treated as individual members, like {a,{b,c},d} -function parseCommaParts(str) { - if (!str) - return ['']; + var fs = require$$0$1; + var origRealpath = fs.realpath; + var origRealpathSync = fs.realpathSync; + + var version = process.version; + var ok = /^v[0-5]\./.test(version); + var old = requireOld(); + + function newError (er) { + return er && er.syscall === 'realpath' && ( + er.code === 'ELOOP' || + er.code === 'ENOMEM' || + er.code === 'ENAMETOOLONG' + ) + } - var parts = []; - var m = balanced('{', '}', str); + function realpath (p, cache, cb) { + if (ok) { + return origRealpath(p, cache, cb) + } - if (!m) - return str.split(','); + if (typeof cache === 'function') { + cb = cache; + cache = null; + } + origRealpath(p, cache, function (er, result) { + if (newError(er)) { + old.realpath(p, cache, cb); + } else { + cb(er, result); + } + }); + } - var pre = m.pre; - var body = m.body; - var post = m.post; - var p = pre.split(','); + function realpathSync (p, cache) { + if (ok) { + return origRealpathSync(p, cache) + } - p[p.length-1] += '{' + body + '}'; - var postParts = parseCommaParts(post); - if (post.length) { - p[p.length-1] += postParts.shift(); - p.push.apply(p, postParts); - } + try { + return origRealpathSync(p, cache) + } catch (er) { + if (newError(er)) { + return old.realpathSync(p, cache) + } else { + throw er + } + } + } - parts.push.apply(parts, p); + function monkeypatch () { + fs.realpath = realpath; + fs.realpathSync = realpathSync; + } - return parts; + function unmonkeypatch () { + fs.realpath = origRealpath; + fs.realpathSync = origRealpathSync; + } + return fs_realpath; } -function expandTop(str) { - if (!str) - return []; - - // I don't know why Bash 4.3 does this, but it does. - // Anything starting with {} will have the first two bytes preserved - // but *only* at the top level, so {},a}b will not expand to anything, - // but a{},b}c will be expanded to [a}c,abc]. - // One could argue that this is a bug in Bash, but since the goal of - // this module is to match Bash's rules, we escape a leading {} - if (str.substr(0, 2) === '{}') { - str = '\\{\\}' + str.substr(2); - } - - return expand$1(escapeBraces(str), true).map(unescapeBraces); -} +var concatMap; +var hasRequiredConcatMap; -function embrace(str) { - return '{' + str + '}'; -} -function isPadded(el) { - return /^-?0\d/.test(el); -} +function requireConcatMap () { + if (hasRequiredConcatMap) return concatMap; + hasRequiredConcatMap = 1; + concatMap = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; + }; -function lte(i, y) { - return i <= y; -} -function gte(i, y) { - return i >= y; + var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; + }; + return concatMap; } -function expand$1(str, isTop) { - var expansions = []; - - var m = balanced('{', '}', str); - if (!m || /\$$/.test(m.pre)) return [str]; - - var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); - var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); - var isSequence = isNumericSequence || isAlphaSequence; - var isOptions = m.body.indexOf(',') >= 0; - if (!isSequence && !isOptions) { - // {a},b} - if (m.post.match(/,.*\}/)) { - str = m.pre + '{' + m.body + escClose + m.post; - return expand$1(str); - } - return [str]; - } - - var n; - if (isSequence) { - n = m.body.split(/\.\./); - } else { - n = parseCommaParts(m.body); - if (n.length === 1) { - // x{{a,b}}y ==> x{a}y x{b}y - n = expand$1(n[0], false).map(embrace); - if (n.length === 1) { - var post = m.post.length - ? expand$1(m.post, false) - : ['']; - return post.map(function(p) { - return m.pre + n[0] + p; - }); - } - } - } - - // at this point, n is the parts, and we know it's not a comma set - // with a single entry. - - // no need to expand pre, since it is guaranteed to be free of brace-sets - var pre = m.pre; - var post = m.post.length - ? expand$1(m.post, false) - : ['']; - - var N; - - if (isSequence) { - var x = numeric(n[0]); - var y = numeric(n[1]); - var width = Math.max(n[0].length, n[1].length); - var incr = n.length == 3 - ? Math.abs(numeric(n[2])) - : 1; - var test = lte; - var reverse = y < x; - if (reverse) { - incr *= -1; - test = gte; - } - var pad = n.some(isPadded); - - N = []; - - for (var i = x; test(i, y); i += incr) { - var c; - if (isAlphaSequence) { - c = String.fromCharCode(i); - if (c === '\\') - c = ''; - } else { - c = String(i); - if (pad) { - var need = width - c.length; - if (need > 0) { - var z = new Array(need + 1).join('0'); - if (i < 0) - c = '-' + z + c.slice(1); - else - c = z + c; - } - } - } - N.push(c); - } - } else { - N = concatMap(n, function(el) { return expand$1(el, false) }); - } - - for (var j = 0; j < N.length; j++) { - for (var k = 0; k < post.length; k++) { - var expansion = pre + N[j] + post[k]; - if (!isTop || isSequence || expansion) - expansions.push(expansion); - } - } - - return expansions; -} +var balancedMatch; +var hasRequiredBalancedMatch; -var minimatch_1 = minimatch$2; -minimatch$2.Minimatch = Minimatch$1; +function requireBalancedMatch () { + if (hasRequiredBalancedMatch) return balancedMatch; + hasRequiredBalancedMatch = 1; + balancedMatch = balanced; + function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); -var path$5 = (function () { try { return require('path') } catch (e) {}}()) || { - sep: '/' -}; -minimatch$2.sep = path$5.sep; + var r = range(a, b, str); -var GLOBSTAR = minimatch$2.GLOBSTAR = Minimatch$1.GLOBSTAR = {}; -var expand = braceExpansion; + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; + } -var plTypes = { - '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, - '?': { open: '(?:', close: ')?' }, - '+': { open: '(?:', close: ')+' }, - '*': { open: '(?:', close: ')*' }, - '@': { open: '(?:', close: ')' } -}; + function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; + } -// any single thing other than / -// don't need to escape / when using new RegExp() -var qmark = '[^/]'; + balanced.range = range; + function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; -// * => any number of characters -var star = qmark + '*?'; + if (ai >= 0 && bi > 0) { + if(a===b) { + return [ai, bi]; + } + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } -// ** when dots are allowed. Anything goes, except .. and . -// not (^ or / followed by one or two dots followed by $ or /), -// followed by anything, any number of times. -var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'; + bi = str.indexOf(b, i + 1); + } -// not a ^ or / followed by a dot, -// followed by anything, any number of times. -var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'; + i = ai < bi && ai >= 0 ? ai : bi; + } -// characters that need to be escaped in RegExp. -var reSpecials = charSet('().*{}+?[]^$\\!'); + if (begs.length) { + result = [ left, right ]; + } + } -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split('').reduce(function (set, c) { - set[c] = true; - return set - }, {}) + return result; + } + return balancedMatch; } -// normalizes slashes. -var slashSplit = /\/+/; +var braceExpansion; +var hasRequiredBraceExpansion; -minimatch$2.filter = filter; -function filter (pattern, options) { - options = options || {}; - return function (p, i, list) { - return minimatch$2(p, pattern, options) - } -} +function requireBraceExpansion () { + if (hasRequiredBraceExpansion) return braceExpansion; + hasRequiredBraceExpansion = 1; + var concatMap = requireConcatMap(); + var balanced = requireBalancedMatch(); -function ext (a, b) { - b = b || {}; - var t = {}; - Object.keys(a).forEach(function (k) { - t[k] = a[k]; - }); - Object.keys(b).forEach(function (k) { - t[k] = b[k]; - }); - return t -} + braceExpansion = expandTop; -minimatch$2.defaults = function (def) { - if (!def || typeof def !== 'object' || !Object.keys(def).length) { - return minimatch$2 - } + var escSlash = '\0SLASH'+Math.random()+'\0'; + var escOpen = '\0OPEN'+Math.random()+'\0'; + var escClose = '\0CLOSE'+Math.random()+'\0'; + var escComma = '\0COMMA'+Math.random()+'\0'; + var escPeriod = '\0PERIOD'+Math.random()+'\0'; - var orig = minimatch$2; + function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); + } - var m = function minimatch (p, pattern, options) { - return orig(p, pattern, ext(def, options)) - }; + function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); + } - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - }; - m.Minimatch.defaults = function defaults (options) { - return orig.defaults(ext(def, options)).Minimatch - }; + function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); + } - m.filter = function filter (pattern, options) { - return orig.filter(pattern, ext(def, options)) - }; - m.defaults = function defaults (options) { - return orig.defaults(ext(def, options)) - }; + // Basically just str.split(","), but handling cases + // where we have nested braced sections, which should be + // treated as individual members, like {a,{b,c},d} + function parseCommaParts(str) { + if (!str) + return ['']; - m.makeRe = function makeRe (pattern, options) { - return orig.makeRe(pattern, ext(def, options)) - }; + var parts = []; + var m = balanced('{', '}', str); - m.braceExpand = function braceExpand (pattern, options) { - return orig.braceExpand(pattern, ext(def, options)) - }; + if (!m) + return str.split(','); - m.match = function (list, pattern, options) { - return orig.match(list, pattern, ext(def, options)) - }; + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); - return m -}; + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } -Minimatch$1.defaults = function (def) { - return minimatch$2.defaults(def).Minimatch -}; + parts.push.apply(parts, p); + + return parts; + } -function minimatch$2 (p, pattern, options) { - assertValidPattern(pattern); + function expandTop(str) { + if (!str) + return []; - if (!options) options = {}; + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - return false - } + return expand(escapeBraces(str), true).map(unescapeBraces); + } - return new Minimatch$1(pattern, options).match(p) -} + function embrace(str) { + return '{' + str + '}'; + } + function isPadded(el) { + return /^-?0\d/.test(el); + } + + function lte(i, y) { + return i <= y; + } + function gte(i, y) { + return i >= y; + } -function Minimatch$1 (pattern, options) { - if (!(this instanceof Minimatch$1)) { - return new Minimatch$1(pattern, options) - } + function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } - assertValidPattern(pattern); + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } - if (!options) options = {}; + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length); + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); - pattern = pattern.trim(); + N = []; - // windows support: need to use /, not \ - if (!options.allowWindowsEscape && path$5.sep !== '/') { - pattern = pattern.split(path$5.sep).join('/'); - } + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } - this.options = options; - this.set = []; - this.pattern = pattern; - this.regexp = null; - this.negate = false; - this.comment = false; - this.empty = false; - this.partial = !!options.partial; + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } - // make the set of regexps etc. - this.make(); + return expansions; + } + return braceExpansion; } -Minimatch$1.prototype.debug = function () {}; +var minimatch_1; +var hasRequiredMinimatch; -Minimatch$1.prototype.make = make; -function make () { - var pattern = this.pattern; - var options = this.options; +function requireMinimatch () { + if (hasRequiredMinimatch) return minimatch_1; + hasRequiredMinimatch = 1; + minimatch_1 = minimatch; + minimatch.Minimatch = Minimatch; - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - this.comment = true; - return - } - if (!pattern) { - this.empty = true; - return - } + var path = (function () { try { return require('path') } catch (e) {}}()) || { + sep: '/' + }; + minimatch.sep = path.sep; - // step 1: figure out negation, etc. - this.parseNegate(); + var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}; + var expand = requireBraceExpansion(); - // step 2: expand braces - var set = this.globSet = this.braceExpand(); + var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } + }; - if (options.debug) this.debug = function debug() { console.error.apply(console, arguments); }; + // any single thing other than / + // don't need to escape / when using new RegExp() + var qmark = '[^/]'; - this.debug(this.pattern, set); + // * => any number of characters + var star = qmark + '*?'; - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }); + // ** when dots are allowed. Anything goes, except .. and . + // not (^ or / followed by one or two dots followed by $ or /), + // followed by anything, any number of times. + var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'; - this.debug(this.pattern, set); + // not a ^ or / followed by a dot, + // followed by anything, any number of times. + var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'; - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this); + // characters that need to be escaped in RegExp. + var reSpecials = charSet('().*{}+?[]^$\\!'); - this.debug(this.pattern, set); + // "abc" -> { a:true, b:true, c:true } + function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true; + return set + }, {}) + } - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return s.indexOf(false) === -1 - }); + // normalizes slashes. + var slashSplit = /\/+/; - this.debug(this.pattern, set); + minimatch.filter = filter; + function filter (pattern, options) { + options = options || {}; + return function (p, i, list) { + return minimatch(p, pattern, options) + } + } - this.set = set; -} + function ext (a, b) { + b = b || {}; + var t = {}; + Object.keys(a).forEach(function (k) { + t[k] = a[k]; + }); + Object.keys(b).forEach(function (k) { + t[k] = b[k]; + }); + return t + } -Minimatch$1.prototype.parseNegate = parseNegate; -function parseNegate () { - var pattern = this.pattern; - var negate = false; - var options = this.options; - var negateOffset = 0; + minimatch.defaults = function (def) { + if (!def || typeof def !== 'object' || !Object.keys(def).length) { + return minimatch + } - if (options.nonegate) return + var orig = minimatch; - for (var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === '!' - ; i++) { - negate = !negate; - negateOffset++; - } + var m = function minimatch (p, pattern, options) { + return orig(p, pattern, ext(def, options)) + }; - if (negateOffset) this.pattern = pattern.substr(negateOffset); - this.negate = negate; -} + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + }; + m.Minimatch.defaults = function defaults (options) { + return orig.defaults(ext(def, options)).Minimatch + }; -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch$2.braceExpand = function (pattern, options) { - return braceExpand(pattern, options) -}; + m.filter = function filter (pattern, options) { + return orig.filter(pattern, ext(def, options)) + }; -Minimatch$1.prototype.braceExpand = braceExpand; + m.defaults = function defaults (options) { + return orig.defaults(ext(def, options)) + }; -function braceExpand (pattern, options) { - if (!options) { - if (this instanceof Minimatch$1) { - options = this.options; - } else { - options = {}; - } - } + m.makeRe = function makeRe (pattern, options) { + return orig.makeRe(pattern, ext(def, options)) + }; - pattern = typeof pattern === 'undefined' - ? this.pattern : pattern; + m.braceExpand = function braceExpand (pattern, options) { + return orig.braceExpand(pattern, ext(def, options)) + }; - assertValidPattern(pattern); + m.match = function (list, pattern, options) { + return orig.match(list, pattern, ext(def, options)) + }; - // Thanks to Yeting Li for - // improving this regexp to avoid a ReDOS vulnerability. - if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { - // shortcut. no need to expand. - return [pattern] - } + return m + }; - return expand(pattern) -} + Minimatch.defaults = function (def) { + return minimatch.defaults(def).Minimatch + }; -var MAX_PATTERN_LENGTH = 1024 * 64; -var assertValidPattern = function (pattern) { - if (typeof pattern !== 'string') { - throw new TypeError('invalid pattern') - } + function minimatch (p, pattern, options) { + assertValidPattern(pattern); - if (pattern.length > MAX_PATTERN_LENGTH) { - throw new TypeError('pattern is too long') - } -}; + if (!options) options = {}; -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch$1.prototype.parse = parse; -var SUBPARSE = {}; -function parse (pattern, isSub) { - assertValidPattern(pattern); - - var options = this.options; - - // shortcuts - if (pattern === '**') { - if (!options.noglobstar) - return GLOBSTAR - else - pattern = '*'; - } - if (pattern === '') return '' - - var re = ''; - var hasMagic = !!options.nocase; - var escaping = false; - // ? => one single character - var patternListStack = []; - var negativeLists = []; - var stateChar; - var inClass = false; - var reClassStart = -1; - var classStart = -1; - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - var patternStart = pattern.charAt(0) === '.' ? '' // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' - : '(?!\\.)'; - var self = this; - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star; - hasMagic = true; - break - case '?': - re += qmark; - hasMagic = true; - break - default: - re += '\\' + stateChar; - break - } - self.debug('clearStateChar %j %j', stateChar, re); - stateChar = false; - } - } - - for (var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i++) { - this.debug('%s\t%s %s %j', pattern, i, re, c); - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += '\\' + c; - escaping = false; - continue - } + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } - switch (c) { - /* istanbul ignore next */ - case '/': { - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - } - - case '\\': - clearStateChar(); - escaping = true; - continue - - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c); - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class'); - if (c === '!' && i === classStart + 1) c = '^'; - re += c; - continue - } + return new Minimatch(pattern, options).match(p) + } - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar); - clearStateChar(); - stateChar = c; - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar(); - continue - - case '(': - if (inClass) { - re += '('; - continue - } + function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } - if (!stateChar) { - re += '\\('; - continue - } + assertValidPattern(pattern); - patternListStack.push({ - type: stateChar, - start: i - 1, - reStart: re.length, - open: plTypes[stateChar].open, - close: plTypes[stateChar].close - }); - // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!(?:' : '(?:'; - this.debug('plType %j %j', stateChar, re); - stateChar = false; - continue - - case ')': - if (inClass || !patternListStack.length) { - re += '\\)'; - continue - } + if (!options) options = {}; - clearStateChar(); - hasMagic = true; - var pl = patternListStack.pop(); - // negation is (?:(?!js)[^/]*) - // The others are (?:) - re += pl.close; - if (pl.type === '!') { - negativeLists.push(pl); - } - pl.reEnd = re.length; - continue - - case '|': - if (inClass || !patternListStack.length || escaping) { - re += '\\|'; - escaping = false; - continue - } + pattern = pattern.trim(); - clearStateChar(); - re += '|'; - continue + // windows support: need to use /, not \ + if (!options.allowWindowsEscape && path.sep !== '/') { + pattern = pattern.split(path.sep).join('/'); + } - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar(); + this.options = options; + this.set = []; + this.pattern = pattern; + this.regexp = null; + this.negate = false; + this.comment = false; + this.empty = false; + this.partial = !!options.partial; + + // make the set of regexps etc. + this.make(); + } - if (inClass) { - re += '\\' + c; - continue - } + Minimatch.prototype.debug = function () {}; - inClass = true; - classStart = i; - reClassStart = re.length; - re += c; - continue - - case ']': - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += '\\' + c; - escaping = false; - continue - } + Minimatch.prototype.make = make; + function make () { + var pattern = this.pattern; + var options = this.options; - // handle the case where we left a class open. - // "[z-a]" is valid, equivalent to "\[z-a\]" - // split where the last [ was, make sure we don't have - // an invalid re. if so, re-walk the contents of the - // would-be class to re-translate any characters that - // were passed through as-is - // TODO: It would probably be faster to determine this - // without a try/catch and a new RegExp, but it's tricky - // to do safely. For now, this is safe and works. - var cs = pattern.substring(classStart + 1, i); - try { - RegExp('[' + cs + ']'); - } catch (er) { - // not a valid class! - var sp = this.parse(cs, SUBPARSE); - re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'; - hasMagic = hasMagic || sp[1]; - inClass = false; - continue - } + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true; + return + } + if (!pattern) { + this.empty = true; + return + } - // finish up the class. - hasMagic = true; - inClass = false; - re += c; - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar(); - - if (escaping) { - // no need - escaping = false; - } else if (reSpecials[c] - && !(c === '^' && inClass)) { - re += '\\'; - } + // step 1: figure out negation, etc. + this.parseNegate(); - re += c; - - } // switch - } // for - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - cs = pattern.substr(classStart + 1); - sp = this.parse(cs, SUBPARSE); - re = re.substr(0, reClassStart) + '\\[' + sp[0]; - hasMagic = hasMagic || sp[1]; - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + pl.open.length); - this.debug('setting tail', re, pl); - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\'; - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }); + // step 2: expand braces + var set = this.globSet = this.braceExpand(); - this.debug('tail=%j\n %s', tail, tail, pl, re); - var t = pl.type === '*' ? star - : pl.type === '?' ? qmark - : '\\' + pl.type; - - hasMagic = true; - re = re.slice(0, pl.reStart) + t + '\\(' + tail; - } - - // handle trailing things that only matter at the very end. - clearStateChar(); - if (escaping) { - // trailing \\ - re += '\\\\'; - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false; - switch (re.charAt(0)) { - case '[': case '.': case '(': addPatternStart = true; - } - - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (var n = negativeLists.length - 1; n > -1; n--) { - var nl = negativeLists[n]; - - var nlBefore = re.slice(0, nl.reStart); - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8); - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd); - var nlAfter = re.slice(nl.reEnd); - - nlLast += nlAfter; - - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - var openParensBefore = nlBefore.split('(').length - 1; - var cleanAfter = nlAfter; - for (i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, ''); - } - nlAfter = cleanAfter; + if (options.debug) this.debug = function debug() { console.error.apply(console, arguments); }; - var dollar = ''; - if (nlAfter === '' && isSub !== SUBPARSE) { - dollar = '$'; - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast; - re = newRe; - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re; - } - - if (addPatternStart) { - re = patternStart + re; - } - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [re, hasMagic] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? 'i' : ''; - try { - var regExp = new RegExp('^' + re + '$', flags); - } catch (er) /* istanbul ignore next - should be impossible */ { - // If it was an invalid regular expression, then it can't match - // anything. This trick looks for a character after the end of - // the string, which is of course impossible, except in multi-line - // mode, but it's not a /m regex. - return new RegExp('$.') - } - - regExp._glob = pattern; - regExp._src = re; - - return regExp -} + this.debug(this.pattern, set); -minimatch$2.makeRe = function (pattern, options) { - return new Minimatch$1(pattern, options || {}).makeRe() -}; + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }); -Minimatch$1.prototype.makeRe = makeRe; -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set; - - if (!set.length) { - this.regexp = false; - return this.regexp - } - var options = this.options; - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot; - var flags = options.nocase ? 'i' : ''; - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === 'string') ? regExpEscape(p) - : p._src - }).join('\\\/') - }).join('|'); - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$'; - - // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$'; - - try { - this.regexp = new RegExp(re, flags); - } catch (ex) /* istanbul ignore next - should be impossible */ { - this.regexp = false; - } - return this.regexp -} + this.debug(this.pattern, set); -minimatch$2.match = function (list, pattern, options) { - options = options || {}; - var mm = new Minimatch$1(pattern, options); - list = list.filter(function (f) { - return mm.match(f) - }); - if (mm.options.nonull && !list.length) { - list.push(pattern); - } - return list -}; + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this); -Minimatch$1.prototype.match = function match (f, partial) { - if (typeof partial === 'undefined') partial = this.partial; - this.debug('match', f, this.pattern); - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === '' - - if (f === '/' && partial) return true - - var options = this.options; - - // windows: need to use /, not \ - if (path$5.sep !== '/') { - f = f.split(path$5.sep).join('/'); - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit); - this.debug(this.pattern, 'split', f); - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set; - this.debug(this.pattern, 'set', set); - - // Find the basename of the path by looking for the last non-empty segment - var filename; - var i; - for (i = f.length - 1; i >= 0; i--) { - filename = f[i]; - if (filename) break - } - - for (i = 0; i < set.length; i++) { - var pattern = set[i]; - var file = f; - if (options.matchBase && pattern.length === 1) { - file = [filename]; - } - var hit = this.matchOne(file, pattern, partial); - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } + this.debug(this.pattern, set); - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -}; + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }); -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch$1.prototype.matchOne = function (file, pattern, partial) { - var options = this.options; - - this.debug('matchOne', - { 'this': this, file: file, pattern: pattern }); - - this.debug('matchOne', file.length, pattern.length); - - for (var fi = 0, - pi = 0, - fl = file.length, - pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi++, pi++) { - this.debug('matchOne loop'); - var p = pattern[pi]; - var f = file[fi]; - - this.debug(pattern, p, f); - - // should be impossible. - // some invalid regexp stuff in the set. - /* istanbul ignore if */ - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]); - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi; - var pr = pi + 1; - if (pr === pl) { - this.debug('** at the end'); - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for (; fi < fl; fi++) { - if (file[fi] === '.' || file[fi] === '..' || - (!options.dot && file[fi].charAt(0) === '.')) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - while (fr < fl) { - var swallowee = file[fr]; - - this.debug('\nglobstar while', file, fr, pattern, pr, swallowee); - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee); - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === '.' || swallowee === '..' || - (!options.dot && swallowee.charAt(0) === '.')) { - this.debug('dot detected!', file, fr, pattern, pr); - break - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue'); - fr++; - } - } - - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - /* istanbul ignore if */ - if (partial) { - // ran out of file - this.debug('\n>>> no match, partial?', file, fr, pattern, pr); - if (fr === fl) return true - } - return false - } + this.debug(this.pattern, set); - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit; - if (typeof p === 'string') { - hit = f === p; - this.debug('string match', p, f, hit); - } else { - hit = f.match(p); - this.debug('pattern match', p, f, hit); - } + this.set = set; + } - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else /* istanbul ignore else */ if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - return (fi === fl - 1) && (file[fi] === '') - } - - // should be unreachable. - /* istanbul ignore next */ - throw new Error('wtf?') -}; + Minimatch.prototype.parseNegate = parseNegate; + function parseNegate () { + var pattern = this.pattern; + var negate = false; + var options = this.options; + var negateOffset = 0; -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, '$1') -} + if (options.nonegate) return -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') -} + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate; + negateOffset++; + } -var inheritsExports = {}; -var inherits = { - get exports(){ return inheritsExports; }, - set exports(v){ inheritsExports = v; }, -}; + if (negateOffset) this.pattern = pattern.substr(negateOffset); + this.negate = negate; + } -var inherits_browserExports = {}; -var inherits_browser = { - get exports(){ return inherits_browserExports; }, - set exports(v){ inherits_browserExports = v; }, -}; + // Brace expansion: + // a{b,c}d -> abd acd + // a{b,}c -> abc ac + // a{0..3}d -> a0d a1d a2d a3d + // a{b,c{d,e}f}g -> abg acdfg acefg + // a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg + // + // Invalid sets are not expanded. + // a{2..}b -> a{2..}b + // a{b}c -> a{b}c + minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) + }; -var hasRequiredInherits_browser; + Minimatch.prototype.braceExpand = braceExpand; -function requireInherits_browser () { - if (hasRequiredInherits_browser) return inherits_browserExports; - hasRequiredInherits_browser = 1; - if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - inherits_browser.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; + function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options; + } else { + options = {}; + } + } + + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern; + + assertValidPattern(pattern); + + // Thanks to Yeting Li for + // improving this regexp to avoid a ReDOS vulnerability. + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) + } + + var MAX_PATTERN_LENGTH = 1024 * 64; + var assertValidPattern = function (pattern) { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern') + } + + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long') + } + }; + + // parse a component of the expanded set. + // At this point, no pattern may contain "/" in it + // so we're going to return a 2d array, where each entry is the full + // pattern, split on '/', and then turned into a regular expression. + // A regexp is made at the end which joins each array with an + // escaped /, and another full one which joins each regexp with |. + // + // Following the lead of Bash 4.1, note that "**" only has special meaning + // when it is the *only* thing in a path portion. Otherwise, any series + // of * is equivalent to a single *. Globstar behavior is enabled by + // default, and can be disabled by setting options.noglobstar. + Minimatch.prototype.parse = parse; + var SUBPARSE = {}; + function parse (pattern, isSub) { + assertValidPattern(pattern); + + var options = this.options; + + // shortcuts + if (pattern === '**') { + if (!options.noglobstar) + return GLOBSTAR + else + pattern = '*'; + } + if (pattern === '') return '' + + var re = ''; + var hasMagic = !!options.nocase; + var escaping = false; + // ? => one single character + var patternListStack = []; + var negativeLists = []; + var stateChar; + var inClass = false; + var reClassStart = -1; + var classStart = -1; + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)'; + var self = this; + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star; + hasMagic = true; + break + case '?': + re += qmark; + hasMagic = true; + break + default: + re += '\\' + stateChar; + break + } + self.debug('clearStateChar %j %j', stateChar, re); + stateChar = false; + } + } + + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c); + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c; + escaping = false; + continue + } + + switch (c) { + /* istanbul ignore next */ + case '/': { + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + } + + case '\\': + clearStateChar(); + escaping = true; + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c); + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class'); + if (c === '!' && i === classStart + 1) c = '^'; + re += c; + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar); + clearStateChar(); + stateChar = c; + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar(); + continue + + case '(': + if (inClass) { + re += '('; + continue + } + + if (!stateChar) { + re += '\\('; + continue + } + + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }); + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:'; + this.debug('plType %j %j', stateChar, re); + stateChar = false; + continue + + case ')': + if (inClass || !patternListStack.length) { + re += '\\)'; + continue + } + + clearStateChar(); + hasMagic = true; + var pl = patternListStack.pop(); + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close; + if (pl.type === '!') { + negativeLists.push(pl); + } + pl.reEnd = re.length; + continue + + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|'; + escaping = false; + continue + } + + clearStateChar(); + re += '|'; + continue + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar(); + + if (inClass) { + re += '\\' + c; + continue + } + + inClass = true; + classStart = i; + reClassStart = re.length; + re += c; + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c; + escaping = false; + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i); + try { + RegExp('[' + cs + ']'); + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE); + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'; + hasMagic = hasMagic || sp[1]; + inClass = false; + continue + } + + // finish up the class. + hasMagic = true; + inClass = false; + re += c; + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar(); + + if (escaping) { + // no need + escaping = false; + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\'; + } + + re += c; + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1); + sp = this.parse(cs, SUBPARSE); + re = re.substr(0, reClassStart) + '\\[' + sp[0]; + hasMagic = hasMagic || sp[1]; + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length); + this.debug('setting tail', re, pl); + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\'; + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }); + + this.debug('tail=%j\n %s', tail, tail, pl, re); + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type; + + hasMagic = true; + re = re.slice(0, pl.reStart) + t + '\\(' + tail; + } + + // handle trailing things that only matter at the very end. + clearStateChar(); + if (escaping) { + // trailing \\ + re += '\\\\'; + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false; + switch (re.charAt(0)) { + case '[': case '.': case '(': addPatternStart = true; + } + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n]; + + var nlBefore = re.slice(0, nl.reStart); + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8); + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd); + var nlAfter = re.slice(nl.reEnd); + + nlLast += nlAfter; + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1; + var cleanAfter = nlAfter; + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, ''); + } + nlAfter = cleanAfter; + + var dollar = ''; + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$'; + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast; + re = newRe; + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re; + } + + if (addPatternStart) { + re = patternStart + re; + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? 'i' : ''; + try { + var regExp = new RegExp('^' + re + '$', flags); + } catch (er) /* istanbul ignore next - should be impossible */ { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } + + regExp._glob = pattern; + regExp._src = re; + + return regExp + } + + minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() + }; + + Minimatch.prototype.makeRe = makeRe; + function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set; + + if (!set.length) { + this.regexp = false; + return this.regexp + } + var options = this.options; + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot; + var flags = options.nocase ? 'i' : ''; + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|'); + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$'; + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$'; + + try { + this.regexp = new RegExp(re, flags); + } catch (ex) /* istanbul ignore next - should be impossible */ { + this.regexp = false; + } + return this.regexp + } + + minimatch.match = function (list, pattern, options) { + options = options || {}; + var mm = new Minimatch(pattern, options); + list = list.filter(function (f) { + return mm.match(f) + }); + if (mm.options.nonull && !list.length) { + list.push(pattern); + } + return list + }; + + Minimatch.prototype.match = function match (f, partial) { + if (typeof partial === 'undefined') partial = this.partial; + this.debug('match', f, this.pattern); + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + var options = this.options; + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/'); + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit); + this.debug(this.pattern, 'split', f); + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set; + this.debug(this.pattern, 'set', set); + + // Find the basename of the path by looking for the last non-empty segment + var filename; + var i; + for (i = f.length - 1; i >= 0; i--) { + filename = f[i]; + if (filename) break + } + + for (i = 0; i < set.length; i++) { + var pattern = set[i]; + var file = f; + if (options.matchBase && pattern.length === 1) { + file = [filename]; + } + var hit = this.matchOne(file, pattern, partial); + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate + }; + + // set partial to true to test if, for example, + // "/a/b" matches the start of "/*/b/*/d" + // Partial means, if you run out of file before you run + // out of pattern, then that's fine, as long as all + // the parts match. + Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options; + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }); + + this.debug('matchOne', file.length, pattern.length); + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop'); + var p = pattern[pi]; + var f = file[fi]; + + this.debug(pattern, p, f); + + // should be impossible. + // some invalid regexp stuff in the set. + /* istanbul ignore if */ + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]); + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi; + var pr = pi + 1; + if (pr === pl) { + this.debug('** at the end'); + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr]; + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee); + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee); + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr); + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue'); + fr++; + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + /* istanbul ignore if */ + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr); + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit; + if (typeof p === 'string') { + hit = f === p; + this.debug('string match', p, f, hit); + } else { + hit = f.match(p); + this.debug('pattern match', p, f, hit); + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else /* istanbul ignore else */ if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + return (fi === fl - 1) && (file[fi] === '') + } + + // should be unreachable. + /* istanbul ignore next */ + throw new Error('wtf?') + }; + + // replace stuff like \* with * + function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') + } + + function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') + } + return minimatch_1; +} + +var inherits = {exports: {}}; + +var inherits_browser = {exports: {}}; + +var hasRequiredInherits_browser; + +function requireInherits_browser () { + if (hasRequiredInherits_browser) return inherits_browser.exports; + hasRequiredInherits_browser = 1; + if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + inherits_browser.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; ctor.prototype = Object.create(superCtor.prototype, { constructor: { value: ctor, @@ -1678,285 +1714,301 @@ function requireInherits_browser () { } }; } - return inherits_browserExports; + return inherits_browser.exports; } -(function (module) { +var hasRequiredInherits; + +function requireInherits () { + if (hasRequiredInherits) return inherits.exports; + hasRequiredInherits = 1; try { var util = require('util'); /* istanbul ignore next */ if (typeof util.inherits !== 'function') throw ''; - module.exports = util.inherits; + inherits.exports = util.inherits; } catch (e) { /* istanbul ignore next */ - module.exports = requireInherits_browser(); + inherits.exports = requireInherits_browser(); } -} (inherits)); + return inherits.exports; +} -var pathIsAbsoluteExports = {}; -var pathIsAbsolute = { - get exports(){ return pathIsAbsoluteExports; }, - set exports(v){ pathIsAbsoluteExports = v; }, -}; +var pathIsAbsolute = {exports: {}}; -function posix(path) { - return path.charAt(0) === '/'; -} +var hasRequiredPathIsAbsolute; -function win32(path) { - // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 - var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; - var result = splitDeviceRe.exec(path); - var device = result[1] || ''; - var isUnc = Boolean(device && device.charAt(1) !== ':'); +function requirePathIsAbsolute () { + if (hasRequiredPathIsAbsolute) return pathIsAbsolute.exports; + hasRequiredPathIsAbsolute = 1; - // UNC paths are always absolute - return Boolean(result[2] || isUnc); -} + function posix(path) { + return path.charAt(0) === '/'; + } + + function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); -pathIsAbsolute.exports = process.platform === 'win32' ? win32 : posix; -pathIsAbsoluteExports.posix = posix; -pathIsAbsoluteExports.win32 = win32; + // UNC paths are always absolute + return Boolean(result[2] || isUnc); + } + + pathIsAbsolute.exports = process.platform === 'win32' ? win32 : posix; + pathIsAbsolute.exports.posix = posix; + pathIsAbsolute.exports.win32 = win32; + return pathIsAbsolute.exports; +} var common = {}; -common.setopts = setopts; -common.ownProp = ownProp; -common.makeAbs = makeAbs; -common.finish = finish; -common.mark = mark; -common.isIgnored = isIgnored; -common.childrenIgnored = childrenIgnored; +var hasRequiredCommon; + +function requireCommon () { + if (hasRequiredCommon) return common; + hasRequiredCommon = 1; + common.setopts = setopts; + common.ownProp = ownProp; + common.makeAbs = makeAbs; + common.finish = finish; + common.mark = mark; + common.isIgnored = isIgnored; + common.childrenIgnored = childrenIgnored; + + function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) + } -function ownProp (obj, field) { - return Object.prototype.hasOwnProperty.call(obj, field) -} + var fs = require$$0$1; + var path = require$$0; + var minimatch = requireMinimatch(); + var isAbsolute = requirePathIsAbsolute(); + var Minimatch = minimatch.Minimatch; -var fs$3 = require$$0$1; -var path$4 = require$$0; -var minimatch$1 = minimatch_1; -var isAbsolute$2 = pathIsAbsoluteExports; -var Minimatch = minimatch$1.Minimatch; + function alphasort (a, b) { + return a.localeCompare(b, 'en') + } -function alphasort (a, b) { - return a.localeCompare(b, 'en') -} + function setupIgnores (self, options) { + self.ignore = options.ignore || []; -function setupIgnores (self, options) { - self.ignore = options.ignore || []; + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore]; - if (!Array.isArray(self.ignore)) - self.ignore = [self.ignore]; + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap); + } + } - if (self.ignore.length) { - self.ignore = self.ignore.map(ignoreMap); - } -} + // ignore patterns are always in dot:true mode. + function ignoreMap (pattern) { + var gmatcher = null; + if (pattern.slice(-3) === '/**') { + var gpattern = pattern.replace(/(\/\*\*)+$/, ''); + gmatcher = new Minimatch(gpattern, { dot: true }); + } -// ignore patterns are always in dot:true mode. -function ignoreMap (pattern) { - var gmatcher = null; - if (pattern.slice(-3) === '/**') { - var gpattern = pattern.replace(/(\/\*\*)+$/, ''); - gmatcher = new Minimatch(gpattern, { dot: true }); - } - - return { - matcher: new Minimatch(pattern, { dot: true }), - gmatcher: gmatcher - } -} + return { + matcher: new Minimatch(pattern, { dot: true }), + gmatcher: gmatcher + } + } -function setopts (self, pattern, options) { - if (!options) - options = {}; + function setopts (self, pattern, options) { + if (!options) + options = {}; - // base-matching: just use globstar for that. - if (options.matchBase && -1 === pattern.indexOf("/")) { - if (options.noglobstar) { - throw new Error("base matching requires globstar") - } - pattern = "**/" + pattern; - } - - self.silent = !!options.silent; - self.pattern = pattern; - self.strict = options.strict !== false; - self.realpath = !!options.realpath; - self.realpathCache = options.realpathCache || Object.create(null); - self.follow = !!options.follow; - self.dot = !!options.dot; - self.mark = !!options.mark; - self.nodir = !!options.nodir; - if (self.nodir) - self.mark = true; - self.sync = !!options.sync; - self.nounique = !!options.nounique; - self.nonull = !!options.nonull; - self.nosort = !!options.nosort; - self.nocase = !!options.nocase; - self.stat = !!options.stat; - self.noprocess = !!options.noprocess; - self.absolute = !!options.absolute; - self.fs = options.fs || fs$3; - - self.maxLength = options.maxLength || Infinity; - self.cache = options.cache || Object.create(null); - self.statCache = options.statCache || Object.create(null); - self.symlinks = options.symlinks || Object.create(null); - - setupIgnores(self, options); - - self.changedCwd = false; - var cwd = process.cwd(); - if (!ownProp(options, "cwd")) - self.cwd = cwd; - else { - self.cwd = path$4.resolve(options.cwd); - self.changedCwd = self.cwd !== cwd; - } - - self.root = options.root || path$4.resolve(self.cwd, "/"); - self.root = path$4.resolve(self.root); - if (process.platform === "win32") - self.root = self.root.replace(/\\/g, "/"); - - // TODO: is an absolute `cwd` supposed to be resolved against `root`? - // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test') - self.cwdAbs = isAbsolute$2(self.cwd) ? self.cwd : makeAbs(self, self.cwd); - if (process.platform === "win32") - self.cwdAbs = self.cwdAbs.replace(/\\/g, "/"); - self.nomount = !!options.nomount; - - // disable comments and negation in Minimatch. - // Note that they are not supported in Glob itself anyway. - options.nonegate = true; - options.nocomment = true; - // always treat \ in patterns as escapes, not path separators - options.allowWindowsEscape = false; - - self.minimatch = new Minimatch(pattern, options); - self.options = self.minimatch.options; -} + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern; + } + + self.silent = !!options.silent; + self.pattern = pattern; + self.strict = options.strict !== false; + self.realpath = !!options.realpath; + self.realpathCache = options.realpathCache || Object.create(null); + self.follow = !!options.follow; + self.dot = !!options.dot; + self.mark = !!options.mark; + self.nodir = !!options.nodir; + if (self.nodir) + self.mark = true; + self.sync = !!options.sync; + self.nounique = !!options.nounique; + self.nonull = !!options.nonull; + self.nosort = !!options.nosort; + self.nocase = !!options.nocase; + self.stat = !!options.stat; + self.noprocess = !!options.noprocess; + self.absolute = !!options.absolute; + self.fs = options.fs || fs; + + self.maxLength = options.maxLength || Infinity; + self.cache = options.cache || Object.create(null); + self.statCache = options.statCache || Object.create(null); + self.symlinks = options.symlinks || Object.create(null); + + setupIgnores(self, options); + + self.changedCwd = false; + var cwd = process.cwd(); + if (!ownProp(options, "cwd")) + self.cwd = cwd; + else { + self.cwd = path.resolve(options.cwd); + self.changedCwd = self.cwd !== cwd; + } + + self.root = options.root || path.resolve(self.cwd, "/"); + self.root = path.resolve(self.root); + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/"); + + // TODO: is an absolute `cwd` supposed to be resolved against `root`? + // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test') + self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd); + if (process.platform === "win32") + self.cwdAbs = self.cwdAbs.replace(/\\/g, "/"); + self.nomount = !!options.nomount; + + // disable comments and negation in Minimatch. + // Note that they are not supported in Glob itself anyway. + options.nonegate = true; + options.nocomment = true; + // always treat \ in patterns as escapes, not path separators + options.allowWindowsEscape = false; + + self.minimatch = new Minimatch(pattern, options); + self.options = self.minimatch.options; + } -function finish (self) { - var nou = self.nounique; - var all = nou ? [] : Object.create(null); - - for (var i = 0, l = self.matches.length; i < l; i ++) { - var matches = self.matches[i]; - if (!matches || Object.keys(matches).length === 0) { - if (self.nonull) { - // do like the shell, and spit out the literal glob - var literal = self.minimatch.globSet[i]; - if (nou) - all.push(literal); - else - all[literal] = true; - } - } else { - // had matches - var m = Object.keys(matches); - if (nou) - all.push.apply(all, m); - else - m.forEach(function (m) { - all[m] = true; - }); - } - } + function finish (self) { + var nou = self.nounique; + var all = nou ? [] : Object.create(null); + + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i]; + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i]; + if (nou) + all.push(literal); + else + all[literal] = true; + } + } else { + // had matches + var m = Object.keys(matches); + if (nou) + all.push.apply(all, m); + else + m.forEach(function (m) { + all[m] = true; + }); + } + } - if (!nou) - all = Object.keys(all); + if (!nou) + all = Object.keys(all); - if (!self.nosort) - all = all.sort(alphasort); + if (!self.nosort) + all = all.sort(alphasort); - // at *some* point we statted all of these - if (self.mark) { - for (var i = 0; i < all.length; i++) { - all[i] = self._mark(all[i]); - } - if (self.nodir) { - all = all.filter(function (e) { - var notDir = !(/\/$/.test(e)); - var c = self.cache[e] || self.cache[makeAbs(self, e)]; - if (notDir && c) - notDir = c !== 'DIR' && !Array.isArray(c); - return notDir - }); - } - } + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]); + } + if (self.nodir) { + all = all.filter(function (e) { + var notDir = !(/\/$/.test(e)); + var c = self.cache[e] || self.cache[makeAbs(self, e)]; + if (notDir && c) + notDir = c !== 'DIR' && !Array.isArray(c); + return notDir + }); + } + } - if (self.ignore.length) - all = all.filter(function(m) { - return !isIgnored(self, m) - }); + if (self.ignore.length) + all = all.filter(function(m) { + return !isIgnored(self, m) + }); - self.found = all; -} + self.found = all; + } -function mark (self, p) { - var abs = makeAbs(self, p); - var c = self.cache[abs]; - var m = p; - if (c) { - var isDir = c === 'DIR' || Array.isArray(c); - var slash = p.slice(-1) === '/'; - - if (isDir && !slash) - m += '/'; - else if (!isDir && slash) - m = m.slice(0, -1); - - if (m !== p) { - var mabs = makeAbs(self, m); - self.statCache[mabs] = self.statCache[abs]; - self.cache[mabs] = self.cache[abs]; - } - } + function mark (self, p) { + var abs = makeAbs(self, p); + var c = self.cache[abs]; + var m = p; + if (c) { + var isDir = c === 'DIR' || Array.isArray(c); + var slash = p.slice(-1) === '/'; + + if (isDir && !slash) + m += '/'; + else if (!isDir && slash) + m = m.slice(0, -1); + + if (m !== p) { + var mabs = makeAbs(self, m); + self.statCache[mabs] = self.statCache[abs]; + self.cache[mabs] = self.cache[abs]; + } + } - return m -} + return m + } -// lotta situps... -function makeAbs (self, f) { - var abs = f; - if (f.charAt(0) === '/') { - abs = path$4.join(self.root, f); - } else if (isAbsolute$2(f) || f === '') { - abs = f; - } else if (self.changedCwd) { - abs = path$4.resolve(self.cwd, f); - } else { - abs = path$4.resolve(f); - } - - if (process.platform === 'win32') - abs = abs.replace(/\\/g, '/'); - - return abs -} + // lotta situps... + function makeAbs (self, f) { + var abs = f; + if (f.charAt(0) === '/') { + abs = path.join(self.root, f); + } else if (isAbsolute(f) || f === '') { + abs = f; + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f); + } else { + abs = path.resolve(f); + } + + if (process.platform === 'win32') + abs = abs.replace(/\\/g, '/'); + return abs + } -// Return true, if pattern ends with globstar '**', for the accompanying parent directory. -// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents -function isIgnored (self, path) { - if (!self.ignore.length) - return false - return self.ignore.some(function(item) { - return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) - }) -} + // Return true, if pattern ends with globstar '**', for the accompanying parent directory. + // Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents + function isIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) + }) + } -function childrenIgnored (self, path) { - if (!self.ignore.length) - return false + function childrenIgnored (self, path) { + if (!self.ignore.length) + return false - return self.ignore.some(function(item) { - return !!(item.gmatcher && item.gmatcher.match(path)) - }) + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path)) + }) + } + return common; } var sync; @@ -1968,18 +2020,18 @@ function requireSync () { sync = globSync; globSync.GlobSync = GlobSync; - var rp = fs_realpath; - var minimatch = minimatch_1; + var rp = requireFs_realpath(); + var minimatch = requireMinimatch(); minimatch.Minimatch; requireGlob().Glob; var path = require$$0; var assert = require$$5; - var isAbsolute = pathIsAbsoluteExports; - var common$1 = common; - var setopts = common$1.setopts; - var ownProp = common$1.ownProp; - var childrenIgnored = common$1.childrenIgnored; - var isIgnored = common$1.isIgnored; + var isAbsolute = requirePathIsAbsolute(); + var common = requireCommon(); + var setopts = common.setopts; + var ownProp = common.ownProp; + var childrenIgnored = common.childrenIgnored; + var isIgnored = common.isIgnored; function globSync (pattern, options) { if (typeof options === 'function' || arguments.length === 3) @@ -2033,7 +2085,7 @@ function requireSync () { } }); } - common$1.finish(this); + common.finish(this); }; @@ -2440,151 +2492,170 @@ function requireSync () { }; GlobSync.prototype._mark = function (p) { - return common$1.mark(this, p) + return common.mark(this, p) }; GlobSync.prototype._makeAbs = function (f) { - return common$1.makeAbs(this, f) + return common.makeAbs(this, f) }; return sync; } -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -var wrappy_1 = wrappy$2; -function wrappy$2 (fn, cb) { - if (fn && cb) return wrappy$2(fn)(cb) - - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') +var wrappy_1; +var hasRequiredWrappy; - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k]; - }); +function requireWrappy () { + if (hasRequiredWrappy) return wrappy_1; + hasRequiredWrappy = 1; + // Returns a wrapper function that returns a wrapped callback + // The wrapper function should do some stuff, and return a + // presumably different callback function. + // This makes sure that own properties are retained, so that + // decorations and such are not lost along the way. + wrappy_1 = wrappy; + function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) - return wrapper + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') - function wrapper() { - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - var ret = fn.apply(this, args); - var cb = args[args.length-1]; - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k]; - }); - } - return ret - } -} + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k]; + }); -var onceExports = {}; -var once$2 = { - get exports(){ return onceExports; }, - set exports(v){ onceExports = v; }, -}; + return wrapper -var wrappy$1 = wrappy_1; -once$2.exports = wrappy$1(once$1); -onceExports.strict = wrappy$1(onceStrict); - -once$1.proto = once$1(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once$1(this) - }, - configurable: true - }); - - Object.defineProperty(Function.prototype, 'onceStrict', { - value: function () { - return onceStrict(this) - }, - configurable: true - }); -}); - -function once$1 (fn) { - var f = function () { - if (f.called) return f.value - f.called = true; - return f.value = fn.apply(this, arguments) - }; - f.called = false; - return f + function wrapper() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + var ret = fn.apply(this, args); + var cb = args[args.length-1]; + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k]; + }); + } + return ret + } + } + return wrappy_1; } -function onceStrict (fn) { - var f = function () { - if (f.called) - throw new Error(f.onceError) - f.called = true; - return f.value = fn.apply(this, arguments) - }; - var name = fn.name || 'Function wrapped with `once`'; - f.onceError = name + " shouldn't be called more than once"; - f.called = false; - return f -} +var once = {exports: {}}; -var wrappy = wrappy_1; -var reqs = Object.create(null); -var once = onceExports; +var hasRequiredOnce; -var inflight_1 = wrappy(inflight); +function requireOnce () { + if (hasRequiredOnce) return once.exports; + hasRequiredOnce = 1; + var wrappy = requireWrappy(); + once.exports = wrappy(once$1); + once.exports.strict = wrappy(onceStrict); -function inflight (key, cb) { - if (reqs[key]) { - reqs[key].push(cb); - return null - } else { - reqs[key] = [cb]; - return makeres(key) - } -} + once$1.proto = once$1(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once$1(this) + }, + configurable: true + }); -function makeres (key) { - return once(function RES () { - var cbs = reqs[key]; - var len = cbs.length; - var args = slice(arguments); - - // XXX It's somewhat ambiguous whether a new callback added in this - // pass should be queued for later execution if something in the - // list of callbacks throws, or if it should just be discarded. - // However, it's such an edge case that it hardly matters, and either - // choice is likely as surprising as the other. - // As it happens, we do go ahead and schedule it for later execution. - try { - for (var i = 0; i < len; i++) { - cbs[i].apply(null, args); - } - } finally { - if (cbs.length > len) { - // added more in the interim. - // de-zalgo, just in case, but don't call again. - cbs.splice(0, len); - process.nextTick(function () { - RES.apply(null, args); - }); - } else { - delete reqs[key]; - } - } - }) + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }); + }); + + function once$1 (fn) { + var f = function () { + if (f.called) return f.value + f.called = true; + return f.value = fn.apply(this, arguments) + }; + f.called = false; + return f + } + + function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true; + return f.value = fn.apply(this, arguments) + }; + var name = fn.name || 'Function wrapped with `once`'; + f.onceError = name + " shouldn't be called more than once"; + f.called = false; + return f + } + return once.exports; } -function slice (args) { - var length = args.length; - var array = []; +var inflight_1; +var hasRequiredInflight; + +function requireInflight () { + if (hasRequiredInflight) return inflight_1; + hasRequiredInflight = 1; + var wrappy = requireWrappy(); + var reqs = Object.create(null); + var once = requireOnce(); + + inflight_1 = wrappy(inflight); + + function inflight (key, cb) { + if (reqs[key]) { + reqs[key].push(cb); + return null + } else { + reqs[key] = [cb]; + return makeres(key) + } + } + + function makeres (key) { + return once(function RES () { + var cbs = reqs[key]; + var len = cbs.length; + var args = slice(arguments); + + // XXX It's somewhat ambiguous whether a new callback added in this + // pass should be queued for later execution if something in the + // list of callbacks throws, or if it should just be discarded. + // However, it's such an edge case that it hardly matters, and either + // choice is likely as surprising as the other. + // As it happens, we do go ahead and schedule it for later execution. + try { + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args); + } + } finally { + if (cbs.length > len) { + // added more in the interim. + // de-zalgo, just in case, but don't call again. + cbs.splice(0, len); + process.nextTick(function () { + RES.apply(null, args); + }); + } else { + delete reqs[key]; + } + } + }) + } + + function slice (args) { + var length = args.length; + var array = []; - for (var i = 0; i < length; i++) array[i] = args[i]; - return array + for (var i = 0; i < length; i++) array[i] = args[i]; + return array + } + return inflight_1; } var glob_1; @@ -2635,23 +2706,23 @@ function requireGlob () { glob_1 = glob; - var rp = fs_realpath; - var minimatch = minimatch_1; + var rp = requireFs_realpath(); + var minimatch = requireMinimatch(); minimatch.Minimatch; - var inherits = inheritsExports; + var inherits = requireInherits(); var EE = require$$3.EventEmitter; var path = require$$0; var assert = require$$5; - var isAbsolute = pathIsAbsoluteExports; + var isAbsolute = requirePathIsAbsolute(); var globSync = requireSync(); - var common$1 = common; - var setopts = common$1.setopts; - var ownProp = common$1.ownProp; - var inflight = inflight_1; - var childrenIgnored = common$1.childrenIgnored; - var isIgnored = common$1.isIgnored; + var common = requireCommon(); + var setopts = common.setopts; + var ownProp = common.ownProp; + var inflight = requireInflight(); + var childrenIgnored = common.childrenIgnored; + var isIgnored = common.isIgnored; - var once = onceExports; + var once = requireOnce(); function glob (pattern, options, cb) { if (typeof options === 'function') cb = options, options = {}; @@ -2784,7 +2855,7 @@ function requireGlob () { if (this.realpath && !this._didRealpath) return this._realpath() - common$1.finish(this); + common.finish(this); this.emit('end', this.found); }; @@ -2843,11 +2914,11 @@ function requireGlob () { }; Glob.prototype._mark = function (p) { - return common$1.mark(this, p) + return common.mark(this, p) }; Glob.prototype._makeAbs = function (f) { - return common$1.makeAbs(this, f) + return common.makeAbs(this, f) }; Glob.prototype.abort = function () { @@ -3382,506 +3453,529 @@ function requireGlob () { return glob_1; } -var defaultExtension$2 = [ - '.js', - '.cjs', - '.mjs', - '.ts', - '.tsx', - '.jsx' -]; - -const defaultExtension$1 = defaultExtension$2; -const testFileExtensions = defaultExtension$1 - .map(extension => extension.slice(1)) - .join(','); - -var defaultExclude$1 = [ - 'coverage/**', - 'packages/*/test{,s}/**', - '**/*.d.ts', - 'test{,s}/**', - `test{,-*}.{${testFileExtensions}}`, - `**/*{.,-}test.{${testFileExtensions}}`, - '**/__tests__/**', - - /* Exclude common development tool configuration files */ - '**/{ava,babel,nyc}.config.{js,cjs,mjs}', - '**/jest.config.{js,cjs,mjs,ts}', - '**/{karma,rollup,webpack}.config.js', - '**/.{eslint,mocha}rc.{js,cjs}' -]; - -const defaultExclude = defaultExclude$1; -const defaultExtension = defaultExtension$2; - -const nycCommands = { - all: [null, 'check-coverage', 'instrument', 'merge', 'report'], - testExclude: [null, 'instrument', 'report', 'check-coverage'], - instrument: [null, 'instrument'], - checkCoverage: [null, 'report', 'check-coverage'], - report: [null, 'report'], - main: [null], - instrumentOnly: ['instrument'] -}; +var defaultExtension; +var hasRequiredDefaultExtension; + +function requireDefaultExtension () { + if (hasRequiredDefaultExtension) return defaultExtension; + hasRequiredDefaultExtension = 1; + + defaultExtension = [ + '.js', + '.cjs', + '.mjs', + '.ts', + '.tsx', + '.jsx' + ]; + return defaultExtension; +} + +var defaultExclude; +var hasRequiredDefaultExclude; + +function requireDefaultExclude () { + if (hasRequiredDefaultExclude) return defaultExclude; + hasRequiredDefaultExclude = 1; + + const defaultExtension = requireDefaultExtension(); + const testFileExtensions = defaultExtension + .map(extension => extension.slice(1)) + .join(','); + + defaultExclude = [ + 'coverage/**', + 'packages/*/test{,s}/**', + '**/*.d.ts', + 'test{,s}/**', + `test{,-*}.{${testFileExtensions}}`, + `**/*{.,-}test.{${testFileExtensions}}`, + '**/__tests__/**', + + /* Exclude common development tool configuration files */ + '**/{ava,babel,nyc}.config.{js,cjs,mjs}', + '**/jest.config.{js,cjs,mjs,ts}', + '**/{karma,rollup,webpack}.config.js', + '**/.{eslint,mocha}rc.{js,cjs}' + ]; + return defaultExclude; +} + +var schema; +var hasRequiredSchema; + +function requireSchema () { + if (hasRequiredSchema) return schema; + hasRequiredSchema = 1; + + const defaultExclude = requireDefaultExclude(); + const defaultExtension = requireDefaultExtension(); + + const nycCommands = { + all: [null, 'check-coverage', 'instrument', 'merge', 'report'], + testExclude: [null, 'instrument', 'report', 'check-coverage'], + instrument: [null, 'instrument'], + checkCoverage: [null, 'report', 'check-coverage'], + report: [null, 'report'], + main: [null], + instrumentOnly: ['instrument'] + }; -const cwd = { - description: 'working directory used when resolving paths', - type: 'string', - get default() { - return process.cwd(); - }, - nycCommands: nycCommands.all -}; + const cwd = { + description: 'working directory used when resolving paths', + type: 'string', + get default() { + return process.cwd(); + }, + nycCommands: nycCommands.all + }; -const nycrcPath = { - description: 'specify an explicit path to find nyc configuration', - nycCommands: nycCommands.all -}; + const nycrcPath = { + description: 'specify an explicit path to find nyc configuration', + nycCommands: nycCommands.all + }; -const tempDir = { - description: 'directory to output raw coverage information to', - type: 'string', - default: './.nyc_output', - nycAlias: 't', - nycHiddenAlias: 'temp-directory', - nycCommands: [null, 'check-coverage', 'merge', 'report'] -}; + const tempDir = { + description: 'directory to output raw coverage information to', + type: 'string', + default: './.nyc_output', + nycAlias: 't', + nycHiddenAlias: 'temp-directory', + nycCommands: [null, 'check-coverage', 'merge', 'report'] + }; -const testExclude$1 = { - exclude: { - description: 'a list of specific files and directories that should be excluded from coverage, glob patterns are supported', - type: 'array', - items: { - type: 'string' + const testExclude = { + exclude: { + description: 'a list of specific files and directories that should be excluded from coverage, glob patterns are supported', + type: 'array', + items: { + type: 'string' + }, + default: defaultExclude, + nycCommands: nycCommands.testExclude, + nycAlias: 'x' }, - default: defaultExclude, - nycCommands: nycCommands.testExclude, - nycAlias: 'x' - }, - excludeNodeModules: { - description: 'whether or not to exclude all node_module folders (i.e. **/node_modules/**) by default', - type: 'boolean', - default: true, - nycCommands: nycCommands.testExclude - }, - include: { - description: 'a list of specific files that should be covered, glob patterns are supported', - type: 'array', - items: { - type: 'string' + excludeNodeModules: { + description: 'whether or not to exclude all node_module folders (i.e. **/node_modules/**) by default', + type: 'boolean', + default: true, + nycCommands: nycCommands.testExclude }, - default: [], - nycCommands: nycCommands.testExclude, - nycAlias: 'n' - }, - extension: { - description: 'a list of extensions that nyc should handle in addition to .js', - type: 'array', - items: { - type: 'string' + include: { + description: 'a list of specific files that should be covered, glob patterns are supported', + type: 'array', + items: { + type: 'string' + }, + default: [], + nycCommands: nycCommands.testExclude, + nycAlias: 'n' }, - default: defaultExtension, - nycCommands: nycCommands.testExclude, - nycAlias: 'e' - } -}; + extension: { + description: 'a list of extensions that nyc should handle in addition to .js', + type: 'array', + items: { + type: 'string' + }, + default: defaultExtension, + nycCommands: nycCommands.testExclude, + nycAlias: 'e' + } + }; -const instrumentVisitor = { - coverageVariable: { - description: 'variable to store coverage', - type: 'string', - default: '__coverage__', - nycCommands: nycCommands.instrument - }, - coverageGlobalScope: { - description: 'scope to store the coverage variable', - type: 'string', - default: 'this', - nycCommands: nycCommands.instrument - }, - coverageGlobalScopeFunc: { - description: 'avoid potentially replaced `Function` when finding global scope', - type: 'boolean', - default: true, - nycCommands: nycCommands.instrument - }, - ignoreClassMethods: { - description: 'class method names to ignore for coverage', - type: 'array', - items: { - type: 'string' + const instrumentVisitor = { + coverageVariable: { + description: 'variable to store coverage', + type: 'string', + default: '__coverage__', + nycCommands: nycCommands.instrument }, - default: [], - nycCommands: nycCommands.instrument - } -}; - -const instrumentParseGen = { - autoWrap: { - description: 'allow `return` statements outside of functions', - type: 'boolean', - default: true, - nycCommands: nycCommands.instrument - }, - esModules: { - description: 'should files be treated as ES Modules', - type: 'boolean', - default: true, - nycCommands: nycCommands.instrument - }, - parserPlugins: { - description: 'babel parser plugins to use when parsing the source', - type: 'array', - items: { - type: 'string' + coverageGlobalScope: { + description: 'scope to store the coverage variable', + type: 'string', + default: 'this', + nycCommands: nycCommands.instrument }, - /* Babel parser plugins are to be enabled when the feature is stage 3 and - * implemented in a released version of node.js. */ - default: [ - 'asyncGenerators', - 'bigInt', - 'classProperties', - 'classPrivateProperties', - 'classPrivateMethods', - 'dynamicImport', - 'importMeta', - 'numericSeparator', - 'objectRestSpread', - 'optionalCatchBinding', - 'topLevelAwait' - ], - nycCommands: nycCommands.instrument - }, - compact: { - description: 'should the output be compacted?', - type: 'boolean', - default: true, - nycCommands: nycCommands.instrument - }, - preserveComments: { - description: 'should comments be preserved in the output?', - type: 'boolean', - default: true, - nycCommands: nycCommands.instrument - }, - produceSourceMap: { - description: 'should source maps be produced?', - type: 'boolean', - default: true, - nycCommands: nycCommands.instrument - } -}; - -const checkCoverage = { - excludeAfterRemap: { - description: 'should exclude logic be performed after the source-map remaps filenames?', - type: 'boolean', - default: true, - nycCommands: nycCommands.checkCoverage - }, - branches: { - description: 'what % of branches must be covered?', - type: 'number', - default: 0, - minimum: 0, - maximum: 100, - nycCommands: nycCommands.checkCoverage - }, - functions: { - description: 'what % of functions must be covered?', - type: 'number', - default: 0, - minimum: 0, - maximum: 100, - nycCommands: nycCommands.checkCoverage - }, - lines: { - description: 'what % of lines must be covered?', - type: 'number', - default: 90, - minimum: 0, - maximum: 100, - nycCommands: nycCommands.checkCoverage - }, - statements: { - description: 'what % of statements must be covered?', - type: 'number', - default: 0, - minimum: 0, - maximum: 100, - nycCommands: nycCommands.checkCoverage - }, - perFile: { - description: 'check thresholds per file', - type: 'boolean', - default: false, - nycCommands: nycCommands.checkCoverage - } -}; - -const report$1 = { - checkCoverage: { - description: 'check whether coverage is within thresholds provided', - type: 'boolean', - default: false, - nycCommands: nycCommands.report - }, - reporter: { - description: 'coverage reporter(s) to use', - type: 'array', - items: { - type: 'string' + coverageGlobalScopeFunc: { + description: 'avoid potentially replaced `Function` when finding global scope', + type: 'boolean', + default: true, + nycCommands: nycCommands.instrument }, - default: ['text'], - nycCommands: nycCommands.report, - nycAlias: 'r' - }, - reportDir: { - description: 'directory to output coverage reports in', - type: 'string', - default: 'coverage', - nycCommands: nycCommands.report - }, - showProcessTree: { - description: 'display the tree of spawned processes', - type: 'boolean', - default: false, - nycCommands: nycCommands.report - }, - skipEmpty: { - description: 'don\'t show empty files (no lines of code) in report', - type: 'boolean', - default: false, - nycCommands: nycCommands.report - }, - skipFull: { - description: 'don\'t show files with 100% statement, branch, and function coverage', - type: 'boolean', - default: false, - nycCommands: nycCommands.report - } -}; - -const nycMain = { - silent: { - description: 'don\'t output a report after tests finish running', - type: 'boolean', - default: false, - nycCommands: nycCommands.main, - nycAlias: 's' - }, - all: { - description: 'whether or not to instrument all files of the project (not just the ones touched by your test suite)', - type: 'boolean', - default: false, - nycCommands: nycCommands.main, - nycAlias: 'a' - }, - eager: { - description: 'instantiate the instrumenter at startup (see https://git.io/vMKZ9)', - type: 'boolean', - default: false, - nycCommands: nycCommands.main - }, - cache: { - description: 'cache instrumentation results for improved performance', - type: 'boolean', - default: true, - nycCommands: nycCommands.main, - nycAlias: 'c' - }, - cacheDir: { - description: 'explicitly set location for instrumentation cache', - type: 'string', - nycCommands: nycCommands.main - }, - babelCache: { - description: 'cache babel transpilation results for improved performance', - type: 'boolean', - default: false, - nycCommands: nycCommands.main - }, - useSpawnWrap: { - description: 'use spawn-wrap instead of setting process.env.NODE_OPTIONS', - type: 'boolean', - default: false, - nycCommands: nycCommands.main - }, - hookRequire: { - description: 'should nyc wrap require?', - type: 'boolean', - default: true, - nycCommands: nycCommands.main - }, - hookRunInContext: { - description: 'should nyc wrap vm.runInContext?', - type: 'boolean', - default: false, - nycCommands: nycCommands.main - }, - hookRunInThisContext: { - description: 'should nyc wrap vm.runInThisContext?', - type: 'boolean', - default: false, - nycCommands: nycCommands.main - }, - clean: { - description: 'should the .nyc_output folder be cleaned before executing tests', - type: 'boolean', - default: true, - nycCommands: nycCommands.main - } -}; - -const instrumentOnly = { - inPlace: { - description: 'should nyc run the instrumentation in place?', - type: 'boolean', - default: false, - nycCommands: nycCommands.instrumentOnly - }, - exitOnError: { - description: 'should nyc exit when an instrumentation failure occurs?', - type: 'boolean', - default: false, - nycCommands: nycCommands.instrumentOnly - }, - delete: { - description: 'should the output folder be deleted before instrumenting files?', - type: 'boolean', - default: false, - nycCommands: nycCommands.instrumentOnly - }, - completeCopy: { - description: 'should nyc copy all files from input to output as well as instrumented files?', - type: 'boolean', - default: false, - nycCommands: nycCommands.instrumentOnly - } -}; - -const nyc = { - description: 'nyc configuration options', - type: 'object', - properties: { - cwd, - nycrcPath, - tempDir, - - /* Test Exclude */ - ...testExclude$1, - - /* Instrumentation settings */ - ...instrumentVisitor, + ignoreClassMethods: { + description: 'class method names to ignore for coverage', + type: 'array', + items: { + type: 'string' + }, + default: [], + nycCommands: nycCommands.instrument + } + }; - /* Instrumentation parser/generator settings */ - ...instrumentParseGen, - sourceMap: { - description: 'should nyc detect and handle source maps?', + const instrumentParseGen = { + autoWrap: { + description: 'allow `return` statements outside of functions', + type: 'boolean', + default: true, + nycCommands: nycCommands.instrument + }, + esModules: { + description: 'should files be treated as ES Modules', type: 'boolean', default: true, nycCommands: nycCommands.instrument }, - require: { - description: 'a list of additional modules that nyc should attempt to require in its subprocess, e.g., @babel/register, @babel/polyfill', + parserPlugins: { + description: 'babel parser plugins to use when parsing the source', type: 'array', items: { type: 'string' }, - default: [], - nycCommands: nycCommands.instrument, - nycAlias: 'i' + /* Babel parser plugins are to be enabled when the feature is stage 3 and + * implemented in a released version of node.js. */ + default: [ + 'asyncGenerators', + 'bigInt', + 'classProperties', + 'classPrivateProperties', + 'classPrivateMethods', + 'dynamicImport', + 'importMeta', + 'numericSeparator', + 'objectRestSpread', + 'optionalCatchBinding', + 'topLevelAwait' + ], + nycCommands: nycCommands.instrument + }, + compact: { + description: 'should the output be compacted?', + type: 'boolean', + default: true, + nycCommands: nycCommands.instrument }, - instrument: { - description: 'should nyc handle instrumentation?', + preserveComments: { + description: 'should comments be preserved in the output?', type: 'boolean', default: true, nycCommands: nycCommands.instrument }, + produceSourceMap: { + description: 'should source maps be produced?', + type: 'boolean', + default: true, + nycCommands: nycCommands.instrument + } + }; - /* Check coverage */ - ...checkCoverage, + const checkCoverage = { + excludeAfterRemap: { + description: 'should exclude logic be performed after the source-map remaps filenames?', + type: 'boolean', + default: true, + nycCommands: nycCommands.checkCoverage + }, + branches: { + description: 'what % of branches must be covered?', + type: 'number', + default: 0, + minimum: 0, + maximum: 100, + nycCommands: nycCommands.checkCoverage + }, + functions: { + description: 'what % of functions must be covered?', + type: 'number', + default: 0, + minimum: 0, + maximum: 100, + nycCommands: nycCommands.checkCoverage + }, + lines: { + description: 'what % of lines must be covered?', + type: 'number', + default: 90, + minimum: 0, + maximum: 100, + nycCommands: nycCommands.checkCoverage + }, + statements: { + description: 'what % of statements must be covered?', + type: 'number', + default: 0, + minimum: 0, + maximum: 100, + nycCommands: nycCommands.checkCoverage + }, + perFile: { + description: 'check thresholds per file', + type: 'boolean', + default: false, + nycCommands: nycCommands.checkCoverage + } + }; - /* Report options */ - ...report$1, + const report = { + checkCoverage: { + description: 'check whether coverage is within thresholds provided', + type: 'boolean', + default: false, + nycCommands: nycCommands.report + }, + reporter: { + description: 'coverage reporter(s) to use', + type: 'array', + items: { + type: 'string' + }, + default: ['text'], + nycCommands: nycCommands.report, + nycAlias: 'r' + }, + reportDir: { + description: 'directory to output coverage reports in', + type: 'string', + default: 'coverage', + nycCommands: nycCommands.report + }, + showProcessTree: { + description: 'display the tree of spawned processes', + type: 'boolean', + default: false, + nycCommands: nycCommands.report + }, + skipEmpty: { + description: 'don\'t show empty files (no lines of code) in report', + type: 'boolean', + default: false, + nycCommands: nycCommands.report + }, + skipFull: { + description: 'don\'t show files with 100% statement, branch, and function coverage', + type: 'boolean', + default: false, + nycCommands: nycCommands.report + } + }; - /* Main command options */ - ...nycMain, + const nycMain = { + silent: { + description: 'don\'t output a report after tests finish running', + type: 'boolean', + default: false, + nycCommands: nycCommands.main, + nycAlias: 's' + }, + all: { + description: 'whether or not to instrument all files of the project (not just the ones touched by your test suite)', + type: 'boolean', + default: false, + nycCommands: nycCommands.main, + nycAlias: 'a' + }, + eager: { + description: 'instantiate the instrumenter at startup (see https://git.io/vMKZ9)', + type: 'boolean', + default: false, + nycCommands: nycCommands.main + }, + cache: { + description: 'cache instrumentation results for improved performance', + type: 'boolean', + default: true, + nycCommands: nycCommands.main, + nycAlias: 'c' + }, + cacheDir: { + description: 'explicitly set location for instrumentation cache', + type: 'string', + nycCommands: nycCommands.main + }, + babelCache: { + description: 'cache babel transpilation results for improved performance', + type: 'boolean', + default: false, + nycCommands: nycCommands.main + }, + useSpawnWrap: { + description: 'use spawn-wrap instead of setting process.env.NODE_OPTIONS', + type: 'boolean', + default: false, + nycCommands: nycCommands.main + }, + hookRequire: { + description: 'should nyc wrap require?', + type: 'boolean', + default: true, + nycCommands: nycCommands.main + }, + hookRunInContext: { + description: 'should nyc wrap vm.runInContext?', + type: 'boolean', + default: false, + nycCommands: nycCommands.main + }, + hookRunInThisContext: { + description: 'should nyc wrap vm.runInThisContext?', + type: 'boolean', + default: false, + nycCommands: nycCommands.main + }, + clean: { + description: 'should the .nyc_output folder be cleaned before executing tests', + type: 'boolean', + default: true, + nycCommands: nycCommands.main + } + }; - /* Instrument command options */ - ...instrumentOnly - } -}; + const instrumentOnly = { + inPlace: { + description: 'should nyc run the instrumentation in place?', + type: 'boolean', + default: false, + nycCommands: nycCommands.instrumentOnly + }, + exitOnError: { + description: 'should nyc exit when an instrumentation failure occurs?', + type: 'boolean', + default: false, + nycCommands: nycCommands.instrumentOnly + }, + delete: { + description: 'should the output folder be deleted before instrumenting files?', + type: 'boolean', + default: false, + nycCommands: nycCommands.instrumentOnly + }, + completeCopy: { + description: 'should nyc copy all files from input to output as well as instrumented files?', + type: 'boolean', + default: false, + nycCommands: nycCommands.instrumentOnly + } + }; -const configs = { - nyc, - testExclude: { - description: 'test-exclude options', + const nyc = { + description: 'nyc configuration options', type: 'object', properties: { cwd, - ...testExclude$1 + nycrcPath, + tempDir, + + /* Test Exclude */ + ...testExclude, + + /* Instrumentation settings */ + ...instrumentVisitor, + + /* Instrumentation parser/generator settings */ + ...instrumentParseGen, + sourceMap: { + description: 'should nyc detect and handle source maps?', + type: 'boolean', + default: true, + nycCommands: nycCommands.instrument + }, + require: { + description: 'a list of additional modules that nyc should attempt to require in its subprocess, e.g., @babel/register, @babel/polyfill', + type: 'array', + items: { + type: 'string' + }, + default: [], + nycCommands: nycCommands.instrument, + nycAlias: 'i' + }, + instrument: { + description: 'should nyc handle instrumentation?', + type: 'boolean', + default: true, + nycCommands: nycCommands.instrument + }, + + /* Check coverage */ + ...checkCoverage, + + /* Report options */ + ...report, + + /* Main command options */ + ...nycMain, + + /* Instrument command options */ + ...instrumentOnly } - }, - babelPluginIstanbul: { - description: 'babel-plugin-istanbul options', - type: 'object', - properties: { - cwd, - ...testExclude$1, - ...instrumentVisitor + }; + + const configs = { + nyc, + testExclude: { + description: 'test-exclude options', + type: 'object', + properties: { + cwd, + ...testExclude + } + }, + babelPluginIstanbul: { + description: 'babel-plugin-istanbul options', + type: 'object', + properties: { + cwd, + ...testExclude, + ...instrumentVisitor + } + }, + instrumentVisitor: { + description: 'instrument visitor options', + type: 'object', + properties: instrumentVisitor + }, + instrumenter: { + description: 'stand-alone instrumenter options', + type: 'object', + properties: { + ...instrumentVisitor, + ...instrumentParseGen + } } - }, - instrumentVisitor: { - description: 'instrument visitor options', - type: 'object', - properties: instrumentVisitor - }, - instrumenter: { - description: 'stand-alone instrumenter options', - type: 'object', - properties: { - ...instrumentVisitor, - ...instrumentParseGen + }; + + function defaultsReducer(defaults, [name, {default: value}]) { + /* Modifying arrays in defaults is safe, does not change schema. */ + if (Array.isArray(value)) { + value = [...value]; } - } -}; -function defaultsReducer(defaults, [name, {default: value}]) { - /* Modifying arrays in defaults is safe, does not change schema. */ - if (Array.isArray(value)) { - value = [...value]; + return Object.assign(defaults, {[name]: value}); } - return Object.assign(defaults, {[name]: value}); + schema = { + ...configs, + defaults: Object.keys(configs).reduce( + (defaults, id) => { + Object.defineProperty(defaults, id, { + enumerable: true, + get() { + /* This defers `process.cwd()` until defaults are requested. */ + return Object.entries(configs[id].properties) + .filter(([, info]) => 'default' in info) + .reduce(defaultsReducer, {}); + } + }); + + return defaults; + }, + {} + ) + }; + return schema; } -var schema = { - ...configs, - defaults: Object.keys(configs).reduce( - (defaults, id) => { - Object.defineProperty(defaults, id, { - enumerable: true, - get() { - /* This defers `process.cwd()` until defaults are requested. */ - return Object.entries(configs[id].properties) - .filter(([, info]) => 'default' in info) - .reduce(defaultsReducer, {}); - } - }); - - return defaults; - }, - {} - ) -}; - -var isOutsideDirExports = {}; -var isOutsideDir$1 = { - get exports(){ return isOutsideDirExports; }, - set exports(v){ isOutsideDirExports = v; }, -}; +var isOutsideDir = {exports: {}}; var isOutsideDirWin32; var hasRequiredIsOutsideDirWin32; @@ -3891,7 +3985,7 @@ function requireIsOutsideDirWin32 () { hasRequiredIsOutsideDirWin32 = 1; const path = require$$0; - const minimatch = minimatch_1; + const minimatch = requireMinimatch(); const dot = { dot: true }; @@ -3916,3841 +4010,4004 @@ function requireIsOutsideDirPosix () { return isOutsideDirPosix; } -(function (module) { +var hasRequiredIsOutsideDir; + +function requireIsOutsideDir () { + if (hasRequiredIsOutsideDir) return isOutsideDir.exports; + hasRequiredIsOutsideDir = 1; if (process.platform === 'win32') { - module.exports = requireIsOutsideDirWin32(); + isOutsideDir.exports = requireIsOutsideDirWin32(); } else { - module.exports = requireIsOutsideDirPosix(); + isOutsideDir.exports = requireIsOutsideDirPosix(); } -} (isOutsideDir$1)); - -const path$3 = require$$0; -const { promisify: promisify$1 } = require$$2; -const glob = promisify$1(requireGlob()); -const minimatch = minimatch_1; -const { defaults } = schema; -const isOutsideDir = isOutsideDirExports; - -class TestExclude { - constructor(opts = {}) { - Object.assign( - this, - {relativePath: true}, - defaults.testExclude - ); + return isOutsideDir.exports; +} - for (const [name, value] of Object.entries(opts)) { - if (value !== undefined) { - this[name] = value; - } - } +var testExclude; +var hasRequiredTestExclude; - if (typeof this.include === 'string') { - this.include = [this.include]; - } +function requireTestExclude () { + if (hasRequiredTestExclude) return testExclude; + hasRequiredTestExclude = 1; - if (typeof this.exclude === 'string') { - this.exclude = [this.exclude]; - } + const path = require$$0; + const { promisify } = require$$2; + const glob = promisify(requireGlob()); + const minimatch = requireMinimatch(); + const { defaults } = requireSchema(); + const isOutsideDir = requireIsOutsideDir(); + + class TestExclude { + constructor(opts = {}) { + Object.assign( + this, + {relativePath: true}, + defaults.testExclude + ); + + for (const [name, value] of Object.entries(opts)) { + if (value !== undefined) { + this[name] = value; + } + } - if (typeof this.extension === 'string') { - this.extension = [this.extension]; - } else if (this.extension.length === 0) { - this.extension = false; - } + if (typeof this.include === 'string') { + this.include = [this.include]; + } - if (this.include && this.include.length > 0) { - this.include = prepGlobPatterns([].concat(this.include)); - } else { - this.include = false; - } + if (typeof this.exclude === 'string') { + this.exclude = [this.exclude]; + } - if ( - this.excludeNodeModules && - !this.exclude.includes('**/node_modules/**') - ) { - this.exclude = this.exclude.concat('**/node_modules/**'); - } + if (typeof this.extension === 'string') { + this.extension = [this.extension]; + } else if (this.extension.length === 0) { + this.extension = false; + } - this.exclude = prepGlobPatterns([].concat(this.exclude)); + if (this.include && this.include.length > 0) { + this.include = prepGlobPatterns([].concat(this.include)); + } else { + this.include = false; + } - this.handleNegation(); - } + if ( + this.excludeNodeModules && + !this.exclude.includes('**/node_modules/**') + ) { + this.exclude = this.exclude.concat('**/node_modules/**'); + } - /* handle the special case of negative globs - * (!**foo/bar); we create a new this.excludeNegated set - * of rules, which is applied after excludes and we - * move excluded include rules into this.excludes. - */ - handleNegation() { - const noNeg = e => e.charAt(0) !== '!'; - const onlyNeg = e => e.charAt(0) === '!'; - const stripNeg = e => e.slice(1); - - if (Array.isArray(this.include)) { - const includeNegated = this.include.filter(onlyNeg).map(stripNeg); - this.exclude.push(...prepGlobPatterns(includeNegated)); - this.include = this.include.filter(noNeg); - } + this.exclude = prepGlobPatterns([].concat(this.exclude)); - this.excludeNegated = this.exclude.filter(onlyNeg).map(stripNeg); - this.exclude = this.exclude.filter(noNeg); - this.excludeNegated = prepGlobPatterns(this.excludeNegated); - } + this.handleNegation(); + } - shouldInstrument(filename, relFile) { - if ( - this.extension && - !this.extension.some(ext => filename.endsWith(ext)) - ) { - return false; - } + /* handle the special case of negative globs + * (!**foo/bar); we create a new this.excludeNegated set + * of rules, which is applied after excludes and we + * move excluded include rules into this.excludes. + */ + handleNegation() { + const noNeg = e => e.charAt(0) !== '!'; + const onlyNeg = e => e.charAt(0) === '!'; + const stripNeg = e => e.slice(1); + + if (Array.isArray(this.include)) { + const includeNegated = this.include.filter(onlyNeg).map(stripNeg); + this.exclude.push(...prepGlobPatterns(includeNegated)); + this.include = this.include.filter(noNeg); + } - let pathToCheck = filename; + this.excludeNegated = this.exclude.filter(onlyNeg).map(stripNeg); + this.exclude = this.exclude.filter(noNeg); + this.excludeNegated = prepGlobPatterns(this.excludeNegated); + } - if (this.relativePath) { - relFile = relFile || path$3.relative(this.cwd, filename); + shouldInstrument(filename, relFile) { + if ( + this.extension && + !this.extension.some(ext => filename.endsWith(ext)) + ) { + return false; + } - // Don't instrument files that are outside of the current working directory. - if (isOutsideDir(this.cwd, filename)) { - return false; - } + let pathToCheck = filename; - pathToCheck = relFile.replace(/^\.[\\/]/, ''); // remove leading './' or '.\'. - } + if (this.relativePath) { + relFile = relFile || path.relative(this.cwd, filename); - const dot = { dot: true }; - const matches = pattern => minimatch(pathToCheck, pattern, dot); - return ( - (!this.include || this.include.some(matches)) && - (!this.exclude.some(matches) || this.excludeNegated.some(matches)) - ); - } + // Don't instrument files that are outside of the current working directory. + if (isOutsideDir(this.cwd, filename)) { + return false; + } - globSync(cwd = this.cwd) { - const globPatterns = getExtensionPattern(this.extension || []); - const globOptions = { cwd, nodir: true, dot: true }; - /* If we don't have any excludeNegated then we can optimize glob by telling - * it to not iterate into unwanted directory trees (like node_modules). */ - if (this.excludeNegated.length === 0) { - globOptions.ignore = this.exclude; - } + pathToCheck = relFile.replace(/^\.[\\/]/, ''); // remove leading './' or '.\'. + } - return glob - .sync(globPatterns, globOptions) - .filter(file => this.shouldInstrument(path$3.resolve(cwd, file))); - } + const dot = { dot: true }; + const matches = pattern => minimatch(pathToCheck, pattern, dot); + return ( + (!this.include || this.include.some(matches)) && + (!this.exclude.some(matches) || this.excludeNegated.some(matches)) + ); + } - async glob(cwd = this.cwd) { - const globPatterns = getExtensionPattern(this.extension || []); - const globOptions = { cwd, nodir: true, dot: true }; - /* If we don't have any excludeNegated then we can optimize glob by telling - * it to not iterate into unwanted directory trees (like node_modules). */ - if (this.excludeNegated.length === 0) { - globOptions.ignore = this.exclude; - } + globSync(cwd = this.cwd) { + const globPatterns = getExtensionPattern(this.extension || []); + const globOptions = { cwd, nodir: true, dot: true }; + /* If we don't have any excludeNegated then we can optimize glob by telling + * it to not iterate into unwanted directory trees (like node_modules). */ + if (this.excludeNegated.length === 0) { + globOptions.ignore = this.exclude; + } - const list = await glob(globPatterns, globOptions); - return list.filter(file => this.shouldInstrument(path$3.resolve(cwd, file))); - } -} + return glob + .sync(globPatterns, globOptions) + .filter(file => this.shouldInstrument(path.resolve(cwd, file))); + } -function prepGlobPatterns(patterns) { - return patterns.reduce((result, pattern) => { - // Allow gitignore style of directory exclusion - if (!/\/\*\*$/.test(pattern)) { - result = result.concat(pattern.replace(/\/$/, '') + '/**'); - } + async glob(cwd = this.cwd) { + const globPatterns = getExtensionPattern(this.extension || []); + const globOptions = { cwd, nodir: true, dot: true }; + /* If we don't have any excludeNegated then we can optimize glob by telling + * it to not iterate into unwanted directory trees (like node_modules). */ + if (this.excludeNegated.length === 0) { + globOptions.ignore = this.exclude; + } - // Any rules of the form **/foo.js, should also match foo.js. - if (/^\*\*\//.test(pattern)) { - result = result.concat(pattern.replace(/^\*\*\//, '')); - } + const list = await glob(globPatterns, globOptions); + return list.filter(file => this.shouldInstrument(path.resolve(cwd, file))); + } + } - return result.concat(pattern); - }, []); -} + function prepGlobPatterns(patterns) { + return patterns.reduce((result, pattern) => { + // Allow gitignore style of directory exclusion + if (!/\/\*\*$/.test(pattern)) { + result = result.concat(pattern.replace(/\/$/, '') + '/**'); + } -function getExtensionPattern(extension) { - switch (extension.length) { - case 0: - return '**'; - case 1: - return `**/*${extension[0]}`; - default: - return `**/*{${extension.join()}}`; - } -} + // Any rules of the form **/foo.js, should also match foo.js. + if (/^\*\*\//.test(pattern)) { + result = result.concat(pattern.replace(/^\*\*\//, '')); + } -var testExclude = TestExclude; + return result.concat(pattern); + }, []); + } -var istanbulLibCoverageExports = {}; -var istanbulLibCoverage = { - get exports(){ return istanbulLibCoverageExports; }, - set exports(v){ istanbulLibCoverageExports = v; }, -}; + function getExtensionPattern(extension) { + switch (extension.length) { + case 0: + return '**'; + case 1: + return `**/*${extension[0]}`; + default: + return `**/*{${extension.join()}}`; + } + } + + testExclude = TestExclude; + return testExclude; +} + +var istanbulLibCoverage = {exports: {}}; /* Copyright 2012-2015, Yahoo Inc. Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ -var percent$2 = function percent(covered, total) { - let tmp; - if (total > 0) { - tmp = (1000 * 100 * covered) / total; - return Math.floor(tmp / 10) / 100; - } else { - return 100.0; - } -}; +var percent; +var hasRequiredPercent; -var dataProperties$2 = function dataProperties(klass, properties) { - properties.forEach(p => { - Object.defineProperty(klass.prototype, p, { - enumerable: true, - get() { - return this.data[p]; - } - }); - }); -}; +function requirePercent () { + if (hasRequiredPercent) return percent; + hasRequiredPercent = 1; + + percent = function percent(covered, total) { + let tmp; + if (total > 0) { + tmp = (1000 * 100 * covered) / total; + return Math.floor(tmp / 10) / 100; + } else { + return 100.0; + } + }; + return percent; +} + +var dataProperties; +var hasRequiredDataProperties; + +function requireDataProperties () { + if (hasRequiredDataProperties) return dataProperties; + hasRequiredDataProperties = 1; + + dataProperties = function dataProperties(klass, properties) { + properties.forEach(p => { + Object.defineProperty(klass.prototype, p, { + enumerable: true, + get() { + return this.data[p]; + } + }); + }); + }; + return dataProperties; +} /* Copyright 2012-2015, Yahoo Inc. Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ -const percent$1 = percent$2; -const dataProperties$1 = dataProperties$2; +var coverageSummary; +var hasRequiredCoverageSummary; -function blankSummary() { - const empty = () => ({ - total: 0, - covered: 0, - skipped: 0, - pct: 'Unknown' - }); +function requireCoverageSummary () { + if (hasRequiredCoverageSummary) return coverageSummary; + hasRequiredCoverageSummary = 1; - return { - lines: empty(), - statements: empty(), - functions: empty(), - branches: empty(), - branchesTrue: empty() - }; -} + const percent = requirePercent(); + const dataProperties = requireDataProperties(); -// asserts that a data object "looks like" a summary coverage object -function assertValidSummary(obj) { - const valid = - obj && obj.lines && obj.statements && obj.functions && obj.branches; - if (!valid) { - throw new Error( - 'Invalid summary coverage object, missing keys, found:' + - Object.keys(obj).join(',') - ); - } -} + function blankSummary() { + const empty = () => ({ + total: 0, + covered: 0, + skipped: 0, + pct: 'Unknown' + }); -/** - * CoverageSummary provides a summary of code coverage . It exposes 4 properties, - * `lines`, `statements`, `branches`, and `functions`. Each of these properties - * is an object that has 4 keys `total`, `covered`, `skipped` and `pct`. - * `pct` is a percentage number (0-100). - */ -let CoverageSummary$3 = class CoverageSummary { - /** - * @constructor - * @param {Object|CoverageSummary} [obj=undefined] an optional data object or - * another coverage summary to initialize this object with. - */ - constructor(obj) { - if (!obj) { - this.data = blankSummary(); - } else if (obj instanceof CoverageSummary) { - this.data = obj.data; - } else { - this.data = obj; - } - assertValidSummary(this.data); - } + return { + lines: empty(), + statements: empty(), + functions: empty(), + branches: empty(), + branchesTrue: empty() + }; + } - /** - * merges a second summary coverage object into this one - * @param {CoverageSummary} obj - another coverage summary object - */ - merge(obj) { - const keys = [ - 'lines', - 'statements', - 'branches', - 'functions', - 'branchesTrue' - ]; - keys.forEach(key => { - if (obj[key]) { - this[key].total += obj[key].total; - this[key].covered += obj[key].covered; - this[key].skipped += obj[key].skipped; - this[key].pct = percent$1(this[key].covered, this[key].total); - } - }); + // asserts that a data object "looks like" a summary coverage object + function assertValidSummary(obj) { + const valid = + obj && obj.lines && obj.statements && obj.functions && obj.branches; + if (!valid) { + throw new Error( + 'Invalid summary coverage object, missing keys, found:' + + Object.keys(obj).join(',') + ); + } + } - return this; - } + /** + * CoverageSummary provides a summary of code coverage . It exposes 4 properties, + * `lines`, `statements`, `branches`, and `functions`. Each of these properties + * is an object that has 4 keys `total`, `covered`, `skipped` and `pct`. + * `pct` is a percentage number (0-100). + */ + class CoverageSummary { + /** + * @constructor + * @param {Object|CoverageSummary} [obj=undefined] an optional data object or + * another coverage summary to initialize this object with. + */ + constructor(obj) { + if (!obj) { + this.data = blankSummary(); + } else if (obj instanceof CoverageSummary) { + this.data = obj.data; + } else { + this.data = obj; + } + assertValidSummary(this.data); + } - /** - * returns a POJO that is JSON serializable. May be used to get the raw - * summary object. - */ - toJSON() { - return this.data; - } + /** + * merges a second summary coverage object into this one + * @param {CoverageSummary} obj - another coverage summary object + */ + merge(obj) { + const keys = [ + 'lines', + 'statements', + 'branches', + 'functions', + 'branchesTrue' + ]; + keys.forEach(key => { + if (obj[key]) { + this[key].total += obj[key].total; + this[key].covered += obj[key].covered; + this[key].skipped += obj[key].skipped; + this[key].pct = percent(this[key].covered, this[key].total); + } + }); - /** - * return true if summary has no lines of code - */ - isEmpty() { - return this.lines.total === 0; - } -}; + return this; + } -dataProperties$1(CoverageSummary$3, [ - 'lines', - 'statements', - 'functions', - 'branches', - 'branchesTrue' -]); + /** + * returns a POJO that is JSON serializable. May be used to get the raw + * summary object. + */ + toJSON() { + return this.data; + } -var coverageSummary = { - CoverageSummary: CoverageSummary$3 -}; + /** + * return true if summary has no lines of code + */ + isEmpty() { + return this.lines.total === 0; + } + } + + dataProperties(CoverageSummary, [ + 'lines', + 'statements', + 'functions', + 'branches', + 'branchesTrue' + ]); + + coverageSummary = { + CoverageSummary + }; + return coverageSummary; +} /* Copyright 2012-2015, Yahoo Inc. Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ -const percent = percent$2; -const dataProperties = dataProperties$2; -const { CoverageSummary: CoverageSummary$2 } = coverageSummary; - -// returns a data object that represents empty coverage -function emptyCoverage(filePath, reportLogic) { - const cov = { - path: filePath, - statementMap: {}, - fnMap: {}, - branchMap: {}, - s: {}, - f: {}, - b: {} - }; - if (reportLogic) cov.bT = {}; - return cov; -} +var fileCoverage; +var hasRequiredFileCoverage; + +function requireFileCoverage () { + if (hasRequiredFileCoverage) return fileCoverage; + hasRequiredFileCoverage = 1; + + const percent = requirePercent(); + const dataProperties = requireDataProperties(); + const { CoverageSummary } = requireCoverageSummary(); + + // returns a data object that represents empty coverage + function emptyCoverage(filePath, reportLogic) { + const cov = { + path: filePath, + statementMap: {}, + fnMap: {}, + branchMap: {}, + s: {}, + f: {}, + b: {} + }; + if (reportLogic) cov.bT = {}; + return cov; + } -// asserts that a data object "looks like" a coverage object -function assertValidObject(obj) { - const valid = - obj && - obj.path && - obj.statementMap && - obj.fnMap && - obj.branchMap && - obj.s && - obj.f && - obj.b; - if (!valid) { - throw new Error( - 'Invalid file coverage object, missing keys, found:' + - Object.keys(obj).join(',') - ); - } -} + // asserts that a data object "looks like" a coverage object + function assertValidObject(obj) { + const valid = + obj && + obj.path && + obj.statementMap && + obj.fnMap && + obj.branchMap && + obj.s && + obj.f && + obj.b; + if (!valid) { + throw new Error( + 'Invalid file coverage object, missing keys, found:' + + Object.keys(obj).join(',') + ); + } + } -const keyFromLoc = ({ start, end }) => - `${start.line}|${start.column}|${end.line}|${end.column}`; + const keyFromLoc = ({ start, end }) => + `${start.line}|${start.column}|${end.line}|${end.column}`; -const mergeProp = (aHits, aMap, bHits, bMap, itemKey = keyFromLoc) => { - const aItems = {}; - for (const [key, itemHits] of Object.entries(aHits)) { - const item = aMap[key]; - aItems[itemKey(item)] = [itemHits, item]; - } - for (const [key, bItemHits] of Object.entries(bHits)) { - const bItem = bMap[key]; - const k = itemKey(bItem); - - if (aItems[k]) { - const aPair = aItems[k]; - if (bItemHits.forEach) { - // should this throw an exception if aPair[0] is not an array? - bItemHits.forEach((hits, h) => { - if (aPair[0][h] !== undefined) aPair[0][h] += hits; - else aPair[0][h] = hits; - }); - } else { - aPair[0] += bItemHits; - } - } else { - aItems[k] = [bItemHits, bItem]; - } - } - const hits = {}; - const map = {}; + const mergeProp = (aHits, aMap, bHits, bMap, itemKey = keyFromLoc) => { + const aItems = {}; + for (const [key, itemHits] of Object.entries(aHits)) { + const item = aMap[key]; + aItems[itemKey(item)] = [itemHits, item]; + } + for (const [key, bItemHits] of Object.entries(bHits)) { + const bItem = bMap[key]; + const k = itemKey(bItem); + + if (aItems[k]) { + const aPair = aItems[k]; + if (bItemHits.forEach) { + // should this throw an exception if aPair[0] is not an array? + bItemHits.forEach((hits, h) => { + if (aPair[0][h] !== undefined) aPair[0][h] += hits; + else aPair[0][h] = hits; + }); + } else { + aPair[0] += bItemHits; + } + } else { + aItems[k] = [bItemHits, bItem]; + } + } + const hits = {}; + const map = {}; - Object.values(aItems).forEach(([itemHits, item], i) => { - hits[i] = itemHits; - map[i] = item; - }); + Object.values(aItems).forEach(([itemHits, item], i) => { + hits[i] = itemHits; + map[i] = item; + }); - return [hits, map]; -}; + return [hits, map]; + }; -/** - * provides a read-only view of coverage for a single file. - * The deep structure of this object is documented elsewhere. It has the following - * properties: - * - * * `path` - the file path for which coverage is being tracked - * * `statementMap` - map of statement locations keyed by statement index - * * `fnMap` - map of function metadata keyed by function index - * * `branchMap` - map of branch metadata keyed by branch index - * * `s` - hit counts for statements - * * `f` - hit count for functions - * * `b` - hit count for branches - */ -let FileCoverage$2 = class FileCoverage { - /** - * @constructor - * @param {Object|FileCoverage|String} pathOrObj is a string that initializes - * and empty coverage object with the specified file path or a data object that - * has all the required properties for a file coverage object. - */ - constructor(pathOrObj, reportLogic = false) { - if (!pathOrObj) { - throw new Error( - 'Coverage must be initialized with a path or an object' - ); - } - if (typeof pathOrObj === 'string') { - this.data = emptyCoverage(pathOrObj, reportLogic); - } else if (pathOrObj instanceof FileCoverage) { - this.data = pathOrObj.data; - } else if (typeof pathOrObj === 'object') { - this.data = pathOrObj; - } else { - throw new Error('Invalid argument to coverage constructor'); - } - assertValidObject(this.data); - } + /** + * provides a read-only view of coverage for a single file. + * The deep structure of this object is documented elsewhere. It has the following + * properties: + * + * * `path` - the file path for which coverage is being tracked + * * `statementMap` - map of statement locations keyed by statement index + * * `fnMap` - map of function metadata keyed by function index + * * `branchMap` - map of branch metadata keyed by branch index + * * `s` - hit counts for statements + * * `f` - hit count for functions + * * `b` - hit count for branches + */ + class FileCoverage { + /** + * @constructor + * @param {Object|FileCoverage|String} pathOrObj is a string that initializes + * and empty coverage object with the specified file path or a data object that + * has all the required properties for a file coverage object. + */ + constructor(pathOrObj, reportLogic = false) { + if (!pathOrObj) { + throw new Error( + 'Coverage must be initialized with a path or an object' + ); + } + if (typeof pathOrObj === 'string') { + this.data = emptyCoverage(pathOrObj, reportLogic); + } else if (pathOrObj instanceof FileCoverage) { + this.data = pathOrObj.data; + } else if (typeof pathOrObj === 'object') { + this.data = pathOrObj; + } else { + throw new Error('Invalid argument to coverage constructor'); + } + assertValidObject(this.data); + } - /** - * returns computed line coverage from statement coverage. - * This is a map of hits keyed by line number in the source. - */ - getLineCoverage() { - const statementMap = this.data.statementMap; - const statements = this.data.s; - const lineMap = Object.create(null); - - Object.entries(statements).forEach(([st, count]) => { - /* istanbul ignore if: is this even possible? */ - if (!statementMap[st]) { - return; - } - const { line } = statementMap[st].start; - const prevVal = lineMap[line]; - if (prevVal === undefined || prevVal < count) { - lineMap[line] = count; - } - }); - return lineMap; - } + /** + * returns computed line coverage from statement coverage. + * This is a map of hits keyed by line number in the source. + */ + getLineCoverage() { + const statementMap = this.data.statementMap; + const statements = this.data.s; + const lineMap = Object.create(null); + + Object.entries(statements).forEach(([st, count]) => { + /* istanbul ignore if: is this even possible? */ + if (!statementMap[st]) { + return; + } + const { line } = statementMap[st].start; + const prevVal = lineMap[line]; + if (prevVal === undefined || prevVal < count) { + lineMap[line] = count; + } + }); + return lineMap; + } - /** - * returns an array of uncovered line numbers. - * @returns {Array} an array of line numbers for which no hits have been - * collected. - */ - getUncoveredLines() { - const lc = this.getLineCoverage(); - const ret = []; - Object.entries(lc).forEach(([l, hits]) => { - if (hits === 0) { - ret.push(l); - } - }); - return ret; - } + /** + * returns an array of uncovered line numbers. + * @returns {Array} an array of line numbers for which no hits have been + * collected. + */ + getUncoveredLines() { + const lc = this.getLineCoverage(); + const ret = []; + Object.entries(lc).forEach(([l, hits]) => { + if (hits === 0) { + ret.push(l); + } + }); + return ret; + } - /** - * returns a map of branch coverage by source line number. - * @returns {Object} an object keyed by line number. Each object - * has a `covered`, `total` and `coverage` (percentage) property. - */ - getBranchCoverageByLine() { - const branchMap = this.branchMap; - const branches = this.b; - const ret = {}; - Object.entries(branchMap).forEach(([k, map]) => { - const line = map.line || map.loc.start.line; - const branchData = branches[k]; - ret[line] = ret[line] || []; - ret[line].push(...branchData); - }); - Object.entries(ret).forEach(([k, dataArray]) => { - const covered = dataArray.filter(item => item > 0); - const coverage = (covered.length / dataArray.length) * 100; - ret[k] = { - covered: covered.length, - total: dataArray.length, - coverage - }; - }); - return ret; - } + /** + * returns a map of branch coverage by source line number. + * @returns {Object} an object keyed by line number. Each object + * has a `covered`, `total` and `coverage` (percentage) property. + */ + getBranchCoverageByLine() { + const branchMap = this.branchMap; + const branches = this.b; + const ret = {}; + Object.entries(branchMap).forEach(([k, map]) => { + const line = map.line || map.loc.start.line; + const branchData = branches[k]; + ret[line] = ret[line] || []; + ret[line].push(...branchData); + }); + Object.entries(ret).forEach(([k, dataArray]) => { + const covered = dataArray.filter(item => item > 0); + const coverage = (covered.length / dataArray.length) * 100; + ret[k] = { + covered: covered.length, + total: dataArray.length, + coverage + }; + }); + return ret; + } - /** - * return a JSON-serializable POJO for this file coverage object - */ - toJSON() { - return this.data; - } + /** + * return a JSON-serializable POJO for this file coverage object + */ + toJSON() { + return this.data; + } - /** - * merges a second coverage object into this one, updating hit counts - * @param {FileCoverage} other - the coverage object to be merged into this one. - * Note that the other object should have the same structure as this one (same file). - */ - merge(other) { - if (other.all === true) { - return; - } + /** + * merges a second coverage object into this one, updating hit counts + * @param {FileCoverage} other - the coverage object to be merged into this one. + * Note that the other object should have the same structure as this one (same file). + */ + merge(other) { + if (other.all === true) { + return; + } - if (this.all === true) { - this.data = other.data; - return; - } + if (this.all === true) { + this.data = other.data; + return; + } - let [hits, map] = mergeProp( - this.s, - this.statementMap, - other.s, - other.statementMap - ); - this.data.s = hits; - this.data.statementMap = map; - - const keyFromLocProp = x => keyFromLoc(x.loc); - const keyFromLocationsProp = x => keyFromLoc(x.locations[0]); - - [hits, map] = mergeProp( - this.f, - this.fnMap, - other.f, - other.fnMap, - keyFromLocProp - ); - this.data.f = hits; - this.data.fnMap = map; - - [hits, map] = mergeProp( - this.b, - this.branchMap, - other.b, - other.branchMap, - keyFromLocationsProp - ); - this.data.b = hits; - this.data.branchMap = map; - - // Tracking additional information about branch truthiness - // can be optionally enabled: - if (this.bT && other.bT) { - [hits, map] = mergeProp( - this.bT, - this.branchMap, - other.bT, - other.branchMap, - keyFromLocationsProp - ); - this.data.bT = hits; - } - } + let [hits, map] = mergeProp( + this.s, + this.statementMap, + other.s, + other.statementMap + ); + this.data.s = hits; + this.data.statementMap = map; + + const keyFromLocProp = x => keyFromLoc(x.loc); + const keyFromLocationsProp = x => keyFromLoc(x.locations[0]); + + [hits, map] = mergeProp( + this.f, + this.fnMap, + other.f, + other.fnMap, + keyFromLocProp + ); + this.data.f = hits; + this.data.fnMap = map; + + [hits, map] = mergeProp( + this.b, + this.branchMap, + other.b, + other.branchMap, + keyFromLocationsProp + ); + this.data.b = hits; + this.data.branchMap = map; + + // Tracking additional information about branch truthiness + // can be optionally enabled: + if (this.bT && other.bT) { + [hits, map] = mergeProp( + this.bT, + this.branchMap, + other.bT, + other.branchMap, + keyFromLocationsProp + ); + this.data.bT = hits; + } + } - computeSimpleTotals(property) { - let stats = this[property]; + computeSimpleTotals(property) { + let stats = this[property]; - if (typeof stats === 'function') { - stats = stats.call(this); - } + if (typeof stats === 'function') { + stats = stats.call(this); + } - const ret = { - total: Object.keys(stats).length, - covered: Object.values(stats).filter(v => !!v).length, - skipped: 0 - }; - ret.pct = percent(ret.covered, ret.total); - return ret; - } + const ret = { + total: Object.keys(stats).length, + covered: Object.values(stats).filter(v => !!v).length, + skipped: 0 + }; + ret.pct = percent(ret.covered, ret.total); + return ret; + } - computeBranchTotals(property) { - const stats = this[property]; - const ret = { total: 0, covered: 0, skipped: 0 }; + computeBranchTotals(property) { + const stats = this[property]; + const ret = { total: 0, covered: 0, skipped: 0 }; - Object.values(stats).forEach(branches => { - ret.covered += branches.filter(hits => hits > 0).length; - ret.total += branches.length; - }); - ret.pct = percent(ret.covered, ret.total); - return ret; - } + Object.values(stats).forEach(branches => { + ret.covered += branches.filter(hits => hits > 0).length; + ret.total += branches.length; + }); + ret.pct = percent(ret.covered, ret.total); + return ret; + } - /** - * resets hit counts for all statements, functions and branches - * in this coverage object resulting in zero coverage. - */ - resetHits() { - const statements = this.s; - const functions = this.f; - const branches = this.b; - const branchesTrue = this.bT; - Object.keys(statements).forEach(s => { - statements[s] = 0; - }); - Object.keys(functions).forEach(f => { - functions[f] = 0; - }); - Object.keys(branches).forEach(b => { - branches[b].fill(0); - }); - // Tracking additional information about branch truthiness - // can be optionally enabled: - if (branchesTrue) { - Object.keys(branchesTrue).forEach(bT => { - branchesTrue[bT].fill(0); - }); - } - } + /** + * resets hit counts for all statements, functions and branches + * in this coverage object resulting in zero coverage. + */ + resetHits() { + const statements = this.s; + const functions = this.f; + const branches = this.b; + const branchesTrue = this.bT; + Object.keys(statements).forEach(s => { + statements[s] = 0; + }); + Object.keys(functions).forEach(f => { + functions[f] = 0; + }); + Object.keys(branches).forEach(b => { + branches[b].fill(0); + }); + // Tracking additional information about branch truthiness + // can be optionally enabled: + if (branchesTrue) { + Object.keys(branchesTrue).forEach(bT => { + branchesTrue[bT].fill(0); + }); + } + } - /** - * returns a CoverageSummary for this file coverage object - * @returns {CoverageSummary} - */ - toSummary() { - const ret = {}; - ret.lines = this.computeSimpleTotals('getLineCoverage'); - ret.functions = this.computeSimpleTotals('f', 'fnMap'); - ret.statements = this.computeSimpleTotals('s', 'statementMap'); - ret.branches = this.computeBranchTotals('b'); - // Tracking additional information about branch truthiness - // can be optionally enabled: - if (this['bt']) { - ret.branchesTrue = this.computeBranchTotals('bT'); - } - return new CoverageSummary$2(ret); - } -}; + /** + * returns a CoverageSummary for this file coverage object + * @returns {CoverageSummary} + */ + toSummary() { + const ret = {}; + ret.lines = this.computeSimpleTotals('getLineCoverage'); + ret.functions = this.computeSimpleTotals('f', 'fnMap'); + ret.statements = this.computeSimpleTotals('s', 'statementMap'); + ret.branches = this.computeBranchTotals('b'); + // Tracking additional information about branch truthiness + // can be optionally enabled: + if (this['bt']) { + ret.branchesTrue = this.computeBranchTotals('bT'); + } + return new CoverageSummary(ret); + } + } -// expose coverage data attributes -dataProperties(FileCoverage$2, [ - 'path', - 'statementMap', - 'fnMap', - 'branchMap', - 's', - 'f', - 'b', - 'bT', - 'all' -]); - -var fileCoverage = { - FileCoverage: FileCoverage$2 -}; + // expose coverage data attributes + dataProperties(FileCoverage, [ + 'path', + 'statementMap', + 'fnMap', + 'branchMap', + 's', + 'f', + 'b', + 'bT', + 'all' + ]); + + fileCoverage = { + FileCoverage + }; + return fileCoverage; +} /* Copyright 2012-2015, Yahoo Inc. Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ -const { FileCoverage: FileCoverage$1 } = fileCoverage; -const { CoverageSummary: CoverageSummary$1 } = coverageSummary; - -function maybeConstruct(obj, klass) { - if (obj instanceof klass) { - return obj; - } +var coverageMap; +var hasRequiredCoverageMap; - return new klass(obj); -} +function requireCoverageMap () { + if (hasRequiredCoverageMap) return coverageMap; + hasRequiredCoverageMap = 1; -function loadMap(source) { - const data = Object.create(null); - if (!source) { - return data; - } + const { FileCoverage } = requireFileCoverage(); + const { CoverageSummary } = requireCoverageSummary(); - Object.entries(source).forEach(([k, cov]) => { - data[k] = maybeConstruct(cov, FileCoverage$1); - }); + function maybeConstruct(obj, klass) { + if (obj instanceof klass) { + return obj; + } - return data; -} + return new klass(obj); + } -/** CoverageMap is a map of `FileCoverage` objects keyed by file paths. */ -let CoverageMap$1 = class CoverageMap { - /** - * @constructor - * @param {Object} [obj=undefined] obj A coverage map from which to initialize this - * map's contents. This can be the raw global coverage object. - */ - constructor(obj) { - if (obj instanceof CoverageMap) { - this.data = obj.data; - } else { - this.data = loadMap(obj); - } - } + function loadMap(source) { + const data = Object.create(null); + if (!source) { + return data; + } - /** - * merges a second coverage map into this one - * @param {CoverageMap} obj - a CoverageMap or its raw data. Coverage is merged - * correctly for the same files and additional file coverage keys are created - * as needed. - */ - merge(obj) { - const other = maybeConstruct(obj, CoverageMap); - Object.values(other.data).forEach(fc => { - this.addFileCoverage(fc); - }); - } + Object.entries(source).forEach(([k, cov]) => { + data[k] = maybeConstruct(cov, FileCoverage); + }); - /** - * filter the coveragemap based on the callback provided - * @param {Function (filename)} callback - Returns true if the path - * should be included in the coveragemap. False if it should be - * removed. - */ - filter(callback) { - Object.keys(this.data).forEach(k => { - if (!callback(k)) { - delete this.data[k]; - } - }); - } + return data; + } - /** - * returns a JSON-serializable POJO for this coverage map - * @returns {Object} - */ - toJSON() { - return this.data; - } + /** CoverageMap is a map of `FileCoverage` objects keyed by file paths. */ + class CoverageMap { + /** + * @constructor + * @param {Object} [obj=undefined] obj A coverage map from which to initialize this + * map's contents. This can be the raw global coverage object. + */ + constructor(obj) { + if (obj instanceof CoverageMap) { + this.data = obj.data; + } else { + this.data = loadMap(obj); + } + } - /** - * returns an array for file paths for which this map has coverage - * @returns {Array{string}} - array of files - */ - files() { - return Object.keys(this.data); - } + /** + * merges a second coverage map into this one + * @param {CoverageMap} obj - a CoverageMap or its raw data. Coverage is merged + * correctly for the same files and additional file coverage keys are created + * as needed. + */ + merge(obj) { + const other = maybeConstruct(obj, CoverageMap); + Object.values(other.data).forEach(fc => { + this.addFileCoverage(fc); + }); + } - /** - * returns the file coverage for the specified file. - * @param {String} file - * @returns {FileCoverage} - */ - fileCoverageFor(file) { - const fc = this.data[file]; - if (!fc) { - throw new Error(`No file coverage available for: ${file}`); - } - return fc; - } + /** + * filter the coveragemap based on the callback provided + * @param {Function (filename)} callback - Returns true if the path + * should be included in the coveragemap. False if it should be + * removed. + */ + filter(callback) { + Object.keys(this.data).forEach(k => { + if (!callback(k)) { + delete this.data[k]; + } + }); + } - /** - * adds a file coverage object to this map. If the path for the object, - * already exists in the map, it is merged with the existing coverage - * otherwise a new key is added to the map. - * @param {FileCoverage} fc the file coverage to add - */ - addFileCoverage(fc) { - const cov = new FileCoverage$1(fc); - const { path } = cov; - if (this.data[path]) { - this.data[path].merge(cov); - } else { - this.data[path] = cov; - } - } + /** + * returns a JSON-serializable POJO for this coverage map + * @returns {Object} + */ + toJSON() { + return this.data; + } - /** - * returns the coverage summary for all the file coverage objects in this map. - * @returns {CoverageSummary} - */ - getCoverageSummary() { - const ret = new CoverageSummary$1(); - Object.values(this.data).forEach(fc => { - ret.merge(fc.toSummary()); - }); + /** + * returns an array for file paths for which this map has coverage + * @returns {Array{string}} - array of files + */ + files() { + return Object.keys(this.data); + } - return ret; - } -}; + /** + * returns the file coverage for the specified file. + * @param {String} file + * @returns {FileCoverage} + */ + fileCoverageFor(file) { + const fc = this.data[file]; + if (!fc) { + throw new Error(`No file coverage available for: ${file}`); + } + return fc; + } -var coverageMap = { - CoverageMap: CoverageMap$1 -}; + /** + * adds a file coverage object to this map. If the path for the object, + * already exists in the map, it is merged with the existing coverage + * otherwise a new key is added to the map. + * @param {FileCoverage} fc the file coverage to add + */ + addFileCoverage(fc) { + const cov = new FileCoverage(fc); + const { path } = cov; + if (this.data[path]) { + this.data[path].merge(cov); + } else { + this.data[path] = cov; + } + } -/* - Copyright 2012-2015, Yahoo Inc. - Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. - */ + /** + * returns the coverage summary for all the file coverage objects in this map. + * @returns {CoverageSummary} + */ + getCoverageSummary() { + const ret = new CoverageSummary(); + Object.values(this.data).forEach(fc => { + ret.merge(fc.toSummary()); + }); -/** - * istanbul-lib-coverage exports an API that allows you to create and manipulate - * file coverage, coverage maps (a set of file coverage objects) and summary - * coverage objects. File coverage for the same file can be merged as can - * entire coverage maps. - * - * @module Exports + return ret; + } + } + + coverageMap = { + CoverageMap + }; + return coverageMap; +} + +/* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ -const { FileCoverage } = fileCoverage; -const { CoverageMap } = coverageMap; -const { CoverageSummary } = coverageSummary; -istanbulLibCoverage.exports = { - /** - * creates a coverage summary object - * @param {Object} obj an argument with the same semantics - * as the one passed to the `CoverageSummary` constructor - * @returns {CoverageSummary} - */ - createCoverageSummary(obj) { - if (obj && obj instanceof CoverageSummary) { - return obj; - } - return new CoverageSummary(obj); - }, - /** - * creates a CoverageMap object - * @param {Object} obj optional - an argument with the same semantics - * as the one passed to the CoverageMap constructor. - * @returns {CoverageMap} - */ - createCoverageMap(obj) { - if (obj && obj instanceof CoverageMap) { - return obj; - } - return new CoverageMap(obj); - }, - /** - * creates a FileCoverage object - * @param {Object} obj optional - an argument with the same semantics - * as the one passed to the FileCoverage constructor. - * @returns {FileCoverage} - */ - createFileCoverage(obj) { - if (obj && obj instanceof FileCoverage) { - return obj; - } - return new FileCoverage(obj); - } -}; +var hasRequiredIstanbulLibCoverage; -/** classes exported for reuse */ -istanbulLibCoverageExports.classes = { - /** - * the file coverage constructor - */ - FileCoverage -}; +function requireIstanbulLibCoverage () { + if (hasRequiredIstanbulLibCoverage) return istanbulLibCoverage.exports; + hasRequiredIstanbulLibCoverage = 1; -var makeDirExports = {}; -var makeDir$1 = { - get exports(){ return makeDirExports; }, - set exports(v){ makeDirExports = v; }, -}; + /** + * istanbul-lib-coverage exports an API that allows you to create and manipulate + * file coverage, coverage maps (a set of file coverage objects) and summary + * coverage objects. File coverage for the same file can be merged as can + * entire coverage maps. + * + * @module Exports + */ + const { FileCoverage } = requireFileCoverage(); + const { CoverageMap } = requireCoverageMap(); + const { CoverageSummary } = requireCoverageSummary(); + + istanbulLibCoverage.exports = { + /** + * creates a coverage summary object + * @param {Object} obj an argument with the same semantics + * as the one passed to the `CoverageSummary` constructor + * @returns {CoverageSummary} + */ + createCoverageSummary(obj) { + if (obj && obj instanceof CoverageSummary) { + return obj; + } + return new CoverageSummary(obj); + }, + /** + * creates a CoverageMap object + * @param {Object} obj optional - an argument with the same semantics + * as the one passed to the CoverageMap constructor. + * @returns {CoverageMap} + */ + createCoverageMap(obj) { + if (obj && obj instanceof CoverageMap) { + return obj; + } + return new CoverageMap(obj); + }, + /** + * creates a FileCoverage object + * @param {Object} obj optional - an argument with the same semantics + * as the one passed to the FileCoverage constructor. + * @returns {FileCoverage} + */ + createFileCoverage(obj) { + if (obj && obj instanceof FileCoverage) { + return obj; + } + return new FileCoverage(obj); + } + }; -var semverExports = {}; -var semver$1 = { - get exports(){ return semverExports; }, - set exports(v){ semverExports = v; }, -}; + /** classes exported for reuse */ + istanbulLibCoverage.exports.classes = { + /** + * the file coverage constructor + */ + FileCoverage + }; + return istanbulLibCoverage.exports; +} -(function (module, exports) { - exports = module.exports = SemVer; - - var debug; - /* istanbul ignore next */ - if (typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG)) { - debug = function () { - var args = Array.prototype.slice.call(arguments, 0); - args.unshift('SEMVER'); - console.log.apply(console, args); - }; - } else { - debug = function () {}; - } +var makeDir = {exports: {}}; - // Note: this is the semver.org version of the spec that it implements - // Not necessarily the package version of this code. - exports.SEMVER_SPEC_VERSION = '2.0.0'; +var semver = {exports: {}}; - var MAX_LENGTH = 256; - var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || - /* istanbul ignore next */ 9007199254740991; +var hasRequiredSemver; - // Max safe segment length for coercion. - var MAX_SAFE_COMPONENT_LENGTH = 16; +function requireSemver () { + if (hasRequiredSemver) return semver.exports; + hasRequiredSemver = 1; + (function (module, exports) { + exports = module.exports = SemVer; + + var debug; + /* istanbul ignore next */ + if (typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG)) { + debug = function () { + var args = Array.prototype.slice.call(arguments, 0); + args.unshift('SEMVER'); + console.log.apply(console, args); + }; + } else { + debug = function () {}; + } - // The actual regexps go on exports.re - var re = exports.re = []; - var src = exports.src = []; - var t = exports.tokens = {}; - var R = 0; + // Note: this is the semver.org version of the spec that it implements + // Not necessarily the package version of this code. + exports.SEMVER_SPEC_VERSION = '2.0.0'; - function tok (n) { - t[n] = R++; - } + var MAX_LENGTH = 256; + var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991; - // The following Regular Expressions can be used for tokenizing, - // validating, and parsing SemVer version strings. + // Max safe segment length for coercion. + var MAX_SAFE_COMPONENT_LENGTH = 16; - // ## Numeric Identifier - // A single `0`, or a non-zero digit followed by zero or more digits. + // The actual regexps go on exports.re + var re = exports.re = []; + var src = exports.src = []; + var t = exports.tokens = {}; + var R = 0; - tok('NUMERICIDENTIFIER'); - src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'; - tok('NUMERICIDENTIFIERLOOSE'); - src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'; - - // ## Non-numeric Identifier - // Zero or more digits, followed by a letter or hyphen, and then zero or - // more letters, digits, or hyphens. - - tok('NONNUMERICIDENTIFIER'); - src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; - - // ## Main Version - // Three dot-separated numeric identifiers. - - tok('MAINVERSION'); - src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIER] + ')'; - - tok('MAINVERSIONLOOSE'); - src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'; - - // ## Pre-release Version Identifier - // A numeric identifier, or a non-numeric identifier. - - tok('PRERELEASEIDENTIFIER'); - src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + - '|' + src[t.NONNUMERICIDENTIFIER] + ')'; - - tok('PRERELEASEIDENTIFIERLOOSE'); - src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + - '|' + src[t.NONNUMERICIDENTIFIER] + ')'; - - // ## Pre-release Version - // Hyphen, followed by one or more dot-separated pre-release version - // identifiers. - - tok('PRERELEASE'); - src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + - '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'; - - tok('PRERELEASELOOSE'); - src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'; - - // ## Build Metadata Identifier - // Any combination of digits, letters, or hyphens. - - tok('BUILDIDENTIFIER'); - src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; - - // ## Build Metadata - // Plus sign, followed by one or more period-separated build metadata - // identifiers. - - tok('BUILD'); - src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + - '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'; - - // ## Full Version String - // A main version, followed optionally by a pre-release version and - // build metadata. - - // Note that the only major, minor, patch, and pre-release sections of - // the version string are capturing groups. The build metadata is not a - // capturing group, because it should not ever be used in version - // comparison. - - tok('FULL'); - tok('FULLPLAIN'); - src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + - src[t.PRERELEASE] + '?' + - src[t.BUILD] + '?'; - - src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'; - - // like full, but allows v1.2.3 and =1.2.3, which people do sometimes. - // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty - // common in the npm registry. - tok('LOOSEPLAIN'); - src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + - src[t.PRERELEASELOOSE] + '?' + - src[t.BUILD] + '?'; - - tok('LOOSE'); - src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'; - - tok('GTLT'); - src[t.GTLT] = '((?:<|>)?=?)'; - - // Something like "2.*" or "1.2.x". - // Note that "x.x" is a valid xRange identifer, meaning "any version" - // Only the first item is strictly required. - tok('XRANGEIDENTIFIERLOOSE'); - src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'; - tok('XRANGEIDENTIFIER'); - src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'; - - tok('XRANGEPLAIN'); - src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:' + src[t.PRERELEASE] + ')?' + - src[t.BUILD] + '?' + - ')?)?'; - - tok('XRANGEPLAINLOOSE'); - src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:' + src[t.PRERELEASELOOSE] + ')?' + - src[t.BUILD] + '?' + - ')?)?'; - - tok('XRANGE'); - src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'; - tok('XRANGELOOSE'); - src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'; - - // Coercion. - // Extract anything that could conceivably be a part of a valid semver - tok('COERCE'); - src[t.COERCE] = '(^|[^\\d])' + - '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:$|[^\\d])'; - tok('COERCERTL'); - re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g'); - - // Tilde ranges. - // Meaning is "reasonably at or greater than" - tok('LONETILDE'); - src[t.LONETILDE] = '(?:~>?)'; - - tok('TILDETRIM'); - src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'; - re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g'); - var tildeTrimReplace = '$1~'; - - tok('TILDE'); - src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'; - tok('TILDELOOSE'); - src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'; - - // Caret ranges. - // Meaning is "at least and backwards compatible with" - tok('LONECARET'); - src[t.LONECARET] = '(?:\\^)'; - - tok('CARETTRIM'); - src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'; - re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g'); - var caretTrimReplace = '$1^'; - - tok('CARET'); - src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'; - tok('CARETLOOSE'); - src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'; - - // A simple gt/lt/eq thing, or just "" to indicate "any version" - tok('COMPARATORLOOSE'); - src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'; - tok('COMPARATOR'); - src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'; - - // An expression to strip any whitespace between the gtlt and the thing - // it modifies, so that `> 1.2.3` ==> `>1.2.3` - tok('COMPARATORTRIM'); - src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + - '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'; - - // this one has to use the /g flag - re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g'); - var comparatorTrimReplace = '$1$2$3'; - - // Something like `1.2.3 - 1.2.4` - // Note that these all use the loose form, because they'll be - // checked against either the strict or loose comparator form - // later. - tok('HYPHENRANGE'); - src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[t.XRANGEPLAIN] + ')' + - '\\s*$'; - - tok('HYPHENRANGELOOSE'); - src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[t.XRANGEPLAINLOOSE] + ')' + - '\\s*$'; - - // Star ranges basically just allow anything at all. - tok('STAR'); - src[t.STAR] = '(<|>)?=?\\s*\\*'; - - // Compile to actual regexp objects. - // All are flag-free, unless they were created above with a flag. - for (var i = 0; i < R; i++) { - debug(i, src[i]); - if (!re[i]) { - re[i] = new RegExp(src[i]); - } - } + function tok (n) { + t[n] = R++; + } - exports.parse = parse; - function parse (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - }; - } + // The following Regular Expressions can be used for tokenizing, + // validating, and parsing SemVer version strings. - if (version instanceof SemVer) { - return version - } + // ## Numeric Identifier + // A single `0`, or a non-zero digit followed by zero or more digits. - if (typeof version !== 'string') { - return null - } + tok('NUMERICIDENTIFIER'); + src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'; + tok('NUMERICIDENTIFIERLOOSE'); + src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'; + + // ## Non-numeric Identifier + // Zero or more digits, followed by a letter or hyphen, and then zero or + // more letters, digits, or hyphens. + + tok('NONNUMERICIDENTIFIER'); + src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; + + // ## Main Version + // Three dot-separated numeric identifiers. + + tok('MAINVERSION'); + src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIER] + ')'; + + tok('MAINVERSIONLOOSE'); + src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'; + + // ## Pre-release Version Identifier + // A numeric identifier, or a non-numeric identifier. + + tok('PRERELEASEIDENTIFIER'); + src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + + '|' + src[t.NONNUMERICIDENTIFIER] + ')'; + + tok('PRERELEASEIDENTIFIERLOOSE'); + src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + + '|' + src[t.NONNUMERICIDENTIFIER] + ')'; + + // ## Pre-release Version + // Hyphen, followed by one or more dot-separated pre-release version + // identifiers. + + tok('PRERELEASE'); + src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'; + + tok('PRERELEASELOOSE'); + src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'; + + // ## Build Metadata Identifier + // Any combination of digits, letters, or hyphens. + + tok('BUILDIDENTIFIER'); + src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; + + // ## Build Metadata + // Plus sign, followed by one or more period-separated build metadata + // identifiers. + + tok('BUILD'); + src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'; + + // ## Full Version String + // A main version, followed optionally by a pre-release version and + // build metadata. + + // Note that the only major, minor, patch, and pre-release sections of + // the version string are capturing groups. The build metadata is not a + // capturing group, because it should not ever be used in version + // comparison. + + tok('FULL'); + tok('FULLPLAIN'); + src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + + src[t.PRERELEASE] + '?' + + src[t.BUILD] + '?'; + + src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'; + + // like full, but allows v1.2.3 and =1.2.3, which people do sometimes. + // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty + // common in the npm registry. + tok('LOOSEPLAIN'); + src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + + src[t.PRERELEASELOOSE] + '?' + + src[t.BUILD] + '?'; + + tok('LOOSE'); + src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'; + + tok('GTLT'); + src[t.GTLT] = '((?:<|>)?=?)'; + + // Something like "2.*" or "1.2.x". + // Note that "x.x" is a valid xRange identifer, meaning "any version" + // Only the first item is strictly required. + tok('XRANGEIDENTIFIERLOOSE'); + src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'; + tok('XRANGEIDENTIFIER'); + src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'; + + tok('XRANGEPLAIN'); + src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:' + src[t.PRERELEASE] + ')?' + + src[t.BUILD] + '?' + + ')?)?'; + + tok('XRANGEPLAINLOOSE'); + src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:' + src[t.PRERELEASELOOSE] + ')?' + + src[t.BUILD] + '?' + + ')?)?'; + + tok('XRANGE'); + src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'; + tok('XRANGELOOSE'); + src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'; + + // Coercion. + // Extract anything that could conceivably be a part of a valid semver + tok('COERCE'); + src[t.COERCE] = '(^|[^\\d])' + + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:$|[^\\d])'; + tok('COERCERTL'); + re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g'); + + // Tilde ranges. + // Meaning is "reasonably at or greater than" + tok('LONETILDE'); + src[t.LONETILDE] = '(?:~>?)'; + + tok('TILDETRIM'); + src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'; + re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g'); + var tildeTrimReplace = '$1~'; + + tok('TILDE'); + src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'; + tok('TILDELOOSE'); + src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'; + + // Caret ranges. + // Meaning is "at least and backwards compatible with" + tok('LONECARET'); + src[t.LONECARET] = '(?:\\^)'; + + tok('CARETTRIM'); + src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'; + re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g'); + var caretTrimReplace = '$1^'; + + tok('CARET'); + src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'; + tok('CARETLOOSE'); + src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'; + + // A simple gt/lt/eq thing, or just "" to indicate "any version" + tok('COMPARATORLOOSE'); + src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'; + tok('COMPARATOR'); + src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'; + + // An expression to strip any whitespace between the gtlt and the thing + // it modifies, so that `> 1.2.3` ==> `>1.2.3` + tok('COMPARATORTRIM'); + src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'; + + // this one has to use the /g flag + re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g'); + var comparatorTrimReplace = '$1$2$3'; + + // Something like `1.2.3 - 1.2.4` + // Note that these all use the loose form, because they'll be + // checked against either the strict or loose comparator form + // later. + tok('HYPHENRANGE'); + src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + + '\\s+-\\s+' + + '(' + src[t.XRANGEPLAIN] + ')' + + '\\s*$'; + + tok('HYPHENRANGELOOSE'); + src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + + '\\s+-\\s+' + + '(' + src[t.XRANGEPLAINLOOSE] + ')' + + '\\s*$'; + + // Star ranges basically just allow anything at all. + tok('STAR'); + src[t.STAR] = '(<|>)?=?\\s*\\*'; + + // Compile to actual regexp objects. + // All are flag-free, unless they were created above with a flag. + for (var i = 0; i < R; i++) { + debug(i, src[i]); + if (!re[i]) { + re[i] = new RegExp(src[i]); + } + } - if (version.length > MAX_LENGTH) { - return null - } + exports.parse = parse; + function parse (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + }; + } + + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + if (version.length > MAX_LENGTH) { + return null + } + + var r = options.loose ? re[t.LOOSE] : re[t.FULL]; + if (!r.test(version)) { + return null + } + + try { + return new SemVer(version, options) + } catch (er) { + return null + } + } - var r = options.loose ? re[t.LOOSE] : re[t.FULL]; - if (!r.test(version)) { - return null - } + exports.valid = valid; + function valid (version, options) { + var v = parse(version, options); + return v ? v.version : null + } - try { - return new SemVer(version, options) - } catch (er) { - return null - } - } + exports.clean = clean; + function clean (version, options) { + var s = parse(version.trim().replace(/^[=v]+/, ''), options); + return s ? s.version : null + } - exports.valid = valid; - function valid (version, options) { - var v = parse(version, options); - return v ? v.version : null - } + exports.SemVer = SemVer; - exports.clean = clean; - function clean (version, options) { - var s = parse(version.trim().replace(/^[=v]+/, ''), options); - return s ? s.version : null - } + function SemVer (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + }; + } + if (version instanceof SemVer) { + if (version.loose === options.loose) { + return version + } else { + version = version.version; + } + } else if (typeof version !== 'string') { + throw new TypeError('Invalid Version: ' + version) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') + } + + if (!(this instanceof SemVer)) { + return new SemVer(version, options) + } + + debug('SemVer', version, options); + this.options = options; + this.loose = !!options.loose; + + var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); + + if (!m) { + throw new TypeError('Invalid Version: ' + version) + } + + this.raw = version; + + // these are actually numbers + this.major = +m[1]; + this.minor = +m[2]; + this.patch = +m[3]; + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = []; + } else { + this.prerelease = m[4].split('.').map(function (id) { + if (/^[0-9]+$/.test(id)) { + var num = +id; + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }); + } - exports.SemVer = SemVer; + this.build = m[5] ? m[5].split('.') : []; + this.format(); + } - function SemVer (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - }; - } - if (version instanceof SemVer) { - if (version.loose === options.loose) { - return version - } else { - version = version.version; - } - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version) - } + SemVer.prototype.format = function () { + this.version = this.major + '.' + this.minor + '.' + this.patch; + if (this.prerelease.length) { + this.version += '-' + this.prerelease.join('.'); + } + return this.version + }; - if (version.length > MAX_LENGTH) { - throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') - } + SemVer.prototype.toString = function () { + return this.version + }; - if (!(this instanceof SemVer)) { - return new SemVer(version, options) - } + SemVer.prototype.compare = function (other) { + debug('SemVer.compare', this.version, this.options, other); + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } - debug('SemVer', version, options); - this.options = options; - this.loose = !!options.loose; + return this.compareMain(other) || this.comparePre(other) + }; - var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); + SemVer.prototype.compareMain = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } - if (!m) { - throw new TypeError('Invalid Version: ' + version) - } + return compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) + }; - this.raw = version; + SemVer.prototype.comparePre = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + var i = 0; + do { + var a = this.prerelease[i]; + var b = other.prerelease[i]; + debug('prerelease compare', i, a, b); + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + }; - // these are actually numbers - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; + SemVer.prototype.compareBuild = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + + var i = 0; + do { + var a = this.build[i]; + var b = other.build[i]; + debug('prerelease compare', i, a, b); + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + }; - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError('Invalid major version') - } + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + SemVer.prototype.inc = function (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc('pre', identifier); + break + case 'preminor': + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc('pre', identifier); + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0; + this.inc('patch', identifier); + this.inc('pre', identifier); + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier); + } + this.inc('pre', identifier); + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if (this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0) { + this.major++; + } + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++; + } + this.patch = 0; + this.prerelease = []; + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++; + } + this.prerelease = []; + break + // This probably shouldn't be used publicly. + // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0]; + } else { + var i = this.prerelease.length; + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++; + i = -2; + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0); + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0]; + } + } else { + this.prerelease = [identifier, 0]; + } + } + break + + default: + throw new Error('invalid increment argument: ' + release) + } + this.format(); + this.raw = this.version; + return this + }; - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } + exports.inc = inc; + function inc (version, release, loose, identifier) { + if (typeof (loose) === 'string') { + identifier = loose; + loose = undefined; + } + + try { + return new SemVer(version, loose).inc(release, identifier).version + } catch (er) { + return null + } + } - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError('Invalid patch version') - } + exports.diff = diff; + function diff (version1, version2) { + if (eq(version1, version2)) { + return null + } else { + var v1 = parse(version1); + var v2 = parse(version2); + var prefix = ''; + if (v1.prerelease.length || v2.prerelease.length) { + prefix = 'pre'; + var defaultResult = 'prerelease'; + } + for (var key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } + } - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = []; - } else { - this.prerelease = m[4].split('.').map(function (id) { - if (/^[0-9]+$/.test(id)) { - var num = +id; - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num - } - } - return id - }); - } + exports.compareIdentifiers = compareIdentifiers; - this.build = m[5] ? m[5].split('.') : []; - this.format(); - } + var numeric = /^[0-9]+$/; + function compareIdentifiers (a, b) { + var anum = numeric.test(a); + var bnum = numeric.test(b); - SemVer.prototype.format = function () { - this.version = this.major + '.' + this.minor + '.' + this.patch; - if (this.prerelease.length) { - this.version += '-' + this.prerelease.join('.'); - } - return this.version - }; + if (anum && bnum) { + a = +a; + b = +b; + } - SemVer.prototype.toString = function () { - return this.version - }; + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 + } - SemVer.prototype.compare = function (other) { - debug('SemVer.compare', this.version, this.options, other); - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } + exports.rcompareIdentifiers = rcompareIdentifiers; + function rcompareIdentifiers (a, b) { + return compareIdentifiers(b, a) + } - return this.compareMain(other) || this.comparePre(other) - }; + exports.major = major; + function major (a, loose) { + return new SemVer(a, loose).major + } - SemVer.prototype.compareMain = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } + exports.minor = minor; + function minor (a, loose) { + return new SemVer(a, loose).minor + } - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) - }; + exports.patch = patch; + function patch (a, loose) { + return new SemVer(a, loose).patch + } - SemVer.prototype.comparePre = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } + exports.compare = compare; + function compare (a, b, loose) { + return new SemVer(a, loose).compare(new SemVer(b, loose)) + } - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1 - } else if (!this.prerelease.length && other.prerelease.length) { - return 1 - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0 - } + exports.compareLoose = compareLoose; + function compareLoose (a, b) { + return compare(a, b, true) + } - var i = 0; - do { - var a = this.prerelease[i]; - var b = other.prerelease[i]; - debug('prerelease compare', i, a, b); - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) - }; + exports.compareBuild = compareBuild; + function compareBuild (a, b, loose) { + var versionA = new SemVer(a, loose); + var versionB = new SemVer(b, loose); + return versionA.compare(versionB) || versionA.compareBuild(versionB) + } - SemVer.prototype.compareBuild = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - - var i = 0; - do { - var a = this.build[i]; - var b = other.build[i]; - debug('prerelease compare', i, a, b); - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) - }; + exports.rcompare = rcompare; + function rcompare (a, b, loose) { + return compare(b, a, loose) + } - // preminor will bump the version up to the next minor release, and immediately - // down to pre-release. premajor and prepatch work the same way. - SemVer.prototype.inc = function (release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc('pre', identifier); - break - case 'preminor': - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc('pre', identifier); - break - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0; - this.inc('patch', identifier); - this.inc('pre', identifier); - break - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) { - this.inc('patch', identifier); - } - this.inc('pre', identifier); - break + exports.sort = sort; + function sort (list, loose) { + return list.sort(function (a, b) { + return exports.compareBuild(a, b, loose) + }) + } - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || - this.patch !== 0 || - this.prerelease.length === 0) { - this.major++; - } - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++; - } - this.patch = 0; - this.prerelease = []; - break - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++; - } - this.prerelease = []; - break - // This probably shouldn't be used publicly. - // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) { - this.prerelease = [0]; - } else { - var i = this.prerelease.length; - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++; - i = -2; - } - } - if (i === -1) { - // didn't increment anything - this.prerelease.push(0); - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) { - this.prerelease = [identifier, 0]; - } - } else { - this.prerelease = [identifier, 0]; - } - } - break + exports.rsort = rsort; + function rsort (list, loose) { + return list.sort(function (a, b) { + return exports.compareBuild(b, a, loose) + }) + } - default: - throw new Error('invalid increment argument: ' + release) - } - this.format(); - this.raw = this.version; - return this - }; + exports.gt = gt; + function gt (a, b, loose) { + return compare(a, b, loose) > 0 + } - exports.inc = inc; - function inc (version, release, loose, identifier) { - if (typeof (loose) === 'string') { - identifier = loose; - loose = undefined; - } + exports.lt = lt; + function lt (a, b, loose) { + return compare(a, b, loose) < 0 + } - try { - return new SemVer(version, loose).inc(release, identifier).version - } catch (er) { - return null - } - } + exports.eq = eq; + function eq (a, b, loose) { + return compare(a, b, loose) === 0 + } - exports.diff = diff; - function diff (version1, version2) { - if (eq(version1, version2)) { - return null - } else { - var v1 = parse(version1); - var v2 = parse(version2); - var prefix = ''; - if (v1.prerelease.length || v2.prerelease.length) { - prefix = 'pre'; - var defaultResult = 'prerelease'; - } - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return prefix + key - } - } - } - return defaultResult // may be undefined - } - } + exports.neq = neq; + function neq (a, b, loose) { + return compare(a, b, loose) !== 0 + } - exports.compareIdentifiers = compareIdentifiers; + exports.gte = gte; + function gte (a, b, loose) { + return compare(a, b, loose) >= 0 + } - var numeric = /^[0-9]+$/; - function compareIdentifiers (a, b) { - var anum = numeric.test(a); - var bnum = numeric.test(b); + exports.lte = lte; + function lte (a, b, loose) { + return compare(a, b, loose) <= 0 + } - if (anum && bnum) { - a = +a; - b = +b; - } + exports.cmp = cmp; + function cmp (a, op, b, loose) { + switch (op) { + case '===': + if (typeof a === 'object') + a = a.version; + if (typeof b === 'object') + b = b.version; + return a === b + + case '!==': + if (typeof a === 'object') + a = a.version; + if (typeof b === 'object') + b = b.version; + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError('Invalid operator: ' + op) + } + } - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 - } + exports.Comparator = Comparator; + function Comparator (comp, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + }; + } - exports.rcompareIdentifiers = rcompareIdentifiers; - function rcompareIdentifiers (a, b) { - return compareIdentifiers(b, a) - } + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value; + } + } - exports.major = major; - function major (a, loose) { - return new SemVer(a, loose).major - } + if (!(this instanceof Comparator)) { + return new Comparator(comp, options) + } - exports.minor = minor; - function minor (a, loose) { - return new SemVer(a, loose).minor - } + debug('comparator', comp, options); + this.options = options; + this.loose = !!options.loose; + this.parse(comp); - exports.patch = patch; - function patch (a, loose) { - return new SemVer(a, loose).patch - } + if (this.semver === ANY) { + this.value = ''; + } else { + this.value = this.operator + this.semver.version; + } - exports.compare = compare; - function compare (a, b, loose) { - return new SemVer(a, loose).compare(new SemVer(b, loose)) - } + debug('comp', this); + } - exports.compareLoose = compareLoose; - function compareLoose (a, b) { - return compare(a, b, true) - } + var ANY = {}; + Comparator.prototype.parse = function (comp) { + var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + var m = comp.match(r); + + if (!m) { + throw new TypeError('Invalid comparator: ' + comp) + } + + this.operator = m[1] !== undefined ? m[1] : ''; + if (this.operator === '=') { + this.operator = ''; + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY; + } else { + this.semver = new SemVer(m[2], this.options.loose); + } + }; - exports.compareBuild = compareBuild; - function compareBuild (a, b, loose) { - var versionA = new SemVer(a, loose); - var versionB = new SemVer(b, loose); - return versionA.compare(versionB) || versionA.compareBuild(versionB) - } + Comparator.prototype.toString = function () { + return this.value + }; - exports.rcompare = rcompare; - function rcompare (a, b, loose) { - return compare(b, a, loose) - } + Comparator.prototype.test = function (version) { + debug('Comparator.test', version, this.options.loose); - exports.sort = sort; - function sort (list, loose) { - return list.sort(function (a, b) { - return exports.compareBuild(a, b, loose) - }) - } + if (this.semver === ANY || version === ANY) { + return true + } - exports.rsort = rsort; - function rsort (list, loose) { - return list.sort(function (a, b) { - return exports.compareBuild(b, a, loose) - }) - } + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false + } + } - exports.gt = gt; - function gt (a, b, loose) { - return compare(a, b, loose) > 0 - } + return cmp(version, this.operator, this.semver, this.options) + }; - exports.lt = lt; - function lt (a, b, loose) { - return compare(a, b, loose) < 0 - } + Comparator.prototype.intersects = function (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } - exports.eq = eq; - function eq (a, b, loose) { - return compare(a, b, loose) === 0 - } + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + }; + } - exports.neq = neq; - function neq (a, b, loose) { - return compare(a, b, loose) !== 0 - } + var rangeTmp; - exports.gte = gte; - function gte (a, b, loose) { - return compare(a, b, loose) >= 0 - } + if (this.operator === '') { + if (this.value === '') { + return true + } + rangeTmp = new Range(comp.value, options); + return satisfies(this.value, rangeTmp, options) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + rangeTmp = new Range(this.value, options); + return satisfies(comp.semver, rangeTmp, options) + } + + var sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>'); + var sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<'); + var sameSemVer = this.semver.version === comp.semver.version; + var differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<='); + var oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + ((this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<')); + var oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + ((this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>')); + + return sameDirectionIncreasing || sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || oppositeDirectionsGreaterThan + }; - exports.lte = lte; - function lte (a, b, loose) { - return compare(a, b, loose) <= 0 - } + exports.Range = Range; + function Range (range, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + }; + } + + if (range instanceof Range) { + if (range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + return new Range(range.value, options) + } + + if (!(this instanceof Range)) { + return new Range(range, options) + } + + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + + // First, split based on boolean or || + this.raw = range; + this.set = range.split(/\s*\|\|\s*/).map(function (range) { + return this.parseRange(range.trim()) + }, this).filter(function (c) { + // throw out any that are not relevant for whatever reason + return c.length + }); + + if (!this.set.length) { + throw new TypeError('Invalid SemVer Range: ' + range) + } + + this.format(); + } - exports.cmp = cmp; - function cmp (a, op, b, loose) { - switch (op) { - case '===': - if (typeof a === 'object') - a = a.version; - if (typeof b === 'object') - b = b.version; - return a === b + Range.prototype.format = function () { + this.range = this.set.map(function (comps) { + return comps.join(' ').trim() + }).join('||').trim(); + return this.range + }; - case '!==': - if (typeof a === 'object') - a = a.version; - if (typeof b === 'object') - b = b.version; - return a !== b + Range.prototype.toString = function () { + return this.range + }; - case '': - case '=': - case '==': - return eq(a, b, loose) + Range.prototype.parseRange = function (range) { + var loose = this.options.loose; + range = range.trim(); + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; + range = range.replace(hr, hyphenReplace); + debug('hyphen replace', range); + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); + debug('comparator trim', range, re[t.COMPARATORTRIM]); + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[t.TILDETRIM], tildeTrimReplace); + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[t.CARETTRIM], caretTrimReplace); + + // normalize spaces + range = range.split(/\s+/).join(' '); + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + var set = range.split(' ').map(function (comp) { + return parseComparator(comp, this.options) + }, this).join(' ').split(/\s+/); + if (this.options.loose) { + // in loose mode, throw out any that are not valid comparators + set = set.filter(function (comp) { + return !!comp.match(compRe) + }); + } + set = set.map(function (comp) { + return new Comparator(comp, this.options) + }, this); + + return set + }; - case '!=': - return neq(a, b, loose) + Range.prototype.intersects = function (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some(function (thisComparators) { + return ( + isSatisfiable(thisComparators, options) && + range.set.some(function (rangeComparators) { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every(function (thisComparator) { + return rangeComparators.every(function (rangeComparator) { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) + }; - case '>': - return gt(a, b, loose) + // take a set of comparators and determine whether there + // exists a version which can satisfy it + function isSatisfiable (comparators, options) { + var result = true; + var remainingComparators = comparators.slice(); + var testComparator = remainingComparators.pop(); - case '>=': - return gte(a, b, loose) + while (result && remainingComparators.length) { + result = remainingComparators.every(function (otherComparator) { + return testComparator.intersects(otherComparator, options) + }); - case '<': - return lt(a, b, loose) + testComparator = remainingComparators.pop(); + } - case '<=': - return lte(a, b, loose) + return result + } - default: - throw new TypeError('Invalid operator: ' + op) - } - } + // Mostly just for testing and legacy API reasons + exports.toComparators = toComparators; + function toComparators (range, options) { + return new Range(range, options).set.map(function (comp) { + return comp.map(function (c) { + return c.value + }).join(' ').trim().split(' ') + }) + } - exports.Comparator = Comparator; - function Comparator (comp, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - }; - } + // comprised of xranges, tildes, stars, and gtlt's at this point. + // already replaced the hyphen ranges + // turn into a set of JUST comparators. + function parseComparator (comp, options) { + debug('comp', comp, options); + comp = replaceCarets(comp, options); + debug('caret', comp); + comp = replaceTildes(comp, options); + debug('tildes', comp); + comp = replaceXRanges(comp, options); + debug('xrange', comp); + comp = replaceStars(comp, options); + debug('stars', comp); + return comp + } - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp - } else { - comp = comp.value; - } - } + function isX (id) { + return !id || id.toLowerCase() === 'x' || id === '*' + } - if (!(this instanceof Comparator)) { - return new Comparator(comp, options) - } + // ~, ~> --> * (any, kinda silly) + // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 + // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 + // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 + // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 + // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 + function replaceTildes (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceTilde(comp, options) + }).join(' ') + } - debug('comparator', comp, options); - this.options = options; - this.loose = !!options.loose; - this.parse(comp); + function replaceTilde (comp, options) { + var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; + return comp.replace(r, function (_, M, m, p, pr) { + debug('tilde', comp, _, M, m, p, pr); + var ret; + + if (isX(M)) { + ret = ''; + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0 + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; + } else if (pr) { + debug('replaceTilde pr', pr); + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0'; + } else { + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0'; + } - if (this.semver === ANY) { - this.value = ''; - } else { - this.value = this.operator + this.semver.version; - } + debug('tilde return', ret); + return ret + }) + } - debug('comp', this); - } + // ^ --> * (any, kinda silly) + // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 + // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 + // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 + // ^1.2.3 --> >=1.2.3 <2.0.0 + // ^1.2.0 --> >=1.2.0 <2.0.0 + function replaceCarets (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceCaret(comp, options) + }).join(' ') + } - var ANY = {}; - Comparator.prototype.parse = function (comp) { - var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; - var m = comp.match(r); + function replaceCaret (comp, options) { + debug('caret', comp, options); + var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; + return comp.replace(r, function (_, M, m, p, pr) { + debug('caret', comp, _, M, m, p, pr); + var ret; + + if (isX(M)) { + ret = ''; + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; + } else if (isX(p)) { + if (M === '0') { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; + } else { + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'; + } + } else if (pr) { + debug('replaceCaret pr', pr); + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + m + '.' + (+p + 1); + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0'; + } + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + (+M + 1) + '.0.0'; + } + } else { + debug('no pr'); + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + m + '.' + (+p + 1); + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0'; + } + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + (+M + 1) + '.0.0'; + } + } - if (!m) { - throw new TypeError('Invalid comparator: ' + comp) - } + debug('caret return', ret); + return ret + }) + } - this.operator = m[1] !== undefined ? m[1] : ''; - if (this.operator === '=') { - this.operator = ''; - } + function replaceXRanges (comp, options) { + debug('replaceXRanges', comp, options); + return comp.split(/\s+/).map(function (comp) { + return replaceXRange(comp, options) + }).join(' ') + } - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY; - } else { - this.semver = new SemVer(m[2], this.options.loose); - } - }; + function replaceXRange (comp, options) { + comp = comp.trim(); + var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; + return comp.replace(r, function (ret, gtlt, M, m, p, pr) { + debug('xRange', comp, ret, gtlt, M, m, p, pr); + var xM = isX(M); + var xm = xM || isX(m); + var xp = xm || isX(p); + var anyX = xp; + + if (gtlt === '=' && anyX) { + gtlt = ''; + } - Comparator.prototype.toString = function () { - return this.value - }; + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : ''; + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0'; + } else { + // nothing is forbidden + ret = '*'; + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0; + } + p = 0; + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 + gtlt = '>='; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } else { + m = +m + 1; + p = 0; + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<'; + if (xm) { + M = +M + 1; + } else { + m = +m + 1; + } + } + + ret = gtlt + M + '.' + m + '.' + p + pr; + } else if (xm) { + ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr; + } else if (xp) { + ret = '>=' + M + '.' + m + '.0' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + pr; + } - Comparator.prototype.test = function (version) { - debug('Comparator.test', version, this.options.loose); + debug('xRange return', ret); - if (this.semver === ANY || version === ANY) { - return true - } + return ret + }) + } - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options); - } catch (er) { - return false - } - } + // Because * is AND-ed with everything else in the comparator, + // and '' means "any version", just remove the *s entirely. + function replaceStars (comp, options) { + debug('replaceStars', comp, options); + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(re[t.STAR], '') + } - return cmp(version, this.operator, this.semver, this.options) - }; + // This function is passed to string.replace(re[t.HYPHENRANGE]) + // M, m, patch, prerelease, build + // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 + // 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do + // 1.2 - 3.4 => >=1.2.0 <3.5.0 + function hyphenReplace ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) { + if (isX(fM)) { + from = ''; + } else if (isX(fm)) { + from = '>=' + fM + '.0.0'; + } else if (isX(fp)) { + from = '>=' + fM + '.' + fm + '.0'; + } else { + from = '>=' + from; + } + + if (isX(tM)) { + to = ''; + } else if (isX(tm)) { + to = '<' + (+tM + 1) + '.0.0'; + } else if (isX(tp)) { + to = '<' + tM + '.' + (+tm + 1) + '.0'; + } else if (tpr) { + to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr; + } else { + to = '<=' + to; + } + + return (from + ' ' + to).trim() + } - Comparator.prototype.intersects = function (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } + // if ANY of the sets match ALL of its comparators, then pass + Range.prototype.test = function (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false + } + } - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - }; - } + for (var i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false + }; - var rangeTmp; + function testSet (set, version, options) { + for (var i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (i = 0; i < set.length; i++) { + debug(set[i].semver); + if (set[i].semver === ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + var allowed = set[i].semver; + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } - if (this.operator === '') { - if (this.value === '') { - return true - } - rangeTmp = new Range(comp.value, options); - return satisfies(this.value, rangeTmp, options) - } else if (comp.operator === '') { - if (comp.value === '') { - return true - } - rangeTmp = new Range(this.value, options); - return satisfies(comp.semver, rangeTmp, options) - } - - var sameDirectionIncreasing = - (this.operator === '>=' || this.operator === '>') && - (comp.operator === '>=' || comp.operator === '>'); - var sameDirectionDecreasing = - (this.operator === '<=' || this.operator === '<') && - (comp.operator === '<=' || comp.operator === '<'); - var sameSemVer = this.semver.version === comp.semver.version; - var differentDirectionsInclusive = - (this.operator === '>=' || this.operator === '<=') && - (comp.operator === '>=' || comp.operator === '<='); - var oppositeDirectionsLessThan = - cmp(this.semver, '<', comp.semver, options) && - ((this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<')); - var oppositeDirectionsGreaterThan = - cmp(this.semver, '>', comp.semver, options) && - ((this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>')); - - return sameDirectionIncreasing || sameDirectionDecreasing || - (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || oppositeDirectionsGreaterThan - }; + // Version has a -pre, but it's not one of the ones we like. + return false + } - exports.Range = Range; - function Range (range, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - }; - } + return true + } - if (range instanceof Range) { - if (range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease) { - return range - } else { - return new Range(range.raw, options) - } - } + exports.satisfies = satisfies; + function satisfies (version, range, options) { + try { + range = new Range(range, options); + } catch (er) { + return false + } + return range.test(version) + } - if (range instanceof Comparator) { - return new Range(range.value, options) - } + exports.maxSatisfying = maxSatisfying; + function maxSatisfying (versions, range, options) { + var max = null; + var maxSV = null; + try { + var rangeObj = new Range(range, options); + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v; + maxSV = new SemVer(max, options); + } + } + }); + return max + } - if (!(this instanceof Range)) { - return new Range(range, options) - } + exports.minSatisfying = minSatisfying; + function minSatisfying (versions, range, options) { + var min = null; + var minSV = null; + try { + var rangeObj = new Range(range, options); + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v; + minSV = new SemVer(min, options); + } + } + }); + return min + } - this.options = options; - this.loose = !!options.loose; - this.includePrerelease = !!options.includePrerelease; - - // First, split based on boolean or || - this.raw = range; - this.set = range.split(/\s*\|\|\s*/).map(function (range) { - return this.parseRange(range.trim()) - }, this).filter(function (c) { - // throw out any that are not relevant for whatever reason - return c.length - }); + exports.minVersion = minVersion; + function minVersion (range, loose) { + range = new Range(range, loose); + + var minver = new SemVer('0.0.0'); + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0'); + if (range.test(minver)) { + return minver + } + + minver = null; + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i]; + + comparators.forEach(function (comparator) { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version); + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++; + } else { + compver.prerelease.push(0); + } + compver.raw = compver.format(); + /* fallthrough */ + case '': + case '>=': + if (!minver || gt(minver, compver)) { + minver = compver; + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error('Unexpected operation: ' + comparator.operator) + } + }); + } + + if (minver && range.test(minver)) { + return minver + } + + return null + } - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range) - } + exports.validRange = validRange; + function validRange (range, options) { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } + } - this.format(); - } + // Determine if version is less than all the versions possible in the range + exports.ltr = ltr; + function ltr (version, range, options) { + return outside(version, range, '<', options) + } - Range.prototype.format = function () { - this.range = this.set.map(function (comps) { - return comps.join(' ').trim() - }).join('||').trim(); - return this.range - }; + // Determine if version is greater than all the versions possible in the range. + exports.gtr = gtr; + function gtr (version, range, options) { + return outside(version, range, '>', options) + } - Range.prototype.toString = function () { - return this.range - }; + exports.outside = outside; + function outside (version, range, hilo, options) { + version = new SemVer(version, options); + range = new Range(range, options); + + var gtfn, ltefn, ltfn, comp, ecomp; + switch (hilo) { + case '>': + gtfn = gt; + ltefn = lte; + ltfn = lt; + comp = '>'; + ecomp = '>='; + break + case '<': + gtfn = lt; + ltefn = gte; + ltfn = gt; + comp = '<'; + ecomp = '<='; + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisifes the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i]; + + var high = null; + var low = null; + + comparators.forEach(function (comparator) { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0'); + } + high = high || comparator; + low = low || comparator; + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator; + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator; + } + }); + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } - Range.prototype.parseRange = function (range) { - var loose = this.options.loose; - range = range.trim(); - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; - range = range.replace(hr, hyphenReplace); - debug('hyphen replace', range); - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); - debug('comparator trim', range, re[t.COMPARATORTRIM]); - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[t.TILDETRIM], tildeTrimReplace); - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[t.CARETTRIM], caretTrimReplace); - - // normalize spaces - range = range.split(/\s+/).join(' '); - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; - var set = range.split(' ').map(function (comp) { - return parseComparator(comp, this.options) - }, this).join(' ').split(/\s+/); - if (this.options.loose) { - // in loose mode, throw out any that are not valid comparators - set = set.filter(function (comp) { - return !!comp.match(compRe) - }); - } - set = set.map(function (comp) { - return new Comparator(comp, this.options) - }, this); + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true + } - return set - }; + exports.prerelease = prerelease; + function prerelease (version, options) { + var parsed = parse(version, options); + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null + } - Range.prototype.intersects = function (range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required') - } + exports.intersects = intersects; + function intersects (r1, r2, options) { + r1 = new Range(r1, options); + r2 = new Range(r2, options); + return r1.intersects(r2) + } - return this.set.some(function (thisComparators) { - return ( - isSatisfiable(thisComparators, options) && - range.set.some(function (rangeComparators) { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every(function (thisComparator) { - return rangeComparators.every(function (rangeComparator) { - return thisComparator.intersects(rangeComparator, options) - }) - }) - ) - }) - ) - }) - }; + exports.coerce = coerce; + function coerce (version, options) { + if (version instanceof SemVer) { + return version + } + + if (typeof version === 'number') { + version = String(version); + } + + if (typeof version !== 'string') { + return null + } + + options = options || {}; + + var match = null; + if (!options.rtl) { + match = version.match(re[t.COERCE]); + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + var next; + while ((next = re[t.COERCERTL].exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next; + } + re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length; + } + // leave it in a clean state + re[t.COERCERTL].lastIndex = -1; + } - // take a set of comparators and determine whether there - // exists a version which can satisfy it - function isSatisfiable (comparators, options) { - var result = true; - var remainingComparators = comparators.slice(); - var testComparator = remainingComparators.pop(); + if (match === null) { + return null + } - while (result && remainingComparators.length) { - result = remainingComparators.every(function (otherComparator) { - return testComparator.intersects(otherComparator, options) - }); + return parse(match[2] + + '.' + (match[3] || '0') + + '.' + (match[4] || '0'), options) + } + } (semver, semver.exports)); + return semver.exports; +} - testComparator = remainingComparators.pop(); - } +var hasRequiredMakeDir; - return result - } +function requireMakeDir () { + if (hasRequiredMakeDir) return makeDir.exports; + hasRequiredMakeDir = 1; + const fs = require$$0$1; + const path = require$$0; + const {promisify} = require$$2; + const semver = requireSemver(); - // Mostly just for testing and legacy API reasons - exports.toComparators = toComparators; - function toComparators (range, options) { - return new Range(range, options).set.map(function (comp) { - return comp.map(function (c) { - return c.value - }).join(' ').trim().split(' ') - }) - } + const useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0'); - // comprised of xranges, tildes, stars, and gtlt's at this point. - // already replaced the hyphen ranges - // turn into a set of JUST comparators. - function parseComparator (comp, options) { - debug('comp', comp, options); - comp = replaceCarets(comp, options); - debug('caret', comp); - comp = replaceTildes(comp, options); - debug('tildes', comp); - comp = replaceXRanges(comp, options); - debug('xrange', comp); - comp = replaceStars(comp, options); - debug('stars', comp); - return comp - } + // https://github.com/nodejs/node/issues/8987 + // https://github.com/libuv/libuv/pull/1088 + const checkPath = pth => { + if (process.platform === 'win32') { + const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, '')); - function isX (id) { - return !id || id.toLowerCase() === 'x' || id === '*' - } + if (pathHasInvalidWinCharacters) { + const error = new Error(`Path contains invalid characters: ${pth}`); + error.code = 'EINVAL'; + throw error; + } + } + }; - // ~, ~> --> * (any, kinda silly) - // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 - // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 - // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 - // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 - // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 - function replaceTildes (comp, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceTilde(comp, options) - }).join(' ') - } + const processOptions = options => { + // https://github.com/sindresorhus/make-dir/issues/18 + const defaults = { + mode: 0o777, + fs + }; - function replaceTilde (comp, options) { - var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; - return comp.replace(r, function (_, M, m, p, pr) { - debug('tilde', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) { - ret = ''; - } else if (isX(m)) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0 - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - } else if (pr) { - debug('replaceTilde pr', pr); - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else { - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - } + return { + ...defaults, + ...options + }; + }; - debug('tilde return', ret); - return ret - }) - } + const permissionError = pth => { + // This replicates the exception of `fs.mkdir` with native the + // `recusive` option when run on an invalid drive under Windows. + const error = new Error(`operation not permitted, mkdir '${pth}'`); + error.code = 'EPERM'; + error.errno = -4048; + error.path = pth; + error.syscall = 'mkdir'; + return error; + }; - // ^ --> * (any, kinda silly) - // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 - // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 - // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 - // ^1.2.3 --> >=1.2.3 <2.0.0 - // ^1.2.0 --> >=1.2.0 <2.0.0 - function replaceCarets (comp, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceCaret(comp, options) - }).join(' ') - } + const makeDir$1 = async (input, options) => { + checkPath(input); + options = processOptions(options); - function replaceCaret (comp, options) { - debug('caret', comp, options); - var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; - return comp.replace(r, function (_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) { - ret = ''; - } else if (isX(m)) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - } else if (isX(p)) { - if (M === '0') { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - } else { - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'; - } - } else if (pr) { - debug('replaceCaret pr', pr); - if (M === '0') { - if (m === '0') { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + m + '.' + (+p + 1); - } else { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } - } else { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + (+M + 1) + '.0.0'; - } - } else { - debug('no pr'); - if (M === '0') { - if (m === '0') { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1); - } else { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - } - } else { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0'; - } - } + const mkdir = promisify(options.fs.mkdir); + const stat = promisify(options.fs.stat); - debug('caret return', ret); - return ret - }) - } + if (useNativeRecursiveOption && options.fs.mkdir === fs.mkdir) { + const pth = path.resolve(input); - function replaceXRanges (comp, options) { - debug('replaceXRanges', comp, options); - return comp.split(/\s+/).map(function (comp) { - return replaceXRange(comp, options) - }).join(' ') - } + await mkdir(pth, { + mode: options.mode, + recursive: true + }); - function replaceXRange (comp, options) { - comp = comp.trim(); - var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; - return comp.replace(r, function (ret, gtlt, M, m, p, pr) { - debug('xRange', comp, ret, gtlt, M, m, p, pr); - var xM = isX(M); - var xm = xM || isX(m); - var xp = xm || isX(p); - var anyX = xp; + return pth; + } - if (gtlt === '=' && anyX) { - gtlt = ''; - } + const make = async pth => { + try { + await mkdir(pth, options.mode); - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? '-0' : ''; + return pth; + } catch (error) { + if (error.code === 'EPERM') { + throw error; + } - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0-0'; - } else { - // nothing is forbidden - ret = '*'; - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0; - } - p = 0; - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - // >1.2.3 => >= 1.2.4 - gtlt = '>='; - if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else { - m = +m + 1; - p = 0; - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<'; - if (xm) { - M = +M + 1; - } else { - m = +m + 1; - } - } + if (error.code === 'ENOENT') { + if (path.dirname(pth) === pth) { + throw permissionError(pth); + } - ret = gtlt + M + '.' + m + '.' + p + pr; - } else if (xm) { - ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr; - } else if (xp) { - ret = '>=' + M + '.' + m + '.0' + pr + - ' <' + M + '.' + (+m + 1) + '.0' + pr; - } + if (error.message.includes('null bytes')) { + throw error; + } - debug('xRange return', ret); + await make(path.dirname(pth)); - return ret - }) - } + return make(pth); + } - // Because * is AND-ed with everything else in the comparator, - // and '' means "any version", just remove the *s entirely. - function replaceStars (comp, options) { - debug('replaceStars', comp, options); - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[t.STAR], '') - } + try { + const stats = await stat(pth); + if (!stats.isDirectory()) { + throw new Error('The path is not a directory'); + } + } catch (_) { + throw error; + } - // This function is passed to string.replace(re[t.HYPHENRANGE]) - // M, m, patch, prerelease, build - // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 - // 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do - // 1.2 - 3.4 => >=1.2.0 <3.5.0 - function hyphenReplace ($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - if (isX(fM)) { - from = ''; - } else if (isX(fm)) { - from = '>=' + fM + '.0.0'; - } else if (isX(fp)) { - from = '>=' + fM + '.' + fm + '.0'; - } else { - from = '>=' + from; - } + return pth; + } + }; - if (isX(tM)) { - to = ''; - } else if (isX(tm)) { - to = '<' + (+tM + 1) + '.0.0'; - } else if (isX(tp)) { - to = '<' + tM + '.' + (+tm + 1) + '.0'; - } else if (tpr) { - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr; - } else { - to = '<=' + to; - } + return make(path.resolve(input)); + }; - return (from + ' ' + to).trim() - } + makeDir.exports = makeDir$1; - // if ANY of the sets match ALL of its comparators, then pass - Range.prototype.test = function (version) { - if (!version) { - return false - } + makeDir.exports.sync = (input, options) => { + checkPath(input); + options = processOptions(options); - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options); - } catch (er) { - return false - } - } + if (useNativeRecursiveOption && options.fs.mkdirSync === fs.mkdirSync) { + const pth = path.resolve(input); - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true - } - } - return false - }; + fs.mkdirSync(pth, { + mode: options.mode, + recursive: true + }); - function testSet (set, version, options) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false - } - } + return pth; + } - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (i = 0; i < set.length; i++) { - debug(set[i].semver); - if (set[i].semver === ANY) { - continue - } + const make = pth => { + try { + options.fs.mkdirSync(pth, options.mode); + } catch (error) { + if (error.code === 'EPERM') { + throw error; + } - if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver; - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) { - return true - } - } - } + if (error.code === 'ENOENT') { + if (path.dirname(pth) === pth) { + throw permissionError(pth); + } - // Version has a -pre, but it's not one of the ones we like. - return false - } + if (error.message.includes('null bytes')) { + throw error; + } - return true - } + make(path.dirname(pth)); + return make(pth); + } - exports.satisfies = satisfies; - function satisfies (version, range, options) { - try { - range = new Range(range, options); - } catch (er) { - return false - } - return range.test(version) - } + try { + if (!options.fs.statSync(pth).isDirectory()) { + throw new Error('The path is not a directory'); + } + } catch (_) { + throw error; + } + } - exports.maxSatisfying = maxSatisfying; - function maxSatisfying (versions, range, options) { - var max = null; - var maxSV = null; - try { - var rangeObj = new Range(range, options); - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v; - maxSV = new SemVer(max, options); - } - } - }); - return max - } + return pth; + }; - exports.minSatisfying = minSatisfying; - function minSatisfying (versions, range, options) { - var min = null; - var minSV = null; - try { - var rangeObj = new Range(range, options); - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v; - minSV = new SemVer(min, options); - } - } - }); - return min - } + return make(path.resolve(input)); + }; + return makeDir.exports; +} - exports.minVersion = minVersion; - function minVersion (range, loose) { - range = new Range(range, loose); +var hasFlag; +var hasRequiredHasFlag; - var minver = new SemVer('0.0.0'); - if (range.test(minver)) { - return minver - } +function requireHasFlag () { + if (hasRequiredHasFlag) return hasFlag; + hasRequiredHasFlag = 1; - minver = new SemVer('0.0.0-0'); - if (range.test(minver)) { - return minver - } + hasFlag = (flag, argv = process.argv) => { + const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf('--'); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); + }; + return hasFlag; +} - minver = null; - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i]; +var supportsColor_1; +var hasRequiredSupportsColor; - comparators.forEach(function (comparator) { - // Clone to avoid manipulating the comparator's semver object. - var compver = new SemVer(comparator.semver.version); - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++; - } else { - compver.prerelease.push(0); - } - compver.raw = compver.format(); - /* fallthrough */ - case '': - case '>=': - if (!minver || gt(minver, compver)) { - minver = compver; - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error('Unexpected operation: ' + comparator.operator) - } - }); - } +function requireSupportsColor () { + if (hasRequiredSupportsColor) return supportsColor_1; + hasRequiredSupportsColor = 1; + const os = require$$0$2; + const tty = require$$1; + const hasFlag = requireHasFlag(); - if (minver && range.test(minver)) { - return minver - } + const {env} = process; - return null + let forceColor; + if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false') || + hasFlag('color=never')) { + forceColor = 0; + } else if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + forceColor = 1; } - exports.validRange = validRange; - function validRange (range, options) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null - } + if ('FORCE_COLOR' in env) { + if (env.FORCE_COLOR === 'true') { + forceColor = 1; + } else if (env.FORCE_COLOR === 'false') { + forceColor = 0; + } else { + forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); + } } - // Determine if version is less than all the versions possible in the range - exports.ltr = ltr; - function ltr (version, range, options) { - return outside(version, range, '<', options) - } + function translateLevel(level) { + if (level === 0) { + return false; + } - // Determine if version is greater than all the versions possible in the range. - exports.gtr = gtr; - function gtr (version, range, options) { - return outside(version, range, '>', options) + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; } - exports.outside = outside; - function outside (version, range, hilo, options) { - version = new SemVer(version, options); - range = new Range(range, options); - - var gtfn, ltefn, ltfn, comp, ecomp; - switch (hilo) { - case '>': - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = '>'; - ecomp = '>='; - break - case '<': - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = '<'; - ecomp = '<='; - break - default: - throw new TypeError('Must provide a hilo val of "<" or ">"') - } - - // If it satisifes the range it is not outside - if (satisfies(version, range, options)) { - return false - } + function supportsColor(haveStream, streamIsTTY) { + if (forceColor === 0) { + return 0; + } - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. + if (hasFlag('color=16m') || + hasFlag('color=full') || + hasFlag('color=truecolor')) { + return 3; + } - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i]; + if (hasFlag('color=256')) { + return 2; + } - var high = null; - var low = null; + if (haveStream && !streamIsTTY && forceColor === undefined) { + return 0; + } - comparators.forEach(function (comparator) { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0'); - } - high = high || comparator; - low = low || comparator; - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator; - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator; - } - }); + const min = forceColor || 0; - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false - } + if (env.TERM === 'dumb') { + return min; + } - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false - } - } - return true - } + if (process.platform === 'win32') { + // Windows 10 build 10586 is the first Windows release that supports 256 colors. + // Windows 10 build 14931 is the first release that supports 16m/TrueColor. + const osRelease = os.release().split('.'); + if ( + Number(osRelease[0]) >= 10 && + Number(osRelease[2]) >= 10586 + ) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } - exports.prerelease = prerelease; - function prerelease (version, options) { - var parsed = parse(version, options); - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null - } + return 1; + } - exports.intersects = intersects; - function intersects (r1, r2, options) { - r1 = new Range(r1, options); - r2 = new Range(r2, options); - return r1.intersects(r2) - } + if ('CI' in env) { + if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + return 1; + } - exports.coerce = coerce; - function coerce (version, options) { - if (version instanceof SemVer) { - return version - } + return min; + } - if (typeof version === 'number') { - version = String(version); - } + if ('TEAMCITY_VERSION' in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } - if (typeof version !== 'string') { - return null - } + if (env.COLORTERM === 'truecolor') { + return 3; + } - options = options || {}; + if ('TERM_PROGRAM' in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); - var match = null; - if (!options.rtl) { - match = version.match(re[t.COERCE]); - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - var next; - while ((next = re[t.COERCERTL].exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || - next.index + next[0].length !== match.index + match[0].length) { - match = next; - } - re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length; - } - // leave it in a clean state - re[t.COERCERTL].lastIndex = -1; - } + switch (env.TERM_PROGRAM) { + case 'iTerm.app': + return version >= 3 ? 3 : 2; + case 'Apple_Terminal': + return 2; + // No default + } + } - if (match === null) { - return null - } + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } - return parse(match[2] + - '.' + (match[3] || '0') + - '.' + (match[4] || '0'), options) - } -} (semver$1, semverExports)); - -const fs$2 = require$$0$1; -const path$2 = require$$0; -const {promisify} = require$$2; -const semver = semverExports; - -const useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0'); - -// https://github.com/nodejs/node/issues/8987 -// https://github.com/libuv/libuv/pull/1088 -const checkPath = pth => { - if (process.platform === 'win32') { - const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path$2.parse(pth).root, '')); - - if (pathHasInvalidWinCharacters) { - const error = new Error(`Path contains invalid characters: ${pth}`); - error.code = 'EINVAL'; - throw error; + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; } - } -}; - -const processOptions = options => { - // https://github.com/sindresorhus/make-dir/issues/18 - const defaults = { - mode: 0o777, - fs: fs$2 - }; - - return { - ...defaults, - ...options - }; -}; - -const permissionError = pth => { - // This replicates the exception of `fs.mkdir` with native the - // `recusive` option when run on an invalid drive under Windows. - const error = new Error(`operation not permitted, mkdir '${pth}'`); - error.code = 'EPERM'; - error.errno = -4048; - error.path = pth; - error.syscall = 'mkdir'; - return error; -}; - -const makeDir = async (input, options) => { - checkPath(input); - options = processOptions(options); - const mkdir = promisify(options.fs.mkdir); - const stat = promisify(options.fs.stat); - - if (useNativeRecursiveOption && options.fs.mkdir === fs$2.mkdir) { - const pth = path$2.resolve(input); - - await mkdir(pth, { - mode: options.mode, - recursive: true - }); + if ('COLORTERM' in env) { + return 1; + } - return pth; + return min; } - const make = async pth => { - try { - await mkdir(pth, options.mode); - - return pth; - } catch (error) { - if (error.code === 'EPERM') { - throw error; - } - - if (error.code === 'ENOENT') { - if (path$2.dirname(pth) === pth) { - throw permissionError(pth); - } - - if (error.message.includes('null bytes')) { - throw error; - } - - await make(path$2.dirname(pth)); - - return make(pth); - } - - try { - const stats = await stat(pth); - if (!stats.isDirectory()) { - throw new Error('The path is not a directory'); - } - } catch (_) { - throw error; - } + function getSupportLevel(stream) { + const level = supportsColor(stream, stream && stream.isTTY); + return translateLevel(level); + } - return pth; - } + supportsColor_1 = { + supportsColor: getSupportLevel, + stdout: translateLevel(supportsColor(true, tty.isatty(1))), + stderr: translateLevel(supportsColor(true, tty.isatty(2))) }; + return supportsColor_1; +} - return make(path$2.resolve(input)); -}; - -makeDir$1.exports = makeDir; +var fileWriter; +var hasRequiredFileWriter; -makeDirExports.sync = (input, options) => { - checkPath(input); - options = processOptions(options); +function requireFileWriter () { + if (hasRequiredFileWriter) return fileWriter; + hasRequiredFileWriter = 1; + /* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + const path = require$$0; + const fs = require$$0$1; + const mkdirp = requireMakeDir(); + const supportsColor = requireSupportsColor(); - if (useNativeRecursiveOption && options.fs.mkdirSync === fs$2.mkdirSync) { - const pth = path$2.resolve(input); + /** + * Base class for writing content + * @class ContentWriter + * @constructor + */ + class ContentWriter { + /** + * returns the colorized version of a string. Typically, + * content writers that write to files will return the + * same string and ones writing to a tty will wrap it in + * appropriate escape sequences. + * @param {String} str the string to colorize + * @param {String} clazz one of `high`, `medium` or `low` + * @returns {String} the colorized form of the string + */ + colorize(str /*, clazz*/) { + return str; + } - fs$2.mkdirSync(pth, { - mode: options.mode, - recursive: true - }); + /** + * writes a string appended with a newline to the destination + * @param {String} str the string to write + */ + println(str) { + this.write(`${str}\n`); + } - return pth; + /** + * closes this content writer. Should be called after all writes are complete. + */ + close() {} } - const make = pth => { - try { - options.fs.mkdirSync(pth, options.mode); - } catch (error) { - if (error.code === 'EPERM') { - throw error; - } - - if (error.code === 'ENOENT') { - if (path$2.dirname(pth) === pth) { - throw permissionError(pth); - } - - if (error.message.includes('null bytes')) { - throw error; - } + /** + * a content writer that writes to a file + * @param {Number} fd - the file descriptor + * @extends ContentWriter + * @constructor + */ + class FileContentWriter extends ContentWriter { + constructor(fd) { + super(); - make(path$2.dirname(pth)); - return make(pth); - } + this.fd = fd; + } - try { - if (!options.fs.statSync(pth).isDirectory()) { - throw new Error('The path is not a directory'); - } - } catch (_) { - throw error; - } - } + write(str) { + fs.writeSync(this.fd, str); + } - return pth; - }; + close() { + fs.closeSync(this.fd); + } + } - return make(path$2.resolve(input)); -}; + // allow stdout to be captured for tests. + let capture = false; + let output = ''; -var hasFlag$1 = (flag, argv = process.argv) => { - const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); - const position = argv.indexOf(prefix + flag); - const terminatorPosition = argv.indexOf('--'); - return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); -}; + /** + * a content writer that writes to the console + * @extends ContentWriter + * @constructor + */ + class ConsoleWriter extends ContentWriter { + write(str) { + if (capture) { + output += str; + } else { + process.stdout.write(str); + } + } -const os = require$$0$2; -const tty = require$$1; -const hasFlag = hasFlag$1; - -const {env} = process; - -let forceColor; -if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false') || - hasFlag('color=never')) { - forceColor = 0; -} else if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - forceColor = 1; -} + colorize(str, clazz) { + const colors = { + low: '31;1', + medium: '33;1', + high: '32;1' + }; -if ('FORCE_COLOR' in env) { - if (env.FORCE_COLOR === 'true') { - forceColor = 1; - } else if (env.FORCE_COLOR === 'false') { - forceColor = 0; - } else { - forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); + /* istanbul ignore next: different modes for CI and local */ + if (supportsColor.stdout && colors[clazz]) { + return `\u001b[${colors[clazz]}m${str}\u001b[0m`; + } + return str; + } } -} -function translateLevel(level) { - if (level === 0) { - return false; - } + /** + * utility for writing files under a specific directory + * @class FileWriter + * @param {String} baseDir the base directory under which files should be written + * @constructor + */ + class FileWriter { + constructor(baseDir) { + if (!baseDir) { + throw new Error('baseDir must be specified'); + } + this.baseDir = baseDir; + } - return { - level, - hasBasic: true, - has256: level >= 2, - has16m: level >= 3 - }; -} + /** + * static helpers for capturing stdout report output; + * super useful for tests! + */ + static startCapture() { + capture = true; + } -function supportsColor$1(haveStream, streamIsTTY) { - if (forceColor === 0) { - return 0; - } + static stopCapture() { + capture = false; + } - if (hasFlag('color=16m') || - hasFlag('color=full') || - hasFlag('color=truecolor')) { - return 3; - } + static getOutput() { + return output; + } - if (hasFlag('color=256')) { - return 2; - } + static resetOutput() { + output = ''; + } - if (haveStream && !streamIsTTY && forceColor === undefined) { - return 0; - } + /** + * returns a FileWriter that is rooted at the supplied subdirectory + * @param {String} subdir the subdirectory under which to root the + * returned FileWriter + * @returns {FileWriter} + */ + writerForDir(subdir) { + if (path.isAbsolute(subdir)) { + throw new Error( + `Cannot create subdir writer for absolute path: ${subdir}` + ); + } + return new FileWriter(`${this.baseDir}/${subdir}`); + } - const min = forceColor || 0; + /** + * copies a file from a source directory to a destination name + * @param {String} source path to source file + * @param {String} dest relative path to destination file + * @param {String} [header=undefined] optional text to prepend to destination + * (e.g., an "this file is autogenerated" comment, copyright notice, etc.) + */ + copyFile(source, dest, header) { + if (path.isAbsolute(dest)) { + throw new Error(`Cannot write to absolute path: ${dest}`); + } + dest = path.resolve(this.baseDir, dest); + mkdirp.sync(path.dirname(dest)); + let contents; + if (header) { + contents = header + fs.readFileSync(source, 'utf8'); + } else { + contents = fs.readFileSync(source); + } + fs.writeFileSync(dest, contents); + } - if (env.TERM === 'dumb') { - return min; + /** + * returns a content writer for writing content to the supplied file. + * @param {String|null} file the relative path to the file or the special + * values `"-"` or `null` for writing to the console + * @returns {ContentWriter} + */ + writeFile(file) { + if (file === null || file === '-') { + return new ConsoleWriter(); + } + if (path.isAbsolute(file)) { + throw new Error(`Cannot write to absolute path: ${file}`); + } + file = path.resolve(this.baseDir, file); + mkdirp.sync(path.dirname(file)); + return new FileContentWriter(fs.openSync(file, 'w')); + } } - if (process.platform === 'win32') { - // Windows 10 build 10586 is the first Windows release that supports 256 colors. - // Windows 10 build 14931 is the first release that supports 16m/TrueColor. - const osRelease = os.release().split('.'); - if ( - Number(osRelease[0]) >= 10 && - Number(osRelease[2]) >= 10586 - ) { - return Number(osRelease[2]) >= 14931 ? 3 : 2; - } + fileWriter = FileWriter; + return fileWriter; +} - return 1; - } +var xmlWriter; +var hasRequiredXmlWriter; - if ('CI' in env) { - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') { - return 1; - } +function requireXmlWriter () { + if (hasRequiredXmlWriter) return xmlWriter; + hasRequiredXmlWriter = 1; + /* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + const INDENT = ' '; - return min; + function attrString(attrs) { + return Object.entries(attrs || {}) + .map(([k, v]) => ` ${k}="${v}"`) + .join(''); } - if ('TEAMCITY_VERSION' in env) { - return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; - } + /** + * a utility class to produce well-formed, indented XML + * @param {ContentWriter} contentWriter the content writer that this utility wraps + * @constructor + */ + class XMLWriter { + constructor(contentWriter) { + this.cw = contentWriter; + this.stack = []; + } - if (env.COLORTERM === 'truecolor') { - return 3; - } + indent(str) { + return this.stack.map(() => INDENT).join('') + str; + } - if ('TERM_PROGRAM' in env) { - const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); + /** + * writes the opening XML tag with the supplied attributes + * @param {String} name tag name + * @param {Object} [attrs=null] attrs attributes for the tag + */ + openTag(name, attrs) { + const str = this.indent(`<${name + attrString(attrs)}>`); + this.cw.println(str); + this.stack.push(name); + } - switch (env.TERM_PROGRAM) { - case 'iTerm.app': - return version >= 3 ? 3 : 2; - case 'Apple_Terminal': - return 2; - // No default - } - } + /** + * closes an open XML tag. + * @param {String} name - tag name to close. This must match the writer's + * notion of the tag that is currently open. + */ + closeTag(name) { + if (this.stack.length === 0) { + throw new Error(`Attempt to close tag ${name} when not opened`); + } + const stashed = this.stack.pop(); + const str = ``; - if (/-256(color)?$/i.test(env.TERM)) { - return 2; - } + if (stashed !== name) { + throw new Error( + `Attempt to close tag ${name} when ${stashed} was the one open` + ); + } + this.cw.println(this.indent(str)); + } - if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { - return 1; - } + /** + * writes a tag and its value opening and closing it at the same time + * @param {String} name tag name + * @param {Object} [attrs=null] attrs tag attributes + * @param {String} [content=null] content optional tag content + */ + inlineTag(name, attrs, content) { + let str = '<' + name + attrString(attrs); + if (content) { + str += `>${content}`; + } else { + str += '/>'; + } + str = this.indent(str); + this.cw.println(str); + } - if ('COLORTERM' in env) { - return 1; + /** + * closes all open tags and ends the document + */ + closeAll() { + this.stack + .slice() + .reverse() + .forEach(name => { + this.closeTag(name); + }); + } } - return min; + xmlWriter = XMLWriter; + return xmlWriter; } -function getSupportLevel(stream) { - const level = supportsColor$1(stream, stream && stream.isTTY); - return translateLevel(level); -} - -var supportsColor_1 = { - supportsColor: getSupportLevel, - stdout: translateLevel(supportsColor$1(true, tty.isatty(1))), - stderr: translateLevel(supportsColor$1(true, tty.isatty(2))) -}; - /* Copyright 2012-2015, Yahoo Inc. Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ -const path$1 = require$$0; -const fs$1 = require$$0$1; -const mkdirp = makeDirExports; -const supportsColor = supportsColor_1; -/** - * Base class for writing content - * @class ContentWriter - * @constructor - */ -class ContentWriter { - /** - * returns the colorized version of a string. Typically, - * content writers that write to files will return the - * same string and ones writing to a tty will wrap it in - * appropriate escape sequences. - * @param {String} str the string to colorize - * @param {String} clazz one of `high`, `medium` or `low` - * @returns {String} the colorized form of the string - */ - colorize(str /*, clazz*/) { - return str; - } +var tree; +var hasRequiredTree; - /** - * writes a string appended with a newline to the destination - * @param {String} str the string to write - */ - println(str) { - this.write(`${str}\n`); - } +function requireTree () { + if (hasRequiredTree) return tree; + hasRequiredTree = 1; - /** - * closes this content writer. Should be called after all writes are complete. - */ - close() {} -} - -/** - * a content writer that writes to a file - * @param {Number} fd - the file descriptor - * @extends ContentWriter - * @constructor - */ -class FileContentWriter extends ContentWriter { - constructor(fd) { - super(); - - this.fd = fd; - } - - write(str) { - fs$1.writeSync(this.fd, str); - } + /** + * An object with methods that are called during the traversal of the coverage tree. + * A visitor has the following methods that are called during tree traversal. + * + * * `onStart(root, state)` - called before traversal begins + * * `onSummary(node, state)` - called for every summary node + * * `onDetail(node, state)` - called for every detail node + * * `onSummaryEnd(node, state)` - called after all children have been visited for + * a summary node. + * * `onEnd(root, state)` - called after traversal ends + * + * @param delegate - a partial visitor that only implements the methods of interest + * The visitor object supplies the missing methods as noops. For example, reports + * that only need the final coverage summary need implement `onStart` and nothing + * else. Reports that use only detailed coverage information need implement `onDetail` + * and nothing else. + * @constructor + */ + class Visitor { + constructor(delegate) { + this.delegate = delegate; + } + } - close() { - fs$1.closeSync(this.fd); - } -} + ['Start', 'End', 'Summary', 'SummaryEnd', 'Detail'] + .map(k => `on${k}`) + .forEach(fn => { + Object.defineProperty(Visitor.prototype, fn, { + writable: true, + value(node, state) { + if (typeof this.delegate[fn] === 'function') { + this.delegate[fn](node, state); + } + } + }); + }); -// allow stdout to be captured for tests. -let capture = false; -let output = ''; + class CompositeVisitor extends Visitor { + constructor(visitors) { + super(); -/** - * a content writer that writes to the console - * @extends ContentWriter - * @constructor - */ -class ConsoleWriter extends ContentWriter { - write(str) { - if (capture) { - output += str; - } else { - process.stdout.write(str); - } - } + if (!Array.isArray(visitors)) { + visitors = [visitors]; + } + this.visitors = visitors.map(v => { + if (v instanceof Visitor) { + return v; + } + return new Visitor(v); + }); + } + } - colorize(str, clazz) { - const colors = { - low: '31;1', - medium: '33;1', - high: '32;1' - }; + ['Start', 'Summary', 'SummaryEnd', 'Detail', 'End'] + .map(k => `on${k}`) + .forEach(fn => { + Object.defineProperty(CompositeVisitor.prototype, fn, { + value(node, state) { + this.visitors.forEach(v => { + v[fn](node, state); + }); + } + }); + }); - /* istanbul ignore next: different modes for CI and local */ - if (supportsColor.stdout && colors[clazz]) { - return `\u001b[${colors[clazz]}m${str}\u001b[0m`; - } - return str; - } -} + class BaseNode { + isRoot() { + return !this.getParent(); + } -/** - * utility for writing files under a specific directory - * @class FileWriter - * @param {String} baseDir the base directory under which files should be written - * @constructor - */ -let FileWriter$1 = class FileWriter { - constructor(baseDir) { - if (!baseDir) { - throw new Error('baseDir must be specified'); - } - this.baseDir = baseDir; - } + /** + * visit all nodes depth-first from this node down. Note that `onStart` + * and `onEnd` are never called on the visitor even if the current + * node is the root of the tree. + * @param visitor a full visitor that is called during tree traversal + * @param state optional state that is passed around + */ + visit(visitor, state) { + if (this.isSummary()) { + visitor.onSummary(this, state); + } else { + visitor.onDetail(this, state); + } - /** - * static helpers for capturing stdout report output; - * super useful for tests! - */ - static startCapture() { - capture = true; - } + this.getChildren().forEach(child => { + child.visit(visitor, state); + }); - static stopCapture() { - capture = false; - } + if (this.isSummary()) { + visitor.onSummaryEnd(this, state); + } + } + } - static getOutput() { - return output; - } + /** + * abstract base class for a coverage tree. + * @constructor + */ + class BaseTree { + constructor(root) { + this.root = root; + } - static resetOutput() { - output = ''; - } + /** + * returns the root node of the tree + */ + getRoot() { + return this.root; + } - /** - * returns a FileWriter that is rooted at the supplied subdirectory - * @param {String} subdir the subdirectory under which to root the - * returned FileWriter - * @returns {FileWriter} - */ - writerForDir(subdir) { - if (path$1.isAbsolute(subdir)) { - throw new Error( - `Cannot create subdir writer for absolute path: ${subdir}` - ); - } - return new FileWriter(`${this.baseDir}/${subdir}`); - } + /** + * visits the tree depth-first with the supplied partial visitor + * @param visitor - a potentially partial visitor + * @param state - the state to be passed around during tree traversal + */ + visit(visitor, state) { + if (!(visitor instanceof Visitor)) { + visitor = new Visitor(visitor); + } + visitor.onStart(this.getRoot(), state); + this.getRoot().visit(visitor, state); + visitor.onEnd(this.getRoot(), state); + } + } - /** - * copies a file from a source directory to a destination name - * @param {String} source path to source file - * @param {String} dest relative path to destination file - * @param {String} [header=undefined] optional text to prepend to destination - * (e.g., an "this file is autogenerated" comment, copyright notice, etc.) - */ - copyFile(source, dest, header) { - if (path$1.isAbsolute(dest)) { - throw new Error(`Cannot write to absolute path: ${dest}`); - } - dest = path$1.resolve(this.baseDir, dest); - mkdirp.sync(path$1.dirname(dest)); - let contents; - if (header) { - contents = header + fs$1.readFileSync(source, 'utf8'); - } else { - contents = fs$1.readFileSync(source); - } - fs$1.writeFileSync(dest, contents); - } + tree = { + BaseTree, + BaseNode, + Visitor, + CompositeVisitor + }; + return tree; +} - /** - * returns a content writer for writing content to the supplied file. - * @param {String|null} file the relative path to the file or the special - * values `"-"` or `null` for writing to the console - * @returns {ContentWriter} - */ - writeFile(file) { - if (file === null || file === '-') { - return new ConsoleWriter(); - } - if (path$1.isAbsolute(file)) { - throw new Error(`Cannot write to absolute path: ${file}`); - } - file = path$1.resolve(this.baseDir, file); - mkdirp.sync(path$1.dirname(file)); - return new FileContentWriter(fs$1.openSync(file, 'w')); - } -}; +var watermarks; +var hasRequiredWatermarks; -var fileWriter = FileWriter$1; +function requireWatermarks () { + if (hasRequiredWatermarks) return watermarks; + hasRequiredWatermarks = 1; + /* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + watermarks = { + getDefault() { + return { + statements: [50, 80], + functions: [50, 80], + branches: [50, 80], + lines: [50, 80] + }; + } + }; + return watermarks; +} /* Copyright 2012-2015, Yahoo Inc. Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ -const INDENT = ' '; -function attrString(attrs) { - return Object.entries(attrs || {}) - .map(([k, v]) => ` ${k}="${v}"`) - .join(''); -} +var path_1; +var hasRequiredPath; -/** - * a utility class to produce well-formed, indented XML - * @param {ContentWriter} contentWriter the content writer that this utility wraps - * @constructor - */ -let XMLWriter$1 = class XMLWriter { - constructor(contentWriter) { - this.cw = contentWriter; - this.stack = []; - } +function requirePath () { + if (hasRequiredPath) return path_1; + hasRequiredPath = 1; - indent(str) { - return this.stack.map(() => INDENT).join('') + str; - } + const path = require$$0; + let parsePath = path.parse; + let SEP = path.sep; + const origParser = parsePath; + const origSep = SEP; + + function makeRelativeNormalizedPath(str, sep) { + const parsed = parsePath(str); + let root = parsed.root; + let dir; + let file = parsed.base; + let quoted; + let pos; + + // handle a weird windows case separately + if (sep === '\\') { + pos = root.indexOf(':\\'); + if (pos >= 0) { + root = root.substring(0, pos + 2); + } + } + dir = parsed.dir.substring(root.length); - /** - * writes the opening XML tag with the supplied attributes - * @param {String} name tag name - * @param {Object} [attrs=null] attrs attributes for the tag - */ - openTag(name, attrs) { - const str = this.indent(`<${name + attrString(attrs)}>`); - this.cw.println(str); - this.stack.push(name); - } + if (str === '') { + return []; + } - /** - * closes an open XML tag. - * @param {String} name - tag name to close. This must match the writer's - * notion of the tag that is currently open. - */ - closeTag(name) { - if (this.stack.length === 0) { - throw new Error(`Attempt to close tag ${name} when not opened`); - } - const stashed = this.stack.pop(); - const str = ``; + if (sep !== '/') { + quoted = new RegExp(sep.replace(/\W/g, '\\$&'), 'g'); + dir = dir.replace(quoted, '/'); + file = file.replace(quoted, '/'); // excessively paranoid? + } - if (stashed !== name) { - throw new Error( - `Attempt to close tag ${name} when ${stashed} was the one open` - ); - } - this.cw.println(this.indent(str)); - } + if (dir !== '') { + dir = `${dir}/${file}`; + } else { + dir = file; + } + if (dir.substring(0, 1) === '/') { + dir = dir.substring(1); + } + dir = dir.split(/\/+/); + return dir; + } - /** - * writes a tag and its value opening and closing it at the same time - * @param {String} name tag name - * @param {Object} [attrs=null] attrs tag attributes - * @param {String} [content=null] content optional tag content - */ - inlineTag(name, attrs, content) { - let str = '<' + name + attrString(attrs); - if (content) { - str += `>${content}`; - } else { - str += '/>'; - } - str = this.indent(str); - this.cw.println(str); - } + class Path { + constructor(strOrArray) { + if (Array.isArray(strOrArray)) { + this.v = strOrArray; + } else if (typeof strOrArray === 'string') { + this.v = makeRelativeNormalizedPath(strOrArray, SEP); + } else { + throw new Error( + `Invalid Path argument must be string or array:${strOrArray}` + ); + } + } - /** - * closes all open tags and ends the document - */ - closeAll() { - this.stack - .slice() - .reverse() - .forEach(name => { - this.closeTag(name); - }); - } -}; + toString() { + return this.v.join('/'); + } -var xmlWriter = XMLWriter$1; + hasParent() { + return this.v.length > 0; + } -/* - Copyright 2012-2015, Yahoo Inc. - Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. - */ + parent() { + if (!this.hasParent()) { + throw new Error('Unable to get parent for 0 elem path'); + } + const p = this.v.slice(); + p.pop(); + return new Path(p); + } -/** - * An object with methods that are called during the traversal of the coverage tree. - * A visitor has the following methods that are called during tree traversal. - * - * * `onStart(root, state)` - called before traversal begins - * * `onSummary(node, state)` - called for every summary node - * * `onDetail(node, state)` - called for every detail node - * * `onSummaryEnd(node, state)` - called after all children have been visited for - * a summary node. - * * `onEnd(root, state)` - called after traversal ends - * - * @param delegate - a partial visitor that only implements the methods of interest - * The visitor object supplies the missing methods as noops. For example, reports - * that only need the final coverage summary need implement `onStart` and nothing - * else. Reports that use only detailed coverage information need implement `onDetail` - * and nothing else. - * @constructor - */ -class Visitor { - constructor(delegate) { - this.delegate = delegate; - } -} + elements() { + return this.v.slice(); + } -['Start', 'End', 'Summary', 'SummaryEnd', 'Detail'] - .map(k => `on${k}`) - .forEach(fn => { - Object.defineProperty(Visitor.prototype, fn, { - writable: true, - value(node, state) { - if (typeof this.delegate[fn] === 'function') { - this.delegate[fn](node, state); - } - } - }); - }); + name() { + return this.v.slice(-1)[0]; + } -class CompositeVisitor extends Visitor { - constructor(visitors) { - super(); + contains(other) { + let i; + if (other.length > this.length) { + return false; + } + for (i = 0; i < other.length; i += 1) { + if (this.v[i] !== other.v[i]) { + return false; + } + } + return true; + } - if (!Array.isArray(visitors)) { - visitors = [visitors]; - } - this.visitors = visitors.map(v => { - if (v instanceof Visitor) { - return v; - } - return new Visitor(v); - }); - } -} + ancestorOf(other) { + return other.contains(this) && other.length !== this.length; + } -['Start', 'Summary', 'SummaryEnd', 'Detail', 'End'] - .map(k => `on${k}`) - .forEach(fn => { - Object.defineProperty(CompositeVisitor.prototype, fn, { - value(node, state) { - this.visitors.forEach(v => { - v[fn](node, state); - }); - } - }); - }); + descendantOf(other) { + return this.contains(other) && other.length !== this.length; + } -let BaseNode$1 = class BaseNode { - isRoot() { - return !this.getParent(); - } + commonPrefixPath(other) { + const len = this.length > other.length ? other.length : this.length; + let i; + const ret = []; - /** - * visit all nodes depth-first from this node down. Note that `onStart` - * and `onEnd` are never called on the visitor even if the current - * node is the root of the tree. - * @param visitor a full visitor that is called during tree traversal - * @param state optional state that is passed around - */ - visit(visitor, state) { - if (this.isSummary()) { - visitor.onSummary(this, state); - } else { - visitor.onDetail(this, state); - } + for (i = 0; i < len; i += 1) { + if (this.v[i] === other.v[i]) { + ret.push(this.v[i]); + } else { + break; + } + } + return new Path(ret); + } - this.getChildren().forEach(child => { - child.visit(visitor, state); - }); + static compare(a, b) { + const al = a.length; + const bl = b.length; - if (this.isSummary()) { - visitor.onSummaryEnd(this, state); - } - } -}; + if (al < bl) { + return -1; + } -/** - * abstract base class for a coverage tree. - * @constructor - */ -let BaseTree$1 = class BaseTree { - constructor(root) { - this.root = root; - } + if (al > bl) { + return 1; + } - /** - * returns the root node of the tree - */ - getRoot() { - return this.root; - } + const astr = a.toString(); + const bstr = b.toString(); + return astr < bstr ? -1 : astr > bstr ? 1 : 0; + } + } - /** - * visits the tree depth-first with the supplied partial visitor - * @param visitor - a potentially partial visitor - * @param state - the state to be passed around during tree traversal - */ - visit(visitor, state) { - if (!(visitor instanceof Visitor)) { - visitor = new Visitor(visitor); - } - visitor.onStart(this.getRoot(), state); - this.getRoot().visit(visitor, state); - visitor.onEnd(this.getRoot(), state); - } -}; + ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(fn => { + Object.defineProperty(Path.prototype, fn, { + value(...args) { + return this.v[fn](...args); + } + }); + }); -var tree$1 = { - BaseTree: BaseTree$1, - BaseNode: BaseNode$1, - Visitor, - CompositeVisitor -}; + Object.defineProperty(Path.prototype, 'length', { + enumerable: true, + get() { + return this.v.length; + } + }); -/* - Copyright 2012-2015, Yahoo Inc. - Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. - */ -var watermarks$2 = { - getDefault() { - return { - statements: [50, 80], - functions: [50, 80], - branches: [50, 80], - lines: [50, 80] - }; - } -}; + path_1 = Path; + Path.tester = { + setParserAndSep(p, sep) { + parsePath = p; + SEP = sep; + }, + reset() { + parsePath = origParser; + SEP = origSep; + } + }; + return path_1; +} /* Copyright 2012-2015, Yahoo Inc. Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ -const path = require$$0; -let parsePath$1 = path.parse; -let SEP = path.sep; -const origParser = parsePath$1; -const origSep = SEP; - -function makeRelativeNormalizedPath(str, sep) { - const parsed = parsePath$1(str); - let root = parsed.root; - let dir; - let file = parsed.base; - let quoted; - let pos; - - // handle a weird windows case separately - if (sep === '\\') { - pos = root.indexOf(':\\'); - if (pos >= 0) { - root = root.substring(0, pos + 2); - } - } - dir = parsed.dir.substring(root.length); - - if (str === '') { - return []; - } - - if (sep !== '/') { - quoted = new RegExp(sep.replace(/\W/g, '\\$&'), 'g'); - dir = dir.replace(quoted, '/'); - file = file.replace(quoted, '/'); // excessively paranoid? - } - - if (dir !== '') { - dir = `${dir}/${file}`; - } else { - dir = file; - } - if (dir.substring(0, 1) === '/') { - dir = dir.substring(1); - } - dir = dir.split(/\/+/); - return dir; -} - -let Path$1 = class Path { - constructor(strOrArray) { - if (Array.isArray(strOrArray)) { - this.v = strOrArray; - } else if (typeof strOrArray === 'string') { - this.v = makeRelativeNormalizedPath(strOrArray, SEP); - } else { - throw new Error( - `Invalid Path argument must be string or array:${strOrArray}` - ); - } - } - - toString() { - return this.v.join('/'); - } - - hasParent() { - return this.v.length > 0; - } - - parent() { - if (!this.hasParent()) { - throw new Error('Unable to get parent for 0 elem path'); - } - const p = this.v.slice(); - p.pop(); - return new Path(p); - } - - elements() { - return this.v.slice(); - } - - name() { - return this.v.slice(-1)[0]; - } - - contains(other) { - let i; - if (other.length > this.length) { - return false; - } - for (i = 0; i < other.length; i += 1) { - if (this.v[i] !== other.v[i]) { - return false; - } - } - return true; - } - - ancestorOf(other) { - return other.contains(this) && other.length !== this.length; - } - - descendantOf(other) { - return this.contains(other) && other.length !== this.length; - } - - commonPrefixPath(other) { - const len = this.length > other.length ? other.length : this.length; - let i; - const ret = []; - - for (i = 0; i < len; i += 1) { - if (this.v[i] === other.v[i]) { - ret.push(this.v[i]); - } else { - break; - } - } - return new Path(ret); - } +var summarizerFactory; +var hasRequiredSummarizerFactory; - static compare(a, b) { - const al = a.length; - const bl = b.length; - - if (al < bl) { - return -1; - } +function requireSummarizerFactory () { + if (hasRequiredSummarizerFactory) return summarizerFactory; + hasRequiredSummarizerFactory = 1; - if (al > bl) { - return 1; - } - - const astr = a.toString(); - const bstr = b.toString(); - return astr < bstr ? -1 : astr > bstr ? 1 : 0; - } -}; + const coverage = requireIstanbulLibCoverage(); + const Path = requirePath(); + const { BaseNode, BaseTree } = requireTree(); -['push', 'pop', 'shift', 'unshift', 'splice'].forEach(fn => { - Object.defineProperty(Path$1.prototype, fn, { - value(...args) { - return this.v[fn](...args); - } - }); -}); - -Object.defineProperty(Path$1.prototype, 'length', { - enumerable: true, - get() { - return this.v.length; - } -}); + class ReportNode extends BaseNode { + constructor(path, fileCoverage) { + super(); -var path_1 = Path$1; -Path$1.tester = { - setParserAndSep(p, sep) { - parsePath$1 = p; - SEP = sep; - }, - reset() { - parsePath$1 = origParser; - SEP = origSep; - } -}; + this.path = path; + this.parent = null; + this.fileCoverage = fileCoverage; + this.children = []; + } -/* - Copyright 2012-2015, Yahoo Inc. - Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. - */ + static createRoot(children) { + const root = new ReportNode(new Path([])); -const coverage = istanbulLibCoverageExports; -const Path = path_1; -const { BaseNode, BaseTree } = tree$1; + children.forEach(child => { + root.addChild(child); + }); -class ReportNode extends BaseNode { - constructor(path, fileCoverage) { - super(); + return root; + } - this.path = path; - this.parent = null; - this.fileCoverage = fileCoverage; - this.children = []; - } + addChild(child) { + child.parent = this; + this.children.push(child); + } - static createRoot(children) { - const root = new ReportNode(new Path([])); + asRelative(p) { + if (p.substring(0, 1) === '/') { + return p.substring(1); + } + return p; + } - children.forEach(child => { - root.addChild(child); - }); + getQualifiedName() { + return this.asRelative(this.path.toString()); + } - return root; - } + getRelativeName() { + const parent = this.getParent(); + const myPath = this.path; + let relPath; + let i; + const parentPath = parent ? parent.path : new Path([]); + if (parentPath.ancestorOf(myPath)) { + relPath = new Path(myPath.elements()); + for (i = 0; i < parentPath.length; i += 1) { + relPath.shift(); + } + return this.asRelative(relPath.toString()); + } + return this.asRelative(this.path.toString()); + } - addChild(child) { - child.parent = this; - this.children.push(child); - } + getParent() { + return this.parent; + } - asRelative(p) { - if (p.substring(0, 1) === '/') { - return p.substring(1); - } - return p; - } + getChildren() { + return this.children; + } - getQualifiedName() { - return this.asRelative(this.path.toString()); - } + isSummary() { + return !this.fileCoverage; + } - getRelativeName() { - const parent = this.getParent(); - const myPath = this.path; - let relPath; - let i; - const parentPath = parent ? parent.path : new Path([]); - if (parentPath.ancestorOf(myPath)) { - relPath = new Path(myPath.elements()); - for (i = 0; i < parentPath.length; i += 1) { - relPath.shift(); - } - return this.asRelative(relPath.toString()); - } - return this.asRelative(this.path.toString()); - } + getFileCoverage() { + return this.fileCoverage; + } - getParent() { - return this.parent; - } + getCoverageSummary(filesOnly) { + const cacheProp = `c_${filesOnly ? 'files' : 'full'}`; + let summary; - getChildren() { - return this.children; - } + if (Object.prototype.hasOwnProperty.call(this, cacheProp)) { + return this[cacheProp]; + } - isSummary() { - return !this.fileCoverage; - } + if (!this.isSummary()) { + summary = this.getFileCoverage().toSummary(); + } else { + let count = 0; + summary = coverage.createCoverageSummary(); + this.getChildren().forEach(child => { + if (filesOnly && child.isSummary()) { + return; + } + count += 1; + summary.merge(child.getCoverageSummary(filesOnly)); + }); + if (count === 0 && filesOnly) { + summary = null; + } + } + this[cacheProp] = summary; + return summary; + } + } - getFileCoverage() { - return this.fileCoverage; - } + class ReportTree extends BaseTree { + constructor(root, childPrefix) { + super(root); - getCoverageSummary(filesOnly) { - const cacheProp = `c_${filesOnly ? 'files' : 'full'}`; - let summary; + const maybePrefix = node => { + if (childPrefix && !node.isRoot()) { + node.path.unshift(childPrefix); + } + }; + this.visit({ + onDetail: maybePrefix, + onSummary(node) { + maybePrefix(node); + node.children.sort((a, b) => { + const astr = a.path.toString(); + const bstr = b.path.toString(); + return astr < bstr + ? -1 + : astr > bstr + ? 1 + : /* istanbul ignore next */ 0; + }); + } + }); + } + } - if (Object.prototype.hasOwnProperty.call(this, cacheProp)) { - return this[cacheProp]; - } + function findCommonParent(paths) { + return paths.reduce( + (common, path) => common.commonPrefixPath(path), + paths[0] || new Path([]) + ); + } - if (!this.isSummary()) { - summary = this.getFileCoverage().toSummary(); - } else { - let count = 0; - summary = coverage.createCoverageSummary(); - this.getChildren().forEach(child => { - if (filesOnly && child.isSummary()) { - return; - } - count += 1; - summary.merge(child.getCoverageSummary(filesOnly)); - }); - if (count === 0 && filesOnly) { - summary = null; - } - } - this[cacheProp] = summary; - return summary; - } -} + function findOrCreateParent(parentPath, nodeMap, created = () => {}) { + let parent = nodeMap[parentPath.toString()]; -class ReportTree extends BaseTree { - constructor(root, childPrefix) { - super(root); + if (!parent) { + parent = new ReportNode(parentPath); + nodeMap[parentPath.toString()] = parent; + created(parentPath, parent); + } - const maybePrefix = node => { - if (childPrefix && !node.isRoot()) { - node.path.unshift(childPrefix); - } - }; - this.visit({ - onDetail: maybePrefix, - onSummary(node) { - maybePrefix(node); - node.children.sort((a, b) => { - const astr = a.path.toString(); - const bstr = b.path.toString(); - return astr < bstr - ? -1 - : astr > bstr - ? 1 - : /* istanbul ignore next */ 0; - }); - } - }); - } -} + return parent; + } -function findCommonParent(paths) { - return paths.reduce( - (common, path) => common.commonPrefixPath(path), - paths[0] || new Path([]) - ); -} + function toDirParents(list) { + const nodeMap = Object.create(null); + list.forEach(o => { + const parent = findOrCreateParent(o.path.parent(), nodeMap); + parent.addChild(new ReportNode(o.path, o.fileCoverage)); + }); -function findOrCreateParent(parentPath, nodeMap, created = () => {}) { - let parent = nodeMap[parentPath.toString()]; + return Object.values(nodeMap); + } - if (!parent) { - parent = new ReportNode(parentPath); - nodeMap[parentPath.toString()] = parent; - created(parentPath, parent); - } + function addAllPaths(topPaths, nodeMap, path, node) { + const parent = findOrCreateParent( + path.parent(), + nodeMap, + (parentPath, parent) => { + if (parentPath.hasParent()) { + addAllPaths(topPaths, nodeMap, parentPath, parent); + } else { + topPaths.push(parent); + } + } + ); - return parent; -} + parent.addChild(node); + } -function toDirParents(list) { - const nodeMap = Object.create(null); - list.forEach(o => { - const parent = findOrCreateParent(o.path.parent(), nodeMap); - parent.addChild(new ReportNode(o.path, o.fileCoverage)); - }); + function foldIntoOneDir(node, parent) { + const { children } = node; + if (children.length === 1 && !children[0].fileCoverage) { + children[0].parent = parent; + return foldIntoOneDir(children[0], parent); + } + node.children = children.map(child => foldIntoOneDir(child, node)); + return node; + } - return Object.values(nodeMap); -} + function pkgSummaryPrefix(dirParents, commonParent) { + if (!dirParents.some(dp => dp.path.length === 0)) { + return; + } -function addAllPaths(topPaths, nodeMap, path, node) { - const parent = findOrCreateParent( - path.parent(), - nodeMap, - (parentPath, parent) => { - if (parentPath.hasParent()) { - addAllPaths(topPaths, nodeMap, parentPath, parent); - } else { - topPaths.push(parent); - } - } - ); + if (commonParent.length === 0) { + return 'root'; + } - parent.addChild(node); -} + return commonParent.name(); + } -function foldIntoOneDir(node, parent) { - const { children } = node; - if (children.length === 1 && !children[0].fileCoverage) { - children[0].parent = parent; - return foldIntoOneDir(children[0], parent); - } - node.children = children.map(child => foldIntoOneDir(child, node)); - return node; -} + class SummarizerFactory { + constructor(coverageMap, defaultSummarizer = 'pkg') { + this._coverageMap = coverageMap; + this._defaultSummarizer = defaultSummarizer; + this._initialList = coverageMap.files().map(filePath => ({ + filePath, + path: new Path(filePath), + fileCoverage: coverageMap.fileCoverageFor(filePath) + })); + this._commonParent = findCommonParent( + this._initialList.map(o => o.path.parent()) + ); + if (this._commonParent.length > 0) { + this._initialList.forEach(o => { + o.path.splice(0, this._commonParent.length); + }); + } + } -function pkgSummaryPrefix(dirParents, commonParent) { - if (!dirParents.some(dp => dp.path.length === 0)) { - return; - } + get defaultSummarizer() { + return this[this._defaultSummarizer]; + } - if (commonParent.length === 0) { - return 'root'; - } + get flat() { + if (!this._flat) { + this._flat = new ReportTree( + ReportNode.createRoot( + this._initialList.map( + node => new ReportNode(node.path, node.fileCoverage) + ) + ) + ); + } - return commonParent.name(); -} + return this._flat; + } -let SummarizerFactory$1 = class SummarizerFactory { - constructor(coverageMap, defaultSummarizer = 'pkg') { - this._coverageMap = coverageMap; - this._defaultSummarizer = defaultSummarizer; - this._initialList = coverageMap.files().map(filePath => ({ - filePath, - path: new Path(filePath), - fileCoverage: coverageMap.fileCoverageFor(filePath) - })); - this._commonParent = findCommonParent( - this._initialList.map(o => o.path.parent()) - ); - if (this._commonParent.length > 0) { - this._initialList.forEach(o => { - o.path.splice(0, this._commonParent.length); - }); - } - } + _createPkg() { + const dirParents = toDirParents(this._initialList); + if (dirParents.length === 1) { + return new ReportTree(dirParents[0]); + } - get defaultSummarizer() { - return this[this._defaultSummarizer]; - } + return new ReportTree( + ReportNode.createRoot(dirParents), + pkgSummaryPrefix(dirParents, this._commonParent) + ); + } - get flat() { - if (!this._flat) { - this._flat = new ReportTree( - ReportNode.createRoot( - this._initialList.map( - node => new ReportNode(node.path, node.fileCoverage) - ) - ) - ); - } + get pkg() { + if (!this._pkg) { + this._pkg = this._createPkg(); + } - return this._flat; - } + return this._pkg; + } - _createPkg() { - const dirParents = toDirParents(this._initialList); - if (dirParents.length === 1) { - return new ReportTree(dirParents[0]); - } + _createNested() { + const nodeMap = Object.create(null); + const topPaths = []; + this._initialList.forEach(o => { + const node = new ReportNode(o.path, o.fileCoverage); + addAllPaths(topPaths, nodeMap, o.path, node); + }); - return new ReportTree( - ReportNode.createRoot(dirParents), - pkgSummaryPrefix(dirParents, this._commonParent) - ); - } + const topNodes = topPaths.map(node => foldIntoOneDir(node)); + if (topNodes.length === 1) { + return new ReportTree(topNodes[0]); + } - get pkg() { - if (!this._pkg) { - this._pkg = this._createPkg(); - } + return new ReportTree(ReportNode.createRoot(topNodes)); + } - return this._pkg; - } + get nested() { + if (!this._nested) { + this._nested = this._createNested(); + } - _createNested() { - const nodeMap = Object.create(null); - const topPaths = []; - this._initialList.forEach(o => { - const node = new ReportNode(o.path, o.fileCoverage); - addAllPaths(topPaths, nodeMap, o.path, node); - }); - - const topNodes = topPaths.map(node => foldIntoOneDir(node)); - if (topNodes.length === 1) { - return new ReportTree(topNodes[0]); - } + return this._nested; + } + } - return new ReportTree(ReportNode.createRoot(topNodes)); - } + summarizerFactory = SummarizerFactory; + return summarizerFactory; +} - get nested() { - if (!this._nested) { - this._nested = this._createNested(); - } +var context; +var hasRequiredContext; - return this._nested; - } -}; +function requireContext () { + if (hasRequiredContext) return context; + hasRequiredContext = 1; + /* + Copyright 2012-2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ + const fs = require$$0$1; + const FileWriter = requireFileWriter(); + const XMLWriter = requireXmlWriter(); + const tree = requireTree(); + const watermarks = requireWatermarks(); + const SummarizerFactory = requireSummarizerFactory(); + + function defaultSourceLookup(path) { + try { + return fs.readFileSync(path, 'utf8'); + } catch (ex) { + throw new Error(`Unable to lookup source: ${path} (${ex.message})`); + } + } -var summarizerFactory = SummarizerFactory$1; + function normalizeWatermarks(specified = {}) { + Object.entries(watermarks.getDefault()).forEach(([k, value]) => { + const specValue = specified[k]; + if (!Array.isArray(specValue) || specValue.length !== 2) { + specified[k] = value; + } + }); -/* - Copyright 2012-2015, Yahoo Inc. - Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. - */ -const fs = require$$0$1; -const FileWriter = fileWriter; -const XMLWriter = xmlWriter; -const tree = tree$1; -const watermarks$1 = watermarks$2; -const SummarizerFactory = summarizerFactory; - -function defaultSourceLookup(path) { - try { - return fs.readFileSync(path, 'utf8'); - } catch (ex) { - throw new Error(`Unable to lookup source: ${path} (${ex.message})`); - } -} + return specified; + } -function normalizeWatermarks(specified = {}) { - Object.entries(watermarks$1.getDefault()).forEach(([k, value]) => { - const specValue = specified[k]; - if (!Array.isArray(specValue) || specValue.length !== 2) { - specified[k] = value; - } - }); + /** + * A reporting context that is passed to report implementations + * @param {Object} [opts=null] opts options + * @param {String} [opts.dir='coverage'] opts.dir the reporting directory + * @param {Object} [opts.watermarks=null] opts.watermarks watermarks for + * statements, lines, branches and functions + * @param {Function} [opts.sourceFinder=fsLookup] opts.sourceFinder a + * function that returns source code given a file path. Defaults to + * filesystem lookups based on path. + * @constructor + */ + class Context { + constructor(opts) { + this.dir = opts.dir || 'coverage'; + this.watermarks = normalizeWatermarks(opts.watermarks); + this.sourceFinder = opts.sourceFinder || defaultSourceLookup; + this._summarizerFactory = new SummarizerFactory( + opts.coverageMap, + opts.defaultSummarizer + ); + this.data = {}; + } - return specified; -} + /** + * returns a FileWriter implementation for reporting use. Also available + * as the `writer` property on the context. + * @returns {Writer} + */ + getWriter() { + return this.writer; + } -/** - * A reporting context that is passed to report implementations - * @param {Object} [opts=null] opts options - * @param {String} [opts.dir='coverage'] opts.dir the reporting directory - * @param {Object} [opts.watermarks=null] opts.watermarks watermarks for - * statements, lines, branches and functions - * @param {Function} [opts.sourceFinder=fsLookup] opts.sourceFinder a - * function that returns source code given a file path. Defaults to - * filesystem lookups based on path. - * @constructor - */ -let Context$1 = class Context { - constructor(opts) { - this.dir = opts.dir || 'coverage'; - this.watermarks = normalizeWatermarks(opts.watermarks); - this.sourceFinder = opts.sourceFinder || defaultSourceLookup; - this._summarizerFactory = new SummarizerFactory( - opts.coverageMap, - opts.defaultSummarizer - ); - this.data = {}; - } + /** + * returns the source code for the specified file path or throws if + * the source could not be found. + * @param {String} filePath the file path as found in a file coverage object + * @returns {String} the source code + */ + getSource(filePath) { + return this.sourceFinder(filePath); + } - /** - * returns a FileWriter implementation for reporting use. Also available - * as the `writer` property on the context. - * @returns {Writer} - */ - getWriter() { - return this.writer; - } + /** + * returns the coverage class given a coverage + * types and a percentage value. + * @param {String} type - the coverage type, one of `statements`, `functions`, + * `branches`, or `lines` + * @param {Number} value - the percentage value + * @returns {String} one of `high`, `medium` or `low` + */ + classForPercent(type, value) { + const watermarks = this.watermarks[type]; + if (!watermarks) { + return 'unknown'; + } + if (value < watermarks[0]) { + return 'low'; + } + if (value >= watermarks[1]) { + return 'high'; + } + return 'medium'; + } - /** - * returns the source code for the specified file path or throws if - * the source could not be found. - * @param {String} filePath the file path as found in a file coverage object - * @returns {String} the source code - */ - getSource(filePath) { - return this.sourceFinder(filePath); - } + /** + * returns an XML writer for the supplied content writer + * @param {ContentWriter} contentWriter the content writer to which the returned XML writer + * writes data + * @returns {XMLWriter} + */ + getXMLWriter(contentWriter) { + return new XMLWriter(contentWriter); + } - /** - * returns the coverage class given a coverage - * types and a percentage value. - * @param {String} type - the coverage type, one of `statements`, `functions`, - * `branches`, or `lines` - * @param {Number} value - the percentage value - * @returns {String} one of `high`, `medium` or `low` - */ - classForPercent(type, value) { - const watermarks = this.watermarks[type]; - if (!watermarks) { - return 'unknown'; - } - if (value < watermarks[0]) { - return 'low'; - } - if (value >= watermarks[1]) { - return 'high'; - } - return 'medium'; - } + /** + * returns a full visitor given a partial one. + * @param {Object} partialVisitor a partial visitor only having the functions of + * interest to the caller. These functions are called with a scope that is the + * supplied object. + * @returns {Visitor} + */ + getVisitor(partialVisitor) { + return new tree.Visitor(partialVisitor); + } - /** - * returns an XML writer for the supplied content writer - * @param {ContentWriter} contentWriter the content writer to which the returned XML writer - * writes data - * @returns {XMLWriter} - */ - getXMLWriter(contentWriter) { - return new XMLWriter(contentWriter); - } + getTree(name = 'defaultSummarizer') { + return this._summarizerFactory[name]; + } + } - /** - * returns a full visitor given a partial one. - * @param {Object} partialVisitor a partial visitor only having the functions of - * interest to the caller. These functions are called with a scope that is the - * supplied object. - * @returns {Visitor} - */ - getVisitor(partialVisitor) { - return new tree.Visitor(partialVisitor); - } + Object.defineProperty(Context.prototype, 'writer', { + enumerable: true, + get() { + if (!this.data.writer) { + this.data.writer = new FileWriter(this.dir); + } + return this.data.writer; + } + }); - getTree(name = 'defaultSummarizer') { - return this._summarizerFactory[name]; - } -}; + context = Context; + return context; +} -Object.defineProperty(Context$1.prototype, 'writer', { - enumerable: true, - get() { - if (!this.data.writer) { - this.data.writer = new FileWriter(this.dir); - } - return this.data.writer; - } -}); +var reportBase; +var hasRequiredReportBase; -var context = Context$1; +function requireReportBase () { + if (hasRequiredReportBase) return reportBase; + hasRequiredReportBase = 1; -// TODO: switch to class private field when targetting node.js 12 -const _summarizer = Symbol('ReportBase.#summarizer'); + // TODO: switch to class private field when targetting node.js 12 + const _summarizer = Symbol('ReportBase.#summarizer'); -let ReportBase$1 = class ReportBase { - constructor(opts = {}) { - this[_summarizer] = opts.summarizer; - } + class ReportBase { + constructor(opts = {}) { + this[_summarizer] = opts.summarizer; + } - execute(context) { - context.getTree(this[_summarizer]).visit(this, context); - } -}; + execute(context) { + context.getTree(this[_summarizer]).visit(this, context); + } + } -var reportBase = ReportBase$1; + reportBase = ReportBase; + return reportBase; +} /* Copyright 2012-2015, Yahoo Inc. Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ -/** - * @module Exports - */ - -const Context = context; -const watermarks = watermarks$2; -const ReportBase = reportBase; +var istanbulLibReport; +var hasRequiredIstanbulLibReport; -var istanbulLibReport = { - /** - * returns a reporting context for the supplied options - * @param {Object} [opts=null] opts - * @returns {Context} - */ - createContext(opts) { - return new Context(opts); - }, +function requireIstanbulLibReport () { + if (hasRequiredIstanbulLibReport) return istanbulLibReport; + hasRequiredIstanbulLibReport = 1; - /** - * returns the default watermarks that would be used when not - * overridden - * @returns {Object} an object with `statements`, `functions`, `branches`, - * and `line` keys. Each value is a 2 element array that has the low and - * high watermark as percentages. - */ - getDefaultWatermarks() { - return watermarks.getDefault(); - }, + /** + * @module Exports + */ - /** - * Base class for all reports - */ - ReportBase -}; + const Context = requireContext(); + const watermarks = requireWatermarks(); + const ReportBase = requireReportBase(); + + istanbulLibReport = { + /** + * returns a reporting context for the supplied options + * @param {Object} [opts=null] opts + * @returns {Context} + */ + createContext(opts) { + return new Context(opts); + }, + + /** + * returns the default watermarks that would be used when not + * overridden + * @returns {Object} an object with `statements`, `functions`, `branches`, + * and `line` keys. Each value is a 2 element array that has the low and + * high watermark as percentages. + */ + getDefaultWatermarks() { + return watermarks.getDefault(); + }, + + /** + * Base class for all reports + */ + ReportBase + }; + return istanbulLibReport; +} function commonjsRequire(path) { throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); @@ -7767,7 +8024,7 @@ var hasRequiredLcovonly; function requireLcovonly () { if (hasRequiredLcovonly) return lcovonly; hasRequiredLcovonly = 1; - const { ReportBase } = istanbulLibReport; + const { ReportBase } = requireIstanbulLibReport(); class LcovOnlyReport extends ReportBase { constructor(opts) { @@ -7842,23 +8099,32 @@ function requireLcovonly () { return lcovonly; } -var istanbulReports = { - create(name, cfg) { - cfg = cfg || {}; - let Cons; - try { - Cons = requireLcovonly(); - } catch (e) { - if (e.code !== 'MODULE_NOT_FOUND') { - throw e; - } +var istanbulReports; +var hasRequiredIstanbulReports; - Cons = commonjsRequire(name); - } +function requireIstanbulReports () { + if (hasRequiredIstanbulReports) return istanbulReports; + hasRequiredIstanbulReports = 1; - return new Cons(cfg); - } -}; + istanbulReports = { + create(name, cfg) { + cfg = cfg || {}; + let Cons; + try { + Cons = requireLcovonly(); + } catch (e) { + if (e.code !== 'MODULE_NOT_FOUND') { + throw e; + } + + Cons = commonjsRequire(name); + } + + return new Cons(cfg); + } + }; + return istanbulReports; +} /* * Copyright Node.js contributors. All rights reserved. @@ -7882,268 +8148,283 @@ var istanbulReports = { * IN THE SOFTWARE. */ -// TODO(bcoe): this logic is ported from Node.js' internal source map -// helpers: -// https://github.com/nodejs/node/blob/master/lib/internal/source_map/source_map_cache.js -// we should to upstream and downstream fixes. - -const { readFileSync: readFileSync$1 } = require$$0$1; -const { fileURLToPath: fileURLToPath$2, pathToFileURL: pathToFileURL$1 } = require$$1$1; -const util$2 = require$$2; -const debuglog$2 = util$2.debuglog('c8'); - -/** - * Extract the sourcemap url from a source file - * reference: https://sourcemaps.info/spec.html - * @param {String} file - compilation target file - * @returns {String} full path to source map file - * @private - */ -function getSourceMapFromFile$1 (filename) { - const fileBody = readFileSync$1(filename).toString(); - const sourceMapLineRE = /\/[*/]#\s+sourceMappingURL=(?[^\s]+)/; - const results = fileBody.match(sourceMapLineRE); - if (results !== null) { - const sourceMappingURL = results.groups.sourceMappingURL; - const sourceMap = dataFromUrl(pathToFileURL$1(filename), sourceMappingURL); - return sourceMap - } else { - return null - } -} - -function dataFromUrl (sourceURL, sourceMappingURL) { - try { - const url = new URL(sourceMappingURL); - switch (url.protocol) { - case 'data:': - return sourceMapFromDataUrl(url.pathname) - default: - return null - } - } catch (err) { - debuglog$2(err); - // If no scheme is present, we assume we are dealing with a file path. - const mapURL = new URL(sourceMappingURL, sourceURL).href; - return sourceMapFromFile(mapURL) - } -} - -function sourceMapFromFile (mapURL) { - try { - const content = readFileSync$1(fileURLToPath$2(mapURL), 'utf8'); - return JSON.parse(content) - } catch (err) { - debuglog$2(err); - return null - } -} - -// data:[][;base64], see: -// https://tools.ietf.org/html/rfc2397#section-2 -function sourceMapFromDataUrl (url) { - const { 0: format, 1: data } = url.split(','); - const splitFormat = format.split(';'); - const contentType = splitFormat[0]; - const base64 = splitFormat[splitFormat.length - 1] === 'base64'; - if (contentType === 'application/json') { - const decodedData = base64 ? Buffer.from(data, 'base64').toString('utf8') : data; - try { - return JSON.parse(decodedData) - } catch (err) { - debuglog$2(err); - return null - } - } else { - debuglog$2(`unexpected content-type ${contentType}`); - return null - } -} +var sourceMapFromFile_1; +var hasRequiredSourceMapFromFile; -var sourceMapFromFile_1 = getSourceMapFromFile$1; +function requireSourceMapFromFile () { + if (hasRequiredSourceMapFromFile) return sourceMapFromFile_1; + hasRequiredSourceMapFromFile = 1; + // TODO(bcoe): this logic is ported from Node.js' internal source map + // helpers: + // https://github.com/nodejs/node/blob/master/lib/internal/source_map/source_map_cache.js + // we should to upstream and downstream fixes. -var convertSourceMap$1 = {}; + const { readFileSync } = require$$0$1; + const { fileURLToPath, pathToFileURL } = require$$1$1; + const util = require$$2; + const debuglog = util.debuglog('c8'); -(function (exports) { - var fs = require$$0$1; - var path = require$$0; + /** + * Extract the sourcemap url from a source file + * reference: https://sourcemaps.info/spec.html + * @param {String} file - compilation target file + * @returns {String} full path to source map file + * @private + */ + function getSourceMapFromFile (filename) { + const fileBody = readFileSync(filename).toString(); + const sourceMapLineRE = /\/[*/]#\s+sourceMappingURL=(?[^\s]+)/; + const results = fileBody.match(sourceMapLineRE); + if (results !== null) { + const sourceMappingURL = results.groups.sourceMappingURL; + const sourceMap = dataFromUrl(pathToFileURL(filename), sourceMappingURL); + return sourceMap + } else { + return null + } + } - Object.defineProperty(exports, 'commentRegex', { - get: function getCommentRegex () { - return /^\s*\/(?:\/|\*)[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/mg; + function dataFromUrl (sourceURL, sourceMappingURL) { + try { + const url = new URL(sourceMappingURL); + switch (url.protocol) { + case 'data:': + return sourceMapFromDataUrl(url.pathname) + default: + return null + } + } catch (err) { + debuglog(err); + // If no scheme is present, we assume we are dealing with a file path. + const mapURL = new URL(sourceMappingURL, sourceURL).href; + return sourceMapFromFile(mapURL) } - }); + } - Object.defineProperty(exports, 'mapFileCommentRegex', { - get: function getMapFileCommentRegex () { - // Matches sourceMappingURL in either // or /* comment styles. - return /(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"`]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/){1}[ \t]*$)/mg; + function sourceMapFromFile (mapURL) { + try { + const content = readFileSync(fileURLToPath(mapURL), 'utf8'); + return JSON.parse(content) + } catch (err) { + debuglog(err); + return null } - }); + } - var decodeBase64; - if (typeof Buffer !== 'undefined') { - if (typeof Buffer.from === 'function') { - decodeBase64 = decodeBase64WithBufferFrom; + // data:[][;base64], see: + // https://tools.ietf.org/html/rfc2397#section-2 + function sourceMapFromDataUrl (url) { + const { 0: format, 1: data } = url.split(','); + const splitFormat = format.split(';'); + const contentType = splitFormat[0]; + const base64 = splitFormat[splitFormat.length - 1] === 'base64'; + if (contentType === 'application/json') { + const decodedData = base64 ? Buffer.from(data, 'base64').toString('utf8') : data; + try { + return JSON.parse(decodedData) + } catch (err) { + debuglog(err); + return null + } } else { - decodeBase64 = decodeBase64WithNewBuffer; + debuglog(`unexpected content-type ${contentType}`); + return null } - } else { - decodeBase64 = decodeBase64WithAtob; } - function decodeBase64WithBufferFrom(base64) { - return Buffer.from(base64, 'base64').toString(); - } + sourceMapFromFile_1 = getSourceMapFromFile; + return sourceMapFromFile_1; +} - function decodeBase64WithNewBuffer(base64) { - if (typeof value === 'number') { - throw new TypeError('The value to decode must not be of type number.'); - } - return new Buffer(base64, 'base64').toString(); - } +var convertSourceMap = {}; - function decodeBase64WithAtob(base64) { - return decodeURIComponent(escape(atob(base64))); - } +var hasRequiredConvertSourceMap; - function stripComment(sm) { - return sm.split(',').pop(); - } +function requireConvertSourceMap () { + if (hasRequiredConvertSourceMap) return convertSourceMap; + hasRequiredConvertSourceMap = 1; + (function (exports) { + var fs = require$$0$1; + var path = require$$0; - function readFromFileMap(sm, dir) { - // NOTE: this will only work on the server since it attempts to read the map file + Object.defineProperty(exports, 'commentRegex', { + get: function getCommentRegex () { + return /^\s*\/(?:\/|\*)[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/mg; + } + }); - var r = exports.mapFileCommentRegex.exec(sm); + Object.defineProperty(exports, 'mapFileCommentRegex', { + get: function getMapFileCommentRegex () { + // Matches sourceMappingURL in either // or /* comment styles. + return /(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"`]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/){1}[ \t]*$)/mg; + } + }); - // for some odd reason //# .. captures in 1 and /* .. */ in 2 - var filename = r[1] || r[2]; - var filepath = path.resolve(dir, filename); + var decodeBase64; + if (typeof Buffer !== 'undefined') { + if (typeof Buffer.from === 'function') { + decodeBase64 = decodeBase64WithBufferFrom; + } else { + decodeBase64 = decodeBase64WithNewBuffer; + } + } else { + decodeBase64 = decodeBase64WithAtob; + } - try { - return fs.readFileSync(filepath, 'utf8'); - } catch (e) { - throw new Error('An error occurred while trying to read the map file at ' + filepath + '\n' + e); - } - } + function decodeBase64WithBufferFrom(base64) { + return Buffer.from(base64, 'base64').toString(); + } + + function decodeBase64WithNewBuffer(base64) { + if (typeof value === 'number') { + throw new TypeError('The value to decode must not be of type number.'); + } + return new Buffer(base64, 'base64').toString(); + } + + function decodeBase64WithAtob(base64) { + return decodeURIComponent(escape(atob(base64))); + } + + function stripComment(sm) { + return sm.split(',').pop(); + } + + function readFromFileMap(sm, dir) { + // NOTE: this will only work on the server since it attempts to read the map file + + var r = exports.mapFileCommentRegex.exec(sm); + + // for some odd reason //# .. captures in 1 and /* .. */ in 2 + var filename = r[1] || r[2]; + var filepath = path.resolve(dir, filename); - function Converter (sm, opts) { - opts = opts || {}; + try { + return fs.readFileSync(filepath, 'utf8'); + } catch (e) { + throw new Error('An error occurred while trying to read the map file at ' + filepath + '\n' + e); + } + } - if (opts.isFileComment) sm = readFromFileMap(sm, opts.commentFileDir); - if (opts.hasComment) sm = stripComment(sm); - if (opts.isEncoded) sm = decodeBase64(sm); - if (opts.isJSON || opts.isEncoded) sm = JSON.parse(sm); + function Converter (sm, opts) { + opts = opts || {}; - this.sourcemap = sm; - } + if (opts.isFileComment) sm = readFromFileMap(sm, opts.commentFileDir); + if (opts.hasComment) sm = stripComment(sm); + if (opts.isEncoded) sm = decodeBase64(sm); + if (opts.isJSON || opts.isEncoded) sm = JSON.parse(sm); - Converter.prototype.toJSON = function (space) { - return JSON.stringify(this.sourcemap, null, space); - }; + this.sourcemap = sm; + } - if (typeof Buffer !== 'undefined') { - if (typeof Buffer.from === 'function') { - Converter.prototype.toBase64 = encodeBase64WithBufferFrom; - } else { - Converter.prototype.toBase64 = encodeBase64WithNewBuffer; - } - } else { - Converter.prototype.toBase64 = encodeBase64WithBtoa; - } + Converter.prototype.toJSON = function (space) { + return JSON.stringify(this.sourcemap, null, space); + }; - function encodeBase64WithBufferFrom() { - var json = this.toJSON(); - return Buffer.from(json, 'utf8').toString('base64'); - } + if (typeof Buffer !== 'undefined') { + if (typeof Buffer.from === 'function') { + Converter.prototype.toBase64 = encodeBase64WithBufferFrom; + } else { + Converter.prototype.toBase64 = encodeBase64WithNewBuffer; + } + } else { + Converter.prototype.toBase64 = encodeBase64WithBtoa; + } - function encodeBase64WithNewBuffer() { - var json = this.toJSON(); - if (typeof json === 'number') { - throw new TypeError('The json to encode must not be of type number.'); - } - return new Buffer(json, 'utf8').toString('base64'); - } + function encodeBase64WithBufferFrom() { + var json = this.toJSON(); + return Buffer.from(json, 'utf8').toString('base64'); + } - function encodeBase64WithBtoa() { - var json = this.toJSON(); - return btoa(unescape(encodeURIComponent(json))); - } + function encodeBase64WithNewBuffer() { + var json = this.toJSON(); + if (typeof json === 'number') { + throw new TypeError('The json to encode must not be of type number.'); + } + return new Buffer(json, 'utf8').toString('base64'); + } - Converter.prototype.toComment = function (options) { - var base64 = this.toBase64(); - var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; - return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data; - }; + function encodeBase64WithBtoa() { + var json = this.toJSON(); + return btoa(unescape(encodeURIComponent(json))); + } - // returns copy instead of original - Converter.prototype.toObject = function () { - return JSON.parse(this.toJSON()); - }; + Converter.prototype.toComment = function (options) { + var base64 = this.toBase64(); + var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; + return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data; + }; - Converter.prototype.addProperty = function (key, value) { - if (this.sourcemap.hasOwnProperty(key)) throw new Error('property "' + key + '" already exists on the sourcemap, use set property instead'); - return this.setProperty(key, value); - }; + // returns copy instead of original + Converter.prototype.toObject = function () { + return JSON.parse(this.toJSON()); + }; - Converter.prototype.setProperty = function (key, value) { - this.sourcemap[key] = value; - return this; - }; + Converter.prototype.addProperty = function (key, value) { + if (this.sourcemap.hasOwnProperty(key)) throw new Error('property "' + key + '" already exists on the sourcemap, use set property instead'); + return this.setProperty(key, value); + }; - Converter.prototype.getProperty = function (key) { - return this.sourcemap[key]; - }; + Converter.prototype.setProperty = function (key, value) { + this.sourcemap[key] = value; + return this; + }; - exports.fromObject = function (obj) { - return new Converter(obj); - }; + Converter.prototype.getProperty = function (key) { + return this.sourcemap[key]; + }; - exports.fromJSON = function (json) { - return new Converter(json, { isJSON: true }); - }; + exports.fromObject = function (obj) { + return new Converter(obj); + }; - exports.fromBase64 = function (base64) { - return new Converter(base64, { isEncoded: true }); - }; + exports.fromJSON = function (json) { + return new Converter(json, { isJSON: true }); + }; - exports.fromComment = function (comment) { - comment = comment - .replace(/^\/\*/g, '//') - .replace(/\*\/$/g, ''); + exports.fromBase64 = function (base64) { + return new Converter(base64, { isEncoded: true }); + }; - return new Converter(comment, { isEncoded: true, hasComment: true }); - }; + exports.fromComment = function (comment) { + comment = comment + .replace(/^\/\*/g, '//') + .replace(/\*\/$/g, ''); - exports.fromMapFileComment = function (comment, dir) { - return new Converter(comment, { commentFileDir: dir, isFileComment: true, isJSON: true }); - }; + return new Converter(comment, { isEncoded: true, hasComment: true }); + }; - // Finds last sourcemap comment in file or returns null if none was found - exports.fromSource = function (content) { - var m = content.match(exports.commentRegex); - return m ? exports.fromComment(m.pop()) : null; - }; + exports.fromMapFileComment = function (comment, dir) { + return new Converter(comment, { commentFileDir: dir, isFileComment: true, isJSON: true }); + }; - // Finds last sourcemap comment in file or returns null if none was found - exports.fromMapFileSource = function (content, dir) { - var m = content.match(exports.mapFileCommentRegex); - return m ? exports.fromMapFileComment(m.pop(), dir) : null; - }; + // Finds last sourcemap comment in file or returns null if none was found + exports.fromSource = function (content) { + var m = content.match(exports.commentRegex); + return m ? exports.fromComment(m.pop()) : null; + }; - exports.removeComments = function (src) { - return src.replace(exports.commentRegex, ''); - }; + // Finds last sourcemap comment in file or returns null if none was found + exports.fromMapFileSource = function (content, dir) { + var m = content.match(exports.mapFileCommentRegex); + return m ? exports.fromMapFileComment(m.pop(), dir) : null; + }; - exports.removeMapFileComments = function (src) { - return src.replace(exports.mapFileCommentRegex, ''); - }; + exports.removeComments = function (src) { + return src.replace(exports.commentRegex, ''); + }; - exports.generateMapFileComment = function (file, options) { - var data = 'sourceMappingURL=' + file; - return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data; - }; -} (convertSourceMap$1)); + exports.removeMapFileComments = function (src) { + return src.replace(exports.mapFileCommentRegex, ''); + }; + + exports.generateMapFileComment = function (file, options) { + var data = 'sourceMappingURL=' + file; + return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data; + }; + } (convertSourceMap)); + return convertSourceMap; +} var branch; var hasRequiredBranch; @@ -8309,27 +8590,21 @@ function requireRange () { return range; } -var traceMapping_umdExports = {}; -var traceMapping_umd = { - get exports(){ return traceMapping_umdExports; }, - set exports(v){ traceMapping_umdExports = v; }, -}; +var traceMapping_umd$1 = {exports: {}}; -var sourcemapCodec_umdExports = {}; -var sourcemapCodec_umd = { - get exports(){ return sourcemapCodec_umdExports; }, - set exports(v){ sourcemapCodec_umdExports = v; }, -}; +var sourcemapCodec_umd$1 = {exports: {}}; + +var sourcemapCodec_umd = sourcemapCodec_umd$1.exports; var hasRequiredSourcemapCodec_umd; function requireSourcemapCodec_umd () { - if (hasRequiredSourcemapCodec_umd) return sourcemapCodec_umdExports; + if (hasRequiredSourcemapCodec_umd) return sourcemapCodec_umd$1.exports; hasRequiredSourcemapCodec_umd = 1; (function (module, exports) { (function (global, factory) { factory(exports) ; - })(commonjsGlobal, (function (exports) { + })(sourcemapCodec_umd, (function (exports) { const comma = ','.charCodeAt(0); const semicolon = ';'.charCodeAt(0); const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; @@ -8417,7 +8692,7 @@ function requireSourcemapCodec_umd () { const shouldNegate = value & 1; value >>>= 1; if (shouldNegate) { - value = -0x80000000 | -value; + value = -2147483648 | -value; } state[j] += value; return pos; @@ -8499,25 +8774,23 @@ function requireSourcemapCodec_umd () { })); -} (sourcemapCodec_umd, sourcemapCodec_umdExports)); - return sourcemapCodec_umdExports; + } (sourcemapCodec_umd$1, sourcemapCodec_umd$1.exports)); + return sourcemapCodec_umd$1.exports; } -var resolveUri_umdExports = {}; -var resolveUri_umd = { - get exports(){ return resolveUri_umdExports; }, - set exports(v){ resolveUri_umdExports = v; }, -}; +var resolveUri_umd$1 = {exports: {}}; + +var resolveUri_umd = resolveUri_umd$1.exports; var hasRequiredResolveUri_umd; function requireResolveUri_umd () { - if (hasRequiredResolveUri_umd) return resolveUri_umdExports; + if (hasRequiredResolveUri_umd) return resolveUri_umd$1.exports; hasRequiredResolveUri_umd = 1; (function (module, exports) { (function (global, factory) { module.exports = factory() ; - })(commonjsGlobal, (function () { + })(resolveUri_umd, (function () { // Matches the scheme of a URL, eg "http://" const schemeRegex = /^[\w+.-]+:\/\//; /** @@ -8762,19 +9035,21 @@ function requireResolveUri_umd () { })); -} (resolveUri_umd)); - return resolveUri_umdExports; + } (resolveUri_umd$1)); + return resolveUri_umd$1.exports; } +var traceMapping_umd = traceMapping_umd$1.exports; + var hasRequiredTraceMapping_umd; function requireTraceMapping_umd () { - if (hasRequiredTraceMapping_umd) return traceMapping_umdExports; + if (hasRequiredTraceMapping_umd) return traceMapping_umd$1.exports; hasRequiredTraceMapping_umd = 1; (function (module, exports) { (function (global, factory) { factory(exports, requireSourcemapCodec_umd(), requireResolveUri_umd()) ; - })(commonjsGlobal, (function (exports, sourcemapCodec, resolveUri) { + })(traceMapping_umd, (function (exports, sourcemapCodec, resolveUri) { function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var resolveUri__default = /*#__PURE__*/_interopDefaultLegacy(resolveUri); @@ -9335,8 +9610,8 @@ function requireTraceMapping_umd () { })); -} (traceMapping_umd, traceMapping_umdExports)); - return traceMapping_umdExports; + } (traceMapping_umd$1, traceMapping_umd$1.exports)); + return traceMapping_umd$1.exports; } var source; @@ -9593,403 +9868,368 @@ function requireSource () { return source; } -var name = "v8-to-istanbul"; -var version = "9.1.0"; -var description = "convert from v8 coverage format to istanbul's format"; -var main = "index.js"; -var types = "index.d.ts"; -var scripts = { - fix: "standard --fix", - snapshot: "TAP_SNAPSHOT=1 tap test/*.js", - test: "c8 --reporter=html --reporter=text tap --no-coverage test/*.js", - posttest: "standard", - coverage: "c8 report --check-coverage" -}; -var repository = "istanbuljs/v8-to-istanbul"; -var keywords = [ - "istanbul", - "v8", - "coverage" -]; -var standard = { - ignore: [ - "**/test/fixtures" - ] -}; -var author = "Ben Coe "; -var license = "ISC"; -var dependencies = { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" -}; -var devDependencies = { - "@types/node": "^18.0.0", - c8: "^7.2.1", - semver: "^7.3.2", - should: "13.2.3", - "source-map": "^0.7.3", - standard: "^16.0.4", - tap: "^16.0.0" -}; var engines = { node: ">=10.12.0" }; -var files = [ - "lib/*.js", - "index.js", - "index.d.ts" -]; var require$$9 = { - name: name, - version: version, - description: description, - main: main, - types: types, - scripts: scripts, - repository: repository, - keywords: keywords, - standard: standard, - author: author, - license: license, - dependencies: dependencies, - devDependencies: devDependencies, - engines: engines, - files: files -}; + engines: engines}; + +var v8ToIstanbul$1; +var hasRequiredV8ToIstanbul$1; + +function requireV8ToIstanbul$1 () { + if (hasRequiredV8ToIstanbul$1) return v8ToIstanbul$1; + hasRequiredV8ToIstanbul$1 = 1; + const assert = require$$5; + const convertSourceMap = requireConvertSourceMap(); + const util = require$$2; + const debuglog = util.debuglog('c8'); + const { dirname, isAbsolute, join, resolve } = require$$0; + const { fileURLToPath } = require$$1$1; + const CovBranch = requireBranch(); + const CovFunction = require_function(); + const CovSource = requireSource(); + const { sliceRange } = requireRange(); + const compatError = Error(`requires Node.js ${require$$9.engines.node}`); + let readFile = () => { throw compatError }; + try { + readFile = require('fs').promises.readFile; + } catch (_err) { + // most likely we're on an older version of Node.js. + } + const { TraceMap } = requireTraceMapping_umd(); + const isOlderNode10 = /^v10\.(([0-9]\.)|(1[0-5]\.))/u.test(process.version); + const isNode8 = /^v8\./.test(process.version); + + // Injected when Node.js is loading script into isolate pre Node 10.16.x. + // see: https://github.com/nodejs/node/pull/21573. + const cjsWrapperLength = isOlderNode10 ? require$$12.wrapper[0].length : 0; + + v8ToIstanbul$1 = class V8ToIstanbul { + constructor (scriptPath, wrapperLength, sources, excludePath) { + assert(typeof scriptPath === 'string', 'scriptPath must be a string'); + assert(!isNode8, 'This module does not support node 8 or lower, please upgrade to node 10'); + this.path = parsePath(scriptPath); + this.wrapperLength = wrapperLength === undefined ? cjsWrapperLength : wrapperLength; + this.excludePath = excludePath || (() => false); + this.sources = sources || {}; + this.generatedLines = []; + this.branches = {}; + this.functions = {}; + this.covSources = []; + this.rawSourceMap = undefined; + this.sourceMap = undefined; + this.sourceTranspiled = undefined; + // Indicate that this report was generated with placeholder data from + // running --all: + this.all = false; + } + + async load () { + const rawSource = this.sources.source || await readFile(this.path, 'utf8'); + this.rawSourceMap = this.sources.sourceMap || + // if we find a source-map (either inline, or a .map file) we load + // both the transpiled and original source, both of which are used during + // the backflips we perform to remap absolute to relative positions. + convertSourceMap.fromSource(rawSource) || convertSourceMap.fromMapFileSource(rawSource, dirname(this.path)); + + if (this.rawSourceMap) { + if (this.rawSourceMap.sourcemap.sources.length > 1) { + this.sourceMap = new TraceMap(this.rawSourceMap.sourcemap); + if (!this.sourceMap.sourcesContent) { + this.sourceMap.sourcesContent = await this.sourcesContentFromSources(); + } + this.covSources = this.sourceMap.sourcesContent.map((rawSource, i) => ({ source: new CovSource(rawSource, this.wrapperLength), path: this.sourceMap.sources[i] })); + this.sourceTranspiled = new CovSource(rawSource, this.wrapperLength); + } else { + const candidatePath = this.rawSourceMap.sourcemap.sources.length >= 1 ? this.rawSourceMap.sourcemap.sources[0] : this.rawSourceMap.sourcemap.file; + this.path = this._resolveSource(this.rawSourceMap, candidatePath || this.path); + this.sourceMap = new TraceMap(this.rawSourceMap.sourcemap); + + let originalRawSource; + if (this.sources.sourceMap && this.sources.sourceMap.sourcemap && this.sources.sourceMap.sourcemap.sourcesContent && this.sources.sourceMap.sourcemap.sourcesContent.length === 1) { + // If the sourcesContent field has been provided, return it rather than attempting + // to load the original source from disk. + // TODO: investigate whether there's ever a case where we hit this logic with 1:many sources. + originalRawSource = this.sources.sourceMap.sourcemap.sourcesContent[0]; + } else if (this.sources.originalSource) { + // Original source may be populated on the sources object. + originalRawSource = this.sources.originalSource; + } else if (this.sourceMap.sourcesContent && this.sourceMap.sourcesContent[0]) { + // perhaps we loaded sourcesContent was populated by an inline source map, or .map file? + // TODO: investigate whether there's ever a case where we hit this logic with 1:many sources. + originalRawSource = this.sourceMap.sourcesContent[0]; + } else { + // We fallback to reading the original source from disk. + originalRawSource = await readFile(this.path, 'utf8'); + } + this.covSources = [{ source: new CovSource(originalRawSource, this.wrapperLength), path: this.path }]; + this.sourceTranspiled = new CovSource(rawSource, this.wrapperLength); + } + } else { + this.covSources = [{ source: new CovSource(rawSource, this.wrapperLength), path: this.path }]; + } + } -const assert = require$$5; -const convertSourceMap = convertSourceMap$1; -const util$1 = require$$2; -const debuglog$1 = util$1.debuglog('c8'); -const { dirname, isAbsolute: isAbsolute$1, join, resolve: resolve$1 } = require$$0; -const { fileURLToPath: fileURLToPath$1 } = require$$1$1; -const CovBranch = requireBranch(); -const CovFunction = require_function(); -const CovSource = requireSource(); -const { sliceRange } = requireRange(); -const compatError = Error(`requires Node.js ${require$$9.engines.node}`); -let readFile = () => { throw compatError }; -try { - readFile = require('fs').promises.readFile; -} catch (_err) { - // most likely we're on an older version of Node.js. -} -const { TraceMap } = requireTraceMapping_umd(); -const isOlderNode10 = /^v10\.(([0-9]\.)|(1[0-5]\.))/u.test(process.version); -const isNode8 = /^v8\./.test(process.version); - -// Injected when Node.js is loading script into isolate pre Node 10.16.x. -// see: https://github.com/nodejs/node/pull/21573. -const cjsWrapperLength = isOlderNode10 ? require$$12.wrapper[0].length : 0; - -var v8ToIstanbul$1 = class V8ToIstanbul { - constructor (scriptPath, wrapperLength, sources, excludePath) { - assert(typeof scriptPath === 'string', 'scriptPath must be a string'); - assert(!isNode8, 'This module does not support node 8 or lower, please upgrade to node 10'); - this.path = parsePath(scriptPath); - this.wrapperLength = wrapperLength === undefined ? cjsWrapperLength : wrapperLength; - this.excludePath = excludePath || (() => false); - this.sources = sources || {}; - this.generatedLines = []; - this.branches = {}; - this.functions = {}; - this.covSources = []; - this.rawSourceMap = undefined; - this.sourceMap = undefined; - this.sourceTranspiled = undefined; - // Indicate that this report was generated with placeholder data from - // running --all: - this.all = false; - } - - async load () { - const rawSource = this.sources.source || await readFile(this.path, 'utf8'); - this.rawSourceMap = this.sources.sourceMap || - // if we find a source-map (either inline, or a .map file) we load - // both the transpiled and original source, both of which are used during - // the backflips we perform to remap absolute to relative positions. - convertSourceMap.fromSource(rawSource) || convertSourceMap.fromMapFileSource(rawSource, dirname(this.path)); - - if (this.rawSourceMap) { - if (this.rawSourceMap.sourcemap.sources.length > 1) { - this.sourceMap = new TraceMap(this.rawSourceMap.sourcemap); - if (!this.sourceMap.sourcesContent) { - this.sourceMap.sourcesContent = await this.sourcesContentFromSources(); - } - this.covSources = this.sourceMap.sourcesContent.map((rawSource, i) => ({ source: new CovSource(rawSource, this.wrapperLength), path: this.sourceMap.sources[i] })); - this.sourceTranspiled = new CovSource(rawSource, this.wrapperLength); - } else { - const candidatePath = this.rawSourceMap.sourcemap.sources.length >= 1 ? this.rawSourceMap.sourcemap.sources[0] : this.rawSourceMap.sourcemap.file; - this.path = this._resolveSource(this.rawSourceMap, candidatePath || this.path); - this.sourceMap = new TraceMap(this.rawSourceMap.sourcemap); - - let originalRawSource; - if (this.sources.sourceMap && this.sources.sourceMap.sourcemap && this.sources.sourceMap.sourcemap.sourcesContent && this.sources.sourceMap.sourcemap.sourcesContent.length === 1) { - // If the sourcesContent field has been provided, return it rather than attempting - // to load the original source from disk. - // TODO: investigate whether there's ever a case where we hit this logic with 1:many sources. - originalRawSource = this.sources.sourceMap.sourcemap.sourcesContent[0]; - } else if (this.sources.originalSource) { - // Original source may be populated on the sources object. - originalRawSource = this.sources.originalSource; - } else if (this.sourceMap.sourcesContent && this.sourceMap.sourcesContent[0]) { - // perhaps we loaded sourcesContent was populated by an inline source map, or .map file? - // TODO: investigate whether there's ever a case where we hit this logic with 1:many sources. - originalRawSource = this.sourceMap.sourcesContent[0]; - } else { - // We fallback to reading the original source from disk. - originalRawSource = await readFile(this.path, 'utf8'); - } - this.covSources = [{ source: new CovSource(originalRawSource, this.wrapperLength), path: this.path }]; - this.sourceTranspiled = new CovSource(rawSource, this.wrapperLength); - } - } else { - this.covSources = [{ source: new CovSource(rawSource, this.wrapperLength), path: this.path }]; - } - } - - async sourcesContentFromSources () { - const fileList = this.sourceMap.sources.map(relativePath => { - const realPath = this._resolveSource(this.rawSourceMap, relativePath); - return readFile(realPath, 'utf-8') - .then(result => result) - .catch(err => { - debuglog$1(`failed to load ${realPath}: ${err.message}`); - }) - }); - return await Promise.all(fileList) - } + async sourcesContentFromSources () { + const fileList = this.sourceMap.sources.map(relativePath => { + const realPath = this._resolveSource(this.rawSourceMap, relativePath); + return readFile(realPath, 'utf-8') + .then(result => result) + .catch(err => { + debuglog(`failed to load ${realPath}: ${err.message}`); + }) + }); + return await Promise.all(fileList) + } - destroy () { - // no longer necessary, but preserved for backwards compatibility. - } + destroy () { + // no longer necessary, but preserved for backwards compatibility. + } - _resolveSource (rawSourceMap, sourcePath) { - if (sourcePath.startsWith('file://')) { - return fileURLToPath$1(sourcePath) - } - sourcePath = sourcePath.replace(/^webpack:\/\//, ''); - const sourceRoot = rawSourceMap.sourcemap.sourceRoot ? rawSourceMap.sourcemap.sourceRoot.replace('file://', '') : ''; - const candidatePath = join(sourceRoot, sourcePath); - - if (isAbsolute$1(candidatePath)) { - return candidatePath - } else { - return resolve$1(dirname(this.path), candidatePath) - } - } - - applyCoverage (blocks) { - blocks.forEach(block => { - block.ranges.forEach((range, i) => { - const { startCol, endCol, path, covSource } = this._maybeRemapStartColEndCol(range); - if (this.excludePath(path)) { - return - } - let lines; - if (block.functionName === '(empty-report)') { - // (empty-report), this will result in a report that has all lines zeroed out. - lines = covSource.lines.filter((line) => { - line.count = 0; - return true - }); - this.all = lines.length > 0; - } else { - lines = sliceRange(covSource.lines, startCol, endCol); - } - if (!lines.length) { - return - } + _resolveSource (rawSourceMap, sourcePath) { + if (sourcePath.startsWith('file://')) { + return fileURLToPath(sourcePath) + } + sourcePath = sourcePath.replace(/^webpack:\/\//, ''); + const sourceRoot = rawSourceMap.sourcemap.sourceRoot ? rawSourceMap.sourcemap.sourceRoot.replace('file://', '') : ''; + const candidatePath = join(sourceRoot, sourcePath); - const startLineInstance = lines[0]; - const endLineInstance = lines[lines.length - 1]; - - if (block.isBlockCoverage) { - this.branches[path] = this.branches[path] || []; - // record branches. - this.branches[path].push(new CovBranch( - startLineInstance.line, - startCol - startLineInstance.startCol, - endLineInstance.line, - endCol - endLineInstance.startCol, - range.count - )); - - // if block-level granularity is enabled, we still create a single - // CovFunction tracking object for each set of ranges. - if (block.functionName && i === 0) { - this.functions[path] = this.functions[path] || []; - this.functions[path].push(new CovFunction( - block.functionName, - startLineInstance.line, - startCol - startLineInstance.startCol, - endLineInstance.line, - endCol - endLineInstance.startCol, - range.count - )); - } - } else if (block.functionName) { - this.functions[path] = this.functions[path] || []; - // record functions. - this.functions[path].push(new CovFunction( - block.functionName, - startLineInstance.line, - startCol - startLineInstance.startCol, - endLineInstance.line, - endCol - endLineInstance.startCol, - range.count - )); - } + if (isAbsolute(candidatePath)) { + return candidatePath + } else { + return resolve(dirname(this.path), candidatePath) + } + } - // record the lines (we record these as statements, such that we're - // compatible with Istanbul 2.0). - lines.forEach(line => { - // make sure branch spans entire line; don't record 'goodbye' - // branch in `const foo = true ? 'hello' : 'goodbye'` as a - // 0 for line coverage. - // - // All lines start out with coverage of 1, and are later set to 0 - // if they are not invoked; line.ignore prevents a line from being - // set to 0, and is set if the special comment /* c8 ignore next */ - // is used. - - if (startCol <= line.startCol && endCol >= line.endCol && !line.ignore) { - line.count = range.count; - } - }); - }); - }); - } - - _maybeRemapStartColEndCol (range) { - let covSource = this.covSources[0].source; - let startCol = Math.max(0, range.startOffset - covSource.wrapperLength); - let endCol = Math.min(covSource.eof, range.endOffset - covSource.wrapperLength); - let path = this.path; - - if (this.sourceMap) { - startCol = Math.max(0, range.startOffset - this.sourceTranspiled.wrapperLength); - endCol = Math.min(this.sourceTranspiled.eof, range.endOffset - this.sourceTranspiled.wrapperLength); - - const { startLine, relStartCol, endLine, relEndCol, source } = this.sourceTranspiled.offsetToOriginalRelative( - this.sourceMap, - startCol, - endCol - ); - - const matchingSource = this.covSources.find(covSource => covSource.path === source); - covSource = matchingSource ? matchingSource.source : this.covSources[0].source; - path = matchingSource ? matchingSource.path : this.covSources[0].path; - - // next we convert these relative positions back to absolute positions - // in the original source (which is the format expected in the next step). - startCol = covSource.relativeToOffset(startLine, relStartCol); - endCol = covSource.relativeToOffset(endLine, relEndCol); - } + applyCoverage (blocks) { + blocks.forEach(block => { + block.ranges.forEach((range, i) => { + const { startCol, endCol, path, covSource } = this._maybeRemapStartColEndCol(range); + if (this.excludePath(path)) { + return + } + let lines; + if (block.functionName === '(empty-report)') { + // (empty-report), this will result in a report that has all lines zeroed out. + lines = covSource.lines.filter((line) => { + line.count = 0; + return true + }); + this.all = lines.length > 0; + } else { + lines = sliceRange(covSource.lines, startCol, endCol); + } + if (!lines.length) { + return + } - return { - path, - covSource, - startCol, - endCol - } - } - - getInnerIstanbul (source, path) { - // We apply the "Resolving Sources" logic (as defined in - // sourcemaps.info/spec.html) as a final step for 1:many source maps. - // for 1:1 source maps, the resolve logic is applied while loading. - // - // TODO: could we move the resolving logic for 1:1 source maps to the final - // step as well? currently this breaks some tests in c8. - let resolvedPath = path; - if (this.rawSourceMap && this.rawSourceMap.sourcemap.sources.length > 1) { - resolvedPath = this._resolveSource(this.rawSourceMap, path); - } + const startLineInstance = lines[0]; + const endLineInstance = lines[lines.length - 1]; + + if (block.isBlockCoverage) { + this.branches[path] = this.branches[path] || []; + // record branches. + this.branches[path].push(new CovBranch( + startLineInstance.line, + startCol - startLineInstance.startCol, + endLineInstance.line, + endCol - endLineInstance.startCol, + range.count + )); + + // if block-level granularity is enabled, we still create a single + // CovFunction tracking object for each set of ranges. + if (block.functionName && i === 0) { + this.functions[path] = this.functions[path] || []; + this.functions[path].push(new CovFunction( + block.functionName, + startLineInstance.line, + startCol - startLineInstance.startCol, + endLineInstance.line, + endCol - endLineInstance.startCol, + range.count + )); + } + } else if (block.functionName) { + this.functions[path] = this.functions[path] || []; + // record functions. + this.functions[path].push(new CovFunction( + block.functionName, + startLineInstance.line, + startCol - startLineInstance.startCol, + endLineInstance.line, + endCol - endLineInstance.startCol, + range.count + )); + } - if (this.excludePath(resolvedPath)) { - return - } + // record the lines (we record these as statements, such that we're + // compatible with Istanbul 2.0). + lines.forEach(line => { + // make sure branch spans entire line; don't record 'goodbye' + // branch in `const foo = true ? 'hello' : 'goodbye'` as a + // 0 for line coverage. + // + // All lines start out with coverage of 1, and are later set to 0 + // if they are not invoked; line.ignore prevents a line from being + // set to 0, and is set if the special comment /* c8 ignore next */ + // is used. + + if (startCol <= line.startCol && endCol >= line.endCol && !line.ignore) { + line.count = range.count; + } + }); + }); + }); + } - return { - [resolvedPath]: { - path: resolvedPath, - all: this.all, - ...this._statementsToIstanbul(source, path), - ...this._branchesToIstanbul(source, path), - ...this._functionsToIstanbul(source, path) - } - } - } + _maybeRemapStartColEndCol (range) { + let covSource = this.covSources[0].source; + let startCol = Math.max(0, range.startOffset - covSource.wrapperLength); + let endCol = Math.min(covSource.eof, range.endOffset - covSource.wrapperLength); + let path = this.path; - toIstanbul () { - return this.covSources.reduce((istanbulOuter, { source, path }) => Object.assign(istanbulOuter, this.getInnerIstanbul(source, path)), {}) - } + if (this.sourceMap) { + startCol = Math.max(0, range.startOffset - this.sourceTranspiled.wrapperLength); + endCol = Math.min(this.sourceTranspiled.eof, range.endOffset - this.sourceTranspiled.wrapperLength); - _statementsToIstanbul (source, path) { - const statements = { - statementMap: {}, - s: {} - }; - source.lines.forEach((line, index) => { - statements.statementMap[`${index}`] = line.toIstanbul(); - statements.s[`${index}`] = line.count; - }); - return statements - } + const { startLine, relStartCol, endLine, relEndCol, source } = this.sourceTranspiled.offsetToOriginalRelative( + this.sourceMap, + startCol, + endCol + ); - _branchesToIstanbul (source, path) { - const branches = { - branchMap: {}, - b: {} - }; - this.branches[path] = this.branches[path] || []; - this.branches[path].forEach((branch, index) => { - const srcLine = source.lines[branch.startLine - 1]; - const ignore = srcLine === undefined ? true : srcLine.ignore; - branches.branchMap[`${index}`] = branch.toIstanbul(); - branches.b[`${index}`] = [ignore ? 1 : branch.count]; - }); - return branches - } + const matchingSource = this.covSources.find(covSource => covSource.path === source); + covSource = matchingSource ? matchingSource.source : this.covSources[0].source; + path = matchingSource ? matchingSource.path : this.covSources[0].path; - _functionsToIstanbul (source, path) { - const functions = { - fnMap: {}, - f: {} - }; - this.functions[path] = this.functions[path] || []; - this.functions[path].forEach((fn, index) => { - const srcLine = source.lines[fn.startLine - 1]; - const ignore = srcLine === undefined ? true : srcLine.ignore; - functions.fnMap[`${index}`] = fn.toIstanbul(); - functions.f[`${index}`] = ignore ? 1 : fn.count; - }); - return functions - } -}; + // next we convert these relative positions back to absolute positions + // in the original source (which is the format expected in the next step). + startCol = covSource.relativeToOffset(startLine, relStartCol); + endCol = covSource.relativeToOffset(endLine, relEndCol); + } + + return { + path, + covSource, + startCol, + endCol + } + } + + getInnerIstanbul (source, path) { + // We apply the "Resolving Sources" logic (as defined in + // sourcemaps.info/spec.html) as a final step for 1:many source maps. + // for 1:1 source maps, the resolve logic is applied while loading. + // + // TODO: could we move the resolving logic for 1:1 source maps to the final + // step as well? currently this breaks some tests in c8. + let resolvedPath = path; + if (this.rawSourceMap && this.rawSourceMap.sourcemap.sources.length > 1) { + resolvedPath = this._resolveSource(this.rawSourceMap, path); + } + + if (this.excludePath(resolvedPath)) { + return + } + + return { + [resolvedPath]: { + path: resolvedPath, + all: this.all, + ...this._statementsToIstanbul(source, path), + ...this._branchesToIstanbul(source, path), + ...this._functionsToIstanbul(source, path) + } + } + } + + toIstanbul () { + return this.covSources.reduce((istanbulOuter, { source, path }) => Object.assign(istanbulOuter, this.getInnerIstanbul(source, path)), {}) + } + + _statementsToIstanbul (source, path) { + const statements = { + statementMap: {}, + s: {} + }; + source.lines.forEach((line, index) => { + statements.statementMap[`${index}`] = line.toIstanbul(); + statements.s[`${index}`] = line.count; + }); + return statements + } + + _branchesToIstanbul (source, path) { + const branches = { + branchMap: {}, + b: {} + }; + this.branches[path] = this.branches[path] || []; + this.branches[path].forEach((branch, index) => { + const srcLine = source.lines[branch.startLine - 1]; + const ignore = srcLine === undefined ? true : srcLine.ignore; + branches.branchMap[`${index}`] = branch.toIstanbul(); + branches.b[`${index}`] = [ignore ? 1 : branch.count]; + }); + return branches + } + + _functionsToIstanbul (source, path) { + const functions = { + fnMap: {}, + f: {} + }; + this.functions[path] = this.functions[path] || []; + this.functions[path].forEach((fn, index) => { + const srcLine = source.lines[fn.startLine - 1]; + const ignore = srcLine === undefined ? true : srcLine.ignore; + functions.fnMap[`${index}`] = fn.toIstanbul(); + functions.f[`${index}`] = ignore ? 1 : fn.count; + }); + return functions + } + }; -function parsePath (scriptPath) { - return scriptPath.startsWith('file://') ? fileURLToPath$1(scriptPath) : scriptPath + function parsePath (scriptPath) { + return scriptPath.startsWith('file://') ? fileURLToPath(scriptPath) : scriptPath + } + return v8ToIstanbul$1; } -const V8ToIstanbul = v8ToIstanbul$1; +var v8ToIstanbul; +var hasRequiredV8ToIstanbul; -var v8ToIstanbul = function (path, wrapperLength, sources, excludePath) { - return new V8ToIstanbul(path, wrapperLength, sources, excludePath) -}; +function requireV8ToIstanbul () { + if (hasRequiredV8ToIstanbul) return v8ToIstanbul; + hasRequiredV8ToIstanbul = 1; + const V8ToIstanbul = requireV8ToIstanbul$1(); -var isCjsEsmBridge = ({ functions }) => { - // https://github.com/nodejs/node/blob/v12.1.0/lib/internal/modules/esm/create_dynamic_module.js#L11-L19 - return functions.length === 3 && - functions[0].functionName === '' && - functions[0].isBlockCoverage === true && - functions[1].functionName === 'get' && - functions[1].isBlockCoverage === false && - functions[2].functionName === 'set' && - functions[2].isBlockCoverage === true -}; + v8ToIstanbul = function (path, wrapperLength, sources, excludePath) { + return new V8ToIstanbul(path, wrapperLength, sources, excludePath) + }; + return v8ToIstanbul; +} + +var isCjsEsmBridge; +var hasRequiredIsCjsEsmBridge; + +function requireIsCjsEsmBridge () { + if (hasRequiredIsCjsEsmBridge) return isCjsEsmBridge; + hasRequiredIsCjsEsmBridge = 1; + isCjsEsmBridge = ({ functions }) => { + // https://github.com/nodejs/node/blob/v12.1.0/lib/internal/modules/esm/create_dynamic_module.js#L11-L19 + return functions.length === 3 && + functions[0].functionName === '' && + functions[0].isBlockCoverage === true && + functions[1].functionName === 'get' && + functions[1].isBlockCoverage === false && + functions[2].functionName === 'set' && + functions[2].isBlockCoverage === true + }; + return isCjsEsmBridge; +} /** * Compares two script coverages. @@ -10734,348 +10974,365 @@ var lib = /*#__PURE__*/Object.freeze({ var require$$11 = /*@__PURE__*/getAugmentedNamespace(lib); -const Exclude = testExclude; -const libCoverage = istanbulLibCoverageExports; -const libReport = istanbulLibReport; -const reports = istanbulReports; -const { readdirSync, readFileSync, statSync } = require$$0$1; -const { isAbsolute, resolve, extname } = require$$0; -const { pathToFileURL, fileURLToPath } = require$$1$1; -const getSourceMapFromFile = sourceMapFromFile_1; -// TODO: switch back to @c88/v8-coverage once patch is landed. -const v8toIstanbul = v8ToIstanbul; -const isCjsEsmBridgeCov = isCjsEsmBridge; -const util = require$$2; -const debuglog = util.debuglog('c8'); - -let Report$1 = class Report { - constructor ({ - exclude, - extension, - excludeAfterRemap, - include, - reporter, - reporterOptions, - reportsDirectory, - tempDirectory, - watermarks, - omitRelative, - wrapperLength, - resolve: resolvePaths, - all, - src, - allowExternal = false, - skipFull, - excludeNodeModules - }) { - this.reporter = reporter; - this.reporterOptions = reporterOptions || {}; - this.reportsDirectory = reportsDirectory; - this.tempDirectory = tempDirectory; - this.watermarks = watermarks; - this.resolve = resolvePaths; - this.exclude = new Exclude({ - exclude: exclude, - include: include, - extension: extension, - relativePath: !allowExternal, - excludeNodeModules: excludeNodeModules - }); - this.excludeAfterRemap = excludeAfterRemap; - this.shouldInstrumentCache = new Map(); - this.omitRelative = omitRelative; - this.sourceMapCache = {}; - this.wrapperLength = wrapperLength; - this.all = all; - this.src = this._getSrc(src); - this.skipFull = skipFull; - } - - _getSrc (src) { - if (typeof src === 'string') { - return [src] - } else if (Array.isArray(src)) { - return src - } else { - return [process.cwd()] - } - } +var report; +var hasRequiredReport; + +function requireReport () { + if (hasRequiredReport) return report; + hasRequiredReport = 1; + const Exclude = requireTestExclude(); + const libCoverage = requireIstanbulLibCoverage(); + const libReport = requireIstanbulLibReport(); + const reports = requireIstanbulReports(); + const { readdirSync, readFileSync, statSync } = require$$0$1; + const { isAbsolute, resolve, extname } = require$$0; + const { pathToFileURL, fileURLToPath } = require$$1$1; + const getSourceMapFromFile = requireSourceMapFromFile(); + // TODO: switch back to @c88/v8-coverage once patch is landed. + const v8toIstanbul = requireV8ToIstanbul(); + const isCjsEsmBridgeCov = requireIsCjsEsmBridge(); + const util = require$$2; + const debuglog = util.debuglog('c8'); + + class Report { + constructor ({ + exclude, + extension, + excludeAfterRemap, + include, + reporter, + reporterOptions, + reportsDirectory, + tempDirectory, + watermarks, + omitRelative, + wrapperLength, + resolve: resolvePaths, + all, + src, + allowExternal = false, + skipFull, + excludeNodeModules + }) { + this.reporter = reporter; + this.reporterOptions = reporterOptions || {}; + this.reportsDirectory = reportsDirectory; + this.tempDirectory = tempDirectory; + this.watermarks = watermarks; + this.resolve = resolvePaths; + this.exclude = new Exclude({ + exclude: exclude, + include: include, + extension: extension, + relativePath: !allowExternal, + excludeNodeModules: excludeNodeModules + }); + this.excludeAfterRemap = excludeAfterRemap; + this.shouldInstrumentCache = new Map(); + this.omitRelative = omitRelative; + this.sourceMapCache = {}; + this.wrapperLength = wrapperLength; + this.all = all; + this.src = this._getSrc(src); + this.skipFull = skipFull; + } + + _getSrc (src) { + if (typeof src === 'string') { + return [src] + } else if (Array.isArray(src)) { + return src + } else { + return [process.cwd()] + } + } - async run () { - const context = libReport.createContext({ - dir: this.reportsDirectory, - watermarks: this.watermarks, - coverageMap: await this.getCoverageMapFromAllCoverageFiles() - }); + async run () { + const context = libReport.createContext({ + dir: this.reportsDirectory, + watermarks: this.watermarks, + coverageMap: await this.getCoverageMapFromAllCoverageFiles() + }); - for (const _reporter of this.reporter) { - reports.create(_reporter, { - skipEmpty: false, - skipFull: this.skipFull, - maxCols: process.stdout.columns || 100, - ...this.reporterOptions[_reporter] - }).execute(context); - } - } - - async getCoverageMapFromAllCoverageFiles () { - // the merge process can be very expensive, and it's often the case that - // check-coverage is called immediately after a report. We memoize the - // result from getCoverageMapFromAllCoverageFiles() to address this - // use-case. - if (this._allCoverageFiles) return this._allCoverageFiles - - const map = libCoverage.createCoverageMap(); - const v8ProcessCov = this._getMergedProcessCov(); - const resultCountPerPath = new Map(); - const possibleCjsEsmBridges = new Map(); - - for (const v8ScriptCov of v8ProcessCov.result) { - try { - const sources = this._getSourceMap(v8ScriptCov); - const path = resolve(this.resolve, v8ScriptCov.url); - const converter = v8toIstanbul(path, this.wrapperLength, sources, (path) => { - if (this.excludeAfterRemap) { - return !this._shouldInstrument(path) - } - }); - await converter.load(); - - if (resultCountPerPath.has(path)) { - resultCountPerPath.set(path, resultCountPerPath.get(path) + 1); - } else { - resultCountPerPath.set(path, 0); - } + for (const _reporter of this.reporter) { + reports.create(_reporter, { + skipEmpty: false, + skipFull: this.skipFull, + maxCols: process.stdout.columns || 100, + ...this.reporterOptions[_reporter] + }).execute(context); + } + } - if (isCjsEsmBridgeCov(v8ScriptCov)) { - possibleCjsEsmBridges.set(converter, { - path, - functions: v8ScriptCov.functions - }); - } else { - converter.applyCoverage(v8ScriptCov.functions); - map.merge(converter.toIstanbul()); - } - } catch (err) { - debuglog(`file: ${v8ScriptCov.url} error: ${err.stack}`); - } - } + async getCoverageMapFromAllCoverageFiles () { + // the merge process can be very expensive, and it's often the case that + // check-coverage is called immediately after a report. We memoize the + // result from getCoverageMapFromAllCoverageFiles() to address this + // use-case. + if (this._allCoverageFiles) return this._allCoverageFiles - for (const [converter, { path, functions }] of possibleCjsEsmBridges) { - if (resultCountPerPath.get(path) <= 1) { - converter.applyCoverage(functions); - map.merge(converter.toIstanbul()); - } - } - this._allCoverageFiles = map; - return this._allCoverageFiles - } - - /** - * Returns source-map and fake source file, if cached during Node.js' - * execution. This is used to support tools like ts-node, which transpile - * using runtime hooks. - * - * Note: requires Node.js 13+ - * - * @return {Object} sourceMap and fake source file (created from line #s). - * @private - */ - _getSourceMap (v8ScriptCov) { - const sources = {}; - const sourceMapAndLineLengths = this.sourceMapCache[pathToFileURL(v8ScriptCov.url).href]; - if (sourceMapAndLineLengths) { - // See: https://github.com/nodejs/node/pull/34305 - if (!sourceMapAndLineLengths.data) return - sources.sourceMap = { - sourcemap: sourceMapAndLineLengths.data - }; - if (sourceMapAndLineLengths.lineLengths) { - let source = ''; - sourceMapAndLineLengths.lineLengths.forEach(length => { - source += `${''.padEnd(length, '.')}\n`; - }); - sources.source = source; - } - } - return sources - } - - /** - * Returns the merged V8 process coverage. - * - * The result is computed from the individual process coverages generated - * by Node. It represents the sum of their counts. - * - * @return {ProcessCov} Merged V8 process coverage. - * @private - */ - _getMergedProcessCov () { - const { mergeProcessCovs } = require$$11; - const v8ProcessCovs = []; - const fileIndex = new Set(); // Set - for (const v8ProcessCov of this._loadReports()) { - if (this._isCoverageObject(v8ProcessCov)) { - if (v8ProcessCov['source-map-cache']) { - Object.assign(this.sourceMapCache, this._normalizeSourceMapCache(v8ProcessCov['source-map-cache'])); - } - v8ProcessCovs.push(this._normalizeProcessCov(v8ProcessCov, fileIndex)); - } - } + const map = libCoverage.createCoverageMap(); + const v8ProcessCov = this._getMergedProcessCov(); + const resultCountPerPath = new Map(); + const possibleCjsEsmBridges = new Map(); - if (this.all) { - const emptyReports = []; - v8ProcessCovs.unshift({ - result: emptyReports - }); - const workingDirs = this.src; - const { extension } = this.exclude; - for (const workingDir of workingDirs) { - this.exclude.globSync(workingDir).forEach((f) => { - const fullPath = resolve(workingDir, f); - if (!fileIndex.has(fullPath)) { - const ext = extname(fullPath); - if (extension.includes(ext)) { - const stat = statSync(fullPath); - const sourceMap = getSourceMapFromFile(fullPath); - if (sourceMap) { - this.sourceMapCache[pathToFileURL(fullPath)] = { data: sourceMap }; - } - emptyReports.push({ - scriptId: 0, - url: resolve(fullPath), - functions: [{ - functionName: '(empty-report)', - ranges: [{ - startOffset: 0, - endOffset: stat.size, - count: 0 - }], - isBlockCoverage: true - }] - }); - } - } - }); - } - } + for (const v8ScriptCov of v8ProcessCov.result) { + try { + const sources = this._getSourceMap(v8ScriptCov); + const path = resolve(this.resolve, v8ScriptCov.url); + const converter = v8toIstanbul(path, this.wrapperLength, sources, (path) => { + if (this.excludeAfterRemap) { + return !this._shouldInstrument(path) + } + }); + await converter.load(); - return mergeProcessCovs(v8ProcessCovs) - } - - /** - * Make sure v8ProcessCov actually contains coverage information. - * - * @return {boolean} does it look like v8ProcessCov? - * @private - */ - _isCoverageObject (maybeV8ProcessCov) { - return maybeV8ProcessCov && Array.isArray(maybeV8ProcessCov.result) - } - - /** - * Returns the list of V8 process coverages generated by Node. - * - * @return {ProcessCov[]} Process coverages generated by Node. - * @private - */ - _loadReports () { - const reports = []; - for (const file of readdirSync(this.tempDirectory)) { - try { - reports.push(JSON.parse(readFileSync( - resolve(this.tempDirectory, file), - 'utf8' - ))); - } catch (err) { - debuglog(`${err.stack}`); - } - } - return reports - } - - /** - * Normalizes a process coverage. - * - * This function replaces file URLs (`url` property) by their corresponding - * system-dependent path and applies the current inclusion rules to filter out - * the excluded script coverages. - * - * The result is a copy of the input, with script coverages filtered based - * on their `url` and the current inclusion rules. - * There is no deep cloning. - * - * @param v8ProcessCov V8 process coverage to normalize. - * @param fileIndex a Set of paths discovered in coverage - * @return {v8ProcessCov} Normalized V8 process coverage. - * @private - */ - _normalizeProcessCov (v8ProcessCov, fileIndex) { - const result = []; - for (const v8ScriptCov of v8ProcessCov.result) { - // https://github.com/nodejs/node/pull/35498 updates Node.js' - // builtin module filenames: - if (/^node:/.test(v8ScriptCov.url)) { - v8ScriptCov.url = `${v8ScriptCov.url.replace(/^node:/, '')}.js`; - } - if (/^file:\/\//.test(v8ScriptCov.url)) { - try { - v8ScriptCov.url = fileURLToPath(v8ScriptCov.url); - fileIndex.add(v8ScriptCov.url); - } catch (err) { - debuglog(`${err.stack}`); - continue - } - } - if ((!this.omitRelative || isAbsolute(v8ScriptCov.url))) { - if (this.excludeAfterRemap || this._shouldInstrument(v8ScriptCov.url)) { - result.push(v8ScriptCov); - } - } - } - return { result } - } - - /** - * Normalizes a V8 source map cache. - * - * This function normalizes file URLs to a system-independent format. - * - * @param v8SourceMapCache V8 source map cache to normalize. - * @return {v8SourceMapCache} Normalized V8 source map cache. - * @private - */ - _normalizeSourceMapCache (v8SourceMapCache) { - const cache = {}; - for (const fileURL of Object.keys(v8SourceMapCache)) { - cache[pathToFileURL(fileURLToPath(fileURL)).href] = v8SourceMapCache[fileURL]; - } - return cache - } - - /** - * this.exclude.shouldInstrument with cache - * - * @private - * @return {boolean} - */ - _shouldInstrument (filename) { - const cacheResult = this.shouldInstrumentCache.get(filename); - if (cacheResult !== undefined) { - return cacheResult - } + if (resultCountPerPath.has(path)) { + resultCountPerPath.set(path, resultCountPerPath.get(path) + 1); + } else { + resultCountPerPath.set(path, 0); + } - const result = this.exclude.shouldInstrument(filename); - this.shouldInstrumentCache.set(filename, result); - return result - } -}; + if (isCjsEsmBridgeCov(v8ScriptCov)) { + possibleCjsEsmBridges.set(converter, { + path, + functions: v8ScriptCov.functions + }); + } else { + converter.applyCoverage(v8ScriptCov.functions); + map.merge(converter.toIstanbul()); + } + } catch (err) { + debuglog(`file: ${v8ScriptCov.url} error: ${err.stack}`); + } + } -var report = function (opts) { - return new Report$1(opts) -}; + for (const [converter, { path, functions }] of possibleCjsEsmBridges) { + if (resultCountPerPath.get(path) <= 1) { + converter.applyCoverage(functions); + map.merge(converter.toIstanbul()); + } + } + this._allCoverageFiles = map; + return this._allCoverageFiles + } + + /** + * Returns source-map and fake source file, if cached during Node.js' + * execution. This is used to support tools like ts-node, which transpile + * using runtime hooks. + * + * Note: requires Node.js 13+ + * + * @return {Object} sourceMap and fake source file (created from line #s). + * @private + */ + _getSourceMap (v8ScriptCov) { + const sources = {}; + const sourceMapAndLineLengths = this.sourceMapCache[pathToFileURL(v8ScriptCov.url).href]; + if (sourceMapAndLineLengths) { + // See: https://github.com/nodejs/node/pull/34305 + if (!sourceMapAndLineLengths.data) return + sources.sourceMap = { + sourcemap: sourceMapAndLineLengths.data + }; + if (sourceMapAndLineLengths.lineLengths) { + let source = ''; + sourceMapAndLineLengths.lineLengths.forEach(length => { + source += `${''.padEnd(length, '.')}\n`; + }); + sources.source = source; + } + } + return sources + } + + /** + * Returns the merged V8 process coverage. + * + * The result is computed from the individual process coverages generated + * by Node. It represents the sum of their counts. + * + * @return {ProcessCov} Merged V8 process coverage. + * @private + */ + _getMergedProcessCov () { + const { mergeProcessCovs } = require$$11; + const v8ProcessCovs = []; + const fileIndex = new Set(); // Set + for (const v8ProcessCov of this._loadReports()) { + if (this._isCoverageObject(v8ProcessCov)) { + if (v8ProcessCov['source-map-cache']) { + Object.assign(this.sourceMapCache, this._normalizeSourceMapCache(v8ProcessCov['source-map-cache'])); + } + v8ProcessCovs.push(this._normalizeProcessCov(v8ProcessCov, fileIndex)); + } + } + + if (this.all) { + const emptyReports = []; + v8ProcessCovs.unshift({ + result: emptyReports + }); + const workingDirs = this.src; + const { extension } = this.exclude; + for (const workingDir of workingDirs) { + this.exclude.globSync(workingDir).forEach((f) => { + const fullPath = resolve(workingDir, f); + if (!fileIndex.has(fullPath)) { + const ext = extname(fullPath); + if (extension.includes(ext)) { + const stat = statSync(fullPath); + const sourceMap = getSourceMapFromFile(fullPath); + if (sourceMap) { + this.sourceMapCache[pathToFileURL(fullPath)] = { data: sourceMap }; + } + emptyReports.push({ + scriptId: 0, + url: resolve(fullPath), + functions: [{ + functionName: '(empty-report)', + ranges: [{ + startOffset: 0, + endOffset: stat.size, + count: 0 + }], + isBlockCoverage: true + }] + }); + } + } + }); + } + } + + return mergeProcessCovs(v8ProcessCovs) + } + + /** + * Make sure v8ProcessCov actually contains coverage information. + * + * @return {boolean} does it look like v8ProcessCov? + * @private + */ + _isCoverageObject (maybeV8ProcessCov) { + return maybeV8ProcessCov && Array.isArray(maybeV8ProcessCov.result) + } + + /** + * Returns the list of V8 process coverages generated by Node. + * + * @return {ProcessCov[]} Process coverages generated by Node. + * @private + */ + _loadReports () { + const reports = []; + for (const file of readdirSync(this.tempDirectory)) { + try { + reports.push(JSON.parse(readFileSync( + resolve(this.tempDirectory, file), + 'utf8' + ))); + } catch (err) { + debuglog(`${err.stack}`); + } + } + return reports + } + + /** + * Normalizes a process coverage. + * + * This function replaces file URLs (`url` property) by their corresponding + * system-dependent path and applies the current inclusion rules to filter out + * the excluded script coverages. + * + * The result is a copy of the input, with script coverages filtered based + * on their `url` and the current inclusion rules. + * There is no deep cloning. + * + * @param v8ProcessCov V8 process coverage to normalize. + * @param fileIndex a Set of paths discovered in coverage + * @return {v8ProcessCov} Normalized V8 process coverage. + * @private + */ + _normalizeProcessCov (v8ProcessCov, fileIndex) { + const result = []; + for (const v8ScriptCov of v8ProcessCov.result) { + // https://github.com/nodejs/node/pull/35498 updates Node.js' + // builtin module filenames: + if (/^node:/.test(v8ScriptCov.url)) { + v8ScriptCov.url = `${v8ScriptCov.url.replace(/^node:/, '')}.js`; + } + if (/^file:\/\//.test(v8ScriptCov.url)) { + try { + v8ScriptCov.url = fileURLToPath(v8ScriptCov.url); + fileIndex.add(v8ScriptCov.url); + } catch (err) { + debuglog(`${err.stack}`); + continue + } + } + if ((!this.omitRelative || isAbsolute(v8ScriptCov.url))) { + if (this.excludeAfterRemap || this._shouldInstrument(v8ScriptCov.url)) { + result.push(v8ScriptCov); + } + } + } + return { result } + } + + /** + * Normalizes a V8 source map cache. + * + * This function normalizes file URLs to a system-independent format. + * + * @param v8SourceMapCache V8 source map cache to normalize. + * @return {v8SourceMapCache} Normalized V8 source map cache. + * @private + */ + _normalizeSourceMapCache (v8SourceMapCache) { + const cache = {}; + for (const fileURL of Object.keys(v8SourceMapCache)) { + cache[pathToFileURL(fileURLToPath(fileURL)).href] = v8SourceMapCache[fileURL]; + } + return cache + } + + /** + * this.exclude.shouldInstrument with cache + * + * @private + * @return {boolean} + */ + _shouldInstrument (filename) { + const cacheResult = this.shouldInstrumentCache.get(filename); + if (cacheResult !== undefined) { + return cacheResult + } + + const result = this.exclude.shouldInstrument(filename); + this.shouldInstrumentCache.set(filename, result); + return result + } + } + + report = function (opts) { + return new Report(opts) + }; + return report; +} + +var hasRequiredC8; + +function requireC8 () { + if (hasRequiredC8) return c8; + hasRequiredC8 = 1; + c8.Report = requireReport(); + return c8; +} -var Report = report; +var c8Exports = requireC8(); // bazel will create the COVERAGE_OUTPUT_FILE whilst setting up the sandbox. // therefore, should be doing a file size check rather than presence. @@ -11100,7 +11357,7 @@ const include = require$$0$1 const pwd = require$$0.join(process.env.RUNFILES, process.env.TEST_WORKSPACE); process.chdir(pwd); -new Report({ +new c8Exports.Report({ include: include, exclude: include.length === 0 ? ['**'] : [], reportsDirectory: process.env.COVERAGE_DIR, diff --git a/js/private/worker/src/BUILD.bazel b/js/private/worker/src/BUILD.bazel index 921cf1517..17e0d39e1 100644 --- a/js/private/worker/src/BUILD.bazel +++ b/js/private/worker/src/BUILD.bazel @@ -7,13 +7,12 @@ rollup_bin.rollup( name = "bundle", srcs = [ "index.ts", - "rollup.config.js", + "rollup.config.mjs", "size.ts", "worker_protocol.ts", ":node_modules/@rollup/plugin-commonjs", ":node_modules/@rollup/plugin-json", ":node_modules/@rollup/plugin-node-resolve", - ":node_modules/@rollup/plugin-terser", ":node_modules/@rollup/plugin-typescript", ":node_modules/@types/google-protobuf", ":node_modules/@types/node", @@ -27,7 +26,7 @@ rollup_bin.rollup( args = [ "index.ts", "--config", - "rollup.config.js", + "rollup.config.mjs", "--format", "cjs", "--file", diff --git a/js/private/worker/src/package.json b/js/private/worker/src/package.json index 65c00a82e..b6bacd968 100644 --- a/js/private/worker/src/package.json +++ b/js/private/worker/src/package.json @@ -3,13 +3,12 @@ "google-protobuf": "3.21.4" }, "devDependencies": { - "rollup": "2.79.2", - "@rollup/plugin-commonjs": "23.0.7", - "@rollup/plugin-node-resolve": "15.3.0", - "@rollup/plugin-json": "5.0.2", + "rollup": "4.39.0", + "@rollup/plugin-commonjs": "28.0.3", + "@rollup/plugin-node-resolve": "16.0.1", + "@rollup/plugin-json": "6.1.0", "@types/google-protobuf": "3.15.12", - "@rollup/plugin-typescript": "10.0.1", - "@rollup/plugin-terser": "0.4.4", + "@rollup/plugin-typescript": "12.1.2", "@types/node": "18.19.54", "typescript": "4.9.5", "tslib": "2.7.0", diff --git a/js/private/worker/src/rollup.config.js b/js/private/worker/src/rollup.config.mjs similarity index 58% rename from js/private/worker/src/rollup.config.js rename to js/private/worker/src/rollup.config.mjs index 18d8fdfd2..a5c36f366 100644 --- a/js/private/worker/src/rollup.config.js +++ b/js/private/worker/src/rollup.config.mjs @@ -2,12 +2,8 @@ import resolve from '@rollup/plugin-node-resolve' import commonjs from '@rollup/plugin-commonjs' import json from '@rollup/plugin-json' import ts from '@rollup/plugin-typescript' -import terser from '@rollup/plugin-terser' /** @type {import("rollup").RollupOptions} */ export default { - plugins: [resolve(), commonjs(), json(), ts({ sourceMap: true }), terser()], - output: { - sourcemap: 'inline', - }, + plugins: [resolve(), commonjs(), json(), ts()], } diff --git a/js/private/worker/worker.js b/js/private/worker/worker.js index f8df1a89e..38eec074f 100644 --- a/js/private/worker/worker.js +++ b/js/private/worker/worker.js @@ -1,2 +1,1258 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("stream"),e=function(t,o){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o])},e(t,o)};function o(t,o){if("function"!=typeof o&&null!==o)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function r(){this.constructor=t}e(t,o),t.prototype=null===o?Object.create(o):(r.prototype=o.prototype,new r)}function r(t,e,o,r){return new(o||(o=Promise))((function(n,i){function p(t){try{s(r.next(t))}catch(t){i(t)}}function a(t){try{s(r.throw(t))}catch(t){i(t)}}function s(t){var e;t.done?n(t.value):(e=t.value,e instanceof o?e:new o((function(t){t(e)}))).then(p,a)}s((r=r.apply(t,e||[])).next())}))}function n(t,e){var o,r,n,i={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]},p=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return p.next=a(0),p.throw=a(1),p.return=a(2),"function"==typeof Symbol&&(p[Symbol.iterator]=function(){return this}),p;function a(a){return function(s){return function(a){if(o)throw new TypeError("Generator is already executing.");for(;p&&(p=0,a[0]&&(i=0)),i;)try{if(o=1,r&&(n=2&a[0]?r.return:a[0]?r.throw||((n=r.return)&&n.call(r),0):r.next)&&!(n=n.call(r,a[1])).done)return n;switch(r=0,n&&(a=[2&a[0],n.value]),a[0]){case 0:case 1:n=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(n=i.trys,(n=n.length>0&&n[n.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!n||a[1]>n[0]&&a[1]=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function p(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,o=t[Symbol.asyncIterator];return o?o.call(t):(t=i(t),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(o){e[o]=t[o]&&function(e){return new Promise((function(r,n){(function(t,e,o,r){Promise.resolve(r).then((function(e){t({value:e,done:o})}),e)})(r,n,(e=t[o](e)).done,e.value)}))}}}function a(t,e,o,r){if("a"===o&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===o?r:"a"===o?r.call(t):r?r.value:e.get(t)}"function"==typeof SuppressedError&&SuppressedError;var s="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};!function(){function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var o=0;o=arguments.length?Array.prototype.slice.call(t,e):Array.prototype.slice.call(t,e,o)}function g(t,e,o,r){var n="Assertion failed";if(o){n+=": "+o;var i=r}else t&&(n+=": "+t,i=e);throw Error(n,i||[])}function v(t,e,o){for(var r=[],n=2;n=t.length)return String.fromCharCode.apply(null,t);for(var e="",o=0;o>2;n=(3&n)<<4|p>>4,p=(15&p)<<2|s>>6,s&=63,a||(s=64,i||(p=64)),o.push(e[u],e[n],e[p]||"",e[s]||"")}return o.join("")}function I(t){var e=t.length,o=3*e/4;o%3?o=Math.floor(o):-1!="=.".indexOf(t[e-1])&&(o=-1!="=.".indexOf(t[e-2])?o-2:o-1);var r=new Uint8Array(o),n=0;return function(t,e){function o(e){for(;r>4),64!=p&&(e(i<<4&240|p>>2),64!=a&&e(p<<6&192|a))}}(t,(function(t){r[n++]=t})),r.subarray(0,n)}function C(){if(!E){E={};for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),e=["+/=","+/","-_=","-_.","-_"],o=0;5>o;o++){var r=t.concat(e[o].split(""));P[o]=r;for(var n=0;n>>0;t=Math.floor((t-e)/4294967296)>>>0,R=e,T=t}function z(t){var e=0>t,o=(t=Math.abs(t))>>>0;t=Math.floor((t-o)/4294967296),t>>>=0,e&&(t=~t>>>0,4294967295<(o=1+(~o>>>0))&&(o=0,4294967295<++t&&(t=0))),R=o,T=t}function W(t){var e=0>t;U(t=2*Math.abs(t)),t=R;var o=T;e&&(0==t?0==o?o=t=4294967295:(o--,t=4294967295):t--),R=t,T=o}function L(t){var e=0>t?1:0;if(0===(t=e?-t:t))0<1/t?R=T=0:(T=0,R=2147483648);else if(isNaN(t))T=0,R=2147483647;else if(34028234663852886e22>>0;else if(11754943508222875e-54>t)t=Math.round(t/Math.pow(2,-149)),T=0,R=(e<<31|t)>>>0;else{var o=Math.floor(Math.log(t)/Math.LN2);t*=Math.pow(2,-o),16777216<=(t=Math.round(8388608*t))&&++o,T=0,R=(e<<31|o+127<<23|8388607&t)>>>0}}function V(t){var e=0>t?1:0;if(0===(t=e?-t:t))T=0<1/t?0:2147483648,R=0;else if(isNaN(t))T=2147483647,R=4294967295;else if(17976931348623157e292>>0,R=0;else if(22250738585072014e-324>t)t/=Math.pow(2,-1074),T=(e<<31|t/4294967296)>>>0,R=t>>>0;else{var o=t,r=0;if(2<=o)for(;2<=o&&1023>r;)r++,o/=2;else for(;1>o&&-1022>>0,R=4503599627370496*t>>>0}}function D(t){var e=t.charCodeAt(4),o=t.charCodeAt(5),r=t.charCodeAt(6),n=t.charCodeAt(7);R=t.charCodeAt(0)+(t.charCodeAt(1)<<8)+(t.charCodeAt(2)<<16)+(t.charCodeAt(3)<<24)>>>0,T=e+(o<<8)+(r<<16)+(n<<24)>>>0}function N(t,e){return 4294967296*e+(t>>>0)}function q(t,e){var o=2147483648&e;return o&&(e=~e>>>0,0==(t=1+~t>>>0)&&(e=e+1>>>0)),t=N(t,e),o?-t:t}function H(t,e,o){var r=e>>31;return o(t<<1^r,(e<<1|t>>>31)^r)}function Z(t,e){return G(t,e,q)}function G(t,e,o){var r=-(1&t);return o((t>>>1|e<<31)^r,e>>>1^r)}function J(t){var e=2*(t>>31)+1,o=t>>>23&255;return t&=8388607,255==o?t?NaN:1/0*e:0==o?e*Math.pow(2,-149)*t:e*Math.pow(2,o-150)*(t+Math.pow(2,23))}function $(t,e){var o=2*(e>>31)+1,r=e>>>20&2047;return t=4294967296*(1048575&e)+t,2047==r?t?NaN:1/0*o:0==r?o*Math.pow(2,-1074)*t:o*Math.pow(2,r-1075)*(t+4503599627370496)}function K(t,e){return String.fromCharCode(t>>>0&255,t>>>8&255,t>>>16&255,t>>>24&255,e>>>0&255,e>>>8&255,e>>>16&255,e>>>24&255)}function X(t,e){function o(t,e){return t=t?String(t):"",e?"0000000".slice(t.length)+t:t}if(2097151>=e)return""+N(t,e);var r=(t>>>24|e<<8)>>>0&16777215;return t=(16777215&t)+6777216*r+6710656*(e=e>>16&65535),r+=8147497*e,e*=2,1e7<=t&&(r+=Math.floor(t/1e7),t%=1e7),1e7<=r&&(e+=Math.floor(r/1e7),r%=1e7),o(e,0)+o(r,e)+o(t,1)}function Y(t,e){var o=2147483648&e;return o&&(e=~e+(0==(t=1+~t>>>0)?1:0)>>>0),t=X(t,e),o?"-"+t:t}function Q(t,e){D(t),t=R;var o=T;return e?Y(t,o):X(t,o)}function tt(t){function e(t,e){for(var o=0;8>o&&(1!==t||0>>=8}v(0t;t++)r[t]=255&~r[t]}(),e(1,1)),A(r)}function et(t){return String.fromCharCode(10>t?48+t:87+t)}function ot(t){return 97<=t?t-97+10:t-48}function rt(t,e,o,r,n){var i=0;if(128>r)for(;e>=7}if(t[e++]!=p)break;i++,e+=n}return i}function nt(t){return t.constructor===Uint8Array?t:t.constructor===ArrayBuffer||t.constructor===Array?new Uint8Array(t):t.constructor===String?I(t):t instanceof Uint8Array?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):(w("Type not convertible to Uint8Array."),new Uint8Array(0))}function it(t,e,o){this.b=null,this.a=this.c=this.h=0,this.v=!1,t&&this.H(t,e,o)}h("jspb.utils.getSplit64Low",(function(){return R}),void 0),h("jspb.utils.getSplit64High",(function(){return T}),void 0),h("jspb.utils.splitUint64",U,void 0),h("jspb.utils.splitInt64",z,void 0),h("jspb.utils.splitZigzag64",W,void 0),h("jspb.utils.splitFloat32",L,void 0),h("jspb.utils.splitFloat64",V,void 0),h("jspb.utils.splitHash64",D,void 0),h("jspb.utils.joinUint64",N,void 0),h("jspb.utils.joinInt64",q,void 0),h("jspb.utils.toZigzag64",H,void 0),h("jspb.utils.joinZigzag64",Z,void 0),h("jspb.utils.fromZigzag64",G,void 0),h("jspb.utils.joinFloat32",J,void 0),h("jspb.utils.joinFloat64",$,void 0),h("jspb.utils.joinHash64",K,void 0),h("jspb.utils.DIGITS","0123456789abcdef".split(""),void 0),h("jspb.utils.joinUnsignedDecimalString",X,void 0),h("jspb.utils.joinSignedDecimalString",Y,void 0),h("jspb.utils.hash64ToDecimalString",Q,void 0),h("jspb.utils.hash64ArrayToDecimalStrings",(function(t,e){for(var o=Array(t.length),r=0;ro;o++){var r=t.charCodeAt(7-o);e[2*o+2]=et(r>>4),e[2*o+3]=et(15&r)}return e.join("")}),void 0),h("jspb.utils.hexStringToHash64",(function(t){v(18==(t=t.toLowerCase()).length),v("0"==t[0]),v("x"==t[1]);for(var e="",o=0;8>o;o++)e=String.fromCharCode(16*ot(t.charCodeAt(2*o+2))+ot(t.charCodeAt(2*o+3)))+e;return e}),void 0),h("jspb.utils.hash64ToNumber",(function(t,e){D(t),t=R;var o=T;return e?q(t,o):N(t,o)}),void 0),h("jspb.utils.numberToHash64",(function(t){return z(t),K(R,T)}),void 0),h("jspb.utils.countVarints",(function(t,e,o){for(var r=0,n=e;n>7;return o-e-r}),void 0),h("jspb.utils.countVarintFields",(function(t,e,o,r){var n=0;if(128>(r*=8))for(;e>=7}if(t[e++]!=i)break;for(n++;128&(i=t[e++]););}return n}),void 0),h("jspb.utils.countFixed32Fields",(function(t,e,o,r){return rt(t,e,o,8*r+5,4)}),void 0),h("jspb.utils.countFixed64Fields",(function(t,e,o,r){return rt(t,e,o,8*r+1,8)}),void 0),h("jspb.utils.countDelimitedFields",(function(t,e,o,r){var n=0;for(r=8*r+2;e>=7}if(t[e++]!=i)break;n++;for(var p=0,a=1;p+=(127&(i=t[e++]))*a,a*=128,128&i;);e+=p}return n}),void 0),h("jspb.utils.debugBytesToTextFormat",(function(t){var e='"';if(t){t=nt(t);for(var o=0;ot[o]&&(e+="0"),e+=t[o].toString(16)}return e+'"'}),void 0),h("jspb.utils.debugScalarToTextFormat",(function(t){if("string"==typeof t){t=String(t);for(var e=['"'],o=0;oi||((i=n)in M?n=M[i]:i in _?n=M[i]=_[i]:(31<(r=i.charCodeAt(0))&&127>r?n=i:(256>r?(n="\\x",(16>r||256r&&(n+="0")),n+=r.toString(16).toUpperCase()),n=M[i]=n)),r=n),e[p]=r}e.push('"'),t=e.join("")}else t=t.toString();return t}),void 0),h("jspb.utils.stringToByteArray",(function(t){for(var e=new Uint8Array(t.length),o=0;opt.length&&pt.push(this)},it.prototype.free=it.prototype.Ca,it.prototype.clone=function(){return at(this.b,this.h,this.c-this.h)},it.prototype.clone=it.prototype.clone,it.prototype.clear=function(){this.b=null,this.a=this.c=this.h=0,this.v=!1},it.prototype.clear=it.prototype.clear,it.prototype.Y=function(){return this.b},it.prototype.getBuffer=it.prototype.Y,it.prototype.H=function(t,e,o){this.b=nt(t),this.h=void 0!==e?e:0,this.c=void 0!==o?this.h+o:this.b.length,this.a=this.h},it.prototype.setBlock=it.prototype.H,it.prototype.Db=function(){return this.c},it.prototype.getEnd=it.prototype.Db,it.prototype.setEnd=function(t){this.c=t},it.prototype.setEnd=it.prototype.setEnd,it.prototype.reset=function(){this.a=this.h},it.prototype.reset=it.prototype.reset,it.prototype.B=function(){return this.a},it.prototype.getCursor=it.prototype.B,it.prototype.Ma=function(t){this.a=t},it.prototype.setCursor=it.prototype.Ma,it.prototype.advance=function(t){this.a+=t,v(this.a<=this.c)},it.prototype.advance=it.prototype.advance,it.prototype.ya=function(){return this.a==this.c},it.prototype.atEnd=it.prototype.ya,it.prototype.Qb=function(){return this.a>this.c},it.prototype.pastEnd=it.prototype.Qb,it.prototype.getError=function(){return this.v||0>this.a||this.a>this.c},it.prototype.getError=it.prototype.getError,it.prototype.w=function(t){for(var e=128,o=0,r=0,n=0;4>n&&128<=e;n++)o|=(127&(e=this.b[this.a++]))<<7*n;if(128<=e&&(o|=(127&(e=this.b[this.a++]))<<28,r|=(127&e)>>4),128<=e)for(n=0;5>n&&128<=e;n++)r|=(127&(e=this.b[this.a++]))<<7*n+3;if(128>e)return t(o>>>0,r>>>0);w("Failed to read varint, encoding is invalid."),this.v=!0},it.prototype.readSplitVarint64=it.prototype.w,it.prototype.ea=function(t){return this.w((function(e,o){return G(e,o,t)}))},it.prototype.readSplitZigzagVarint64=it.prototype.ea,it.prototype.ta=function(t){var e=this.b,o=this.a;this.a+=8;for(var r=0,n=0,i=o+7;i>=o;i--)r=r<<8|e[i],n=n<<8|e[i+4];return t(r,n)},it.prototype.readSplitFixed64=it.prototype.ta,it.prototype.kb=function(){for(;128&this.b[this.a];)this.a++;this.a++},it.prototype.skipVarint=it.prototype.kb,it.prototype.mb=function(t){for(;128>>=7;this.a--},it.prototype.unskipVarint=it.prototype.mb,it.prototype.o=function(){var t=this.b,e=t[this.a],o=127&e;return 128>e?(this.a+=1,v(this.a<=this.c),o):(o|=(127&(e=t[this.a+1]))<<7,128>e?(this.a+=2,v(this.a<=this.c),o):(o|=(127&(e=t[this.a+2]))<<14,128>e?(this.a+=3,v(this.a<=this.c),o):(o|=(127&(e=t[this.a+3]))<<21,128>e?(this.a+=4,v(this.a<=this.c),o):(o|=(15&(e=t[this.a+4]))<<28,128>e?(this.a+=5,v(this.a<=this.c),o>>>0):(this.a+=5,128<=t[this.a++]&&128<=t[this.a++]&&128<=t[this.a++]&&128<=t[this.a++]&&128<=t[this.a++]&&v(!1),v(this.a<=this.c),o)))))},it.prototype.readUnsignedVarint32=it.prototype.o,it.prototype.da=function(){return~~this.o()},it.prototype.readSignedVarint32=it.prototype.da,it.prototype.O=function(){return this.o().toString()},it.prototype.Ea=function(){return this.da().toString()},it.prototype.readSignedVarint32String=it.prototype.Ea,it.prototype.Ia=function(){var t=this.o();return t>>>1^-(1&t)},it.prototype.readZigzagVarint32=it.prototype.Ia,it.prototype.Ga=function(){return this.w(N)},it.prototype.readUnsignedVarint64=it.prototype.Ga,it.prototype.Ha=function(){return this.w(X)},it.prototype.readUnsignedVarint64String=it.prototype.Ha,it.prototype.sa=function(){return this.w(q)},it.prototype.readSignedVarint64=it.prototype.sa,it.prototype.Fa=function(){return this.w(Y)},it.prototype.readSignedVarint64String=it.prototype.Fa,it.prototype.Ja=function(){return this.w(Z)},it.prototype.readZigzagVarint64=it.prototype.Ja,it.prototype.fb=function(){return this.ea(K)},it.prototype.readZigzagVarintHash64=it.prototype.fb,it.prototype.Ka=function(){return this.ea(Y)},it.prototype.readZigzagVarint64String=it.prototype.Ka,it.prototype.Gc=function(){var t=this.b[this.a];return this.a+=1,v(this.a<=this.c),t},it.prototype.readUint8=it.prototype.Gc,it.prototype.Ec=function(){var t=this.b[this.a],e=this.b[this.a+1];return this.a+=2,v(this.a<=this.c),t|e<<8},it.prototype.readUint16=it.prototype.Ec,it.prototype.m=function(){var t=this.b[this.a],e=this.b[this.a+1],o=this.b[this.a+2],r=this.b[this.a+3];return this.a+=4,v(this.a<=this.c),(t|e<<8|o<<16|r<<24)>>>0},it.prototype.readUint32=it.prototype.m,it.prototype.ga=function(){return N(this.m(),this.m())},it.prototype.readUint64=it.prototype.ga,it.prototype.ha=function(){return X(this.m(),this.m())},it.prototype.readUint64String=it.prototype.ha,it.prototype.Xb=function(){var t=this.b[this.a];return this.a+=1,v(this.a<=this.c),t<<24>>24},it.prototype.readInt8=it.prototype.Xb,it.prototype.Vb=function(){var t=this.b[this.a],e=this.b[this.a+1];return this.a+=2,v(this.a<=this.c),(t|e<<8)<<16>>16},it.prototype.readInt16=it.prototype.Vb,it.prototype.P=function(){var t=this.b[this.a],e=this.b[this.a+1],o=this.b[this.a+2],r=this.b[this.a+3];return this.a+=4,v(this.a<=this.c),t|e<<8|o<<16|r<<24},it.prototype.readInt32=it.prototype.P,it.prototype.ba=function(){return q(this.m(),this.m())},it.prototype.readInt64=it.prototype.ba,it.prototype.ca=function(){return Y(this.m(),this.m())},it.prototype.readInt64String=it.prototype.ca,it.prototype.aa=function(){return J(this.m())},it.prototype.readFloat=it.prototype.aa,it.prototype.Z=function(){return $(this.m(),this.m())},it.prototype.readDouble=it.prototype.Z,it.prototype.pa=function(){return!!this.b[this.a++]},it.prototype.readBool=it.prototype.pa,it.prototype.ra=function(){return this.da()},it.prototype.readEnum=it.prototype.ra,it.prototype.fa=function(t){var e=this.b,o=this.a;t=o+t;for(var r=[],n="";oi)r.push(i);else{if(192>i)continue;if(224>i){var p=e[o++];r.push((31&i)<<6|63&p)}else if(240>i){p=e[o++];var a=e[o++];r.push((15&i)<<12|(63&p)<<6|63&a)}else if(248>i){i=(7&i)<<18|(63&(p=e[o++]))<<12|(63&(a=e[o++]))<<6|63&e[o++],i-=65536,r.push(55296+(i>>10&1023),56320+(1023&i))}}8192<=r.length&&(n+=String.fromCharCode.apply(null,r),r.length=0)}return n+=A(r),this.a=o,n},it.prototype.readString=it.prototype.fa,it.prototype.Dc=function(){var t=this.o();return this.fa(t)},it.prototype.readStringWithLength=it.prototype.Dc,it.prototype.qa=function(t){if(0>t||this.a+t>this.b.length)return this.v=!0,w("Invalid byte length!"),new Uint8Array(0);var e=this.b.subarray(this.a,this.a+t);return this.a+=t,v(this.a<=this.c),e},it.prototype.readBytes=it.prototype.qa,it.prototype.ia=function(){return this.w(K)},it.prototype.readVarintHash64=it.prototype.ia,it.prototype.$=function(){var t=this.b,e=this.a,o=t[e],r=t[e+1],n=t[e+2],i=t[e+3],p=t[e+4],a=t[e+5],s=t[e+6];return t=t[e+7],this.a+=8,String.fromCharCode(o,r,n,i,p,a,s,t)},it.prototype.readFixedHash64=it.prototype.$,h("jspb.BinaryReader",st,void 0);var ut=[];function ht(t,e,o){if(ut.length){var r=ut.pop();return t&&r.a.H(t,e,o),r}return new st(t,e,o)}function lt(t,e){v(2==t.b);var o=t.a.o();o=t.a.B()+o;for(var r=[];t.a.B()ut.length&&ut.push(this)},st.prototype.free=st.prototype.Ca,st.prototype.Fb=function(){return this.O},st.prototype.getFieldCursor=st.prototype.Fb,st.prototype.B=function(){return this.a.B()},st.prototype.getCursor=st.prototype.B,st.prototype.Y=function(){return this.a.Y()},st.prototype.getBuffer=st.prototype.Y,st.prototype.Hb=function(){return this.c},st.prototype.getFieldNumber=st.prototype.Hb,st.prototype.Lb=function(){return this.b},st.prototype.getWireType=st.prototype.Lb,st.prototype.Mb=function(){return 2==this.b},st.prototype.isDelimited=st.prototype.Mb,st.prototype.bb=function(){return 4==this.b},st.prototype.isEndGroup=st.prototype.bb,st.prototype.getError=function(){return this.h||this.a.getError()},st.prototype.getError=st.prototype.getError,st.prototype.H=function(t,e,o){this.a.H(t,e,o),this.b=this.c=-1},st.prototype.setBlock=st.prototype.H,st.prototype.reset=function(){this.a.reset(),this.b=this.c=-1},st.prototype.reset=st.prototype.reset,st.prototype.advance=function(t){this.a.advance(t)},st.prototype.advance=st.prototype.advance,st.prototype.oa=function(){if(this.a.ya())return!1;if(this.getError())return w("Decoder hit an error"),!1;this.O=this.a.B();var t=this.a.o(),e=t>>>3;return 0!=(t&=7)&&5!=t&&1!=t&&2!=t&&3!=t&&4!=t?(w("Invalid wire type: %s (at position %s)",t,this.O),this.h=!0,!1):(this.c=e,this.b=t,!0)},st.prototype.nextField=st.prototype.oa,st.prototype.Oa=function(){this.a.mb(this.c<<3|this.b)},st.prototype.unskipHeader=st.prototype.Oa,st.prototype.Lc=function(){var t=this.c;for(this.Oa();this.oa()&&this.c==t;)this.C();this.a.ya()||this.Oa()},st.prototype.skipMatchingFields=st.prototype.Lc,st.prototype.lb=function(){0!=this.b?(w("Invalid wire type for skipVarintField"),this.C()):this.a.kb()},st.prototype.skipVarintField=st.prototype.lb,st.prototype.gb=function(){if(2!=this.b)w("Invalid wire type for skipDelimitedField"),this.C();else{var t=this.a.o();this.a.advance(t)}},st.prototype.skipDelimitedField=st.prototype.gb,st.prototype.hb=function(){5!=this.b?(w("Invalid wire type for skipFixed32Field"),this.C()):this.a.advance(4)},st.prototype.skipFixed32Field=st.prototype.hb,st.prototype.ib=function(){1!=this.b?(w("Invalid wire type for skipFixed64Field"),this.C()):this.a.advance(8)},st.prototype.skipFixed64Field=st.prototype.ib,st.prototype.jb=function(){for(var t=this.c;;){if(!this.oa()){w("Unmatched start-group tag: stream EOF"),this.h=!0;break}if(4==this.b){this.c!=t&&(w("Unmatched end-group tag"),this.h=!0);break}this.C()}},st.prototype.skipGroup=st.prototype.jb,st.prototype.C=function(){switch(this.b){case 0:this.lb();break;case 1:this.ib();break;case 2:this.gb();break;case 5:this.hb();break;case 3:this.jb();break;default:w("Invalid wire encoding for field.")}},st.prototype.skipField=st.prototype.C,st.prototype.Hc=function(t,e){null===this.v&&(this.v={}),v(!this.v[t]),this.v[t]=e},st.prototype.registerReadCallback=st.prototype.Hc,st.prototype.Ic=function(t){return v(null!==this.v),v(t=this.v[t]),t(this)},st.prototype.runReadCallback=st.prototype.Ic,st.prototype.Yb=function(t,e){v(2==this.b);var o=this.a.c,r=this.a.o();r=this.a.B()+r,this.a.setEnd(r),e(t,this),this.a.Ma(r),this.a.setEnd(o)},st.prototype.readMessage=st.prototype.Yb,st.prototype.Ub=function(t,e,o){v(3==this.b),v(this.c==t),o(e,this),this.h||4==this.b||(w("Group submessage did not end with an END_GROUP tag"),this.h=!0)},st.prototype.readGroup=st.prototype.Ub,st.prototype.Gb=function(){v(2==this.b);var t=this.a.o(),e=this.a.B(),o=e+t;return t=at(this.a.Y(),e,t),this.a.Ma(o),t},st.prototype.getFieldDecoder=st.prototype.Gb,st.prototype.P=function(){return v(0==this.b),this.a.da()},st.prototype.readInt32=st.prototype.P,st.prototype.Wb=function(){return v(0==this.b),this.a.Ea()},st.prototype.readInt32String=st.prototype.Wb,st.prototype.ba=function(){return v(0==this.b),this.a.sa()},st.prototype.readInt64=st.prototype.ba,st.prototype.ca=function(){return v(0==this.b),this.a.Fa()},st.prototype.readInt64String=st.prototype.ca,st.prototype.m=function(){return v(0==this.b),this.a.o()},st.prototype.readUint32=st.prototype.m,st.prototype.Fc=function(){return v(0==this.b),this.a.O()},st.prototype.readUint32String=st.prototype.Fc,st.prototype.ga=function(){return v(0==this.b),this.a.Ga()},st.prototype.readUint64=st.prototype.ga,st.prototype.ha=function(){return v(0==this.b),this.a.Ha()},st.prototype.readUint64String=st.prototype.ha,st.prototype.zc=function(){return v(0==this.b),this.a.Ia()},st.prototype.readSint32=st.prototype.zc,st.prototype.Ac=function(){return v(0==this.b),this.a.Ja()},st.prototype.readSint64=st.prototype.Ac,st.prototype.Bc=function(){return v(0==this.b),this.a.Ka()},st.prototype.readSint64String=st.prototype.Bc,st.prototype.Rb=function(){return v(5==this.b),this.a.m()},st.prototype.readFixed32=st.prototype.Rb,st.prototype.Sb=function(){return v(1==this.b),this.a.ga()},st.prototype.readFixed64=st.prototype.Sb,st.prototype.Tb=function(){return v(1==this.b),this.a.ha()},st.prototype.readFixed64String=st.prototype.Tb,st.prototype.vc=function(){return v(5==this.b),this.a.P()},st.prototype.readSfixed32=st.prototype.vc,st.prototype.wc=function(){return v(5==this.b),this.a.P().toString()},st.prototype.readSfixed32String=st.prototype.wc,st.prototype.xc=function(){return v(1==this.b),this.a.ba()},st.prototype.readSfixed64=st.prototype.xc,st.prototype.yc=function(){return v(1==this.b),this.a.ca()},st.prototype.readSfixed64String=st.prototype.yc,st.prototype.aa=function(){return v(5==this.b),this.a.aa()},st.prototype.readFloat=st.prototype.aa,st.prototype.Z=function(){return v(1==this.b),this.a.Z()},st.prototype.readDouble=st.prototype.Z,st.prototype.pa=function(){return v(0==this.b),!!this.a.o()},st.prototype.readBool=st.prototype.pa,st.prototype.ra=function(){return v(0==this.b),this.a.sa()},st.prototype.readEnum=st.prototype.ra,st.prototype.fa=function(){v(2==this.b);var t=this.a.o();return this.a.fa(t)},st.prototype.readString=st.prototype.fa,st.prototype.qa=function(){v(2==this.b);var t=this.a.o();return this.a.qa(t)},st.prototype.readBytes=st.prototype.qa,st.prototype.ia=function(){return v(0==this.b),this.a.ia()},st.prototype.readVarintHash64=st.prototype.ia,st.prototype.Cc=function(){return v(0==this.b),this.a.fb()},st.prototype.readSintHash64=st.prototype.Cc,st.prototype.w=function(t){return v(0==this.b),this.a.w(t)},st.prototype.readSplitVarint64=st.prototype.w,st.prototype.ea=function(t){return v(0==this.b),this.a.w((function(e,o){return G(e,o,t)}))},st.prototype.readSplitZigzagVarint64=st.prototype.ea,st.prototype.$=function(){return v(1==this.b),this.a.$()},st.prototype.readFixedHash64=st.prototype.$,st.prototype.ta=function(t){return v(1==this.b),this.a.ta(t)},st.prototype.readSplitFixed64=st.prototype.ta,st.prototype.gc=function(){return lt(this,this.a.da)},st.prototype.readPackedInt32=st.prototype.gc,st.prototype.hc=function(){return lt(this,this.a.Ea)},st.prototype.readPackedInt32String=st.prototype.hc,st.prototype.ic=function(){return lt(this,this.a.sa)},st.prototype.readPackedInt64=st.prototype.ic,st.prototype.jc=function(){return lt(this,this.a.Fa)},st.prototype.readPackedInt64String=st.prototype.jc,st.prototype.qc=function(){return lt(this,this.a.o)},st.prototype.readPackedUint32=st.prototype.qc,st.prototype.rc=function(){return lt(this,this.a.O)},st.prototype.readPackedUint32String=st.prototype.rc,st.prototype.sc=function(){return lt(this,this.a.Ga)},st.prototype.readPackedUint64=st.prototype.sc,st.prototype.tc=function(){return lt(this,this.a.Ha)},st.prototype.readPackedUint64String=st.prototype.tc,st.prototype.nc=function(){return lt(this,this.a.Ia)},st.prototype.readPackedSint32=st.prototype.nc,st.prototype.oc=function(){return lt(this,this.a.Ja)},st.prototype.readPackedSint64=st.prototype.oc,st.prototype.pc=function(){return lt(this,this.a.Ka)},st.prototype.readPackedSint64String=st.prototype.pc,st.prototype.bc=function(){return lt(this,this.a.m)},st.prototype.readPackedFixed32=st.prototype.bc,st.prototype.cc=function(){return lt(this,this.a.ga)},st.prototype.readPackedFixed64=st.prototype.cc,st.prototype.dc=function(){return lt(this,this.a.ha)},st.prototype.readPackedFixed64String=st.prototype.dc,st.prototype.kc=function(){return lt(this,this.a.P)},st.prototype.readPackedSfixed32=st.prototype.kc,st.prototype.lc=function(){return lt(this,this.a.ba)},st.prototype.readPackedSfixed64=st.prototype.lc,st.prototype.mc=function(){return lt(this,this.a.ca)},st.prototype.readPackedSfixed64String=st.prototype.mc,st.prototype.fc=function(){return lt(this,this.a.aa)},st.prototype.readPackedFloat=st.prototype.fc,st.prototype.$b=function(){return lt(this,this.a.Z)},st.prototype.readPackedDouble=st.prototype.$b,st.prototype.Zb=function(){return lt(this,this.a.pa)},st.prototype.readPackedBool=st.prototype.Zb,st.prototype.ac=function(){return lt(this,this.a.ra)},st.prototype.readPackedEnum=st.prototype.ac,st.prototype.uc=function(){return lt(this,this.a.ia)},st.prototype.readPackedVarintHash64=st.prototype.uc,st.prototype.ec=function(){return lt(this,this.a.$)},st.prototype.readPackedFixedHash64=st.prototype.ec,h("jspb.ExtensionFieldInfo",ct,void 0),h("jspb.ExtensionFieldBinaryInfo",ft,void 0),ct.prototype.F=function(){return!!this.la},ct.prototype.isMessageType=ct.prototype.F,h("jspb.Message",yt,void 0),yt.GENERATE_TO_OBJECT=!0,yt.GENERATE_FROM_OBJECT=!0;var dt="function"==typeof Uint8Array;yt.prototype.Ib=function(){return this.b},yt.prototype.getJsPbMessageId=yt.prototype.Ib,yt.initialize=function(t,e,o,r,n,i){if(t.f=null,e||(e=o?[o]:[]),t.b=o?String(o):void 0,t.D=0===o?-1:0,t.u=e,e=-1,!(o=t.u.length)||(e=o-1,null===(o=t.u[e])||"object"!=typeof o||Array.isArray(o)||dt&&o instanceof Uint8Array)?-1e.length?o.length:e.length;for(t.b&&(r[0]=t.b,n=1);n>>16;for(e=o*r+65536*(o*n&65535)+65536*((t>>>=16)*r&65535),o=t*n+(o*n>>>16)+(t*r>>>16);4294967296<=e;)e-=4294967296,o+=1;return new zt(e>>>0,o>>>0)}function Lt(t){for(var e=new zt(0,0),o=new zt(0,0),r=0;rt[r]||"9">>=7,t.b++;e.push(o),t.b++}function Gt(t,e,o){v(1<=e&&e==Math.floor(e)),t.a.j(8*e+o)}function Jt(t,e,o){null!=o&&(Gt(t,e,0),t.a.j(o))}function $t(t,e,o){null!=o&&(Gt(t,e,0),t.a.M(o))}h("jspb.debug.dump",Tt.dump,void 0),Tt.X=function(t){var e=l(t);if("number"==e||"string"==e||"boolean"==e||"null"==e||"undefined"==e||"undefined"!=typeof Uint8Array&&t instanceof Uint8Array)return t;if("array"==e)return function(t,e,o){for(var r=[],n=2;nt),v(0<=e&&4294967296>e);0>>7|e<<25)>>>0,e>>>=7;this.a.push(t)},Ut.prototype.writeSplitVarint64=Ut.prototype.l,Ut.prototype.A=function(t,e){v(t==Math.floor(t)),v(e==Math.floor(e)),v(0<=t&&4294967296>t),v(0<=e&&4294967296>e),this.s(t),this.s(e)},Ut.prototype.writeSplitFixed64=Ut.prototype.A,Ut.prototype.j=function(t){for(v(t==Math.floor(t)),v(0<=t&&4294967296>t);127>>=7;this.a.push(t)},Ut.prototype.writeUnsignedVarint32=Ut.prototype.j,Ut.prototype.M=function(t){if(v(t==Math.floor(t)),v(-2147483648<=t&&2147483648>t),0<=t)this.j(t);else{for(var e=0;9>e;e++)this.a.push(127&t|128),t>>=7;this.a.push(1)}},Ut.prototype.writeSignedVarint32=Ut.prototype.M,Ut.prototype.va=function(t){v(t==Math.floor(t)),v(0<=t&&0x10000000000000000>t),z(t),this.l(R,T)},Ut.prototype.writeUnsignedVarint64=Ut.prototype.va,Ut.prototype.ua=function(t){v(t==Math.floor(t)),v(-0x8000000000000000<=t&&0x8000000000000000>t),z(t),this.l(R,T)},Ut.prototype.writeSignedVarint64=Ut.prototype.ua,Ut.prototype.wa=function(t){v(t==Math.floor(t)),v(-2147483648<=t&&2147483648>t),this.j((t<<1^t>>31)>>>0)},Ut.prototype.writeZigzagVarint32=Ut.prototype.wa,Ut.prototype.xa=function(t){v(t==Math.floor(t)),v(-0x8000000000000000<=t&&0x8000000000000000>t),W(t),this.l(R,T)},Ut.prototype.writeZigzagVarint64=Ut.prototype.xa,Ut.prototype.Ta=function(t){this.W(tt(t))},Ut.prototype.writeZigzagVarint64String=Ut.prototype.Ta,Ut.prototype.W=function(t){var e=this;D(t),H(R,T,(function(t,o){e.l(t>>>0,o>>>0)}))},Ut.prototype.writeZigzagVarintHash64=Ut.prototype.W,Ut.prototype.be=function(t){v(t==Math.floor(t)),v(0<=t&&256>t),this.a.push(t>>>0&255)},Ut.prototype.writeUint8=Ut.prototype.be,Ut.prototype.ae=function(t){v(t==Math.floor(t)),v(0<=t&&65536>t),this.a.push(t>>>0&255),this.a.push(t>>>8&255)},Ut.prototype.writeUint16=Ut.prototype.ae,Ut.prototype.s=function(t){v(t==Math.floor(t)),v(0<=t&&4294967296>t),this.a.push(t>>>0&255),this.a.push(t>>>8&255),this.a.push(t>>>16&255),this.a.push(t>>>24&255)},Ut.prototype.writeUint32=Ut.prototype.s,Ut.prototype.V=function(t){v(t==Math.floor(t)),v(0<=t&&0x10000000000000000>t),U(t),this.s(R),this.s(T)},Ut.prototype.writeUint64=Ut.prototype.V,Ut.prototype.Qc=function(t){v(t==Math.floor(t)),v(-128<=t&&128>t),this.a.push(t>>>0&255)},Ut.prototype.writeInt8=Ut.prototype.Qc,Ut.prototype.Pc=function(t){v(t==Math.floor(t)),v(-32768<=t&&32768>t),this.a.push(t>>>0&255),this.a.push(t>>>8&255)},Ut.prototype.writeInt16=Ut.prototype.Pc,Ut.prototype.S=function(t){v(t==Math.floor(t)),v(-2147483648<=t&&2147483648>t),this.a.push(t>>>0&255),this.a.push(t>>>8&255),this.a.push(t>>>16&255),this.a.push(t>>>24&255)},Ut.prototype.writeInt32=Ut.prototype.S,Ut.prototype.T=function(t){v(t==Math.floor(t)),v(-0x8000000000000000<=t&&0x8000000000000000>t),z(t),this.A(R,T)},Ut.prototype.writeInt64=Ut.prototype.T,Ut.prototype.ka=function(t){v(t==Math.floor(t)),v(-0x8000000000000000<=+t&&0x8000000000000000>+t),D(tt(t)),this.A(R,T)},Ut.prototype.writeInt64String=Ut.prototype.ka,Ut.prototype.L=function(t){v(1/0===t||-1/0===t||isNaN(t)||-34028234663852886e22<=t&&34028234663852886e22>=t),L(t),this.s(R)},Ut.prototype.writeFloat=Ut.prototype.L,Ut.prototype.J=function(t){v(1/0===t||-1/0===t||isNaN(t)||-17976931348623157e292<=t&&17976931348623157e292>=t),V(t),this.s(R),this.s(T)},Ut.prototype.writeDouble=Ut.prototype.J,Ut.prototype.I=function(t){v("boolean"==typeof t||"number"==typeof t),this.a.push(t?1:0)},Ut.prototype.writeBool=Ut.prototype.I,Ut.prototype.R=function(t){v(t==Math.floor(t)),v(-2147483648<=t&&2147483648>t),this.M(t)},Ut.prototype.writeEnum=Ut.prototype.R,Ut.prototype.ja=function(t){this.a.push.apply(this.a,t)},Ut.prototype.writeBytes=Ut.prototype.ja,Ut.prototype.N=function(t){D(t),this.l(R,T)},Ut.prototype.writeVarintHash64=Ut.prototype.N,Ut.prototype.K=function(t){D(t),this.s(R),this.s(T)},Ut.prototype.writeFixedHash64=Ut.prototype.K,Ut.prototype.U=function(t){var e=this.a.length;!function(t,e,o){for(var r=[],n=2;nr)this.a.push(r);else if(2048>r)this.a.push(r>>6|192),this.a.push(63&r|128);else if(65536>r)if(55296<=r&&56319>=r&&o+1=n&&(r=1024*(r-55296)+n-56320+65536,this.a.push(r>>18|240),this.a.push(r>>12&63|128),this.a.push(r>>6&63|128),this.a.push(63&r|128),o++)}else this.a.push(r>>12|224),this.a.push(r>>6&63|128),this.a.push(63&r|128)}return this.a.length-e},Ut.prototype.writeString=Ut.prototype.U,h("jspb.arith.UInt64",zt,void 0),zt.prototype.cmp=function(t){return this.hi>>1|(1&this.hi)<<31)>>>0,this.hi>>>1>>>0)},zt.prototype.rightShift=zt.prototype.La,zt.prototype.Da=function(){return new zt(this.lo<<1>>>0,(this.hi<<1|this.lo>>>31)>>>0)},zt.prototype.leftShift=zt.prototype.Da,zt.prototype.cb=function(){return!!(2147483648&this.hi)},zt.prototype.msb=zt.prototype.cb,zt.prototype.Ob=function(){return!!(1&this.lo)},zt.prototype.lsb=zt.prototype.Ob,zt.prototype.Ua=function(){return 0==this.lo&&0==this.hi},zt.prototype.zero=zt.prototype.Ua,zt.prototype.add=function(t){return new zt((this.lo+t.lo&4294967295)>>>0>>>0,((this.hi+t.hi&4294967295)>>>0)+(4294967296<=this.lo+t.lo?1:0)>>>0)},zt.prototype.add=zt.prototype.add,zt.prototype.sub=function(t){return new zt((this.lo-t.lo&4294967295)>>>0>>>0,((this.hi-t.hi&4294967295)>>>0)-(0>this.lo-t.lo?1:0)>>>0)},zt.prototype.sub=zt.prototype.sub,zt.mul32x32=Wt,zt.prototype.eb=function(t){var e=Wt(this.lo,t);return(t=Wt(this.hi,t)).hi=t.lo,t.lo=0,e.add(t)},zt.prototype.mul=zt.prototype.eb,zt.prototype.Xa=function(t){if(0==t)return[];var e=new zt(0,0),o=new zt(this.lo,this.hi);t=new zt(t,0);for(var r=new zt(1,0);!t.cb();)t=t.Da(),r=r.Da();for(;!r.Ua();)0>=t.cmp(o)&&(e=e.add(r),o=o.sub(t)),t=t.La(),r=r.La();return[e,o]},zt.prototype.div=zt.prototype.Xa,zt.prototype.toString=function(){for(var t="",e=this;!e.Ua();){var o=(e=e.Xa(10))[0];t=e[1].lo+t,e=o}return""==t&&(t="0"),t},zt.prototype.toString=zt.prototype.toString,zt.fromString=Lt,zt.prototype.clone=function(){return new zt(this.lo,this.hi)},zt.prototype.clone=zt.prototype.clone,h("jspb.arith.Int64",Vt,void 0),Vt.prototype.add=function(t){return new Vt((this.lo+t.lo&4294967295)>>>0>>>0,((this.hi+t.hi&4294967295)>>>0)+(4294967296<=this.lo+t.lo?1:0)>>>0)},Vt.prototype.add=Vt.prototype.add,Vt.prototype.sub=function(t){return new Vt((this.lo-t.lo&4294967295)>>>0>>>0,((this.hi-t.hi&4294967295)>>>0)-(0>this.lo-t.lo?1:0)>>>0)},Vt.prototype.sub=Vt.prototype.sub,Vt.prototype.clone=function(){return new Vt(this.lo,this.hi)},Vt.prototype.clone=Vt.prototype.clone,Vt.prototype.toString=function(){var t=!!(2147483648&this.hi),e=new zt(this.lo,this.hi);return t&&(e=new zt(0,0).sub(e)),(t?"-":"")+e.toString()},Vt.prototype.toString=Vt.prototype.toString,Vt.fromString=Dt,h("jspb.BinaryWriter",Nt,void 0),Nt.prototype.pb=function(t,e,o){qt(this,t.subarray(e,o))},Nt.prototype.writeSerializedMessage=Nt.prototype.pb,Nt.prototype.Pb=function(t,e,o){null!=t&&null!=e&&null!=o&&this.pb(t,e,o)},Nt.prototype.maybeWriteSerializedMessage=Nt.prototype.Pb,Nt.prototype.reset=function(){this.c=[],this.a.end(),this.b=0,this.h=[]},Nt.prototype.reset=Nt.prototype.reset,Nt.prototype.ab=function(){v(0==this.h.length);for(var t=new Uint8Array(this.b+this.a.length()),e=this.c,o=e.length,r=0,n=0;ne),$t(this,t,e))},Nt.prototype.writeInt32=Nt.prototype.S,Nt.prototype.ob=function(t,e){null!=e&&(v(-2147483648<=(e=parseInt(e,10))&&2147483648>e),$t(this,t,e))},Nt.prototype.writeInt32String=Nt.prototype.ob,Nt.prototype.T=function(t,e){null!=e&&(v(-0x8000000000000000<=e&&0x8000000000000000>e),null!=e&&(Gt(this,t,0),this.a.ua(e)))},Nt.prototype.writeInt64=Nt.prototype.T,Nt.prototype.ka=function(t,e){null!=e&&(e=Dt(e),Gt(this,t,0),this.a.l(e.lo,e.hi))},Nt.prototype.writeInt64String=Nt.prototype.ka,Nt.prototype.s=function(t,e){null!=e&&(v(0<=e&&4294967296>e),Jt(this,t,e))},Nt.prototype.writeUint32=Nt.prototype.s,Nt.prototype.ub=function(t,e){null!=e&&(v(0<=(e=parseInt(e,10))&&4294967296>e),Jt(this,t,e))},Nt.prototype.writeUint32String=Nt.prototype.ub,Nt.prototype.V=function(t,e){null!=e&&(v(0<=e&&0x10000000000000000>e),null!=e&&(Gt(this,t,0),this.a.va(e)))},Nt.prototype.writeUint64=Nt.prototype.V,Nt.prototype.vb=function(t,e){null!=e&&(e=Lt(e),Gt(this,t,0),this.a.l(e.lo,e.hi))},Nt.prototype.writeUint64String=Nt.prototype.vb,Nt.prototype.rb=function(t,e){null!=e&&(v(-2147483648<=e&&2147483648>e),null!=e&&(Gt(this,t,0),this.a.wa(e)))},Nt.prototype.writeSint32=Nt.prototype.rb,Nt.prototype.sb=function(t,e){null!=e&&(v(-0x8000000000000000<=e&&0x8000000000000000>e),null!=e&&(Gt(this,t,0),this.a.xa(e)))},Nt.prototype.writeSint64=Nt.prototype.sb,Nt.prototype.$d=function(t,e){null!=e&&null!=e&&(Gt(this,t,0),this.a.W(e))},Nt.prototype.writeSintHash64=Nt.prototype.$d,Nt.prototype.Zd=function(t,e){null!=e&&null!=e&&(Gt(this,t,0),this.a.Ta(e))},Nt.prototype.writeSint64String=Nt.prototype.Zd,Nt.prototype.Pa=function(t,e){null!=e&&(v(0<=e&&4294967296>e),Gt(this,t,5),this.a.s(e))},Nt.prototype.writeFixed32=Nt.prototype.Pa,Nt.prototype.Qa=function(t,e){null!=e&&(v(0<=e&&0x10000000000000000>e),Gt(this,t,1),this.a.V(e))},Nt.prototype.writeFixed64=Nt.prototype.Qa,Nt.prototype.nb=function(t,e){null!=e&&(e=Lt(e),Gt(this,t,1),this.a.A(e.lo,e.hi))},Nt.prototype.writeFixed64String=Nt.prototype.nb,Nt.prototype.Ra=function(t,e){null!=e&&(v(-2147483648<=e&&2147483648>e),Gt(this,t,5),this.a.S(e))},Nt.prototype.writeSfixed32=Nt.prototype.Ra,Nt.prototype.Sa=function(t,e){null!=e&&(v(-0x8000000000000000<=e&&0x8000000000000000>e),Gt(this,t,1),this.a.T(e))},Nt.prototype.writeSfixed64=Nt.prototype.Sa,Nt.prototype.qb=function(t,e){null!=e&&(e=Dt(e),Gt(this,t,1),this.a.A(e.lo,e.hi))},Nt.prototype.writeSfixed64String=Nt.prototype.qb,Nt.prototype.L=function(t,e){null!=e&&(Gt(this,t,5),this.a.L(e))},Nt.prototype.writeFloat=Nt.prototype.L,Nt.prototype.J=function(t,e){null!=e&&(Gt(this,t,1),this.a.J(e))},Nt.prototype.writeDouble=Nt.prototype.J,Nt.prototype.I=function(t,e){null!=e&&(v("boolean"==typeof e||"number"==typeof e),Gt(this,t,0),this.a.I(e))},Nt.prototype.writeBool=Nt.prototype.I,Nt.prototype.R=function(t,e){null!=e&&(v(-2147483648<=e&&2147483648>e),Gt(this,t,0),this.a.M(e))},Nt.prototype.writeEnum=Nt.prototype.R,Nt.prototype.U=function(t,e){null!=e&&(t=Ht(this,t),this.a.U(e),Zt(this,t))},Nt.prototype.writeString=Nt.prototype.U,Nt.prototype.ja=function(t,e){null!=e&&(e=nt(e),Gt(this,t,2),this.a.j(e.length),qt(this,e))},Nt.prototype.writeBytes=Nt.prototype.ja,Nt.prototype.Rc=function(t,e,o){null!=e&&(t=Ht(this,t),o(e,this),Zt(this,t))},Nt.prototype.writeMessage=Nt.prototype.Rc,Nt.prototype.Sc=function(t,e,o){null!=e&&(Gt(this,1,3),Gt(this,2,0),this.a.M(t),t=Ht(this,3),o(e,this),Zt(this,t),Gt(this,1,4))},Nt.prototype.writeMessageSet=Nt.prototype.Sc,Nt.prototype.Oc=function(t,e,o){null!=e&&(Gt(this,t,3),o(e,this),Gt(this,t,4))},Nt.prototype.writeGroup=Nt.prototype.Oc,Nt.prototype.K=function(t,e){null!=e&&(v(8==e.length),Gt(this,t,1),this.a.K(e))},Nt.prototype.writeFixedHash64=Nt.prototype.K,Nt.prototype.N=function(t,e){null!=e&&(v(8==e.length),Gt(this,t,0),this.a.N(e))},Nt.prototype.writeVarintHash64=Nt.prototype.N,Nt.prototype.A=function(t,e,o){Gt(this,t,1),this.a.A(e,o)},Nt.prototype.writeSplitFixed64=Nt.prototype.A,Nt.prototype.l=function(t,e,o){Gt(this,t,0),this.a.l(e,o)},Nt.prototype.writeSplitVarint64=Nt.prototype.l,Nt.prototype.tb=function(t,e,o){Gt(this,t,0);var r=this.a;H(e,o,(function(t,e){r.l(t>>>0,e>>>0)}))},Nt.prototype.writeSplitZigzagVarint64=Nt.prototype.tb,Nt.prototype.Ed=function(t,e){if(null!=e)for(var o=0;o>>0,e>>>0)}));Zt(this,t)}},Nt.prototype.writePackedSplitZigzagVarint64=Nt.prototype.od,Nt.prototype.dd=function(t,e){if(null!=e&&e.length){t=Ht(this,t);for(var o=0;o0&&console.error(e)})).finally((function(){r.delete(a.request_id),g.end(),y.was_cancelled=c.signal.aborted,y.output=Buffer.concat(b).toString("utf-8");var t=y.serialize(),e=function(t){for(var e=Buffer.alloc(10),o=0;t>127;)e[o]=127&t|128,t>>>=7,o++;return e[o]=t,e.slice(0,o+1)}(t.byteLength);process.stdout.write(Buffer.concat([e,t]))}))}finally{f=!0}},f=!0,y=p(process.stdin),n.label=2;case 2:return[4,y.next()];case 3:if(d=n.sent(),o=d.done)return[3,5];c(),n.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return b=n.sent(),i={error:b},[3,12];case 7:return n.trys.push([7,,10,11]),f||o||!(a=y.return)?[3,9]:[4,a.call(y)];case 8:n.sent(),n.label=9;case 9:return[3,11];case 10:if(i)throw i.error;return[7];case 11:return[7];case 12:return[2]}}))}))},exports.isPersistentWorker=function(t){return-1!==t.indexOf("--persistent_worker")}; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Acm9sbHVwK3BsdWdpbi10eXBlc2NyaXB0QDEwLjAuMV81NzQxOTQxNzMvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2Fib3J0Y29udHJvbGxlci1wb2x5ZmlsbEAxLjcuNS9ub2RlX21vZHVsZXMvYWJvcnRjb250cm9sbGVyLXBvbHlmaWxsL2Rpc3QvYWJvcnRjb250cm9sbGVyLXBvbHlmaWxsLW9ubHkuanMiLCJ3b3JrZXJfcHJvdG9jb2wudHMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtcHJvdG9idWZAMy4yMS40L25vZGVfbW9kdWxlcy9nb29nbGUtcHJvdG9idWYvZ29vZ2xlLXByb3RvYnVmLmpzIiwiaW5kZXgudHMiLCJzaXplLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2VzRGVjb3JhdGUoY3RvciwgZGVzY3JpcHRvckluLCBkZWNvcmF0b3JzLCBjb250ZXh0SW4sIGluaXRpYWxpemVycywgZXh0cmFJbml0aWFsaXplcnMpIHtcclxuICAgIGZ1bmN0aW9uIGFjY2VwdChmKSB7IGlmIChmICE9PSB2b2lkIDAgJiYgdHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bmN0aW9uIGV4cGVjdGVkXCIpOyByZXR1cm4gZjsgfVxyXG4gICAgdmFyIGtpbmQgPSBjb250ZXh0SW4ua2luZCwga2V5ID0ga2luZCA9PT0gXCJnZXR0ZXJcIiA/IFwiZ2V0XCIgOiBraW5kID09PSBcInNldHRlclwiID8gXCJzZXRcIiA6IFwidmFsdWVcIjtcclxuICAgIHZhciB0YXJnZXQgPSAhZGVzY3JpcHRvckluICYmIGN0b3IgPyBjb250ZXh0SW5bXCJzdGF0aWNcIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsO1xyXG4gICAgdmFyIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ySW4gfHwgKHRhcmdldCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSkgOiB7fSk7XHJcbiAgICB2YXIgXywgZG9uZSA9IGZhbHNlO1xyXG4gICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICB2YXIgY29udGV4dCA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluKSBjb250ZXh0W3BdID0gcCA9PT0gXCJhY2Nlc3NcIiA/IHt9IDogY29udGV4dEluW3BdO1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluLmFjY2VzcykgY29udGV4dC5hY2Nlc3NbcF0gPSBjb250ZXh0SW4uYWNjZXNzW3BdO1xyXG4gICAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZikgeyBpZiAoZG9uZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9ICgwLCBkZWNvcmF0b3JzW2ldKShraW5kID09PSBcImFjY2Vzc29yXCIgPyB7IGdldDogZGVzY3JpcHRvci5nZXQsIHNldDogZGVzY3JpcHRvci5zZXQgfSA6IGRlc2NyaXB0b3Jba2V5XSwgY29udGV4dCk7XHJcbiAgICAgICAgaWYgKGtpbmQgPT09IFwiYWNjZXNzb3JcIikge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5zZXQpKSBkZXNjcmlwdG9yLnNldCA9IF87XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5pbml0KSkgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKF8gPSBhY2NlcHQocmVzdWx0KSkge1xyXG4gICAgICAgICAgICBpZiAoa2luZCA9PT0gXCJmaWVsZFwiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICAgICAgZWxzZSBkZXNjcmlwdG9yW2tleV0gPSBfO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0YXJnZXQpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGNvbnRleHRJbi5uYW1lLCBkZXNjcmlwdG9yKTtcclxuICAgIGRvbmUgPSB0cnVlO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHtcclxuICAgIHZhciB1c2VWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0aWFsaXplcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlVmFsdWUgPyB2YWx1ZSA6IHZvaWQgMDtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Byb3BLZXkoeCkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSBcInN5bWJvbFwiID8geCA6IFwiXCIuY29uY2F0KHgpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc2V0RnVuY3Rpb25OYW1lKGYsIG5hbWUsIHByZWZpeCkge1xyXG4gICAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN5bWJvbFwiKSBuYW1lID0gbmFtZS5kZXNjcmlwdGlvbiA/IFwiW1wiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCBcIl1cIikgOiBcIlwiO1xyXG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCBcIm5hbWVcIiwgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBwcmVmaXggPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiIFwiLCBuYW1lKSA6IG5hbWUgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEl0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKTtcclxuICAgIHJldHVybiBnLm5leHQgPSB2ZXJiKDApLCBnW1widGhyb3dcIl0gPSB2ZXJiKDEpLCBnW1wicmV0dXJuXCJdID0gdmVyYigyKSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xyXG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcclxuICAgICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xyXG4gICAgfVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgQXN5bmNJdGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gQXN5bmNJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiLCBhd2FpdFJldHVybiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIGF3YWl0UmV0dXJuKGYpIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodikudGhlbihmLCByZWplY3QpOyB9OyB9XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaWYgKGdbbl0pIHsgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgaWYgKGYpIGlbbl0gPSBmKGlbbl0pOyB9IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcclxuICAgIGlmIChyZWNlaXZlciA9PT0gbnVsbCB8fCAodHlwZW9mIHJlY2VpdmVyICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiByZWNlaXZlciAhPT0gXCJmdW5jdGlvblwiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO1xyXG4gICAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgPT09IHN0YXRlIDogc3RhdGUuaGFzKHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlKGVudiwgdmFsdWUsIGFzeW5jKSB7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWQuXCIpO1xyXG4gICAgICAgIHZhciBkaXNwb3NlLCBpbm5lcjtcclxuICAgICAgICBpZiAoYXN5bmMpIHtcclxuICAgICAgICAgICAgaWYgKCFTeW1ib2wuYXN5bmNEaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jRGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICAgICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuYXN5bmNEaXNwb3NlXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpc3Bvc2UgPT09IHZvaWQgMCkge1xyXG4gICAgICAgICAgICBpZiAoIVN5bWJvbC5kaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmRpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgICAgICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmRpc3Bvc2VdO1xyXG4gICAgICAgICAgICBpZiAoYXN5bmMpIGlubmVyID0gZGlzcG9zZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwb3NlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3Qgbm90IGRpc3Bvc2FibGUuXCIpO1xyXG4gICAgICAgIGlmIChpbm5lcikgZGlzcG9zZSA9IGZ1bmN0aW9uKCkgeyB0cnkgeyBpbm5lci5jYWxsKHRoaXMpOyB9IGNhdGNoIChlKSB7IHJldHVybiBQcm9taXNlLnJlamVjdChlKTsgfSB9O1xyXG4gICAgICAgIGVudi5zdGFjay5wdXNoKHsgdmFsdWU6IHZhbHVlLCBkaXNwb3NlOiBkaXNwb3NlLCBhc3luYzogYXN5bmMgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChhc3luYykge1xyXG4gICAgICAgIGVudi5zdGFjay5wdXNoKHsgYXN5bmM6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcblxyXG59XHJcblxyXG52YXIgX1N1cHByZXNzZWRFcnJvciA9IHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGlzcG9zZVJlc291cmNlcyhlbnYpIHtcclxuICAgIGZ1bmN0aW9uIGZhaWwoZSkge1xyXG4gICAgICAgIGVudi5lcnJvciA9IGVudi5oYXNFcnJvciA/IG5ldyBfU3VwcHJlc3NlZEVycm9yKGUsIGVudi5lcnJvciwgXCJBbiBlcnJvciB3YXMgc3VwcHJlc3NlZCBkdXJpbmcgZGlzcG9zYWwuXCIpIDogZTtcclxuICAgICAgICBlbnYuaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdmFyIHIsIHMgPSAwO1xyXG4gICAgZnVuY3Rpb24gbmV4dCgpIHtcclxuICAgICAgICB3aGlsZSAociA9IGVudi5zdGFjay5wb3AoKSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyLmFzeW5jICYmIHMgPT09IDEpIHJldHVybiBzID0gMCwgZW52LnN0YWNrLnB1c2gociksIFByb21pc2UucmVzb2x2ZSgpLnRoZW4obmV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoci5kaXNwb3NlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHIuZGlzcG9zZS5jYWxsKHIudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyLmFzeW5jKSByZXR1cm4gcyB8PSAyLCBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKG5leHQsIGZ1bmN0aW9uKGUpIHsgZmFpbChlKTsgcmV0dXJuIG5leHQoKTsgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHMgfD0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgZmFpbChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocyA9PT0gMSkgcmV0dXJuIGVudi5oYXNFcnJvciA/IFByb21pc2UucmVqZWN0KGVudi5lcnJvcikgOiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV4dCgpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHM6IF9fZXh0ZW5kcyxcclxuICAgIF9fYXNzaWduOiBfX2Fzc2lnbixcclxuICAgIF9fcmVzdDogX19yZXN0LFxyXG4gICAgX19kZWNvcmF0ZTogX19kZWNvcmF0ZSxcclxuICAgIF9fcGFyYW06IF9fcGFyYW0sXHJcbiAgICBfX21ldGFkYXRhOiBfX21ldGFkYXRhLFxyXG4gICAgX19hd2FpdGVyOiBfX2F3YWl0ZXIsXHJcbiAgICBfX2dlbmVyYXRvcjogX19nZW5lcmF0b3IsXHJcbiAgICBfX2NyZWF0ZUJpbmRpbmc6IF9fY3JlYXRlQmluZGluZyxcclxuICAgIF9fZXhwb3J0U3RhcjogX19leHBvcnRTdGFyLFxyXG4gICAgX192YWx1ZXM6IF9fdmFsdWVzLFxyXG4gICAgX19yZWFkOiBfX3JlYWQsXHJcbiAgICBfX3NwcmVhZDogX19zcHJlYWQsXHJcbiAgICBfX3NwcmVhZEFycmF5czogX19zcHJlYWRBcnJheXMsXHJcbiAgICBfX3NwcmVhZEFycmF5OiBfX3NwcmVhZEFycmF5LFxyXG4gICAgX19hd2FpdDogX19hd2FpdCxcclxuICAgIF9fYXN5bmNHZW5lcmF0b3I6IF9fYXN5bmNHZW5lcmF0b3IsXHJcbiAgICBfX2FzeW5jRGVsZWdhdG9yOiBfX2FzeW5jRGVsZWdhdG9yLFxyXG4gICAgX19hc3luY1ZhbHVlczogX19hc3luY1ZhbHVlcyxcclxuICAgIF9fbWFrZVRlbXBsYXRlT2JqZWN0OiBfX21ha2VUZW1wbGF0ZU9iamVjdCxcclxuICAgIF9faW1wb3J0U3RhcjogX19pbXBvcnRTdGFyLFxyXG4gICAgX19pbXBvcnREZWZhdWx0OiBfX2ltcG9ydERlZmF1bHQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0OiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldDogX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRJbjogX19jbGFzc1ByaXZhdGVGaWVsZEluLFxyXG4gICAgX19hZGREaXNwb3NhYmxlUmVzb3VyY2U6IF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxyXG4gICAgX19kaXNwb3NlUmVzb3VyY2VzOiBfX2Rpc3Bvc2VSZXNvdXJjZXMsXHJcbn07XHJcbiIsIihmdW5jdGlvbiAoZmFjdG9yeSkge1xuICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICBmYWN0b3J5KCk7XG59KSgoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICAgIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwge1xuICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgfSk7XG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9XG5cbiAgZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gICAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICAgIH1cblxuICAgIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7XG4gICAgICB3cml0YWJsZTogZmFsc2VcbiAgICB9KTtcbiAgICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICAgIH07XG4gICAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgICByZXR1cm4gbztcbiAgICB9O1xuICAgIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG4gIH1cblxuICBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikge1xuICAgIGlmIChzZWxmID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZjtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHtcbiAgICBpZiAoY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICAgIHJldHVybiBjYWxsO1xuICAgIH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7XG4gIH1cblxuICBmdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkge1xuICAgIHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkge1xuICAgICAgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLFxuICAgICAgICAgIHJlc3VsdDtcblxuICAgICAgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHtcbiAgICAgICAgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjtcblxuICAgICAgICByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9zdXBlclByb3BCYXNlKG9iamVjdCwgcHJvcGVydHkpIHtcbiAgICB3aGlsZSAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KSkge1xuICAgICAgb2JqZWN0ID0gX2dldFByb3RvdHlwZU9mKG9iamVjdCk7XG4gICAgICBpZiAob2JqZWN0ID09PSBudWxsKSBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbiAgZnVuY3Rpb24gX2dldCgpIHtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgIT09IFwidW5kZWZpbmVkXCIgJiYgUmVmbGVjdC5nZXQpIHtcbiAgICAgIF9nZXQgPSBSZWZsZWN0LmdldC5iaW5kKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9nZXQgPSBmdW5jdGlvbiBfZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVyKSB7XG4gICAgICAgIHZhciBiYXNlID0gX3N1cGVyUHJvcEJhc2UodGFyZ2V0LCBwcm9wZXJ0eSk7XG5cbiAgICAgICAgaWYgKCFiYXNlKSByZXR1cm47XG4gICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihiYXNlLCBwcm9wZXJ0eSk7XG5cbiAgICAgICAgaWYgKGRlc2MuZ2V0KSB7XG4gICAgICAgICAgcmV0dXJuIGRlc2MuZ2V0LmNhbGwoYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB0YXJnZXQgOiByZWNlaXZlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVzYy52YWx1ZTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIF9nZXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHZhciBFbWl0dGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFbWl0dGVyKCkge1xuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEVtaXR0ZXIpO1xuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2xpc3RlbmVycycsIHtcbiAgICAgICAgdmFsdWU6IHt9LFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBfY3JlYXRlQ2xhc3MoRW1pdHRlciwgW3tcbiAgICAgIGtleTogXCJhZGRFdmVudExpc3RlbmVyXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBjYWxsYmFjaywgb3B0aW9ucykge1xuICAgICAgICBpZiAoISh0eXBlIGluIHRoaXMubGlzdGVuZXJzKSkge1xuICAgICAgICAgIHRoaXMubGlzdGVuZXJzW3R5cGVdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpc3RlbmVyc1t0eXBlXS5wdXNoKHtcbiAgICAgICAgICBjYWxsYmFjazogY2FsbGJhY2ssXG4gICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCEodHlwZSBpbiB0aGlzLmxpc3RlbmVycykpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RhY2sgPSB0aGlzLmxpc3RlbmVyc1t0eXBlXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHN0YWNrLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGlmIChzdGFja1tpXS5jYWxsYmFjayA9PT0gY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHN0YWNrLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZGlzcGF0Y2hFdmVudFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgaWYgKCEoZXZlbnQudHlwZSBpbiB0aGlzLmxpc3RlbmVycykpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RhY2sgPSB0aGlzLmxpc3RlbmVyc1tldmVudC50eXBlXTtcbiAgICAgICAgdmFyIHN0YWNrVG9DYWxsID0gc3RhY2suc2xpY2UoKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHN0YWNrVG9DYWxsLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIHZhciBsaXN0ZW5lciA9IHN0YWNrVG9DYWxsW2ldO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxpc3RlbmVyLmNhbGxiYWNrLmNhbGwodGhpcywgZXZlbnQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGxpc3RlbmVyLm9wdGlvbnMgJiYgbGlzdGVuZXIub3B0aW9ucy5vbmNlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQudHlwZSwgbGlzdGVuZXIuY2FsbGJhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZDtcbiAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gRW1pdHRlcjtcbiAgfSgpO1xuXG4gIHZhciBBYm9ydFNpZ25hbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0VtaXR0ZXIpIHtcbiAgICBfaW5oZXJpdHMoQWJvcnRTaWduYWwsIF9FbWl0dGVyKTtcblxuICAgIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQWJvcnRTaWduYWwpO1xuXG4gICAgZnVuY3Rpb24gQWJvcnRTaWduYWwoKSB7XG4gICAgICB2YXIgX3RoaXM7XG5cbiAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBYm9ydFNpZ25hbCk7XG5cbiAgICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcyk7IC8vIFNvbWUgdmVyc2lvbnMgb2YgYmFiZWwgZG9lcyBub3QgdHJhbnNwaWxlIHN1cGVyKCkgY29ycmVjdGx5IGZvciBJRSA8PSAxMCwgaWYgdGhlIHBhcmVudFxuICAgICAgLy8gY29uc3RydWN0b3IgaGFzIGZhaWxlZCB0byBydW4sIHRoZW4gXCJ0aGlzLmxpc3RlbmVyc1wiIHdpbGwgc3RpbGwgYmUgdW5kZWZpbmVkIGFuZCB0aGVuIHdlIGNhbGxcbiAgICAgIC8vIHRoZSBwYXJlbnQgY29uc3RydWN0b3IgZGlyZWN0bHkgaW5zdGVhZCBhcyBhIHdvcmthcm91bmQuIEZvciBnZW5lcmFsIGRldGFpbHMsIHNlZSBiYWJlbCBidWc6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYmFiZWwvYmFiZWwvaXNzdWVzLzMwNDFcbiAgICAgIC8vIFRoaXMgaGFjayB3YXMgYWRkZWQgYXMgYSBmaXggZm9yIHRoZSBpc3N1ZSBkZXNjcmliZWQgaGVyZTpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9GaW5hbmNpYWwtVGltZXMvcG9seWZpbGwtbGlicmFyeS9wdWxsLzU5I2lzc3VlY29tbWVudC00Nzc1NTgwNDJcblxuICAgICAgaWYgKCFfdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgICAgRW1pdHRlci5jYWxsKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcbiAgICAgIH0gLy8gQ29tcGFyZWQgdG8gYXNzaWdubWVudCwgT2JqZWN0LmRlZmluZVByb3BlcnR5IG1ha2VzIHByb3BlcnRpZXMgbm9uLWVudW1lcmFibGUgYnkgZGVmYXVsdCBhbmRcbiAgICAgIC8vIHdlIHdhbnQgT2JqZWN0LmtleXMobmV3IEFib3J0Q29udHJvbGxlcigpLnNpZ25hbCkgdG8gYmUgW10gZm9yIGNvbXBhdCB3aXRoIHRoZSBuYXRpdmUgaW1wbFxuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgJ2Fib3J0ZWQnLCB7XG4gICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksICdvbmFib3J0Jywge1xuICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksICdyZWFzb24nLCB7XG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cblxuICAgIF9jcmVhdGVDbGFzcyhBYm9ydFNpZ25hbCwgW3tcbiAgICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gJ1tvYmplY3QgQWJvcnRTaWduYWxdJztcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZGlzcGF0Y2hFdmVudFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdhYm9ydCcpIHtcbiAgICAgICAgICB0aGlzLmFib3J0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9uYWJvcnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMub25hYm9ydC5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBfZ2V0KF9nZXRQcm90b3R5cGVPZihBYm9ydFNpZ25hbC5wcm90b3R5cGUpLCBcImRpc3BhdGNoRXZlbnRcIiwgdGhpcykuY2FsbCh0aGlzLCBldmVudCk7XG4gICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIEFib3J0U2lnbmFsO1xuICB9KEVtaXR0ZXIpO1xuICB2YXIgQWJvcnRDb250cm9sbGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBBYm9ydENvbnRyb2xsZXIoKSB7XG4gICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQWJvcnRDb250cm9sbGVyKTtcblxuICAgICAgLy8gQ29tcGFyZWQgdG8gYXNzaWdubWVudCwgT2JqZWN0LmRlZmluZVByb3BlcnR5IG1ha2VzIHByb3BlcnRpZXMgbm9uLWVudW1lcmFibGUgYnkgZGVmYXVsdCBhbmRcbiAgICAgIC8vIHdlIHdhbnQgT2JqZWN0LmtleXMobmV3IEFib3J0Q29udHJvbGxlcigpKSB0byBiZSBbXSBmb3IgY29tcGF0IHdpdGggdGhlIG5hdGl2ZSBpbXBsXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3NpZ25hbCcsIHtcbiAgICAgICAgdmFsdWU6IG5ldyBBYm9ydFNpZ25hbCgpLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBfY3JlYXRlQ2xhc3MoQWJvcnRDb250cm9sbGVyLCBbe1xuICAgICAga2V5OiBcImFib3J0XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gYWJvcnQocmVhc29uKSB7XG4gICAgICAgIHZhciBldmVudDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGV2ZW50ID0gbmV3IEV2ZW50KCdhYm9ydCcpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmICghZG9jdW1lbnQuY3JlYXRlRXZlbnQpIHtcbiAgICAgICAgICAgICAgLy8gRm9yIEludGVybmV0IEV4cGxvcmVyIDg6XG4gICAgICAgICAgICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnRPYmplY3QoKTtcbiAgICAgICAgICAgICAgZXZlbnQudHlwZSA9ICdhYm9ydCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBGb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTE6XG4gICAgICAgICAgICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICAgICAgICAgIGV2ZW50LmluaXRFdmVudCgnYWJvcnQnLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFjayB3aGVyZSBkb2N1bWVudCBpc24ndCBhdmFpbGFibGU6XG4gICAgICAgICAgICBldmVudCA9IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2Fib3J0JyxcbiAgICAgICAgICAgICAgYnViYmxlczogZmFsc2UsXG4gICAgICAgICAgICAgIGNhbmNlbGFibGU6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzaWduYWxSZWFzb24gPSByZWFzb247XG5cbiAgICAgICAgaWYgKHNpZ25hbFJlYXNvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHNpZ25hbFJlYXNvbiA9IG5ldyBFcnJvcignVGhpcyBvcGVyYXRpb24gd2FzIGFib3J0ZWQnKTtcbiAgICAgICAgICAgIHNpZ25hbFJlYXNvbi5uYW1lID0gJ0Fib3J0RXJyb3InO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBzaWduYWxSZWFzb24gPSBuZXcgRE9NRXhjZXB0aW9uKCdzaWduYWwgaXMgYWJvcnRlZCB3aXRob3V0IHJlYXNvbicpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIC8vIElFIDExIGRvZXMgbm90IHN1cHBvcnQgY2FsbGluZyB0aGUgRE9NRXhjZXB0aW9uIGNvbnN0cnVjdG9yLCB1c2UgYVxuICAgICAgICAgICAgICAvLyByZWd1bGFyIGVycm9yIG9iamVjdCBvbiBpdCBpbnN0ZWFkLlxuICAgICAgICAgICAgICBzaWduYWxSZWFzb24gPSBuZXcgRXJyb3IoJ1RoaXMgb3BlcmF0aW9uIHdhcyBhYm9ydGVkJyk7XG4gICAgICAgICAgICAgIHNpZ25hbFJlYXNvbi5uYW1lID0gJ0Fib3J0RXJyb3InO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2lnbmFsLnJlYXNvbiA9IHNpZ25hbFJlYXNvbjtcbiAgICAgICAgdGhpcy5zaWduYWwuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiAnW29iamVjdCBBYm9ydENvbnRyb2xsZXJdJztcbiAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gQWJvcnRDb250cm9sbGVyO1xuICB9KCk7XG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuICAgIC8vIFRoZXNlIGFyZSBuZWNlc3NhcnkgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZ2V0IGNvcnJlY3Qgb3V0cHV0IGZvcjpcbiAgICAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IEFib3J0Q29udHJvbGxlcigpKVxuICAgIEFib3J0Q29udHJvbGxlci5wcm90b3R5cGVbU3ltYm9sLnRvU3RyaW5nVGFnXSA9ICdBYm9ydENvbnRyb2xsZXInO1xuICAgIEFib3J0U2lnbmFsLnByb3RvdHlwZVtTeW1ib2wudG9TdHJpbmdUYWddID0gJ0Fib3J0U2lnbmFsJztcbiAgfVxuXG4gIGZ1bmN0aW9uIHBvbHlmaWxsTmVlZGVkKHNlbGYpIHtcbiAgICBpZiAoc2VsZi5fX0ZPUkNFX0lOU1RBTExfQUJPUlRDT05UUk9MTEVSX1BPTFlGSUxMKSB7XG4gICAgICBjb25zb2xlLmxvZygnX19GT1JDRV9JTlNUQUxMX0FCT1JUQ09OVFJPTExFUl9QT0xZRklMTD10cnVlIGlzIHNldCwgd2lsbCBmb3JjZSBpbnN0YWxsIHBvbHlmaWxsJyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IC8vIE5vdGUgdGhhdCB0aGUgXCJ1bmZldGNoXCIgbWluaW1hbCBmZXRjaCBwb2x5ZmlsbCBkZWZpbmVzIGZldGNoKCkgd2l0aG91dFxuICAgIC8vIGRlZmluaW5nIHdpbmRvdy5SZXF1ZXN0LCBhbmQgdGhpcyBwb2x5ZmlsbCBuZWVkIHRvIHdvcmsgb24gdG9wIG9mIHVuZmV0Y2hcbiAgICAvLyBzbyB0aGUgYmVsb3cgZmVhdHVyZSBkZXRlY3Rpb24gbmVlZHMgdGhlICFzZWxmLkFib3J0Q29udHJvbGxlciBwYXJ0LlxuICAgIC8vIFRoZSBSZXF1ZXN0LnByb3RvdHlwZSBjaGVjayBpcyBhbHNvIG5lZWRlZCBiZWNhdXNlIFNhZmFyaSB2ZXJzaW9ucyAxMS4xLjJcbiAgICAvLyB1cCB0byBhbmQgaW5jbHVkaW5nIDEyLjEueCBoYXMgYSB3aW5kb3cuQWJvcnRDb250cm9sbGVyIHByZXNlbnQgYnV0IHN0aWxsXG4gICAgLy8gZG9lcyBOT1QgY29ycmVjdGx5IGltcGxlbWVudCBhYm9ydGFibGUgZmV0Y2g6XG4gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDk4MCNjMlxuXG5cbiAgICByZXR1cm4gdHlwZW9mIHNlbGYuUmVxdWVzdCA9PT0gJ2Z1bmN0aW9uJyAmJiAhc2VsZi5SZXF1ZXN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnc2lnbmFsJykgfHwgIXNlbGYuQWJvcnRDb250cm9sbGVyO1xuICB9XG5cbiAgKGZ1bmN0aW9uIChzZWxmKSB7XG5cbiAgICBpZiAoIXBvbHlmaWxsTmVlZGVkKHNlbGYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2VsZi5BYm9ydENvbnRyb2xsZXIgPSBBYm9ydENvbnRyb2xsZXI7XG4gICAgc2VsZi5BYm9ydFNpZ25hbCA9IEFib3J0U2lnbmFsO1xuICB9KSh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogZ2xvYmFsKTtcblxufSkpO1xuIixudWxsLCIvKlxuXG4gQ29weXJpZ2h0IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9ycy5cbiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuKi9cbnZhciBhYT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2EhPUFycmF5LnByb3RvdHlwZSYmYSE9T2JqZWN0LnByb3RvdHlwZSYmKGFbYl09Yy52YWx1ZSl9LGU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93PT09dGhpcz90aGlzOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWwmJm51bGwhPWdsb2JhbD9nbG9iYWw6dGhpcztmdW5jdGlvbiBiYShhLGIpe2lmKGIpe3ZhciBjPWU7YT1hLnNwbGl0KFwiLlwiKTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoLTE7ZCsrKXt2YXIgZj1hW2RdO2YgaW4gY3x8KGNbZl09e30pO2M9Y1tmXX1hPWFbYS5sZW5ndGgtMV07ZD1jW2FdO2I9YihkKTtiIT1kJiZudWxsIT1iJiZhYShjLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9fVxuZnVuY3Rpb24gY2EoYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19ZnVuY3Rpb24gZGEoKXtkYT1mdW5jdGlvbigpe307ZS5TeW1ib2x8fChlLlN5bWJvbD1lYSl9ZnVuY3Rpb24gZmEoYSxiKXt0aGlzLmE9YTthYSh0aGlzLFwiZGVzY3JpcHRpb25cIix7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX1mYS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTt2YXIgZWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMpe2lmKHRoaXMgaW5zdGFuY2VvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3JcIik7cmV0dXJuIG5ldyBmYShcImpzY29tcF9zeW1ib2xfXCIrKGN8fFwiXCIpK1wiX1wiK2IrKyxjKX12YXIgYj0wO3JldHVybiBhfSgpO1xuZnVuY3Rpb24gaGEoKXtkYSgpO3ZhciBhPWUuU3ltYm9sLml0ZXJhdG9yO2F8fChhPWUuU3ltYm9sLml0ZXJhdG9yPWUuU3ltYm9sKFwiU3ltYm9sLml0ZXJhdG9yXCIpKTtcImZ1bmN0aW9uXCIhPXR5cGVvZiBBcnJheS5wcm90b3R5cGVbYV0mJmFhKEFycmF5LnByb3RvdHlwZSxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gaWEoY2EodGhpcykpfX0pO2hhPWZ1bmN0aW9uKCl7fX1mdW5jdGlvbiBpYShhKXtoYSgpO2E9e25leHQ6YX07YVtlLlN5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307cmV0dXJuIGF9XG5mdW5jdGlvbiBqYShhLGIpe2hhKCk7YSBpbnN0YW5jZW9mIFN0cmluZyYmKGErPVwiXCIpO3ZhciBjPTAsZD17bmV4dDpmdW5jdGlvbigpe2lmKGM8YS5sZW5ndGgpe3ZhciBmPWMrKztyZXR1cm57dmFsdWU6YihmLGFbZl0pLGRvbmU6ITF9fWQubmV4dD1mdW5jdGlvbigpe3JldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19O3JldHVybiBkLm5leHQoKX19O2RbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiBkfTtyZXR1cm4gZH1iYShcIkFycmF5LnByb3RvdHlwZS5lbnRyaWVzXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybiBqYSh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuW2IsY119KX19KTt2YXIga2E9dGhpc3x8c2VsZjtcbmZ1bmN0aW9uIGcoYSxiLGMpe2E9YS5zcGxpdChcIi5cIik7Yz1jfHxrYTthWzBdaW4gY3x8XCJ1bmRlZmluZWRcIj09dHlwZW9mIGMuZXhlY1NjcmlwdHx8Yy5leGVjU2NyaXB0KFwidmFyIFwiK2FbMF0pO2Zvcih2YXIgZDthLmxlbmd0aCYmKGQ9YS5zaGlmdCgpKTspYS5sZW5ndGh8fHZvaWQgMD09PWI/Y1tkXSYmY1tkXSE9PU9iamVjdC5wcm90b3R5cGVbZF0/Yz1jW2RdOmM9Y1tkXT17fTpjW2RdPWJ9XG5mdW5jdGlvbiBrKGEpe3ZhciBiPXR5cGVvZiBhO2lmKFwib2JqZWN0XCI9PWIpaWYoYSl7aWYoYSBpbnN0YW5jZW9mIEFycmF5KXJldHVyblwiYXJyYXlcIjtpZihhIGluc3RhbmNlb2YgT2JqZWN0KXJldHVybiBiO3ZhciBjPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKTtpZihcIltvYmplY3QgV2luZG93XVwiPT1jKXJldHVyblwib2JqZWN0XCI7aWYoXCJbb2JqZWN0IEFycmF5XVwiPT1jfHxcIm51bWJlclwiPT10eXBlb2YgYS5sZW5ndGgmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBhLnNwbGljZSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGEucHJvcGVydHlJc0VudW1lcmFibGUmJiFhLnByb3BlcnR5SXNFbnVtZXJhYmxlKFwic3BsaWNlXCIpKXJldHVyblwiYXJyYXlcIjtpZihcIltvYmplY3QgRnVuY3Rpb25dXCI9PWN8fFwidW5kZWZpbmVkXCIhPXR5cGVvZiBhLmNhbGwmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBhLnByb3BlcnR5SXNFbnVtZXJhYmxlJiYhYS5wcm9wZXJ0eUlzRW51bWVyYWJsZShcImNhbGxcIikpcmV0dXJuXCJmdW5jdGlvblwifWVsc2UgcmV0dXJuXCJudWxsXCI7XG5lbHNlIGlmKFwiZnVuY3Rpb25cIj09YiYmXCJ1bmRlZmluZWRcIj09dHlwZW9mIGEuY2FsbClyZXR1cm5cIm9iamVjdFwiO3JldHVybiBifWZ1bmN0aW9uIGxhKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVyblwib2JqZWN0XCI9PWImJm51bGwhPWF8fFwiZnVuY3Rpb25cIj09Yn1mdW5jdGlvbiBtYShhLGIsYyl7ZyhhLGIsYyl9ZnVuY3Rpb24gbmEoYSxiKXtmdW5jdGlvbiBjKCl7fWMucHJvdG90eXBlPWIucHJvdG90eXBlO2EucHJvdG90eXBlPW5ldyBjO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWF9O3ZhciBvYT1cImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZlwiLnNwbGl0KFwiIFwiKTtmdW5jdGlvbiBwYShhLGIpe2Zvcih2YXIgYyxkLGY9MTtmPGFyZ3VtZW50cy5sZW5ndGg7ZisrKXtkPWFyZ3VtZW50c1tmXTtmb3IoYyBpbiBkKWFbY109ZFtjXTtmb3IodmFyIGg9MDtoPG9hLmxlbmd0aDtoKyspYz1vYVtoXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxjKSYmKGFbY109ZFtjXSl9fTt2YXIgcWE9QXJyYXkucHJvdG90eXBlLmZvckVhY2g/ZnVuY3Rpb24oYSxiKXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsYix2b2lkIDApfTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPVwic3RyaW5nXCI9PT10eXBlb2YgYT9hLnNwbGl0KFwiXCIpOmEsZj0wO2Y8YztmKyspZiBpbiBkJiZiLmNhbGwodm9pZCAwLGRbZl0sZixhKX0sbD1BcnJheS5wcm90b3R5cGUubWFwP2Z1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChhLGIsdm9pZCAwKX06ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YS5sZW5ndGgsZD1BcnJheShjKSxmPVwic3RyaW5nXCI9PT10eXBlb2YgYT9hLnNwbGl0KFwiXCIpOmEsaD0wO2g8YztoKyspaCBpbiBmJiYoZFtoXT1iLmNhbGwodm9pZCAwLGZbaF0saCxhKSk7cmV0dXJuIGR9O1xuZnVuY3Rpb24gcmEoYSxiLGMpe3JldHVybiAyPj1hcmd1bWVudHMubGVuZ3RoP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsYik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSxiLGMpfTtmdW5jdGlvbiBzYShhLGIsYyxkKXt2YXIgZj1cIkFzc2VydGlvbiBmYWlsZWRcIjtpZihjKXtmKz1cIjogXCIrYzt2YXIgaD1kfWVsc2UgYSYmKGYrPVwiOiBcIithLGg9Yik7dGhyb3cgRXJyb3IoZixofHxbXSk7fWZ1bmN0aW9uIG4oYSxiLGMpe2Zvcih2YXIgZD1bXSxmPTI7Zjxhcmd1bWVudHMubGVuZ3RoOysrZilkW2YtMl09YXJndW1lbnRzW2ZdO2F8fHNhKFwiXCIsbnVsbCxiLGQpO3JldHVybiBhfWZ1bmN0aW9uIHRhKGEsYixjKXtmb3IodmFyIGQ9W10sZj0yO2Y8YXJndW1lbnRzLmxlbmd0aDsrK2YpZFtmLTJdPWFyZ3VtZW50c1tmXTtcInN0cmluZ1wiIT09dHlwZW9mIGEmJnNhKFwiRXhwZWN0ZWQgc3RyaW5nIGJ1dCBnb3QgJXM6ICVzLlwiLFtrKGEpLGFdLGIsZCl9XG5mdW5jdGlvbiB1YShhLGIsYyl7Zm9yKHZhciBkPVtdLGY9MjtmPGFyZ3VtZW50cy5sZW5ndGg7KytmKWRbZi0yXT1hcmd1bWVudHNbZl07QXJyYXkuaXNBcnJheShhKXx8c2EoXCJFeHBlY3RlZCBhcnJheSBidXQgZ290ICVzOiAlcy5cIixbayhhKSxhXSxiLGQpfWZ1bmN0aW9uIHAoYSxiKXtmb3IodmFyIGM9W10sZD0xO2Q8YXJndW1lbnRzLmxlbmd0aDsrK2QpY1tkLTFdPWFyZ3VtZW50c1tkXTt0aHJvdyBFcnJvcihcIkZhaWx1cmVcIisoYT9cIjogXCIrYTpcIlwiKSxjKTt9ZnVuY3Rpb24gcShhLGIsYyxkKXtmb3IodmFyIGY9W10saD0zO2g8YXJndW1lbnRzLmxlbmd0aDsrK2gpZltoLTNdPWFyZ3VtZW50c1toXTthIGluc3RhbmNlb2YgYnx8c2EoXCJFeHBlY3RlZCBpbnN0YW5jZW9mICVzIGJ1dCBnb3QgJXMuXCIsW3ZhKGIpLHZhKGEpXSxjLGYpfVxuZnVuY3Rpb24gdmEoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBGdW5jdGlvbj9hLmRpc3BsYXlOYW1lfHxhLm5hbWV8fFwidW5rbm93biB0eXBlIG5hbWVcIjphIGluc3RhbmNlb2YgT2JqZWN0P2EuY29uc3RydWN0b3IuZGlzcGxheU5hbWV8fGEuY29uc3RydWN0b3IubmFtZXx8T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpOm51bGw9PT1hP1wibnVsbFwiOnR5cGVvZiBhfTtmdW5jdGlvbiByKGEsYil7dGhpcy5jPWE7dGhpcy5iPWI7dGhpcy5hPXt9O3RoaXMuYXJyQ2xlYW49ITA7aWYoMDx0aGlzLmMubGVuZ3RoKXtmb3IoYT0wO2E8dGhpcy5jLmxlbmd0aDthKyspe2I9dGhpcy5jW2FdO3ZhciBjPWJbMF07dGhpcy5hW2MudG9TdHJpbmcoKV09bmV3IHdhKGMsYlsxXSl9dGhpcy5hcnJDbGVhbj0hMH19ZyhcImpzcGIuTWFwXCIscix2b2lkIDApO1xuci5wcm90b3R5cGUuZz1mdW5jdGlvbigpe2lmKHRoaXMuYXJyQ2xlYW4pe2lmKHRoaXMuYil7dmFyIGE9dGhpcy5hLGI7Zm9yKGIgaW4gYSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxiKSl7dmFyIGM9YVtiXS5hO2MmJmMuZygpfX19ZWxzZXt0aGlzLmMubGVuZ3RoPTA7YT11KHRoaXMpO2Euc29ydCgpO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBkPXRoaXMuYVthW2JdXTsoYz1kLmEpJiZjLmcoKTt0aGlzLmMucHVzaChbZC5rZXksZC52YWx1ZV0pfXRoaXMuYXJyQ2xlYW49ITB9cmV0dXJuIHRoaXMuY307ci5wcm90b3R5cGUudG9BcnJheT1yLnByb3RvdHlwZS5nO1xuci5wcm90b3R5cGUuTWM9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy5nKCksZD1bXSxmPTA7ZjxjLmxlbmd0aDtmKyspe3ZhciBoPXRoaXMuYVtjW2ZdWzBdLnRvU3RyaW5nKCldO3YodGhpcyxoKTt2YXIgbT1oLmE7bT8obihiKSxkLnB1c2goW2gua2V5LGIoYSxtKV0pKTpkLnB1c2goW2gua2V5LGgudmFsdWVdKX1yZXR1cm4gZH07ci5wcm90b3R5cGUudG9PYmplY3Q9ci5wcm90b3R5cGUuTWM7ci5mcm9tT2JqZWN0PWZ1bmN0aW9uKGEsYixjKXtiPW5ldyByKFtdLGIpO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZj1hW2RdWzBdLGg9YyhhW2RdWzFdKTtiLnNldChmLGgpfXJldHVybiBifTtmdW5jdGlvbiB3KGEpe3RoaXMuYT0wO3RoaXMuYj1hfXcucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hPHRoaXMuYi5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6dGhpcy5iW3RoaXMuYSsrXX06e2RvbmU6ITAsdmFsdWU6dm9pZCAwfX07XG5cInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiYody5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSk7ci5wcm90b3R5cGUuSmI9ZnVuY3Rpb24oKXtyZXR1cm4gdSh0aGlzKS5sZW5ndGh9O3IucHJvdG90eXBlLmdldExlbmd0aD1yLnByb3RvdHlwZS5KYjtyLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuYT17fTt0aGlzLmFyckNsZWFuPSExfTtyLnByb3RvdHlwZS5jbGVhcj1yLnByb3RvdHlwZS5jbGVhcjtyLnByb3RvdHlwZS5DYj1mdW5jdGlvbihhKXthPWEudG9TdHJpbmcoKTt2YXIgYj10aGlzLmEuaGFzT3duUHJvcGVydHkoYSk7ZGVsZXRlIHRoaXMuYVthXTt0aGlzLmFyckNsZWFuPSExO3JldHVybiBifTtyLnByb3RvdHlwZS5kZWw9ci5wcm90b3R5cGUuQ2I7XG5yLnByb3RvdHlwZS5FYj1mdW5jdGlvbigpe3ZhciBhPVtdLGI9dSh0aGlzKTtiLnNvcnQoKTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9dGhpcy5hW2JbY11dO2EucHVzaChbZC5rZXksZC52YWx1ZV0pfXJldHVybiBhfTtyLnByb3RvdHlwZS5nZXRFbnRyeUxpc3Q9ci5wcm90b3R5cGUuRWI7ci5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3ZhciBhPVtdLGI9dSh0aGlzKTtiLnNvcnQoKTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9dGhpcy5hW2JbY11dO2EucHVzaChbZC5rZXksdih0aGlzLGQpXSl9cmV0dXJuIG5ldyB3KGEpfTtyLnByb3RvdHlwZS5lbnRyaWVzPXIucHJvdG90eXBlLmVudHJpZXM7ci5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3ZhciBhPVtdLGI9dSh0aGlzKTtiLnNvcnQoKTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKylhLnB1c2godGhpcy5hW2JbY11dLmtleSk7cmV0dXJuIG5ldyB3KGEpfTtcbnIucHJvdG90eXBlLmtleXM9ci5wcm90b3R5cGUua2V5cztyLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPXUodGhpcyk7Yi5zb3J0KCk7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspYS5wdXNoKHYodGhpcyx0aGlzLmFbYltjXV0pKTtyZXR1cm4gbmV3IHcoYSl9O3IucHJvdG90eXBlLnZhbHVlcz1yLnByb3RvdHlwZS52YWx1ZXM7ci5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihhLGIpe3ZhciBjPXUodGhpcyk7Yy5zb3J0KCk7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBmPXRoaXMuYVtjW2RdXTthLmNhbGwoYix2KHRoaXMsZiksZi5rZXksdGhpcyl9fTtyLnByb3RvdHlwZS5mb3JFYWNoPXIucHJvdG90eXBlLmZvckVhY2g7XG5yLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgd2EoYSk7dGhpcy5iPyhjLmE9YixjLnZhbHVlPWIuZygpKTpjLnZhbHVlPWI7dGhpcy5hW2EudG9TdHJpbmcoKV09Yzt0aGlzLmFyckNsZWFuPSExO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5zZXQ9ci5wcm90b3R5cGUuc2V0O2Z1bmN0aW9uIHYoYSxiKXtyZXR1cm4gYS5iPyhiLmF8fChiLmE9bmV3IGEuYihiLnZhbHVlKSksYi5hKTpiLnZhbHVlfXIucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtpZihhPXRoaXMuYVthLnRvU3RyaW5nKCldKXJldHVybiB2KHRoaXMsYSl9O3IucHJvdG90eXBlLmdldD1yLnByb3RvdHlwZS5nZXQ7ci5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGEpe3JldHVybiBhLnRvU3RyaW5nKClpbiB0aGlzLmF9O3IucHJvdG90eXBlLmhhcz1yLnByb3RvdHlwZS5oYXM7XG5yLnByb3RvdHlwZS5KYz1mdW5jdGlvbihhLGIsYyxkLGYpe3ZhciBoPXUodGhpcyk7aC5zb3J0KCk7Zm9yKHZhciBtPTA7bTxoLmxlbmd0aDttKyspe3ZhciB0PXRoaXMuYVtoW21dXTtiLlZhKGEpO2MuY2FsbChiLDEsdC5rZXkpO3RoaXMuYj9kLmNhbGwoYiwyLHYodGhpcyx0KSxmKTpkLmNhbGwoYiwyLHQudmFsdWUpO2IuWWEoKX19O3IucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeT1yLnByb3RvdHlwZS5KYztyLmRlc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGEsYixjLGQsZixoLG0pe2Zvcig7Yi5vYSgpJiYhYi5iYigpOyl7dmFyIHQ9Yi5jOzE9PXQ/aD1jLmNhbGwoYik6Mj09dCYmKGEuYj8obihmKSxtfHwobT1uZXcgYS5iKSxkLmNhbGwoYixtLGYpKTptPWQuY2FsbChiKSl9bih2b2lkIDAhPWgpO24odm9pZCAwIT1tKTthLnNldChoLG0pfTtcbmZ1bmN0aW9uIHUoYSl7YT1hLmE7dmFyIGI9W10sYztmb3IoYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiZiLnB1c2goYyk7cmV0dXJuIGJ9ZnVuY3Rpb24gd2EoYSxiKXt0aGlzLmtleT1hO3RoaXMudmFsdWU9Yjt0aGlzLmE9dm9pZCAwfTtmdW5jdGlvbiB4YShhKXtpZig4MTkyPj1hLmxlbmd0aClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEpO2Zvcih2YXIgYj1cIlwiLGM9MDtjPGEubGVuZ3RoO2MrPTgxOTIpYis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHJhKGEsYyxjKzgxOTIpKTtyZXR1cm4gYn07dmFyIHlhPXtcIlxceDAwXCI6XCJcXFxcMFwiLFwiXFxiXCI6XCJcXFxcYlwiLFwiXFxmXCI6XCJcXFxcZlwiLFwiXFxuXCI6XCJcXFxcblwiLFwiXFxyXCI6XCJcXFxcclwiLFwiXFx0XCI6XCJcXFxcdFwiLFwiXFx4MEJcIjpcIlxcXFx4MEJcIiwnXCInOidcXFxcXCInLFwiXFxcXFwiOlwiXFxcXFxcXFxcIixcIjxcIjpcIlxcXFx1MDAzQ1wifSx6YT17XCInXCI6XCJcXFxcJ1wifTt2YXIgQWE9e30seD1udWxsO2Z1bmN0aW9uIEJhKGEsYil7dm9pZCAwPT09YiYmKGI9MCk7Q2EoKTtiPUFhW2JdO2Zvcih2YXIgYz1bXSxkPTA7ZDxhLmxlbmd0aDtkKz0zKXt2YXIgZj1hW2RdLGg9ZCsxPGEubGVuZ3RoLG09aD9hW2QrMV06MCx0PWQrMjxhLmxlbmd0aCxCPXQ/YVtkKzJdOjAsTT1mPj4yO2Y9KGYmMyk8PDR8bT4+NDttPShtJjE1KTw8MnxCPj42O0ImPTYzO3R8fChCPTY0LGh8fChtPTY0KSk7Yy5wdXNoKGJbTV0sYltmXSxiW21dfHxcIlwiLGJbQl18fFwiXCIpfXJldHVybiBjLmpvaW4oXCJcIil9ZnVuY3Rpb24gRGEoYSl7dmFyIGI9YS5sZW5ndGgsYz0zKmIvNDtjJTM/Yz1NYXRoLmZsb29yKGMpOi0xIT1cIj0uXCIuaW5kZXhPZihhW2ItMV0pJiYoYz0tMSE9XCI9LlwiLmluZGV4T2YoYVtiLTJdKT9jLTI6Yy0xKTt2YXIgZD1uZXcgVWludDhBcnJheShjKSxmPTA7RWEoYSxmdW5jdGlvbihoKXtkW2YrK109aH0pO3JldHVybiBkLnN1YmFycmF5KDAsZil9XG5mdW5jdGlvbiBFYShhLGIpe2Z1bmN0aW9uIGMoQil7Zm9yKDtkPGEubGVuZ3RoOyl7dmFyIE09YS5jaGFyQXQoZCsrKSxMYT14W01dO2lmKG51bGwhPUxhKXJldHVybiBMYTtpZighL15bXFxzXFx4YTBdKiQvLnRlc3QoTSkpdGhyb3cgRXJyb3IoXCJVbmtub3duIGJhc2U2NCBlbmNvZGluZyBhdCBjaGFyOiBcIitNKTt9cmV0dXJuIEJ9Q2EoKTtmb3IodmFyIGQ9MDs7KXt2YXIgZj1jKC0xKSxoPWMoMCksbT1jKDY0KSx0PWMoNjQpO2lmKDY0PT09dCYmLTE9PT1mKWJyZWFrO2IoZjw8MnxoPj40KTs2NCE9bSYmKGIoaDw8NCYyNDB8bT4+MiksNjQhPXQmJmIobTw8NiYxOTJ8dCkpfX1cbmZ1bmN0aW9uIENhKCl7aWYoIXgpe3g9e307Zm9yKHZhciBhPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIi5zcGxpdChcIlwiKSxiPVtcIisvPVwiLFwiKy9cIixcIi1fPVwiLFwiLV8uXCIsXCItX1wiXSxjPTA7NT5jO2MrKyl7dmFyIGQ9YS5jb25jYXQoYltjXS5zcGxpdChcIlwiKSk7QWFbY109ZDtmb3IodmFyIGY9MDtmPGQubGVuZ3RoO2YrKyl7dmFyIGg9ZFtmXTt2b2lkIDA9PT14W2hdJiYoeFtoXT1mKX19fX07ZyhcImpzcGIuQ29uc3RCaW5hcnlNZXNzYWdlXCIsZnVuY3Rpb24oKXt9LHZvaWQgMCk7ZyhcImpzcGIuQmluYXJ5TWVzc2FnZVwiLGZ1bmN0aW9uKCl7fSx2b2lkIDApO2coXCJqc3BiLkJpbmFyeUNvbnN0YW50cy5GaWVsZFR5cGVcIix7eWI6LTEsZWU6MSxGTE9BVDoyLGtlOjMsdGU6NCxqZTo1LHhiOjYsd2I6NyxCT09MOjgscmU6OSxpZToxMCxsZToxMSxjZToxMixzZToxMyxnZToxNCxtZToxNSxuZToxNixvZToxNyxwZToxOCxoZTozMCx2ZTozMX0sdm9pZCAwKTtnKFwianNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGVcIix7eWI6LTEsdWU6MCx4YjoxLGRlOjIscWU6MyxmZTo0LHdiOjV9LHZvaWQgMCk7XG5nKFwianNwYi5CaW5hcnlDb25zdGFudHMuRmllbGRUeXBlVG9XaXJlVHlwZVwiLGZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDU6Y2FzZSAzOmNhc2UgMTM6Y2FzZSA0OmNhc2UgMTc6Y2FzZSAxODpjYXNlIDg6Y2FzZSAxNDpjYXNlIDMxOnJldHVybiAwO2Nhc2UgMTpjYXNlIDY6Y2FzZSAxNjpjYXNlIDMwOnJldHVybiAxO2Nhc2UgOTpjYXNlIDExOmNhc2UgMTI6cmV0dXJuIDI7Y2FzZSAyOmNhc2UgNzpjYXNlIDE1OnJldHVybiA1O2RlZmF1bHQ6cmV0dXJuLTF9fSx2b2lkIDApO2coXCJqc3BiLkJpbmFyeUNvbnN0YW50cy5JTlZBTElEX0ZJRUxEX05VTUJFUlwiLC0xLHZvaWQgMCk7ZyhcImpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfRVBTXCIsMS40MDEyOTg0NjQzMjQ4MTdFLTQ1LHZvaWQgMCk7ZyhcImpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfTUlOXCIsMS4xNzU0OTQzNTA4MjIyODc1RS0zOCx2b2lkIDApO1xuZyhcImpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfTUFYXCIsMy40MDI4MjM0NjYzODUyODg2RTM4LHZvaWQgMCk7ZyhcImpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfRVBTXCIsNC45RS0zMjQsdm9pZCAwKTtnKFwianNwYi5CaW5hcnlDb25zdGFudHMuRkxPQVQ2NF9NSU5cIiwyLjIyNTA3Mzg1ODUwNzIwMTRFLTMwOCx2b2lkIDApO2coXCJqc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDY0X01BWFwiLDEuNzk3NjkzMTM0ODYyMzE1N0UzMDgsdm9pZCAwKTtnKFwianNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzIwXCIsMTA0ODU3Nix2b2lkIDApO2coXCJqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMjNcIiw4Mzg4NjA4LHZvaWQgMCk7ZyhcImpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMVwiLDIxNDc0ODM2NDgsdm9pZCAwKTtnKFwianNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyXCIsNDI5NDk2NzI5Nix2b2lkIDApO1xuZyhcImpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT181MlwiLDQ1MDM1OTk2MjczNzA0OTYsdm9pZCAwKTtnKFwianNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzYzXCIsMHg3ZmZmZmZmZmZmZmZmZmZmLHZvaWQgMCk7ZyhcImpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182NFwiLDEuODQ0Njc0NDA3MzcwOTU1MkUxOSx2b2lkIDApO2coXCJqc3BiLkJpbmFyeUNvbnN0YW50cy5aRVJPX0hBU0hcIixcIlxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcIix2b2lkIDApO3ZhciB5PTAsej0wO2coXCJqc3BiLnV0aWxzLmdldFNwbGl0NjRMb3dcIixmdW5jdGlvbigpe3JldHVybiB5fSx2b2lkIDApO2coXCJqc3BiLnV0aWxzLmdldFNwbGl0NjRIaWdoXCIsZnVuY3Rpb24oKXtyZXR1cm4gen0sdm9pZCAwKTtmdW5jdGlvbiBGYShhKXt2YXIgYj1hPj4+MDthPU1hdGguZmxvb3IoKGEtYikvNDI5NDk2NzI5Nik+Pj4wO3k9Yjt6PWF9ZyhcImpzcGIudXRpbHMuc3BsaXRVaW50NjRcIixGYSx2b2lkIDApO2Z1bmN0aW9uIEEoYSl7dmFyIGI9MD5hO2E9TWF0aC5hYnMoYSk7dmFyIGM9YT4+PjA7YT1NYXRoLmZsb29yKChhLWMpLzQyOTQ5NjcyOTYpO2E+Pj49MDtiJiYoYT1+YT4+PjAsYz0ofmM+Pj4wKSsxLDQyOTQ5NjcyOTU8YyYmKGM9MCxhKyssNDI5NDk2NzI5NTxhJiYoYT0wKSkpO3k9Yzt6PWF9ZyhcImpzcGIudXRpbHMuc3BsaXRJbnQ2NFwiLEEsdm9pZCAwKTtcbmZ1bmN0aW9uIEdhKGEpe3ZhciBiPTA+YTthPTIqTWF0aC5hYnMoYSk7RmEoYSk7YT15O3ZhciBjPXo7YiYmKDA9PWE/MD09Yz9jPWE9NDI5NDk2NzI5NTooYy0tLGE9NDI5NDk2NzI5NSk6YS0tKTt5PWE7ej1jfWcoXCJqc3BiLnV0aWxzLnNwbGl0WmlnemFnNjRcIixHYSx2b2lkIDApO1xuZnVuY3Rpb24gSGEoYSl7dmFyIGI9MD5hPzE6MDthPWI/LWE6YTtpZigwPT09YSkwPDEvYT95PXo9MDooej0wLHk9MjE0NzQ4MzY0OCk7ZWxzZSBpZihpc05hTihhKSl6PTAseT0yMTQ3NDgzNjQ3O2Vsc2UgaWYoMy40MDI4MjM0NjYzODUyODg2RTM4PGEpej0wLHk9KGI8PDMxfDIxMzkwOTUwNDApPj4+MDtlbHNlIGlmKDEuMTc1NDk0MzUwODIyMjg3NUUtMzg+YSlhPU1hdGgucm91bmQoYS9NYXRoLnBvdygyLC0xNDkpKSx6PTAseT0oYjw8MzF8YSk+Pj4wO2Vsc2V7dmFyIGM9TWF0aC5mbG9vcihNYXRoLmxvZyhhKS9NYXRoLkxOMik7YSo9TWF0aC5wb3coMiwtYyk7YT1NYXRoLnJvdW5kKDgzODg2MDgqYSk7MTY3NzcyMTY8PWEmJisrYzt6PTA7eT0oYjw8MzF8YysxMjc8PDIzfGEmODM4ODYwNyk+Pj4wfX1nKFwianNwYi51dGlscy5zcGxpdEZsb2F0MzJcIixIYSx2b2lkIDApO1xuZnVuY3Rpb24gSWEoYSl7dmFyIGI9MD5hPzE6MDthPWI/LWE6YTtpZigwPT09YSl6PTA8MS9hPzA6MjE0NzQ4MzY0OCx5PTA7ZWxzZSBpZihpc05hTihhKSl6PTIxNDc0ODM2NDcseT00Mjk0OTY3Mjk1O2Vsc2UgaWYoMS43OTc2OTMxMzQ4NjIzMTU3RTMwODxhKXo9KGI8PDMxfDIxNDY0MzUwNzIpPj4+MCx5PTA7ZWxzZSBpZigyLjIyNTA3Mzg1ODUwNzIwMTRFLTMwOD5hKWEvPU1hdGgucG93KDIsLTEwNzQpLHo9KGI8PDMxfGEvNDI5NDk2NzI5Nik+Pj4wLHk9YT4+PjA7ZWxzZXt2YXIgYz1hLGQ9MDtpZigyPD1jKWZvcig7Mjw9YyYmMTAyMz5kOylkKyssYy89MjtlbHNlIGZvcig7MT5jJiYtMTAyMjxkOyljKj0yLGQtLTthKj1NYXRoLnBvdygyLC1kKTt6PShiPDwzMXxkKzEwMjM8PDIwfDEwNDg1NzYqYSYxMDQ4NTc1KT4+PjA7eT00NTAzNTk5NjI3MzcwNDk2KmE+Pj4wfX1nKFwianNwYi51dGlscy5zcGxpdEZsb2F0NjRcIixJYSx2b2lkIDApO1xuZnVuY3Rpb24gQyhhKXt2YXIgYj1hLmNoYXJDb2RlQXQoNCksYz1hLmNoYXJDb2RlQXQoNSksZD1hLmNoYXJDb2RlQXQoNiksZj1hLmNoYXJDb2RlQXQoNyk7eT1hLmNoYXJDb2RlQXQoMCkrKGEuY2hhckNvZGVBdCgxKTw8OCkrKGEuY2hhckNvZGVBdCgyKTw8MTYpKyhhLmNoYXJDb2RlQXQoMyk8PDI0KT4+PjA7ej1iKyhjPDw4KSsoZDw8MTYpKyhmPDwyNCk+Pj4wfWcoXCJqc3BiLnV0aWxzLnNwbGl0SGFzaDY0XCIsQyx2b2lkIDApO2Z1bmN0aW9uIEQoYSxiKXtyZXR1cm4gNDI5NDk2NzI5NipiKyhhPj4+MCl9ZyhcImpzcGIudXRpbHMuam9pblVpbnQ2NFwiLEQsdm9pZCAwKTtmdW5jdGlvbiBFKGEsYil7dmFyIGM9YiYyMTQ3NDgzNjQ4O2MmJihhPX5hKzE+Pj4wLGI9fmI+Pj4wLDA9PWEmJihiPWIrMT4+PjApKTthPUQoYSxiKTtyZXR1cm4gYz8tYTphfWcoXCJqc3BiLnV0aWxzLmpvaW5JbnQ2NFwiLEUsdm9pZCAwKTtcbmZ1bmN0aW9uIEphKGEsYixjKXt2YXIgZD1iPj4zMTtyZXR1cm4gYyhhPDwxXmQsKGI8PDF8YT4+PjMxKV5kKX1nKFwianNwYi51dGlscy50b1ppZ3phZzY0XCIsSmEsdm9pZCAwKTtmdW5jdGlvbiBLYShhLGIpe3JldHVybiBNYShhLGIsRSl9ZyhcImpzcGIudXRpbHMuam9pblppZ3phZzY0XCIsS2Esdm9pZCAwKTtmdW5jdGlvbiBNYShhLGIsYyl7dmFyIGQ9LShhJjEpO3JldHVybiBjKChhPj4+MXxiPDwzMSleZCxiPj4+MV5kKX1nKFwianNwYi51dGlscy5mcm9tWmlnemFnNjRcIixNYSx2b2lkIDApO2Z1bmN0aW9uIE5hKGEpe3ZhciBiPTIqKGE+PjMxKSsxLGM9YT4+PjIzJjI1NTthJj04Mzg4NjA3O3JldHVybiAyNTU9PWM/YT9OYU46SW5maW5pdHkqYjowPT1jP2IqTWF0aC5wb3coMiwtMTQ5KSphOmIqTWF0aC5wb3coMixjLTE1MCkqKGErTWF0aC5wb3coMiwyMykpfWcoXCJqc3BiLnV0aWxzLmpvaW5GbG9hdDMyXCIsTmEsdm9pZCAwKTtcbmZ1bmN0aW9uIE9hKGEsYil7dmFyIGM9MiooYj4+MzEpKzEsZD1iPj4+MjAmMjA0NzthPTQyOTQ5NjcyOTYqKGImMTA0ODU3NSkrYTtyZXR1cm4gMjA0Nz09ZD9hP05hTjpJbmZpbml0eSpjOjA9PWQ/YypNYXRoLnBvdygyLC0xMDc0KSphOmMqTWF0aC5wb3coMixkLTEwNzUpKihhKzQ1MDM1OTk2MjczNzA0OTYpfWcoXCJqc3BiLnV0aWxzLmpvaW5GbG9hdDY0XCIsT2Esdm9pZCAwKTtmdW5jdGlvbiBQYShhLGIpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGE+Pj4wJjI1NSxhPj4+OCYyNTUsYT4+PjE2JjI1NSxhPj4+MjQmMjU1LGI+Pj4wJjI1NSxiPj4+OCYyNTUsYj4+PjE2JjI1NSxiPj4+MjQmMjU1KX1nKFwianNwYi51dGlscy5qb2luSGFzaDY0XCIsUGEsdm9pZCAwKTtnKFwianNwYi51dGlscy5ESUdJVFNcIixcIjAxMjM0NTY3ODlhYmNkZWZcIi5zcGxpdChcIlwiKSx2b2lkIDApO1xuZnVuY3Rpb24gRihhLGIpe2Z1bmN0aW9uIGMoZixoKXtmPWY/U3RyaW5nKGYpOlwiXCI7cmV0dXJuIGg/XCIwMDAwMDAwXCIuc2xpY2UoZi5sZW5ndGgpK2Y6Zn1pZigyMDk3MTUxPj1iKXJldHVyblwiXCIrRChhLGIpO3ZhciBkPShhPj4+MjR8Yjw8OCk+Pj4wJjE2Nzc3MjE1O2I9Yj4+MTYmNjU1MzU7YT0oYSYxNjc3NzIxNSkrNjc3NzIxNipkKzY3MTA2NTYqYjtkKz04MTQ3NDk3KmI7Yio9MjsxRTc8PWEmJihkKz1NYXRoLmZsb29yKGEvMUU3KSxhJT0xRTcpOzFFNzw9ZCYmKGIrPU1hdGguZmxvb3IoZC8xRTcpLGQlPTFFNyk7cmV0dXJuIGMoYiwwKStjKGQsYikrYyhhLDEpfWcoXCJqc3BiLnV0aWxzLmpvaW5VbnNpZ25lZERlY2ltYWxTdHJpbmdcIixGLHZvaWQgMCk7ZnVuY3Rpb24gRyhhLGIpe3ZhciBjPWImMjE0NzQ4MzY0ODtjJiYoYT1+YSsxPj4+MCxiPX5iKygwPT1hPzE6MCk+Pj4wKTthPUYoYSxiKTtyZXR1cm4gYz9cIi1cIithOmF9XG5nKFwianNwYi51dGlscy5qb2luU2lnbmVkRGVjaW1hbFN0cmluZ1wiLEcsdm9pZCAwKTtmdW5jdGlvbiBRYShhLGIpe0MoYSk7YT15O3ZhciBjPXo7cmV0dXJuIGI/RyhhLGMpOkYoYSxjKX1nKFwianNwYi51dGlscy5oYXNoNjRUb0RlY2ltYWxTdHJpbmdcIixRYSx2b2lkIDApO2coXCJqc3BiLnV0aWxzLmhhc2g2NEFycmF5VG9EZWNpbWFsU3RyaW5nc1wiLGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPUFycmF5KGEubGVuZ3RoKSxkPTA7ZDxhLmxlbmd0aDtkKyspY1tkXT1RYShhW2RdLGIpO3JldHVybiBjfSx2b2lkIDApO1xuZnVuY3Rpb24gSChhKXtmdW5jdGlvbiBiKG0sdCl7Zm9yKHZhciBCPTA7OD5CJiYoMSE9PW18fDA8dCk7QisrKXQ9bSpmW0JdK3QsZltCXT10JjI1NSx0Pj4+PTh9ZnVuY3Rpb24gYygpe2Zvcih2YXIgbT0wOzg+bTttKyspZlttXT1+ZlttXSYyNTV9bigwPGEubGVuZ3RoKTt2YXIgZD0hMTtcIi1cIj09PWFbMF0mJihkPSEwLGE9YS5zbGljZSgxKSk7Zm9yKHZhciBmPVswLDAsMCwwLDAsMCwwLDBdLGg9MDtoPGEubGVuZ3RoO2grKyliKDEwLGEuY2hhckNvZGVBdChoKS00OCk7ZCYmKGMoKSxiKDEsMSkpO3JldHVybiB4YShmKX1nKFwianNwYi51dGlscy5kZWNpbWFsU3RyaW5nVG9IYXNoNjRcIixILHZvaWQgMCk7ZyhcImpzcGIudXRpbHMuc3BsaXREZWNpbWFsU3RyaW5nXCIsZnVuY3Rpb24oYSl7QyhIKGEpKX0sdm9pZCAwKTtmdW5jdGlvbiBSYShhKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSgxMD5hPzQ4K2E6ODcrYSl9XG5mdW5jdGlvbiBTYShhKXtyZXR1cm4gOTc8PWE/YS05NysxMDphLTQ4fWcoXCJqc3BiLnV0aWxzLmhhc2g2NFRvSGV4U3RyaW5nXCIsZnVuY3Rpb24oYSl7dmFyIGI9QXJyYXkoMTgpO2JbMF09XCIwXCI7YlsxXT1cInhcIjtmb3IodmFyIGM9MDs4PmM7YysrKXt2YXIgZD1hLmNoYXJDb2RlQXQoNy1jKTtiWzIqYysyXT1SYShkPj40KTtiWzIqYyszXT1SYShkJjE1KX1yZXR1cm4gYi5qb2luKFwiXCIpfSx2b2lkIDApO2coXCJqc3BiLnV0aWxzLmhleFN0cmluZ1RvSGFzaDY0XCIsZnVuY3Rpb24oYSl7YT1hLnRvTG93ZXJDYXNlKCk7bigxOD09YS5sZW5ndGgpO24oXCIwXCI9PWFbMF0pO24oXCJ4XCI9PWFbMV0pO2Zvcih2YXIgYj1cIlwiLGM9MDs4PmM7YysrKWI9U3RyaW5nLmZyb21DaGFyQ29kZSgxNipTYShhLmNoYXJDb2RlQXQoMipjKzIpKStTYShhLmNoYXJDb2RlQXQoMipjKzMpKSkrYjtyZXR1cm4gYn0sdm9pZCAwKTtcbmcoXCJqc3BiLnV0aWxzLmhhc2g2NFRvTnVtYmVyXCIsZnVuY3Rpb24oYSxiKXtDKGEpO2E9eTt2YXIgYz16O3JldHVybiBiP0UoYSxjKTpEKGEsYyl9LHZvaWQgMCk7ZyhcImpzcGIudXRpbHMubnVtYmVyVG9IYXNoNjRcIixmdW5jdGlvbihhKXtBKGEpO3JldHVybiBQYSh5LHopfSx2b2lkIDApO2coXCJqc3BiLnV0aWxzLmNvdW50VmFyaW50c1wiLGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MCxmPWI7ZjxjO2YrKylkKz1hW2ZdPj43O3JldHVybiBjLWItZH0sdm9pZCAwKTtcbmcoXCJqc3BiLnV0aWxzLmNvdW50VmFyaW50RmllbGRzXCIsZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGY9MDtkKj04O2lmKDEyOD5kKWZvcig7YjxjJiZhW2IrK109PWQ7KWZvcihmKys7Oyl7dmFyIGg9YVtiKytdO2lmKDA9PShoJjEyOCkpYnJlYWt9ZWxzZSBmb3IoO2I8Yzspe2ZvcihoPWQ7MTI4PGg7KXtpZihhW2JdIT0oaCYxMjd8MTI4KSlyZXR1cm4gZjtiKys7aD4+PTd9aWYoYVtiKytdIT1oKWJyZWFrO2ZvcihmKys7aD1hW2IrK10sMCE9KGgmMTI4KTspO31yZXR1cm4gZn0sdm9pZCAwKTtmdW5jdGlvbiBUYShhLGIsYyxkLGYpe3ZhciBoPTA7aWYoMTI4PmQpZm9yKDtiPGMmJmFbYisrXT09ZDspaCsrLGIrPWY7ZWxzZSBmb3IoO2I8Yzspe2Zvcih2YXIgbT1kOzEyODxtOyl7aWYoYVtiKytdIT0obSYxMjd8MTI4KSlyZXR1cm4gaDttPj49N31pZihhW2IrK10hPW0pYnJlYWs7aCsrO2IrPWZ9cmV0dXJuIGh9XG5nKFwianNwYi51dGlscy5jb3VudEZpeGVkMzJGaWVsZHNcIixmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gVGEoYSxiLGMsOCpkKzUsNCl9LHZvaWQgMCk7ZyhcImpzcGIudXRpbHMuY291bnRGaXhlZDY0RmllbGRzXCIsZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIFRhKGEsYixjLDgqZCsxLDgpfSx2b2lkIDApO2coXCJqc3BiLnV0aWxzLmNvdW50RGVsaW1pdGVkRmllbGRzXCIsZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGY9MDtmb3IoZD04KmQrMjtiPGM7KXtmb3IodmFyIGg9ZDsxMjg8aDspe2lmKGFbYisrXSE9KGgmMTI3fDEyOCkpcmV0dXJuIGY7aD4+PTd9aWYoYVtiKytdIT1oKWJyZWFrO2YrKztmb3IodmFyIG09MCx0PTE7aD1hW2IrK10sbSs9KGgmMTI3KSp0LHQqPTEyOCwwIT0oaCYxMjgpOyk7Yis9bX1yZXR1cm4gZn0sdm9pZCAwKTtcbmcoXCJqc3BiLnV0aWxzLmRlYnVnQnl0ZXNUb1RleHRGb3JtYXRcIixmdW5jdGlvbihhKXt2YXIgYj0nXCInO2lmKGEpe2E9VWEoYSk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspYis9XCJcXFxceFwiLDE2PmFbY10mJihiKz1cIjBcIiksYis9YVtjXS50b1N0cmluZygxNil9cmV0dXJuIGIrJ1wiJ30sdm9pZCAwKTtcbmcoXCJqc3BiLnV0aWxzLmRlYnVnU2NhbGFyVG9UZXh0Rm9ybWF0XCIsZnVuY3Rpb24oYSl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKXthPVN0cmluZyhhKTtmb3IodmFyIGI9WydcIiddLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YS5jaGFyQXQoYyksZj1kLmNoYXJDb2RlQXQoMCksaD1jKzEsbTtpZighKG09eWFbZF0pKXtpZighKDMxPGYmJjEyNz5mKSlpZihmPWQsZiBpbiB6YSlkPXphW2ZdO2Vsc2UgaWYoZiBpbiB5YSlkPXphW2ZdPXlhW2ZdO2Vsc2V7bT1mLmNoYXJDb2RlQXQoMCk7aWYoMzE8bSYmMTI3Pm0pZD1mO2Vsc2V7aWYoMjU2Pm0pe2lmKGQ9XCJcXFxceFwiLDE2Pm18fDI1NjxtKWQrPVwiMFwifWVsc2UgZD1cIlxcXFx1XCIsNDA5Nj5tJiYoZCs9XCIwXCIpO2QrPW0udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9ZD16YVtmXT1kfW09ZH1iW2hdPW19Yi5wdXNoKCdcIicpO2E9Yi5qb2luKFwiXCIpfWVsc2UgYT1hLnRvU3RyaW5nKCk7cmV0dXJuIGF9LHZvaWQgMCk7XG5nKFwianNwYi51dGlscy5zdHJpbmdUb0J5dGVBcnJheVwiLGZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1uZXcgVWludDhBcnJheShhLmxlbmd0aCksYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hLmNoYXJDb2RlQXQoYyk7aWYoMjU1PGQpdGhyb3cgRXJyb3IoXCJDb252ZXJzaW9uIGVycm9yOiBzdHJpbmcgY29udGFpbnMgY29kZXBvaW50IG91dHNpZGUgb2YgYnl0ZSByYW5nZVwiKTtiW2NdPWR9cmV0dXJuIGJ9LHZvaWQgMCk7XG5mdW5jdGlvbiBVYShhKXtpZihhLmNvbnN0cnVjdG9yPT09VWludDhBcnJheSlyZXR1cm4gYTtpZihhLmNvbnN0cnVjdG9yPT09QXJyYXlCdWZmZXIpcmV0dXJuIG5ldyBVaW50OEFycmF5KGEpO2lmKGEuY29uc3RydWN0b3I9PT1BcnJheSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSk7aWYoYS5jb25zdHJ1Y3Rvcj09PVN0cmluZylyZXR1cm4gRGEoYSk7aWYoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIG5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpO3AoXCJUeXBlIG5vdCBjb252ZXJ0aWJsZSB0byBVaW50OEFycmF5LlwiKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCl9ZyhcImpzcGIudXRpbHMuYnl0ZVNvdXJjZVRvVWludDhBcnJheVwiLFVhLHZvaWQgMCk7ZnVuY3Rpb24gSShhLGIsYyl7dGhpcy5iPW51bGw7dGhpcy5hPXRoaXMuYz10aGlzLmg9MDt0aGlzLnY9ITE7YSYmdGhpcy5IKGEsYixjKX1nKFwianNwYi5CaW5hcnlEZWNvZGVyXCIsSSx2b2lkIDApO3ZhciBWYT1bXTtJLmdldEluc3RhbmNlQ2FjaGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gVmEubGVuZ3RofTtmdW5jdGlvbiBXYShhLGIsYyl7aWYoVmEubGVuZ3RoKXt2YXIgZD1WYS5wb3AoKTthJiZkLkgoYSxiLGMpO3JldHVybiBkfXJldHVybiBuZXcgSShhLGIsYyl9SS5hbGxvYz1XYTtJLnByb3RvdHlwZS5DYT1mdW5jdGlvbigpe3RoaXMuY2xlYXIoKTsxMDA+VmEubGVuZ3RoJiZWYS5wdXNoKHRoaXMpfTtJLnByb3RvdHlwZS5mcmVlPUkucHJvdG90eXBlLkNhO0kucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIFdhKHRoaXMuYix0aGlzLmgsdGhpcy5jLXRoaXMuaCl9O0kucHJvdG90eXBlLmNsb25lPUkucHJvdG90eXBlLmNsb25lO1xuSS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmI9bnVsbDt0aGlzLmE9dGhpcy5jPXRoaXMuaD0wO3RoaXMudj0hMX07SS5wcm90b3R5cGUuY2xlYXI9SS5wcm90b3R5cGUuY2xlYXI7SS5wcm90b3R5cGUuWT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ9O0kucHJvdG90eXBlLmdldEJ1ZmZlcj1JLnByb3RvdHlwZS5ZO0kucHJvdG90eXBlLkg9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYj1VYShhKTt0aGlzLmg9dm9pZCAwIT09Yj9iOjA7dGhpcy5jPXZvaWQgMCE9PWM/dGhpcy5oK2M6dGhpcy5iLmxlbmd0aDt0aGlzLmE9dGhpcy5ofTtJLnByb3RvdHlwZS5zZXRCbG9jaz1JLnByb3RvdHlwZS5IO0kucHJvdG90eXBlLkRiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY307SS5wcm90b3R5cGUuZ2V0RW5kPUkucHJvdG90eXBlLkRiO0kucHJvdG90eXBlLnNldEVuZD1mdW5jdGlvbihhKXt0aGlzLmM9YX07SS5wcm90b3R5cGUuc2V0RW5kPUkucHJvdG90eXBlLnNldEVuZDtcbkkucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5hPXRoaXMuaH07SS5wcm90b3R5cGUucmVzZXQ9SS5wcm90b3R5cGUucmVzZXQ7SS5wcm90b3R5cGUuQj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9O0kucHJvdG90eXBlLmdldEN1cnNvcj1JLnByb3RvdHlwZS5CO0kucHJvdG90eXBlLk1hPWZ1bmN0aW9uKGEpe3RoaXMuYT1hfTtJLnByb3RvdHlwZS5zZXRDdXJzb3I9SS5wcm90b3R5cGUuTWE7SS5wcm90b3R5cGUuYWR2YW5jZT1mdW5jdGlvbihhKXt0aGlzLmErPWE7bih0aGlzLmE8PXRoaXMuYyl9O0kucHJvdG90eXBlLmFkdmFuY2U9SS5wcm90b3R5cGUuYWR2YW5jZTtJLnByb3RvdHlwZS55YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmE9PXRoaXMuY307SS5wcm90b3R5cGUuYXRFbmQ9SS5wcm90b3R5cGUueWE7SS5wcm90b3R5cGUuUWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hPnRoaXMuY307SS5wcm90b3R5cGUucGFzdEVuZD1JLnByb3RvdHlwZS5RYjtcbkkucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudnx8MD50aGlzLmF8fHRoaXMuYT50aGlzLmN9O0kucHJvdG90eXBlLmdldEVycm9yPUkucHJvdG90eXBlLmdldEVycm9yO0kucHJvdG90eXBlLnc9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTEyOCxjPTAsZD0wLGY9MDs0PmYmJjEyODw9YjtmKyspYj10aGlzLmJbdGhpcy5hKytdLGN8PShiJjEyNyk8PDcqZjsxMjg8PWImJihiPXRoaXMuYlt0aGlzLmErK10sY3w9KGImMTI3KTw8MjgsZHw9KGImMTI3KT4+NCk7aWYoMTI4PD1iKWZvcihmPTA7NT5mJiYxMjg8PWI7ZisrKWI9dGhpcy5iW3RoaXMuYSsrXSxkfD0oYiYxMjcpPDw3KmYrMztpZigxMjg+YilyZXR1cm4gYShjPj4+MCxkPj4+MCk7cChcIkZhaWxlZCB0byByZWFkIHZhcmludCwgZW5jb2RpbmcgaXMgaW52YWxpZC5cIik7dGhpcy52PSEwfTtJLnByb3RvdHlwZS5yZWFkU3BsaXRWYXJpbnQ2ND1JLnByb3RvdHlwZS53O1xuSS5wcm90b3R5cGUuZWE9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudyhmdW5jdGlvbihiLGMpe3JldHVybiBNYShiLGMsYSl9KX07SS5wcm90b3R5cGUucmVhZFNwbGl0WmlnemFnVmFyaW50NjQ9SS5wcm90b3R5cGUuZWE7SS5wcm90b3R5cGUudGE9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5iLGM9dGhpcy5hO3RoaXMuYSs9ODtmb3IodmFyIGQ9MCxmPTAsaD1jKzc7aD49YztoLS0pZD1kPDw4fGJbaF0sZj1mPDw4fGJbaCs0XTtyZXR1cm4gYShkLGYpfTtJLnByb3RvdHlwZS5yZWFkU3BsaXRGaXhlZDY0PUkucHJvdG90eXBlLnRhO0kucHJvdG90eXBlLmtiPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmJbdGhpcy5hXSYxMjg7KXRoaXMuYSsrO3RoaXMuYSsrfTtJLnByb3RvdHlwZS5za2lwVmFyaW50PUkucHJvdG90eXBlLmtiO0kucHJvdG90eXBlLm1iPWZ1bmN0aW9uKGEpe2Zvcig7MTI4PGE7KXRoaXMuYS0tLGE+Pj49Nzt0aGlzLmEtLX07SS5wcm90b3R5cGUudW5za2lwVmFyaW50PUkucHJvdG90eXBlLm1iO1xuSS5wcm90b3R5cGUubz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYjt2YXIgYj1hW3RoaXMuYV07dmFyIGM9YiYxMjc7aWYoMTI4PmIpcmV0dXJuIHRoaXMuYSs9MSxuKHRoaXMuYTw9dGhpcy5jKSxjO2I9YVt0aGlzLmErMV07Y3w9KGImMTI3KTw8NztpZigxMjg+YilyZXR1cm4gdGhpcy5hKz0yLG4odGhpcy5hPD10aGlzLmMpLGM7Yj1hW3RoaXMuYSsyXTtjfD0oYiYxMjcpPDwxNDtpZigxMjg+YilyZXR1cm4gdGhpcy5hKz0zLG4odGhpcy5hPD10aGlzLmMpLGM7Yj1hW3RoaXMuYSszXTtjfD0oYiYxMjcpPDwyMTtpZigxMjg+YilyZXR1cm4gdGhpcy5hKz00LG4odGhpcy5hPD10aGlzLmMpLGM7Yj1hW3RoaXMuYSs0XTtjfD0oYiYxNSk8PDI4O2lmKDEyOD5iKXJldHVybiB0aGlzLmErPTUsbih0aGlzLmE8PXRoaXMuYyksYz4+PjA7dGhpcy5hKz01OzEyODw9YVt0aGlzLmErK10mJjEyODw9YVt0aGlzLmErK10mJjEyODw9YVt0aGlzLmErK10mJjEyODw9YVt0aGlzLmErK10mJjEyODw9XG5hW3RoaXMuYSsrXSYmbighMSk7bih0aGlzLmE8PXRoaXMuYyk7cmV0dXJuIGN9O0kucHJvdG90eXBlLnJlYWRVbnNpZ25lZFZhcmludDMyPUkucHJvdG90eXBlLm87SS5wcm90b3R5cGUuZGE9ZnVuY3Rpb24oKXtyZXR1cm5+fnRoaXMubygpfTtJLnByb3RvdHlwZS5yZWFkU2lnbmVkVmFyaW50MzI9SS5wcm90b3R5cGUuZGE7SS5wcm90b3R5cGUuTz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm8oKS50b1N0cmluZygpfTtJLnByb3RvdHlwZS5FYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhKCkudG9TdHJpbmcoKX07SS5wcm90b3R5cGUucmVhZFNpZ25lZFZhcmludDMyU3RyaW5nPUkucHJvdG90eXBlLkVhO0kucHJvdG90eXBlLklhPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vKCk7cmV0dXJuIGE+Pj4xXi0oYSYxKX07SS5wcm90b3R5cGUucmVhZFppZ3phZ1ZhcmludDMyPUkucHJvdG90eXBlLklhO0kucHJvdG90eXBlLkdhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudyhEKX07XG5JLnByb3RvdHlwZS5yZWFkVW5zaWduZWRWYXJpbnQ2ND1JLnByb3RvdHlwZS5HYTtJLnByb3RvdHlwZS5IYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLncoRil9O0kucHJvdG90eXBlLnJlYWRVbnNpZ25lZFZhcmludDY0U3RyaW5nPUkucHJvdG90eXBlLkhhO0kucHJvdG90eXBlLnNhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudyhFKX07SS5wcm90b3R5cGUucmVhZFNpZ25lZFZhcmludDY0PUkucHJvdG90eXBlLnNhO0kucHJvdG90eXBlLkZhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudyhHKX07SS5wcm90b3R5cGUucmVhZFNpZ25lZFZhcmludDY0U3RyaW5nPUkucHJvdG90eXBlLkZhO0kucHJvdG90eXBlLkphPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudyhLYSl9O0kucHJvdG90eXBlLnJlYWRaaWd6YWdWYXJpbnQ2ND1JLnByb3RvdHlwZS5KYTtJLnByb3RvdHlwZS5mYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhKFBhKX07XG5JLnByb3RvdHlwZS5yZWFkWmlnemFnVmFyaW50SGFzaDY0PUkucHJvdG90eXBlLmZiO0kucHJvdG90eXBlLkthPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWEoRyl9O0kucHJvdG90eXBlLnJlYWRaaWd6YWdWYXJpbnQ2NFN0cmluZz1JLnByb3RvdHlwZS5LYTtJLnByb3RvdHlwZS5HYz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYlt0aGlzLmFdO3RoaXMuYSs9MTtuKHRoaXMuYTw9dGhpcy5jKTtyZXR1cm4gYX07SS5wcm90b3R5cGUucmVhZFVpbnQ4PUkucHJvdG90eXBlLkdjO0kucHJvdG90eXBlLkVjPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5iW3RoaXMuYV0sYj10aGlzLmJbdGhpcy5hKzFdO3RoaXMuYSs9MjtuKHRoaXMuYTw9dGhpcy5jKTtyZXR1cm4gYTw8MHxiPDw4fTtJLnByb3RvdHlwZS5yZWFkVWludDE2PUkucHJvdG90eXBlLkVjO1xuSS5wcm90b3R5cGUubT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYlt0aGlzLmFdLGI9dGhpcy5iW3RoaXMuYSsxXSxjPXRoaXMuYlt0aGlzLmErMl0sZD10aGlzLmJbdGhpcy5hKzNdO3RoaXMuYSs9NDtuKHRoaXMuYTw9dGhpcy5jKTtyZXR1cm4oYTw8MHxiPDw4fGM8PDE2fGQ8PDI0KT4+PjB9O0kucHJvdG90eXBlLnJlYWRVaW50MzI9SS5wcm90b3R5cGUubTtJLnByb3RvdHlwZS5nYT1mdW5jdGlvbigpe3ZhciBhPXRoaXMubSgpLGI9dGhpcy5tKCk7cmV0dXJuIEQoYSxiKX07SS5wcm90b3R5cGUucmVhZFVpbnQ2ND1JLnByb3RvdHlwZS5nYTtJLnByb3RvdHlwZS5oYT1mdW5jdGlvbigpe3ZhciBhPXRoaXMubSgpLGI9dGhpcy5tKCk7cmV0dXJuIEYoYSxiKX07SS5wcm90b3R5cGUucmVhZFVpbnQ2NFN0cmluZz1JLnByb3RvdHlwZS5oYTtcbkkucHJvdG90eXBlLlhiPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5iW3RoaXMuYV07dGhpcy5hKz0xO24odGhpcy5hPD10aGlzLmMpO3JldHVybiBhPDwyND4+MjR9O0kucHJvdG90eXBlLnJlYWRJbnQ4PUkucHJvdG90eXBlLlhiO0kucHJvdG90eXBlLlZiPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5iW3RoaXMuYV0sYj10aGlzLmJbdGhpcy5hKzFdO3RoaXMuYSs9MjtuKHRoaXMuYTw9dGhpcy5jKTtyZXR1cm4oYTw8MHxiPDw4KTw8MTY+PjE2fTtJLnByb3RvdHlwZS5yZWFkSW50MTY9SS5wcm90b3R5cGUuVmI7SS5wcm90b3R5cGUuUD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYlt0aGlzLmFdLGI9dGhpcy5iW3RoaXMuYSsxXSxjPXRoaXMuYlt0aGlzLmErMl0sZD10aGlzLmJbdGhpcy5hKzNdO3RoaXMuYSs9NDtuKHRoaXMuYTw9dGhpcy5jKTtyZXR1cm4gYTw8MHxiPDw4fGM8PDE2fGQ8PDI0fTtJLnByb3RvdHlwZS5yZWFkSW50MzI9SS5wcm90b3R5cGUuUDtcbkkucHJvdG90eXBlLmJhPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5tKCksYj10aGlzLm0oKTtyZXR1cm4gRShhLGIpfTtJLnByb3RvdHlwZS5yZWFkSW50NjQ9SS5wcm90b3R5cGUuYmE7SS5wcm90b3R5cGUuY2E9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm0oKSxiPXRoaXMubSgpO3JldHVybiBHKGEsYil9O0kucHJvdG90eXBlLnJlYWRJbnQ2NFN0cmluZz1JLnByb3RvdHlwZS5jYTtJLnByb3RvdHlwZS5hYT1mdW5jdGlvbigpe3ZhciBhPXRoaXMubSgpO3JldHVybiBOYShhLDApfTtJLnByb3RvdHlwZS5yZWFkRmxvYXQ9SS5wcm90b3R5cGUuYWE7SS5wcm90b3R5cGUuWj1mdW5jdGlvbigpe3ZhciBhPXRoaXMubSgpLGI9dGhpcy5tKCk7cmV0dXJuIE9hKGEsYil9O0kucHJvdG90eXBlLnJlYWREb3VibGU9SS5wcm90b3R5cGUuWjtJLnByb3RvdHlwZS5wYT1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5iW3RoaXMuYSsrXX07SS5wcm90b3R5cGUucmVhZEJvb2w9SS5wcm90b3R5cGUucGE7XG5JLnByb3RvdHlwZS5yYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhKCl9O0kucHJvdG90eXBlLnJlYWRFbnVtPUkucHJvdG90eXBlLnJhO1xuSS5wcm90b3R5cGUuZmE9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5iLGM9dGhpcy5hO2E9YythO2Zvcih2YXIgZD1bXSxmPVwiXCI7YzxhOyl7dmFyIGg9YltjKytdO2lmKDEyOD5oKWQucHVzaChoKTtlbHNlIGlmKDE5Mj5oKWNvbnRpbnVlO2Vsc2UgaWYoMjI0Pmgpe3ZhciBtPWJbYysrXTtkLnB1c2goKGgmMzEpPDw2fG0mNjMpfWVsc2UgaWYoMjQwPmgpe209YltjKytdO3ZhciB0PWJbYysrXTtkLnB1c2goKGgmMTUpPDwxMnwobSY2Myk8PDZ8dCY2Myl9ZWxzZSBpZigyNDg+aCl7bT1iW2MrK107dD1iW2MrK107dmFyIEI9YltjKytdO2g9KGgmNyk8PDE4fChtJjYzKTw8MTJ8KHQmNjMpPDw2fEImNjM7aC09NjU1MzY7ZC5wdXNoKChoPj4xMCYxMDIzKSs1NTI5NiwoaCYxMDIzKSs1NjMyMCl9ODE5Mjw9ZC5sZW5ndGgmJihmKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZCksZC5sZW5ndGg9MCl9Zis9eGEoZCk7dGhpcy5hPWM7cmV0dXJuIGZ9O1xuSS5wcm90b3R5cGUucmVhZFN0cmluZz1JLnByb3RvdHlwZS5mYTtJLnByb3RvdHlwZS5EYz1mdW5jdGlvbigpe3ZhciBhPXRoaXMubygpO3JldHVybiB0aGlzLmZhKGEpfTtJLnByb3RvdHlwZS5yZWFkU3RyaW5nV2l0aExlbmd0aD1JLnByb3RvdHlwZS5EYztJLnByb3RvdHlwZS5xYT1mdW5jdGlvbihhKXtpZigwPmF8fHRoaXMuYSthPnRoaXMuYi5sZW5ndGgpcmV0dXJuIHRoaXMudj0hMCxwKFwiSW52YWxpZCBieXRlIGxlbmd0aCFcIiksbmV3IFVpbnQ4QXJyYXkoMCk7dmFyIGI9dGhpcy5iLnN1YmFycmF5KHRoaXMuYSx0aGlzLmErYSk7dGhpcy5hKz1hO24odGhpcy5hPD10aGlzLmMpO3JldHVybiBifTtJLnByb3RvdHlwZS5yZWFkQnl0ZXM9SS5wcm90b3R5cGUucWE7SS5wcm90b3R5cGUuaWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53KFBhKX07SS5wcm90b3R5cGUucmVhZFZhcmludEhhc2g2ND1JLnByb3RvdHlwZS5pYTtcbkkucHJvdG90eXBlLiQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmIsYj10aGlzLmEsYz1hW2JdLGQ9YVtiKzFdLGY9YVtiKzJdLGg9YVtiKzNdLG09YVtiKzRdLHQ9YVtiKzVdLEI9YVtiKzZdO2E9YVtiKzddO3RoaXMuYSs9ODtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjLGQsZixoLG0sdCxCLGEpfTtJLnByb3RvdHlwZS5yZWFkRml4ZWRIYXNoNjQ9SS5wcm90b3R5cGUuJDtmdW5jdGlvbiBKKGEsYixjKXt0aGlzLmE9V2EoYSxiLGMpO3RoaXMuTz10aGlzLmEuQigpO3RoaXMuYj10aGlzLmM9LTE7dGhpcy5oPSExO3RoaXMudj1udWxsfWcoXCJqc3BiLkJpbmFyeVJlYWRlclwiLEosdm9pZCAwKTt2YXIgSz1bXTtKLmNsZWFySW5zdGFuY2VDYWNoZT1mdW5jdGlvbigpe0s9W119O0ouZ2V0SW5zdGFuY2VDYWNoZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBLLmxlbmd0aH07ZnVuY3Rpb24gWGEoYSxiLGMpe2lmKEsubGVuZ3RoKXt2YXIgZD1LLnBvcCgpO2EmJmQuYS5IKGEsYixjKTtyZXR1cm4gZH1yZXR1cm4gbmV3IEooYSxiLGMpfUouYWxsb2M9WGE7Si5wcm90b3R5cGUuemI9WGE7Si5wcm90b3R5cGUuYWxsb2M9Si5wcm90b3R5cGUuemI7Si5wcm90b3R5cGUuQ2E9ZnVuY3Rpb24oKXt0aGlzLmEuY2xlYXIoKTt0aGlzLmI9dGhpcy5jPS0xO3RoaXMuaD0hMTt0aGlzLnY9bnVsbDsxMDA+Sy5sZW5ndGgmJksucHVzaCh0aGlzKX07XG5KLnByb3RvdHlwZS5mcmVlPUoucHJvdG90eXBlLkNhO0oucHJvdG90eXBlLkZiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuT307Si5wcm90b3R5cGUuZ2V0RmllbGRDdXJzb3I9Si5wcm90b3R5cGUuRmI7Si5wcm90b3R5cGUuQj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuQigpfTtKLnByb3RvdHlwZS5nZXRDdXJzb3I9Si5wcm90b3R5cGUuQjtKLnByb3RvdHlwZS5ZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5ZKCl9O0oucHJvdG90eXBlLmdldEJ1ZmZlcj1KLnByb3RvdHlwZS5ZO0oucHJvdG90eXBlLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY307Si5wcm90b3R5cGUuZ2V0RmllbGROdW1iZXI9Si5wcm90b3R5cGUuSGI7Si5wcm90b3R5cGUuTGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ifTtKLnByb3RvdHlwZS5nZXRXaXJlVHlwZT1KLnByb3RvdHlwZS5MYjtKLnByb3RvdHlwZS5NYj1mdW5jdGlvbigpe3JldHVybiAyPT10aGlzLmJ9O1xuSi5wcm90b3R5cGUuaXNEZWxpbWl0ZWQ9Si5wcm90b3R5cGUuTWI7Si5wcm90b3R5cGUuYmI9ZnVuY3Rpb24oKXtyZXR1cm4gND09dGhpcy5ifTtKLnByb3RvdHlwZS5pc0VuZEdyb3VwPUoucHJvdG90eXBlLmJiO0oucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaHx8dGhpcy5hLmdldEVycm9yKCl9O0oucHJvdG90eXBlLmdldEVycm9yPUoucHJvdG90eXBlLmdldEVycm9yO0oucHJvdG90eXBlLkg9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYS5IKGEsYixjKTt0aGlzLmI9dGhpcy5jPS0xfTtKLnByb3RvdHlwZS5zZXRCbG9jaz1KLnByb3RvdHlwZS5IO0oucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5hLnJlc2V0KCk7dGhpcy5iPXRoaXMuYz0tMX07Si5wcm90b3R5cGUucmVzZXQ9Si5wcm90b3R5cGUucmVzZXQ7Si5wcm90b3R5cGUuYWR2YW5jZT1mdW5jdGlvbihhKXt0aGlzLmEuYWR2YW5jZShhKX07Si5wcm90b3R5cGUuYWR2YW5jZT1KLnByb3RvdHlwZS5hZHZhbmNlO1xuSi5wcm90b3R5cGUub2E9ZnVuY3Rpb24oKXtpZih0aGlzLmEueWEoKSlyZXR1cm4hMTtpZih0aGlzLmdldEVycm9yKCkpcmV0dXJuIHAoXCJEZWNvZGVyIGhpdCBhbiBlcnJvclwiKSwhMTt0aGlzLk89dGhpcy5hLkIoKTt2YXIgYT10aGlzLmEubygpLGI9YT4+PjM7YSY9NztpZigwIT1hJiY1IT1hJiYxIT1hJiYyIT1hJiYzIT1hJiY0IT1hKXJldHVybiBwKFwiSW52YWxpZCB3aXJlIHR5cGU6ICVzIChhdCBwb3NpdGlvbiAlcylcIixhLHRoaXMuTyksdGhpcy5oPSEwLCExO3RoaXMuYz1iO3RoaXMuYj1hO3JldHVybiEwfTtKLnByb3RvdHlwZS5uZXh0RmllbGQ9Si5wcm90b3R5cGUub2E7Si5wcm90b3R5cGUuT2E9ZnVuY3Rpb24oKXt0aGlzLmEubWIodGhpcy5jPDwzfHRoaXMuYil9O0oucHJvdG90eXBlLnVuc2tpcEhlYWRlcj1KLnByb3RvdHlwZS5PYTtcbkoucHJvdG90eXBlLkxjPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jO2Zvcih0aGlzLk9hKCk7dGhpcy5vYSgpJiZ0aGlzLmM9PWE7KXRoaXMuQygpO3RoaXMuYS55YSgpfHx0aGlzLk9hKCl9O0oucHJvdG90eXBlLnNraXBNYXRjaGluZ0ZpZWxkcz1KLnByb3RvdHlwZS5MYztKLnByb3RvdHlwZS5sYj1mdW5jdGlvbigpezAhPXRoaXMuYj8ocChcIkludmFsaWQgd2lyZSB0eXBlIGZvciBza2lwVmFyaW50RmllbGRcIiksdGhpcy5DKCkpOnRoaXMuYS5rYigpfTtKLnByb3RvdHlwZS5za2lwVmFyaW50RmllbGQ9Si5wcm90b3R5cGUubGI7Si5wcm90b3R5cGUuZ2I9ZnVuY3Rpb24oKXtpZigyIT10aGlzLmIpcChcIkludmFsaWQgd2lyZSB0eXBlIGZvciBza2lwRGVsaW1pdGVkRmllbGRcIiksdGhpcy5DKCk7ZWxzZXt2YXIgYT10aGlzLmEubygpO3RoaXMuYS5hZHZhbmNlKGEpfX07Si5wcm90b3R5cGUuc2tpcERlbGltaXRlZEZpZWxkPUoucHJvdG90eXBlLmdiO1xuSi5wcm90b3R5cGUuaGI9ZnVuY3Rpb24oKXs1IT10aGlzLmI/KHAoXCJJbnZhbGlkIHdpcmUgdHlwZSBmb3Igc2tpcEZpeGVkMzJGaWVsZFwiKSx0aGlzLkMoKSk6dGhpcy5hLmFkdmFuY2UoNCl9O0oucHJvdG90eXBlLnNraXBGaXhlZDMyRmllbGQ9Si5wcm90b3R5cGUuaGI7Si5wcm90b3R5cGUuaWI9ZnVuY3Rpb24oKXsxIT10aGlzLmI/KHAoXCJJbnZhbGlkIHdpcmUgdHlwZSBmb3Igc2tpcEZpeGVkNjRGaWVsZFwiKSx0aGlzLkMoKSk6dGhpcy5hLmFkdmFuY2UoOCl9O0oucHJvdG90eXBlLnNraXBGaXhlZDY0RmllbGQ9Si5wcm90b3R5cGUuaWI7Si5wcm90b3R5cGUuamI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmM7ZG97aWYoIXRoaXMub2EoKSl7cChcIlVubWF0Y2hlZCBzdGFydC1ncm91cCB0YWc6IHN0cmVhbSBFT0ZcIik7dGhpcy5oPSEwO2JyZWFrfWlmKDQ9PXRoaXMuYil7dGhpcy5jIT1hJiYocChcIlVubWF0Y2hlZCBlbmQtZ3JvdXAgdGFnXCIpLHRoaXMuaD0hMCk7YnJlYWt9dGhpcy5DKCl9d2hpbGUoMSl9O1xuSi5wcm90b3R5cGUuc2tpcEdyb3VwPUoucHJvdG90eXBlLmpiO0oucHJvdG90eXBlLkM9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5iKXtjYXNlIDA6dGhpcy5sYigpO2JyZWFrO2Nhc2UgMTp0aGlzLmliKCk7YnJlYWs7Y2FzZSAyOnRoaXMuZ2IoKTticmVhaztjYXNlIDU6dGhpcy5oYigpO2JyZWFrO2Nhc2UgMzp0aGlzLmpiKCk7YnJlYWs7ZGVmYXVsdDpwKFwiSW52YWxpZCB3aXJlIGVuY29kaW5nIGZvciBmaWVsZC5cIil9fTtKLnByb3RvdHlwZS5za2lwRmllbGQ9Si5wcm90b3R5cGUuQztKLnByb3RvdHlwZS5IYz1mdW5jdGlvbihhLGIpe251bGw9PT10aGlzLnYmJih0aGlzLnY9e30pO24oIXRoaXMudlthXSk7dGhpcy52W2FdPWJ9O0oucHJvdG90eXBlLnJlZ2lzdGVyUmVhZENhbGxiYWNrPUoucHJvdG90eXBlLkhjO0oucHJvdG90eXBlLkljPWZ1bmN0aW9uKGEpe24obnVsbCE9PXRoaXMudik7YT10aGlzLnZbYV07bihhKTtyZXR1cm4gYSh0aGlzKX07XG5KLnByb3RvdHlwZS5ydW5SZWFkQ2FsbGJhY2s9Si5wcm90b3R5cGUuSWM7Si5wcm90b3R5cGUuWWI9ZnVuY3Rpb24oYSxiKXtuKDI9PXRoaXMuYik7dmFyIGM9dGhpcy5hLmMsZD10aGlzLmEubygpO2Q9dGhpcy5hLkIoKStkO3RoaXMuYS5zZXRFbmQoZCk7YihhLHRoaXMpO3RoaXMuYS5NYShkKTt0aGlzLmEuc2V0RW5kKGMpfTtKLnByb3RvdHlwZS5yZWFkTWVzc2FnZT1KLnByb3RvdHlwZS5ZYjtKLnByb3RvdHlwZS5VYj1mdW5jdGlvbihhLGIsYyl7bigzPT10aGlzLmIpO24odGhpcy5jPT1hKTtjKGIsdGhpcyk7dGhpcy5ofHw0PT10aGlzLmJ8fChwKFwiR3JvdXAgc3VibWVzc2FnZSBkaWQgbm90IGVuZCB3aXRoIGFuIEVORF9HUk9VUCB0YWdcIiksdGhpcy5oPSEwKX07Si5wcm90b3R5cGUucmVhZEdyb3VwPUoucHJvdG90eXBlLlViO1xuSi5wcm90b3R5cGUuR2I9ZnVuY3Rpb24oKXtuKDI9PXRoaXMuYik7dmFyIGE9dGhpcy5hLm8oKSxiPXRoaXMuYS5CKCksYz1iK2E7YT1XYSh0aGlzLmEuWSgpLGIsYSk7dGhpcy5hLk1hKGMpO3JldHVybiBhfTtKLnByb3RvdHlwZS5nZXRGaWVsZERlY29kZXI9Si5wcm90b3R5cGUuR2I7Si5wcm90b3R5cGUuUD1mdW5jdGlvbigpe24oMD09dGhpcy5iKTtyZXR1cm4gdGhpcy5hLmRhKCl9O0oucHJvdG90eXBlLnJlYWRJbnQzMj1KLnByb3RvdHlwZS5QO0oucHJvdG90eXBlLldiPWZ1bmN0aW9uKCl7bigwPT10aGlzLmIpO3JldHVybiB0aGlzLmEuRWEoKX07Si5wcm90b3R5cGUucmVhZEludDMyU3RyaW5nPUoucHJvdG90eXBlLldiO0oucHJvdG90eXBlLmJhPWZ1bmN0aW9uKCl7bigwPT10aGlzLmIpO3JldHVybiB0aGlzLmEuc2EoKX07Si5wcm90b3R5cGUucmVhZEludDY0PUoucHJvdG90eXBlLmJhO0oucHJvdG90eXBlLmNhPWZ1bmN0aW9uKCl7bigwPT10aGlzLmIpO3JldHVybiB0aGlzLmEuRmEoKX07XG5KLnByb3RvdHlwZS5yZWFkSW50NjRTdHJpbmc9Si5wcm90b3R5cGUuY2E7Si5wcm90b3R5cGUubT1mdW5jdGlvbigpe24oMD09dGhpcy5iKTtyZXR1cm4gdGhpcy5hLm8oKX07Si5wcm90b3R5cGUucmVhZFVpbnQzMj1KLnByb3RvdHlwZS5tO0oucHJvdG90eXBlLkZjPWZ1bmN0aW9uKCl7bigwPT10aGlzLmIpO3JldHVybiB0aGlzLmEuTygpfTtKLnByb3RvdHlwZS5yZWFkVWludDMyU3RyaW5nPUoucHJvdG90eXBlLkZjO0oucHJvdG90eXBlLmdhPWZ1bmN0aW9uKCl7bigwPT10aGlzLmIpO3JldHVybiB0aGlzLmEuR2EoKX07Si5wcm90b3R5cGUucmVhZFVpbnQ2ND1KLnByb3RvdHlwZS5nYTtKLnByb3RvdHlwZS5oYT1mdW5jdGlvbigpe24oMD09dGhpcy5iKTtyZXR1cm4gdGhpcy5hLkhhKCl9O0oucHJvdG90eXBlLnJlYWRVaW50NjRTdHJpbmc9Si5wcm90b3R5cGUuaGE7Si5wcm90b3R5cGUuemM9ZnVuY3Rpb24oKXtuKDA9PXRoaXMuYik7cmV0dXJuIHRoaXMuYS5JYSgpfTtcbkoucHJvdG90eXBlLnJlYWRTaW50MzI9Si5wcm90b3R5cGUuemM7Si5wcm90b3R5cGUuQWM9ZnVuY3Rpb24oKXtuKDA9PXRoaXMuYik7cmV0dXJuIHRoaXMuYS5KYSgpfTtKLnByb3RvdHlwZS5yZWFkU2ludDY0PUoucHJvdG90eXBlLkFjO0oucHJvdG90eXBlLkJjPWZ1bmN0aW9uKCl7bigwPT10aGlzLmIpO3JldHVybiB0aGlzLmEuS2EoKX07Si5wcm90b3R5cGUucmVhZFNpbnQ2NFN0cmluZz1KLnByb3RvdHlwZS5CYztKLnByb3RvdHlwZS5SYj1mdW5jdGlvbigpe24oNT09dGhpcy5iKTtyZXR1cm4gdGhpcy5hLm0oKX07Si5wcm90b3R5cGUucmVhZEZpeGVkMzI9Si5wcm90b3R5cGUuUmI7Si5wcm90b3R5cGUuU2I9ZnVuY3Rpb24oKXtuKDE9PXRoaXMuYik7cmV0dXJuIHRoaXMuYS5nYSgpfTtKLnByb3RvdHlwZS5yZWFkRml4ZWQ2ND1KLnByb3RvdHlwZS5TYjtKLnByb3RvdHlwZS5UYj1mdW5jdGlvbigpe24oMT09dGhpcy5iKTtyZXR1cm4gdGhpcy5hLmhhKCl9O1xuSi5wcm90b3R5cGUucmVhZEZpeGVkNjRTdHJpbmc9Si5wcm90b3R5cGUuVGI7Si5wcm90b3R5cGUudmM9ZnVuY3Rpb24oKXtuKDU9PXRoaXMuYik7cmV0dXJuIHRoaXMuYS5QKCl9O0oucHJvdG90eXBlLnJlYWRTZml4ZWQzMj1KLnByb3RvdHlwZS52YztKLnByb3RvdHlwZS53Yz1mdW5jdGlvbigpe24oNT09dGhpcy5iKTtyZXR1cm4gdGhpcy5hLlAoKS50b1N0cmluZygpfTtKLnByb3RvdHlwZS5yZWFkU2ZpeGVkMzJTdHJpbmc9Si5wcm90b3R5cGUud2M7Si5wcm90b3R5cGUueGM9ZnVuY3Rpb24oKXtuKDE9PXRoaXMuYik7cmV0dXJuIHRoaXMuYS5iYSgpfTtKLnByb3RvdHlwZS5yZWFkU2ZpeGVkNjQ9Si5wcm90b3R5cGUueGM7Si5wcm90b3R5cGUueWM9ZnVuY3Rpb24oKXtuKDE9PXRoaXMuYik7cmV0dXJuIHRoaXMuYS5jYSgpfTtKLnByb3RvdHlwZS5yZWFkU2ZpeGVkNjRTdHJpbmc9Si5wcm90b3R5cGUueWM7XG5KLnByb3RvdHlwZS5hYT1mdW5jdGlvbigpe24oNT09dGhpcy5iKTtyZXR1cm4gdGhpcy5hLmFhKCl9O0oucHJvdG90eXBlLnJlYWRGbG9hdD1KLnByb3RvdHlwZS5hYTtKLnByb3RvdHlwZS5aPWZ1bmN0aW9uKCl7bigxPT10aGlzLmIpO3JldHVybiB0aGlzLmEuWigpfTtKLnByb3RvdHlwZS5yZWFkRG91YmxlPUoucHJvdG90eXBlLlo7Si5wcm90b3R5cGUucGE9ZnVuY3Rpb24oKXtuKDA9PXRoaXMuYik7cmV0dXJuISF0aGlzLmEubygpfTtKLnByb3RvdHlwZS5yZWFkQm9vbD1KLnByb3RvdHlwZS5wYTtKLnByb3RvdHlwZS5yYT1mdW5jdGlvbigpe24oMD09dGhpcy5iKTtyZXR1cm4gdGhpcy5hLnNhKCl9O0oucHJvdG90eXBlLnJlYWRFbnVtPUoucHJvdG90eXBlLnJhO0oucHJvdG90eXBlLmZhPWZ1bmN0aW9uKCl7bigyPT10aGlzLmIpO3ZhciBhPXRoaXMuYS5vKCk7cmV0dXJuIHRoaXMuYS5mYShhKX07Si5wcm90b3R5cGUucmVhZFN0cmluZz1KLnByb3RvdHlwZS5mYTtcbkoucHJvdG90eXBlLnFhPWZ1bmN0aW9uKCl7bigyPT10aGlzLmIpO3ZhciBhPXRoaXMuYS5vKCk7cmV0dXJuIHRoaXMuYS5xYShhKX07Si5wcm90b3R5cGUucmVhZEJ5dGVzPUoucHJvdG90eXBlLnFhO0oucHJvdG90eXBlLmlhPWZ1bmN0aW9uKCl7bigwPT10aGlzLmIpO3JldHVybiB0aGlzLmEuaWEoKX07Si5wcm90b3R5cGUucmVhZFZhcmludEhhc2g2ND1KLnByb3RvdHlwZS5pYTtKLnByb3RvdHlwZS5DYz1mdW5jdGlvbigpe24oMD09dGhpcy5iKTtyZXR1cm4gdGhpcy5hLmZiKCl9O0oucHJvdG90eXBlLnJlYWRTaW50SGFzaDY0PUoucHJvdG90eXBlLkNjO0oucHJvdG90eXBlLnc9ZnVuY3Rpb24oYSl7bigwPT10aGlzLmIpO3JldHVybiB0aGlzLmEudyhhKX07Si5wcm90b3R5cGUucmVhZFNwbGl0VmFyaW50NjQ9Si5wcm90b3R5cGUudztcbkoucHJvdG90eXBlLmVhPWZ1bmN0aW9uKGEpe24oMD09dGhpcy5iKTtyZXR1cm4gdGhpcy5hLncoZnVuY3Rpb24oYixjKXtyZXR1cm4gTWEoYixjLGEpfSl9O0oucHJvdG90eXBlLnJlYWRTcGxpdFppZ3phZ1ZhcmludDY0PUoucHJvdG90eXBlLmVhO0oucHJvdG90eXBlLiQ9ZnVuY3Rpb24oKXtuKDE9PXRoaXMuYik7cmV0dXJuIHRoaXMuYS4kKCl9O0oucHJvdG90eXBlLnJlYWRGaXhlZEhhc2g2ND1KLnByb3RvdHlwZS4kO0oucHJvdG90eXBlLnRhPWZ1bmN0aW9uKGEpe24oMT09dGhpcy5iKTtyZXR1cm4gdGhpcy5hLnRhKGEpfTtKLnByb3RvdHlwZS5yZWFkU3BsaXRGaXhlZDY0PUoucHJvdG90eXBlLnRhO2Z1bmN0aW9uIEwoYSxiKXtuKDI9PWEuYik7dmFyIGM9YS5hLm8oKTtjPWEuYS5CKCkrYztmb3IodmFyIGQ9W107YS5hLkIoKTxjOylkLnB1c2goYi5jYWxsKGEuYSkpO3JldHVybiBkfUoucHJvdG90eXBlLmdjPWZ1bmN0aW9uKCl7cmV0dXJuIEwodGhpcyx0aGlzLmEuZGEpfTtcbkoucHJvdG90eXBlLnJlYWRQYWNrZWRJbnQzMj1KLnByb3RvdHlwZS5nYztKLnByb3RvdHlwZS5oYz1mdW5jdGlvbigpe3JldHVybiBMKHRoaXMsdGhpcy5hLkVhKX07Si5wcm90b3R5cGUucmVhZFBhY2tlZEludDMyU3RyaW5nPUoucHJvdG90eXBlLmhjO0oucHJvdG90eXBlLmljPWZ1bmN0aW9uKCl7cmV0dXJuIEwodGhpcyx0aGlzLmEuc2EpfTtKLnByb3RvdHlwZS5yZWFkUGFja2VkSW50NjQ9Si5wcm90b3R5cGUuaWM7Si5wcm90b3R5cGUuamM9ZnVuY3Rpb24oKXtyZXR1cm4gTCh0aGlzLHRoaXMuYS5GYSl9O0oucHJvdG90eXBlLnJlYWRQYWNrZWRJbnQ2NFN0cmluZz1KLnByb3RvdHlwZS5qYztKLnByb3RvdHlwZS5xYz1mdW5jdGlvbigpe3JldHVybiBMKHRoaXMsdGhpcy5hLm8pfTtKLnByb3RvdHlwZS5yZWFkUGFja2VkVWludDMyPUoucHJvdG90eXBlLnFjO0oucHJvdG90eXBlLnJjPWZ1bmN0aW9uKCl7cmV0dXJuIEwodGhpcyx0aGlzLmEuTyl9O1xuSi5wcm90b3R5cGUucmVhZFBhY2tlZFVpbnQzMlN0cmluZz1KLnByb3RvdHlwZS5yYztKLnByb3RvdHlwZS5zYz1mdW5jdGlvbigpe3JldHVybiBMKHRoaXMsdGhpcy5hLkdhKX07Si5wcm90b3R5cGUucmVhZFBhY2tlZFVpbnQ2ND1KLnByb3RvdHlwZS5zYztKLnByb3RvdHlwZS50Yz1mdW5jdGlvbigpe3JldHVybiBMKHRoaXMsdGhpcy5hLkhhKX07Si5wcm90b3R5cGUucmVhZFBhY2tlZFVpbnQ2NFN0cmluZz1KLnByb3RvdHlwZS50YztKLnByb3RvdHlwZS5uYz1mdW5jdGlvbigpe3JldHVybiBMKHRoaXMsdGhpcy5hLklhKX07Si5wcm90b3R5cGUucmVhZFBhY2tlZFNpbnQzMj1KLnByb3RvdHlwZS5uYztKLnByb3RvdHlwZS5vYz1mdW5jdGlvbigpe3JldHVybiBMKHRoaXMsdGhpcy5hLkphKX07Si5wcm90b3R5cGUucmVhZFBhY2tlZFNpbnQ2ND1KLnByb3RvdHlwZS5vYztKLnByb3RvdHlwZS5wYz1mdW5jdGlvbigpe3JldHVybiBMKHRoaXMsdGhpcy5hLkthKX07XG5KLnByb3RvdHlwZS5yZWFkUGFja2VkU2ludDY0U3RyaW5nPUoucHJvdG90eXBlLnBjO0oucHJvdG90eXBlLmJjPWZ1bmN0aW9uKCl7cmV0dXJuIEwodGhpcyx0aGlzLmEubSl9O0oucHJvdG90eXBlLnJlYWRQYWNrZWRGaXhlZDMyPUoucHJvdG90eXBlLmJjO0oucHJvdG90eXBlLmNjPWZ1bmN0aW9uKCl7cmV0dXJuIEwodGhpcyx0aGlzLmEuZ2EpfTtKLnByb3RvdHlwZS5yZWFkUGFja2VkRml4ZWQ2ND1KLnByb3RvdHlwZS5jYztKLnByb3RvdHlwZS5kYz1mdW5jdGlvbigpe3JldHVybiBMKHRoaXMsdGhpcy5hLmhhKX07Si5wcm90b3R5cGUucmVhZFBhY2tlZEZpeGVkNjRTdHJpbmc9Si5wcm90b3R5cGUuZGM7Si5wcm90b3R5cGUua2M9ZnVuY3Rpb24oKXtyZXR1cm4gTCh0aGlzLHRoaXMuYS5QKX07Si5wcm90b3R5cGUucmVhZFBhY2tlZFNmaXhlZDMyPUoucHJvdG90eXBlLmtjO0oucHJvdG90eXBlLmxjPWZ1bmN0aW9uKCl7cmV0dXJuIEwodGhpcyx0aGlzLmEuYmEpfTtcbkoucHJvdG90eXBlLnJlYWRQYWNrZWRTZml4ZWQ2ND1KLnByb3RvdHlwZS5sYztKLnByb3RvdHlwZS5tYz1mdW5jdGlvbigpe3JldHVybiBMKHRoaXMsdGhpcy5hLmNhKX07Si5wcm90b3R5cGUucmVhZFBhY2tlZFNmaXhlZDY0U3RyaW5nPUoucHJvdG90eXBlLm1jO0oucHJvdG90eXBlLmZjPWZ1bmN0aW9uKCl7cmV0dXJuIEwodGhpcyx0aGlzLmEuYWEpfTtKLnByb3RvdHlwZS5yZWFkUGFja2VkRmxvYXQ9Si5wcm90b3R5cGUuZmM7Si5wcm90b3R5cGUuJGI9ZnVuY3Rpb24oKXtyZXR1cm4gTCh0aGlzLHRoaXMuYS5aKX07Si5wcm90b3R5cGUucmVhZFBhY2tlZERvdWJsZT1KLnByb3RvdHlwZS4kYjtKLnByb3RvdHlwZS5aYj1mdW5jdGlvbigpe3JldHVybiBMKHRoaXMsdGhpcy5hLnBhKX07Si5wcm90b3R5cGUucmVhZFBhY2tlZEJvb2w9Si5wcm90b3R5cGUuWmI7Si5wcm90b3R5cGUuYWM9ZnVuY3Rpb24oKXtyZXR1cm4gTCh0aGlzLHRoaXMuYS5yYSl9O1xuSi5wcm90b3R5cGUucmVhZFBhY2tlZEVudW09Si5wcm90b3R5cGUuYWM7Si5wcm90b3R5cGUudWM9ZnVuY3Rpb24oKXtyZXR1cm4gTCh0aGlzLHRoaXMuYS5pYSl9O0oucHJvdG90eXBlLnJlYWRQYWNrZWRWYXJpbnRIYXNoNjQ9Si5wcm90b3R5cGUudWM7Si5wcm90b3R5cGUuZWM9ZnVuY3Rpb24oKXtyZXR1cm4gTCh0aGlzLHRoaXMuYS4kKX07Si5wcm90b3R5cGUucmVhZFBhY2tlZEZpeGVkSGFzaDY0PUoucHJvdG90eXBlLmVjO2Z1bmN0aW9uIFlhKGEsYixjLGQsZil7dGhpcy5tYT1hO3RoaXMuQmE9Yjt0aGlzLmxhPWM7dGhpcy5OYT1kO3RoaXMubmE9Zn1nKFwianNwYi5FeHRlbnNpb25GaWVsZEluZm9cIixZYSx2b2lkIDApO2Z1bmN0aW9uIFphKGEsYixjLGQsZixoKXt0aGlzLlphPWE7dGhpcy56YT1iO3RoaXMuQWE9Yzt0aGlzLldhPWQ7dGhpcy5BYj1mO3RoaXMuTmI9aH1nKFwianNwYi5FeHRlbnNpb25GaWVsZEJpbmFyeUluZm9cIixaYSx2b2lkIDApO1lhLnByb3RvdHlwZS5GPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmxhfTtZYS5wcm90b3R5cGUuaXNNZXNzYWdlVHlwZT1ZYS5wcm90b3R5cGUuRjtmdW5jdGlvbiBOKCl7fWcoXCJqc3BiLk1lc3NhZ2VcIixOLHZvaWQgMCk7Ti5HRU5FUkFURV9UT19PQkpFQ1Q9ITA7Ti5HRU5FUkFURV9GUk9NX09CSkVDVD0hMDt2YXIgJGE9XCJmdW5jdGlvblwiPT10eXBlb2YgVWludDhBcnJheTtOLnByb3RvdHlwZS5JYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ9O1xuTi5wcm90b3R5cGUuZ2V0SnNQYk1lc3NhZ2VJZD1OLnByb3RvdHlwZS5JYjtcbk4uaW5pdGlhbGl6ZT1mdW5jdGlvbihhLGIsYyxkLGYsaCl7YS5mPW51bGw7Ynx8KGI9Yz9bY106W10pO2EuYj1jP1N0cmluZyhjKTp2b2lkIDA7YS5EPTA9PT1jPy0xOjA7YS51PWI7YTp7Yz1hLnUubGVuZ3RoO2I9LTE7aWYoYyYmKGI9Yy0xLGM9YS51W2JdLCEobnVsbD09PWN8fFwib2JqZWN0XCIhPXR5cGVvZiBjfHxBcnJheS5pc0FycmF5KGMpfHwkYSYmYyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSl7YS5HPWItYS5EO2EuaT1jO2JyZWFrIGF9LTE8ZD8oYS5HPU1hdGgubWF4KGQsYisxLWEuRCksYS5pPW51bGwpOmEuRz1OdW1iZXIuTUFYX1ZBTFVFfWEuYT17fTtpZihmKWZvcihkPTA7ZDxmLmxlbmd0aDtkKyspYj1mW2RdLGI8YS5HPyhiKz1hLkQsYS51W2JdPWEudVtiXXx8YWIpOihiYihhKSxhLmlbYl09YS5pW2JdfHxhYik7aWYoaCYmaC5sZW5ndGgpZm9yKGQ9MDtkPGgubGVuZ3RoO2QrKyljYihhLGhbZF0pfTtcbnZhciBhYj1PYmplY3QuZnJlZXplP09iamVjdC5mcmVlemUoW10pOltdO2Z1bmN0aW9uIGJiKGEpe3ZhciBiPWEuRythLkQ7YS51W2JdfHwoYS5pPWEudVtiXT17fSl9ZnVuY3Rpb24gZGIoYSxiLGMpe2Zvcih2YXIgZD1bXSxmPTA7ZjxhLmxlbmd0aDtmKyspZFtmXT1iLmNhbGwoYVtmXSxjLGFbZl0pO3JldHVybiBkfU4udG9PYmplY3RMaXN0PWRiO04udG9PYmplY3RFeHRlbnNpb249ZnVuY3Rpb24oYSxiLGMsZCxmKXtmb3IodmFyIGggaW4gYyl7dmFyIG09Y1toXSx0PWQuY2FsbChhLG0pO2lmKG51bGwhPXQpe2Zvcih2YXIgQiBpbiBtLkJhKWlmKG0uQmEuaGFzT3duUHJvcGVydHkoQikpYnJlYWs7YltCXT1tLk5hP20ubmE/ZGIodCxtLk5hLGYpOm0uTmEoZix0KTp0fX19O1xuTi5zZXJpYWxpemVCaW5hcnlFeHRlbnNpb25zPWZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZiBpbiBjKXt2YXIgaD1jW2ZdLG09aC5aYTtpZighaC5BYSl0aHJvdyBFcnJvcihcIk1lc3NhZ2UgZXh0ZW5zaW9uIHByZXNlbnQgdGhhdCB3YXMgZ2VuZXJhdGVkIHdpdGhvdXQgYmluYXJ5IHNlcmlhbGl6YXRpb24gc3VwcG9ydFwiKTt2YXIgdD1kLmNhbGwoYSxtKTtpZihudWxsIT10KWlmKG0uRigpKWlmKGguV2EpaC5BYS5jYWxsKGIsbS5tYSx0LGguV2EpO2Vsc2UgdGhyb3cgRXJyb3IoXCJNZXNzYWdlIGV4dGVuc2lvbiBwcmVzZW50IGhvbGRpbmcgc3VibWVzc2FnZSB3aXRob3V0IGJpbmFyeSBzdXBwb3J0IGVuYWJsZWQsIGFuZCBtZXNzYWdlIGlzIGJlaW5nIHNlcmlhbGl6ZWQgdG8gYmluYXJ5IGZvcm1hdFwiKTtlbHNlIGguQWEuY2FsbChiLG0ubWEsdCl9fTtcbk4ucmVhZEJpbmFyeUV4dGVuc2lvbj1mdW5jdGlvbihhLGIsYyxkLGYpe3ZhciBoPWNbYi5jXTtpZihoKXtjPWguWmE7aWYoIWguemEpdGhyb3cgRXJyb3IoXCJEZXNlcmlhbGl6aW5nIGV4dGVuc2lvbiB3aG9zZSBnZW5lcmF0ZWQgY29kZSBkb2VzIG5vdCBzdXBwb3J0IGJpbmFyeSBmb3JtYXRcIik7aWYoYy5GKCkpe3ZhciBtPW5ldyBjLmxhO2guemEuY2FsbChiLG0saC5BYil9ZWxzZSBtPWguemEuY2FsbChiKTtjLm5hJiYhaC5OYj8oYj1kLmNhbGwoYSxjKSk/Yi5wdXNoKG0pOmYuY2FsbChhLGMsW21dKTpmLmNhbGwoYSxjLG0pfWVsc2UgYi5DKCl9O2Z1bmN0aW9uIE8oYSxiKXtpZihiPGEuRyl7Yis9YS5EO3ZhciBjPWEudVtiXTtyZXR1cm4gYz09PWFiP2EudVtiXT1bXTpjfWlmKGEuaSlyZXR1cm4gYz1hLmlbYl0sYz09PWFiP2EuaVtiXT1bXTpjfU4uZ2V0RmllbGQ9TztOLmdldFJlcGVhdGVkRmllbGQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTyhhLGIpfTtcbmZ1bmN0aW9uIGViKGEsYil7YT1PKGEsYik7cmV0dXJuIG51bGw9PWE/YTorYX1OLmdldE9wdGlvbmFsRmxvYXRpbmdQb2ludEZpZWxkPWViO2Z1bmN0aW9uIGZiKGEsYil7YT1PKGEsYik7cmV0dXJuIG51bGw9PWE/YTohIWF9Ti5nZXRCb29sZWFuRmllbGQ9ZmI7Ti5nZXRSZXBlYXRlZEZsb2F0aW5nUG9pbnRGaWVsZD1mdW5jdGlvbihhLGIpe3ZhciBjPU8oYSxiKTthLmF8fChhLmE9e30pO2lmKCFhLmFbYl0pe2Zvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKWNbZF09K2NbZF07YS5hW2JdPSEwfXJldHVybiBjfTtOLmdldFJlcGVhdGVkQm9vbGVhbkZpZWxkPWZ1bmN0aW9uKGEsYil7dmFyIGM9TyhhLGIpO2EuYXx8KGEuYT17fSk7aWYoIWEuYVtiXSl7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXT0hIWNbZF07YS5hW2JdPSEwfXJldHVybiBjfTtcbmZ1bmN0aW9uIGdiKGEpe2lmKG51bGw9PWF8fFwic3RyaW5nXCI9PT10eXBlb2YgYSlyZXR1cm4gYTtpZigkYSYmYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIEJhKGEpO3AoXCJDYW5ub3QgY29lcmNlIHRvIGI2NCBzdHJpbmc6IFwiK2soYSkpO3JldHVybiBudWxsfU4uYnl0ZXNBc0I2ND1nYjtmdW5jdGlvbiBoYihhKXtpZihudWxsPT1hfHxhIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gYTtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuIERhKGEpO3AoXCJDYW5ub3QgY29lcmNlIHRvIFVpbnQ4QXJyYXk6IFwiK2soYSkpO3JldHVybiBudWxsfU4uYnl0ZXNBc1U4PWhiO04uYnl0ZXNMaXN0QXNCNjQ9ZnVuY3Rpb24oYSl7aWIoYSk7cmV0dXJuIGEubGVuZ3RoJiZcInN0cmluZ1wiIT09dHlwZW9mIGFbMF0/bChhLGdiKTphfTtOLmJ5dGVzTGlzdEFzVTg9ZnVuY3Rpb24oYSl7aWIoYSk7cmV0dXJuIWEubGVuZ3RofHxhWzBdaW5zdGFuY2VvZiBVaW50OEFycmF5P2E6bChhLGhiKX07XG5mdW5jdGlvbiBpYihhKXtpZihhJiYxPGEubGVuZ3RoKXt2YXIgYj1rKGFbMF0pO3FhKGEsZnVuY3Rpb24oYyl7ayhjKSE9YiYmcChcIkluY29uc2lzdGVudCB0eXBlIGluIEpTUEIgcmVwZWF0ZWQgZmllbGQgYXJyYXkuIEdvdCBcIitrKGMpK1wiIGV4cGVjdGVkIFwiK2IpfSl9fWZ1bmN0aW9uIGpiKGEsYixjKXthPU8oYSxiKTtyZXR1cm4gbnVsbD09YT9jOmF9Ti5nZXRGaWVsZFdpdGhEZWZhdWx0PWpiO04uZ2V0Qm9vbGVhbkZpZWxkV2l0aERlZmF1bHQ9ZnVuY3Rpb24oYSxiLGMpe2E9ZmIoYSxiKTtyZXR1cm4gbnVsbD09YT9jOmF9O04uZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQ9ZnVuY3Rpb24oYSxiLGMpe2E9ZWIoYSxiKTtyZXR1cm4gbnVsbD09YT9jOmF9O04uZ2V0RmllbGRQcm90bzM9amI7XG5OLmdldE1hcEZpZWxkPWZ1bmN0aW9uKGEsYixjLGQpe2EuZnx8KGEuZj17fSk7aWYoYiBpbiBhLmYpcmV0dXJuIGEuZltiXTt2YXIgZj1PKGEsYik7aWYoIWYpe2lmKGMpcmV0dXJuO2Y9W107UChhLGIsZil9cmV0dXJuIGEuZltiXT1uZXcgcihmLGQpfTtmdW5jdGlvbiBQKGEsYixjKXtxKGEsTik7YjxhLkc/YS51W2IrYS5EXT1jOihiYihhKSxhLmlbYl09Yyk7cmV0dXJuIGF9Ti5zZXRGaWVsZD1QO04uc2V0UHJvdG8zSW50RmllbGQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLDApfTtOLnNldFByb3RvM0Zsb2F0RmllbGQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLDApfTtOLnNldFByb3RvM0Jvb2xlYW5GaWVsZD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoYSxiLGMsITEpfTtOLnNldFByb3RvM1N0cmluZ0ZpZWxkPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gUShhLGIsYyxcIlwiKX07XG5OLnNldFByb3RvM0J5dGVzRmllbGQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLFwiXCIpfTtOLnNldFByb3RvM0VudW1GaWVsZD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoYSxiLGMsMCl9O04uc2V0UHJvdG8zU3RyaW5nSW50RmllbGQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLFwiMFwiKX07ZnVuY3Rpb24gUShhLGIsYyxkKXtxKGEsTik7YyE9PWQ/UChhLGIsYyk6YjxhLkc/YS51W2IrYS5EXT1udWxsOihiYihhKSxkZWxldGUgYS5pW2JdKTtyZXR1cm4gYX1OLmFkZFRvUmVwZWF0ZWRGaWVsZD1mdW5jdGlvbihhLGIsYyxkKXtxKGEsTik7Yj1PKGEsYik7dm9pZCAwIT1kP2Iuc3BsaWNlKGQsMCxjKTpiLnB1c2goYyk7cmV0dXJuIGF9O2Z1bmN0aW9uIGtiKGEsYixjLGQpe3EoYSxOKTsoYz1jYihhLGMpKSYmYyE9PWImJnZvaWQgMCE9PWQmJihhLmYmJmMgaW4gYS5mJiYoYS5mW2NdPXZvaWQgMCksUChhLGMsdm9pZCAwKSk7cmV0dXJuIFAoYSxiLGQpfVxuTi5zZXRPbmVvZkZpZWxkPWtiO2Z1bmN0aW9uIGNiKGEsYil7Zm9yKHZhciBjLGQsZj0wO2Y8Yi5sZW5ndGg7ZisrKXt2YXIgaD1iW2ZdLG09TyhhLGgpO251bGwhPW0mJihjPWgsZD1tLFAoYSxoLHZvaWQgMCkpfXJldHVybiBjPyhQKGEsYyxkKSxjKTowfU4uY29tcHV0ZU9uZW9mQ2FzZT1jYjtOLmdldFdyYXBwZXJGaWVsZD1mdW5jdGlvbihhLGIsYyxkKXthLmZ8fChhLmY9e30pO2lmKCFhLmZbY10pe3ZhciBmPU8oYSxjKTtpZihkfHxmKWEuZltjXT1uZXcgYihmKX1yZXR1cm4gYS5mW2NdfTtOLmdldFJlcGVhdGVkV3JhcHBlckZpZWxkPWZ1bmN0aW9uKGEsYixjKXtsYihhLGIsYyk7Yj1hLmZbY107Yj09YWImJihiPWEuZltjXT1bXSk7cmV0dXJuIGJ9O2Z1bmN0aW9uIGxiKGEsYixjKXthLmZ8fChhLmY9e30pO2lmKCFhLmZbY10pe2Zvcih2YXIgZD1PKGEsYyksZj1bXSxoPTA7aDxkLmxlbmd0aDtoKyspZltoXT1uZXcgYihkW2hdKTthLmZbY109Zn19XG5OLnNldFdyYXBwZXJGaWVsZD1mdW5jdGlvbihhLGIsYyl7cShhLE4pO2EuZnx8KGEuZj17fSk7dmFyIGQ9Yz9jLmcoKTpjO2EuZltiXT1jO3JldHVybiBQKGEsYixkKX07Ti5zZXRPbmVvZldyYXBwZXJGaWVsZD1mdW5jdGlvbihhLGIsYyxkKXtxKGEsTik7YS5mfHwoYS5mPXt9KTt2YXIgZj1kP2QuZygpOmQ7YS5mW2JdPWQ7cmV0dXJuIGtiKGEsYixjLGYpfTtOLnNldFJlcGVhdGVkV3JhcHBlckZpZWxkPWZ1bmN0aW9uKGEsYixjKXtxKGEsTik7YS5mfHwoYS5mPXt9KTtjPWN8fFtdO2Zvcih2YXIgZD1bXSxmPTA7ZjxjLmxlbmd0aDtmKyspZFtmXT1jW2ZdLmcoKTthLmZbYl09YztyZXR1cm4gUChhLGIsZCl9O1xuTi5hZGRUb1JlcGVhdGVkV3JhcHBlckZpZWxkPWZ1bmN0aW9uKGEsYixjLGQsZil7bGIoYSxkLGIpO3ZhciBoPWEuZltiXTtofHwoaD1hLmZbYl09W10pO2M9Yz9jOm5ldyBkO2E9TyhhLGIpO3ZvaWQgMCE9Zj8oaC5zcGxpY2UoZiwwLGMpLGEuc3BsaWNlKGYsMCxjLmcoKSkpOihoLnB1c2goYyksYS5wdXNoKGMuZygpKSk7cmV0dXJuIGN9O04udG9NYXA9ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBmPXt9LGg9MDtoPGEubGVuZ3RoO2grKylmW2IuY2FsbChhW2hdKV09Yz9jLmNhbGwoYVtoXSxkLGFbaF0pOmFbaF07cmV0dXJuIGZ9O2Z1bmN0aW9uIG1iKGEpe2lmKGEuZilmb3IodmFyIGIgaW4gYS5mKXt2YXIgYz1hLmZbYl07aWYoQXJyYXkuaXNBcnJheShjKSlmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyljW2RdJiZjW2RdLmcoKTtlbHNlIGMmJmMuZygpfX1OLnByb3RvdHlwZS5nPWZ1bmN0aW9uKCl7bWIodGhpcyk7cmV0dXJuIHRoaXMudX07XG5OLnByb3RvdHlwZS50b0FycmF5PU4ucHJvdG90eXBlLmc7Ti5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXttYih0aGlzKTtyZXR1cm4gdGhpcy51LnRvU3RyaW5nKCl9O04ucHJvdG90eXBlLmdldEV4dGVuc2lvbj1mdW5jdGlvbihhKXtpZih0aGlzLmkpe3RoaXMuZnx8KHRoaXMuZj17fSk7dmFyIGI9YS5tYTtpZihhLm5hKXtpZihhLkYoKSlyZXR1cm4gdGhpcy5mW2JdfHwodGhpcy5mW2JdPWwodGhpcy5pW2JdfHxbXSxmdW5jdGlvbihjKXtyZXR1cm4gbmV3IGEubGEoYyl9KSksdGhpcy5mW2JdfWVsc2UgaWYoYS5GKCkpcmV0dXJuIXRoaXMuZltiXSYmdGhpcy5pW2JdJiYodGhpcy5mW2JdPW5ldyBhLmxhKHRoaXMuaVtiXSkpLHRoaXMuZltiXTtyZXR1cm4gdGhpcy5pW2JdfX07Ti5wcm90b3R5cGUuZ2V0RXh0ZW5zaW9uPU4ucHJvdG90eXBlLmdldEV4dGVuc2lvbjtcbk4ucHJvdG90eXBlLktjPWZ1bmN0aW9uKGEsYil7dGhpcy5mfHwodGhpcy5mPXt9KTtiYih0aGlzKTt2YXIgYz1hLm1hO2EubmE/KGI9Ynx8W10sYS5GKCk/KHRoaXMuZltjXT1iLHRoaXMuaVtjXT1sKGIsZnVuY3Rpb24oZCl7cmV0dXJuIGQuZygpfSkpOnRoaXMuaVtjXT1iKTphLkYoKT8odGhpcy5mW2NdPWIsdGhpcy5pW2NdPWI/Yi5nKCk6Yik6dGhpcy5pW2NdPWI7cmV0dXJuIHRoaXN9O04ucHJvdG90eXBlLnNldEV4dGVuc2lvbj1OLnByb3RvdHlwZS5LYztOLmRpZmZlcmVuY2U9ZnVuY3Rpb24oYSxiKXtpZighKGEgaW5zdGFuY2VvZiBiLmNvbnN0cnVjdG9yKSl0aHJvdyBFcnJvcihcIk1lc3NhZ2VzIGhhdmUgZGlmZmVyZW50IHR5cGVzLlwiKTt2YXIgYz1hLmcoKTtiPWIuZygpO3ZhciBkPVtdLGY9MCxoPWMubGVuZ3RoPmIubGVuZ3RoP2MubGVuZ3RoOmIubGVuZ3RoO2EuYiYmKGRbMF09YS5iLGY9MSk7Zm9yKDtmPGg7ZisrKW5iKGNbZl0sYltmXSl8fChkW2ZdPWJbZl0pO3JldHVybiBuZXcgYS5jb25zdHJ1Y3RvcihkKX07XG5OLmVxdWFscz1mdW5jdGlvbihhLGIpe3JldHVybiBhPT1ifHwhKCFhfHwhYikmJmEgaW5zdGFuY2VvZiBiLmNvbnN0cnVjdG9yJiZuYihhLmcoKSxiLmcoKSl9O2Z1bmN0aW9uIG9iKGEsYil7YT1hfHx7fTtiPWJ8fHt9O3ZhciBjPXt9LGQ7Zm9yKGQgaW4gYSljW2RdPTA7Zm9yKGQgaW4gYiljW2RdPTA7Zm9yKGQgaW4gYylpZighbmIoYVtkXSxiW2RdKSlyZXR1cm4hMTtyZXR1cm4hMH1OLmNvbXBhcmVFeHRlbnNpb25zPW9iO1xuZnVuY3Rpb24gbmIoYSxiKXtpZihhPT1iKXJldHVybiEwO2lmKCFsYShhKXx8IWxhKGIpKXJldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYSYmaXNOYU4oYSl8fFwibnVtYmVyXCI9PT10eXBlb2YgYiYmaXNOYU4oYik/U3RyaW5nKGEpPT1TdHJpbmcoYik6ITE7aWYoYS5jb25zdHJ1Y3RvciE9Yi5jb25zdHJ1Y3RvcilyZXR1cm4hMTtpZigkYSYmYS5jb25zdHJ1Y3Rvcj09PVVpbnQ4QXJyYXkpe2lmKGEubGVuZ3RoIT1iLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihhW2NdIT1iW2NdKXJldHVybiExO3JldHVybiEwfWlmKGEuY29uc3RydWN0b3I9PT1BcnJheSl7dmFyIGQ9dm9pZCAwLGY9dm9pZCAwLGg9TWF0aC5tYXgoYS5sZW5ndGgsYi5sZW5ndGgpO2ZvcihjPTA7YzxoO2MrKyl7dmFyIG09YVtjXSx0PWJbY107bSYmbS5jb25zdHJ1Y3Rvcj09T2JqZWN0JiYobih2b2lkIDA9PT1kKSxuKGM9PT1hLmxlbmd0aC0xKSxkPW0sbT12b2lkIDApO3QmJnQuY29uc3RydWN0b3I9PVxuT2JqZWN0JiYobih2b2lkIDA9PT1mKSxuKGM9PT1iLmxlbmd0aC0xKSxmPXQsdD12b2lkIDApO2lmKCFuYihtLHQpKXJldHVybiExfXJldHVybiBkfHxmPyhkPWR8fHt9LGY9Znx8e30sb2IoZCxmKSk6ITB9aWYoYS5jb25zdHJ1Y3Rvcj09PU9iamVjdClyZXR1cm4gb2IoYSxiKTt0aHJvdyBFcnJvcihcIkludmFsaWQgdHlwZSBpbiBKU1BCIGFycmF5XCIpO31OLmNvbXBhcmVGaWVsZHM9bmI7Ti5wcm90b3R5cGUuQmI9ZnVuY3Rpb24oKXtyZXR1cm4gcGIodGhpcyl9O04ucHJvdG90eXBlLmNsb25lTWVzc2FnZT1OLnByb3RvdHlwZS5CYjtOLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBwYih0aGlzKX07Ti5wcm90b3R5cGUuY2xvbmU9Ti5wcm90b3R5cGUuY2xvbmU7Ti5jbG9uZT1mdW5jdGlvbihhKXtyZXR1cm4gcGIoYSl9O2Z1bmN0aW9uIHBiKGEpe3JldHVybiBuZXcgYS5jb25zdHJ1Y3RvcihxYihhLmcoKSkpfVxuTi5jb3B5SW50bz1mdW5jdGlvbihhLGIpe3EoYSxOKTtxKGIsTik7bihhLmNvbnN0cnVjdG9yPT1iLmNvbnN0cnVjdG9yLFwiQ29weSBzb3VyY2UgYW5kIHRhcmdldCBtZXNzYWdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIHR5cGUuXCIpO2E9cGIoYSk7Zm9yKHZhciBjPWIuZygpLGQ9YS5nKCksZj1jLmxlbmd0aD0wO2Y8ZC5sZW5ndGg7ZisrKWNbZl09ZFtmXTtiLmY9YS5mO2IuaT1hLml9O2Z1bmN0aW9uIHFiKGEpe2lmKEFycmF5LmlzQXJyYXkoYSkpe2Zvcih2YXIgYj1BcnJheShhLmxlbmd0aCksYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdO251bGwhPWQmJihiW2NdPVwib2JqZWN0XCI9PXR5cGVvZiBkP3FiKG4oZCkpOmQpfXJldHVybiBifWlmKCRhJiZhIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSk7Yj17fTtmb3IoYyBpbiBhKWQ9YVtjXSxudWxsIT1kJiYoYltjXT1cIm9iamVjdFwiPT10eXBlb2YgZD9xYihuKGQpKTpkKTtyZXR1cm4gYn1cbk4ucmVnaXN0ZXJNZXNzYWdlVHlwZT1mdW5jdGlvbihhLGIpe2Iud2U9YX07dmFyIFI9e2R1bXA6ZnVuY3Rpb24oYSl7cShhLE4sXCJqc3BiLk1lc3NhZ2UgaW5zdGFuY2UgZXhwZWN0ZWRcIik7bihhLmdldEV4dGVuc2lvbixcIk9ubHkgdW5vYmZ1c2NhdGVkIGFuZCB1bm9wdGltaXplZCBjb21waWxhdGlvbiBtb2RlcyBzdXBwb3J0ZWQuXCIpO3JldHVybiBSLlgoYSl9fTtnKFwianNwYi5kZWJ1Zy5kdW1wXCIsUi5kdW1wLHZvaWQgMCk7XG5SLlg9ZnVuY3Rpb24oYSl7dmFyIGI9ayhhKTtpZihcIm51bWJlclwiPT1ifHxcInN0cmluZ1wiPT1ifHxcImJvb2xlYW5cIj09Ynx8XCJudWxsXCI9PWJ8fFwidW5kZWZpbmVkXCI9PWJ8fFwidW5kZWZpbmVkXCIhPT10eXBlb2YgVWludDhBcnJheSYmYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIGE7aWYoXCJhcnJheVwiPT1iKXJldHVybiB1YShhKSxsKGEsUi5YKTtpZihhIGluc3RhbmNlb2Ygcil7dmFyIGM9e307YT1hLmVudHJpZXMoKTtmb3IodmFyIGQ9YS5uZXh0KCk7IWQuZG9uZTtkPWEubmV4dCgpKWNbZC52YWx1ZVswXV09Ui5YKGQudmFsdWVbMV0pO3JldHVybiBjfXEoYSxOLFwiT25seSBtZXNzYWdlcyBleHBlY3RlZDogXCIrYSk7Yj1hLmNvbnN0cnVjdG9yO3ZhciBmPXskbmFtZTpiLm5hbWV8fGIuZGlzcGxheU5hbWV9O2Zvcih0IGluIGIucHJvdG90eXBlKXt2YXIgaD0vXmdldChbQS1aXVxcdyopLy5leGVjKHQpO2lmKGgmJlwiZ2V0RXh0ZW5zaW9uXCIhPXQmJlwiZ2V0SnNQYk1lc3NhZ2VJZFwiIT1cbnQpe3ZhciBtPVwiaGFzXCIraFsxXTtpZighYVttXXx8YVttXSgpKW09YVt0XSgpLGZbUi4kYShoWzFdKV09Ui5YKG0pfX1pZihhLmV4dGVuc2lvbk9iamVjdF8pcmV0dXJuIGYuJGV4dGVuc2lvbnM9XCJSZWN1cnNpdmUgZHVtcGluZyBvZiBleHRlbnNpb25zIG5vdCBzdXBwb3J0ZWQgaW4gY29tcGlsZWQgY29kZS4gU3dpdGNoIHRvIHVuY29tcGlsZWQgb3IgZHVtcCBleHRlbnNpb24gb2JqZWN0IGRpcmVjdGx5XCIsZjtmb3IoZCBpbiBiLmV4dGVuc2lvbnMpaWYoL15cXGQrJC8udGVzdChkKSl7bT1iLmV4dGVuc2lvbnNbZF07dmFyIHQ9YS5nZXRFeHRlbnNpb24obSk7aD12b2lkIDA7bT1tLkJhO3ZhciBCPVtdLE09MDtmb3IoaCBpbiBtKUJbTSsrXT1oO2g9QlswXTtudWxsIT10JiYoY3x8KGM9Zi4kZXh0ZW5zaW9ucz17fSksY1tSLiRhKGgpXT1SLlgodCkpfXJldHVybiBmfTtSLiRhPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL15bQS1aXS8sZnVuY3Rpb24oYil7cmV0dXJuIGIudG9Mb3dlckNhc2UoKX0pfTtmdW5jdGlvbiBTKCl7dGhpcy5hPVtdfWcoXCJqc3BiLkJpbmFyeUVuY29kZXJcIixTLHZvaWQgMCk7Uy5wcm90b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5sZW5ndGh9O1MucHJvdG90eXBlLmxlbmd0aD1TLnByb3RvdHlwZS5sZW5ndGg7Uy5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5hO3RoaXMuYT1bXTtyZXR1cm4gYX07Uy5wcm90b3R5cGUuZW5kPVMucHJvdG90eXBlLmVuZDtTLnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYil7bihhPT1NYXRoLmZsb29yKGEpKTtuKGI9PU1hdGguZmxvb3IoYikpO24oMDw9YSYmNDI5NDk2NzI5Nj5hKTtmb3IobigwPD1iJiY0Mjk0OTY3Mjk2PmIpOzA8Ynx8MTI3PGE7KXRoaXMuYS5wdXNoKGEmMTI3fDEyOCksYT0oYT4+Pjd8Yjw8MjUpPj4+MCxiPj4+PTc7dGhpcy5hLnB1c2goYSl9O1MucHJvdG90eXBlLndyaXRlU3BsaXRWYXJpbnQ2ND1TLnByb3RvdHlwZS5sO1xuUy5wcm90b3R5cGUuQT1mdW5jdGlvbihhLGIpe24oYT09TWF0aC5mbG9vcihhKSk7bihiPT1NYXRoLmZsb29yKGIpKTtuKDA8PWEmJjQyOTQ5NjcyOTY+YSk7bigwPD1iJiY0Mjk0OTY3Mjk2PmIpO3RoaXMucyhhKTt0aGlzLnMoYil9O1MucHJvdG90eXBlLndyaXRlU3BsaXRGaXhlZDY0PVMucHJvdG90eXBlLkE7Uy5wcm90b3R5cGUuaj1mdW5jdGlvbihhKXtuKGE9PU1hdGguZmxvb3IoYSkpO2ZvcihuKDA8PWEmJjQyOTQ5NjcyOTY+YSk7MTI3PGE7KXRoaXMuYS5wdXNoKGEmMTI3fDEyOCksYT4+Pj03O3RoaXMuYS5wdXNoKGEpfTtTLnByb3RvdHlwZS53cml0ZVVuc2lnbmVkVmFyaW50MzI9Uy5wcm90b3R5cGUuajtTLnByb3RvdHlwZS5NPWZ1bmN0aW9uKGEpe24oYT09TWF0aC5mbG9vcihhKSk7bigtMjE0NzQ4MzY0ODw9YSYmMjE0NzQ4MzY0OD5hKTtpZigwPD1hKXRoaXMuaihhKTtlbHNle2Zvcih2YXIgYj0wOzk+YjtiKyspdGhpcy5hLnB1c2goYSYxMjd8MTI4KSxhPj49Nzt0aGlzLmEucHVzaCgxKX19O1xuUy5wcm90b3R5cGUud3JpdGVTaWduZWRWYXJpbnQzMj1TLnByb3RvdHlwZS5NO1MucHJvdG90eXBlLnZhPWZ1bmN0aW9uKGEpe24oYT09TWF0aC5mbG9vcihhKSk7bigwPD1hJiYxLjg0NDY3NDQwNzM3MDk1NTJFMTk+YSk7QShhKTt0aGlzLmwoeSx6KX07Uy5wcm90b3R5cGUud3JpdGVVbnNpZ25lZFZhcmludDY0PVMucHJvdG90eXBlLnZhO1MucHJvdG90eXBlLnVhPWZ1bmN0aW9uKGEpe24oYT09TWF0aC5mbG9vcihhKSk7bigtOTIyMzM3MjAzNjg1NDc3NTgwODw9YSYmMHg3ZmZmZmZmZmZmZmZmZmZmPmEpO0EoYSk7dGhpcy5sKHkseil9O1MucHJvdG90eXBlLndyaXRlU2lnbmVkVmFyaW50NjQ9Uy5wcm90b3R5cGUudWE7Uy5wcm90b3R5cGUud2E9ZnVuY3Rpb24oYSl7bihhPT1NYXRoLmZsb29yKGEpKTtuKC0yMTQ3NDgzNjQ4PD1hJiYyMTQ3NDgzNjQ4PmEpO3RoaXMuaigoYTw8MV5hPj4zMSk+Pj4wKX07Uy5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnQzMj1TLnByb3RvdHlwZS53YTtcblMucHJvdG90eXBlLnhhPWZ1bmN0aW9uKGEpe24oYT09TWF0aC5mbG9vcihhKSk7bigtOTIyMzM3MjAzNjg1NDc3NTgwODw9YSYmMHg3ZmZmZmZmZmZmZmZmZmZmPmEpO0dhKGEpO3RoaXMubCh5LHopfTtTLnByb3RvdHlwZS53cml0ZVppZ3phZ1ZhcmludDY0PVMucHJvdG90eXBlLnhhO1MucHJvdG90eXBlLlRhPWZ1bmN0aW9uKGEpe3RoaXMuVyhIKGEpKX07Uy5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnQ2NFN0cmluZz1TLnByb3RvdHlwZS5UYTtTLnByb3RvdHlwZS5XPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7QyhhKTtKYSh5LHosZnVuY3Rpb24oYyxkKXtiLmwoYz4+PjAsZD4+PjApfSl9O1MucHJvdG90eXBlLndyaXRlWmlnemFnVmFyaW50SGFzaDY0PVMucHJvdG90eXBlLlc7Uy5wcm90b3R5cGUuYmU9ZnVuY3Rpb24oYSl7bihhPT1NYXRoLmZsb29yKGEpKTtuKDA8PWEmJjI1Nj5hKTt0aGlzLmEucHVzaChhPj4+MCYyNTUpfTtTLnByb3RvdHlwZS53cml0ZVVpbnQ4PVMucHJvdG90eXBlLmJlO1xuUy5wcm90b3R5cGUuYWU9ZnVuY3Rpb24oYSl7bihhPT1NYXRoLmZsb29yKGEpKTtuKDA8PWEmJjY1NTM2PmEpO3RoaXMuYS5wdXNoKGE+Pj4wJjI1NSk7dGhpcy5hLnB1c2goYT4+PjgmMjU1KX07Uy5wcm90b3R5cGUud3JpdGVVaW50MTY9Uy5wcm90b3R5cGUuYWU7Uy5wcm90b3R5cGUucz1mdW5jdGlvbihhKXtuKGE9PU1hdGguZmxvb3IoYSkpO24oMDw9YSYmNDI5NDk2NzI5Nj5hKTt0aGlzLmEucHVzaChhPj4+MCYyNTUpO3RoaXMuYS5wdXNoKGE+Pj44JjI1NSk7dGhpcy5hLnB1c2goYT4+PjE2JjI1NSk7dGhpcy5hLnB1c2goYT4+PjI0JjI1NSl9O1MucHJvdG90eXBlLndyaXRlVWludDMyPVMucHJvdG90eXBlLnM7Uy5wcm90b3R5cGUuVj1mdW5jdGlvbihhKXtuKGE9PU1hdGguZmxvb3IoYSkpO24oMDw9YSYmMS44NDQ2NzQ0MDczNzA5NTUyRTE5PmEpO0ZhKGEpO3RoaXMucyh5KTt0aGlzLnMoeil9O1MucHJvdG90eXBlLndyaXRlVWludDY0PVMucHJvdG90eXBlLlY7XG5TLnByb3RvdHlwZS5RYz1mdW5jdGlvbihhKXtuKGE9PU1hdGguZmxvb3IoYSkpO24oLTEyODw9YSYmMTI4PmEpO3RoaXMuYS5wdXNoKGE+Pj4wJjI1NSl9O1MucHJvdG90eXBlLndyaXRlSW50OD1TLnByb3RvdHlwZS5RYztTLnByb3RvdHlwZS5QYz1mdW5jdGlvbihhKXtuKGE9PU1hdGguZmxvb3IoYSkpO24oLTMyNzY4PD1hJiYzMjc2OD5hKTt0aGlzLmEucHVzaChhPj4+MCYyNTUpO3RoaXMuYS5wdXNoKGE+Pj44JjI1NSl9O1MucHJvdG90eXBlLndyaXRlSW50MTY9Uy5wcm90b3R5cGUuUGM7Uy5wcm90b3R5cGUuUz1mdW5jdGlvbihhKXtuKGE9PU1hdGguZmxvb3IoYSkpO24oLTIxNDc0ODM2NDg8PWEmJjIxNDc0ODM2NDg+YSk7dGhpcy5hLnB1c2goYT4+PjAmMjU1KTt0aGlzLmEucHVzaChhPj4+OCYyNTUpO3RoaXMuYS5wdXNoKGE+Pj4xNiYyNTUpO3RoaXMuYS5wdXNoKGE+Pj4yNCYyNTUpfTtTLnByb3RvdHlwZS53cml0ZUludDMyPVMucHJvdG90eXBlLlM7XG5TLnByb3RvdHlwZS5UPWZ1bmN0aW9uKGEpe24oYT09TWF0aC5mbG9vcihhKSk7bigtOTIyMzM3MjAzNjg1NDc3NTgwODw9YSYmMHg3ZmZmZmZmZmZmZmZmZmZmPmEpO0EoYSk7dGhpcy5BKHkseil9O1MucHJvdG90eXBlLndyaXRlSW50NjQ9Uy5wcm90b3R5cGUuVDtTLnByb3RvdHlwZS5rYT1mdW5jdGlvbihhKXtuKGE9PU1hdGguZmxvb3IoYSkpO24oLTkyMjMzNzIwMzY4NTQ3NzU4MDg8PSthJiYweDdmZmZmZmZmZmZmZmZmZmY+K2EpO0MoSChhKSk7dGhpcy5BKHkseil9O1MucHJvdG90eXBlLndyaXRlSW50NjRTdHJpbmc9Uy5wcm90b3R5cGUua2E7Uy5wcm90b3R5cGUuTD1mdW5jdGlvbihhKXtuKEluZmluaXR5PT09YXx8LUluZmluaXR5PT09YXx8aXNOYU4oYSl8fC0zLjQwMjgyMzQ2NjM4NTI4ODZFMzg8PWEmJjMuNDAyODIzNDY2Mzg1Mjg4NkUzOD49YSk7SGEoYSk7dGhpcy5zKHkpfTtTLnByb3RvdHlwZS53cml0ZUZsb2F0PVMucHJvdG90eXBlLkw7XG5TLnByb3RvdHlwZS5KPWZ1bmN0aW9uKGEpe24oSW5maW5pdHk9PT1hfHwtSW5maW5pdHk9PT1hfHxpc05hTihhKXx8LTEuNzk3NjkzMTM0ODYyMzE1N0UzMDg8PWEmJjEuNzk3NjkzMTM0ODYyMzE1N0UzMDg+PWEpO0lhKGEpO3RoaXMucyh5KTt0aGlzLnMoeil9O1MucHJvdG90eXBlLndyaXRlRG91YmxlPVMucHJvdG90eXBlLko7Uy5wcm90b3R5cGUuST1mdW5jdGlvbihhKXtuKFwiYm9vbGVhblwiPT09dHlwZW9mIGF8fFwibnVtYmVyXCI9PT10eXBlb2YgYSk7dGhpcy5hLnB1c2goYT8xOjApfTtTLnByb3RvdHlwZS53cml0ZUJvb2w9Uy5wcm90b3R5cGUuSTtTLnByb3RvdHlwZS5SPWZ1bmN0aW9uKGEpe24oYT09TWF0aC5mbG9vcihhKSk7bigtMjE0NzQ4MzY0ODw9YSYmMjE0NzQ4MzY0OD5hKTt0aGlzLk0oYSl9O1MucHJvdG90eXBlLndyaXRlRW51bT1TLnByb3RvdHlwZS5SO1MucHJvdG90eXBlLmphPWZ1bmN0aW9uKGEpe3RoaXMuYS5wdXNoLmFwcGx5KHRoaXMuYSxhKX07XG5TLnByb3RvdHlwZS53cml0ZUJ5dGVzPVMucHJvdG90eXBlLmphO1MucHJvdG90eXBlLk49ZnVuY3Rpb24oYSl7QyhhKTt0aGlzLmwoeSx6KX07Uy5wcm90b3R5cGUud3JpdGVWYXJpbnRIYXNoNjQ9Uy5wcm90b3R5cGUuTjtTLnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEpe0MoYSk7dGhpcy5zKHkpO3RoaXMucyh6KX07Uy5wcm90b3R5cGUud3JpdGVGaXhlZEhhc2g2ND1TLnByb3RvdHlwZS5LO1xuUy5wcm90b3R5cGUuVT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmEubGVuZ3RoO3RhKGEpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hLmNoYXJDb2RlQXQoYyk7aWYoMTI4PmQpdGhpcy5hLnB1c2goZCk7ZWxzZSBpZigyMDQ4PmQpdGhpcy5hLnB1c2goZD4+NnwxOTIpLHRoaXMuYS5wdXNoKGQmNjN8MTI4KTtlbHNlIGlmKDY1NTM2PmQpaWYoNTUyOTY8PWQmJjU2MzE5Pj1kJiZjKzE8YS5sZW5ndGgpe3ZhciBmPWEuY2hhckNvZGVBdChjKzEpOzU2MzIwPD1mJiY1NzM0Mz49ZiYmKGQ9MTAyNCooZC01NTI5NikrZi01NjMyMCs2NTUzNix0aGlzLmEucHVzaChkPj4xOHwyNDApLHRoaXMuYS5wdXNoKGQ+PjEyJjYzfDEyOCksdGhpcy5hLnB1c2goZD4+NiY2M3wxMjgpLHRoaXMuYS5wdXNoKGQmNjN8MTI4KSxjKyspfWVsc2UgdGhpcy5hLnB1c2goZD4+MTJ8MjI0KSx0aGlzLmEucHVzaChkPj42JjYzfDEyOCksdGhpcy5hLnB1c2goZCY2M3wxMjgpfXJldHVybiB0aGlzLmEubGVuZ3RoLVxuYn07Uy5wcm90b3R5cGUud3JpdGVTdHJpbmc9Uy5wcm90b3R5cGUuVTtmdW5jdGlvbiBUKGEsYil7dGhpcy5sbz1hO3RoaXMuaGk9Yn1nKFwianNwYi5hcml0aC5VSW50NjRcIixULHZvaWQgMCk7VC5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmhpPGEuaGl8fHRoaXMuaGk9PWEuaGkmJnRoaXMubG88YS5sbz8tMTp0aGlzLmhpPT1hLmhpJiZ0aGlzLmxvPT1hLmxvPzA6MX07VC5wcm90b3R5cGUuY21wPVQucHJvdG90eXBlLmNtcDtULnByb3RvdHlwZS5MYT1mdW5jdGlvbigpe3JldHVybiBuZXcgVCgodGhpcy5sbz4+PjF8KHRoaXMuaGkmMSk8PDMxKT4+PjAsdGhpcy5oaT4+PjE+Pj4wKX07VC5wcm90b3R5cGUucmlnaHRTaGlmdD1ULnByb3RvdHlwZS5MYTtULnByb3RvdHlwZS5EYT1mdW5jdGlvbigpe3JldHVybiBuZXcgVCh0aGlzLmxvPDwxPj4+MCwodGhpcy5oaTw8MXx0aGlzLmxvPj4+MzEpPj4+MCl9O1QucHJvdG90eXBlLmxlZnRTaGlmdD1ULnByb3RvdHlwZS5EYTtcblQucHJvdG90eXBlLmNiPWZ1bmN0aW9uKCl7cmV0dXJuISEodGhpcy5oaSYyMTQ3NDgzNjQ4KX07VC5wcm90b3R5cGUubXNiPVQucHJvdG90eXBlLmNiO1QucHJvdG90eXBlLk9iPWZ1bmN0aW9uKCl7cmV0dXJuISEodGhpcy5sbyYxKX07VC5wcm90b3R5cGUubHNiPVQucHJvdG90eXBlLk9iO1QucHJvdG90eXBlLlVhPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PXRoaXMubG8mJjA9PXRoaXMuaGl9O1QucHJvdG90eXBlLnplcm89VC5wcm90b3R5cGUuVWE7VC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVCgodGhpcy5sbythLmxvJjQyOTQ5NjcyOTUpPj4+MD4+PjAsKCh0aGlzLmhpK2EuaGkmNDI5NDk2NzI5NSk+Pj4wKSsoNDI5NDk2NzI5Njw9dGhpcy5sbythLmxvPzE6MCk+Pj4wKX07VC5wcm90b3R5cGUuYWRkPVQucHJvdG90eXBlLmFkZDtcblQucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFQoKHRoaXMubG8tYS5sbyY0Mjk0OTY3Mjk1KT4+PjA+Pj4wLCgodGhpcy5oaS1hLmhpJjQyOTQ5NjcyOTUpPj4+MCktKDA+dGhpcy5sby1hLmxvPzE6MCk+Pj4wKX07VC5wcm90b3R5cGUuc3ViPVQucHJvdG90eXBlLnN1YjtmdW5jdGlvbiByYihhLGIpe3ZhciBjPWEmNjU1MzU7YT4+Pj0xNjt2YXIgZD1iJjY1NTM1LGY9Yj4+PjE2O2I9YypkKzY1NTM2KihjKmYmNjU1MzUpKzY1NTM2KihhKmQmNjU1MzUpO2ZvcihjPWEqZisoYypmPj4+MTYpKyhhKmQ+Pj4xNik7NDI5NDk2NzI5Njw9YjspYi09NDI5NDk2NzI5NixjKz0xO3JldHVybiBuZXcgVChiPj4+MCxjPj4+MCl9VC5tdWwzMngzMj1yYjtULnByb3RvdHlwZS5lYj1mdW5jdGlvbihhKXt2YXIgYj1yYih0aGlzLmxvLGEpO2E9cmIodGhpcy5oaSxhKTthLmhpPWEubG87YS5sbz0wO3JldHVybiBiLmFkZChhKX07VC5wcm90b3R5cGUubXVsPVQucHJvdG90eXBlLmViO1xuVC5wcm90b3R5cGUuWGE9ZnVuY3Rpb24oYSl7aWYoMD09YSlyZXR1cm5bXTt2YXIgYj1uZXcgVCgwLDApLGM9bmV3IFQodGhpcy5sbyx0aGlzLmhpKTthPW5ldyBUKGEsMCk7Zm9yKHZhciBkPW5ldyBUKDEsMCk7IWEuY2IoKTspYT1hLkRhKCksZD1kLkRhKCk7Zm9yKDshZC5VYSgpOykwPj1hLmNtcChjKSYmKGI9Yi5hZGQoZCksYz1jLnN1YihhKSksYT1hLkxhKCksZD1kLkxhKCk7cmV0dXJuW2IsY119O1QucHJvdG90eXBlLmRpdj1ULnByb3RvdHlwZS5YYTtULnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgYT1cIlwiLGI9dGhpczshYi5VYSgpOyl7Yj1iLlhhKDEwKTt2YXIgYz1iWzBdO2E9YlsxXS5sbythO2I9Y31cIlwiPT1hJiYoYT1cIjBcIik7cmV0dXJuIGF9O1QucHJvdG90eXBlLnRvU3RyaW5nPVQucHJvdG90eXBlLnRvU3RyaW5nO1xuZnVuY3Rpb24gVShhKXtmb3IodmFyIGI9bmV3IFQoMCwwKSxjPW5ldyBUKDAsMCksZD0wO2Q8YS5sZW5ndGg7ZCsrKXtpZihcIjBcIj5hW2RdfHxcIjlcIjxhW2RdKXJldHVybiBudWxsO2MubG89cGFyc2VJbnQoYVtkXSwxMCk7Yj1iLmViKDEwKS5hZGQoYyl9cmV0dXJuIGJ9VC5mcm9tU3RyaW5nPVU7VC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFQodGhpcy5sbyx0aGlzLmhpKX07VC5wcm90b3R5cGUuY2xvbmU9VC5wcm90b3R5cGUuY2xvbmU7ZnVuY3Rpb24gVihhLGIpe3RoaXMubG89YTt0aGlzLmhpPWJ9ZyhcImpzcGIuYXJpdGguSW50NjRcIixWLHZvaWQgMCk7Vi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVigodGhpcy5sbythLmxvJjQyOTQ5NjcyOTUpPj4+MD4+PjAsKCh0aGlzLmhpK2EuaGkmNDI5NDk2NzI5NSk+Pj4wKSsoNDI5NDk2NzI5Njw9dGhpcy5sbythLmxvPzE6MCk+Pj4wKX07Vi5wcm90b3R5cGUuYWRkPVYucHJvdG90eXBlLmFkZDtcblYucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFYoKHRoaXMubG8tYS5sbyY0Mjk0OTY3Mjk1KT4+PjA+Pj4wLCgodGhpcy5oaS1hLmhpJjQyOTQ5NjcyOTUpPj4+MCktKDA+dGhpcy5sby1hLmxvPzE6MCk+Pj4wKX07Vi5wcm90b3R5cGUuc3ViPVYucHJvdG90eXBlLnN1YjtWLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgVih0aGlzLmxvLHRoaXMuaGkpfTtWLnByb3RvdHlwZS5jbG9uZT1WLnByb3RvdHlwZS5jbG9uZTtWLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBhPTAhPSh0aGlzLmhpJjIxNDc0ODM2NDgpLGI9bmV3IFQodGhpcy5sbyx0aGlzLmhpKTthJiYoYj0obmV3IFQoMCwwKSkuc3ViKGIpKTtyZXR1cm4oYT9cIi1cIjpcIlwiKStiLnRvU3RyaW5nKCl9O1YucHJvdG90eXBlLnRvU3RyaW5nPVYucHJvdG90eXBlLnRvU3RyaW5nO1xuZnVuY3Rpb24gc2IoYSl7dmFyIGI9MDxhLmxlbmd0aCYmXCItXCI9PWFbMF07YiYmKGE9YS5zdWJzdHJpbmcoMSkpO2E9VShhKTtpZihudWxsPT09YSlyZXR1cm4gbnVsbDtiJiYoYT0obmV3IFQoMCwwKSkuc3ViKGEpKTtyZXR1cm4gbmV3IFYoYS5sbyxhLmhpKX1WLmZyb21TdHJpbmc9c2I7ZnVuY3Rpb24gVygpe3RoaXMuYz1bXTt0aGlzLmI9MDt0aGlzLmE9bmV3IFM7dGhpcy5oPVtdfWcoXCJqc3BiLkJpbmFyeVdyaXRlclwiLFcsdm9pZCAwKTtmdW5jdGlvbiB0YihhLGIpe3ZhciBjPWEuYS5lbmQoKTthLmMucHVzaChjKTthLmMucHVzaChiKTthLmIrPWMubGVuZ3RoK2IubGVuZ3RofWZ1bmN0aW9uIFgoYSxiKXtZKGEsYiwyKTtiPWEuYS5lbmQoKTthLmMucHVzaChiKTthLmIrPWIubGVuZ3RoO2IucHVzaChhLmIpO3JldHVybiBifWZ1bmN0aW9uIFooYSxiKXt2YXIgYz1iLnBvcCgpO2M9YS5iK2EuYS5sZW5ndGgoKS1jO2ZvcihuKDA8PWMpOzEyNzxjOyliLnB1c2goYyYxMjd8MTI4KSxjPj4+PTcsYS5iKys7Yi5wdXNoKGMpO2EuYisrfVcucHJvdG90eXBlLnBiPWZ1bmN0aW9uKGEsYixjKXt0Yih0aGlzLGEuc3ViYXJyYXkoYixjKSl9O1cucHJvdG90eXBlLndyaXRlU2VyaWFsaXplZE1lc3NhZ2U9Vy5wcm90b3R5cGUucGI7XG5XLnByb3RvdHlwZS5QYj1mdW5jdGlvbihhLGIsYyl7bnVsbCE9YSYmbnVsbCE9YiYmbnVsbCE9YyYmdGhpcy5wYihhLGIsYyl9O1cucHJvdG90eXBlLm1heWJlV3JpdGVTZXJpYWxpemVkTWVzc2FnZT1XLnByb3RvdHlwZS5QYjtXLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuYz1bXTt0aGlzLmEuZW5kKCk7dGhpcy5iPTA7dGhpcy5oPVtdfTtXLnByb3RvdHlwZS5yZXNldD1XLnByb3RvdHlwZS5yZXNldDtXLnByb3RvdHlwZS5hYj1mdW5jdGlvbigpe24oMD09dGhpcy5oLmxlbmd0aCk7Zm9yKHZhciBhPW5ldyBVaW50OEFycmF5KHRoaXMuYit0aGlzLmEubGVuZ3RoKCkpLGI9dGhpcy5jLGM9Yi5sZW5ndGgsZD0wLGY9MDtmPGM7ZisrKXt2YXIgaD1iW2ZdO2Euc2V0KGgsZCk7ZCs9aC5sZW5ndGh9Yj10aGlzLmEuZW5kKCk7YS5zZXQoYixkKTtkKz1iLmxlbmd0aDtuKGQ9PWEubGVuZ3RoKTt0aGlzLmM9W2FdO3JldHVybiBhfTtcblcucHJvdG90eXBlLmdldFJlc3VsdEJ1ZmZlcj1XLnByb3RvdHlwZS5hYjtXLnByb3RvdHlwZS5LYj1mdW5jdGlvbihhKXtyZXR1cm4gQmEodGhpcy5hYigpLGEpfTtXLnByb3RvdHlwZS5nZXRSZXN1bHRCYXNlNjRTdHJpbmc9Vy5wcm90b3R5cGUuS2I7Vy5wcm90b3R5cGUuVmE9ZnVuY3Rpb24oYSl7dGhpcy5oLnB1c2goWCh0aGlzLGEpKX07Vy5wcm90b3R5cGUuYmVnaW5TdWJNZXNzYWdlPVcucHJvdG90eXBlLlZhO1cucHJvdG90eXBlLllhPWZ1bmN0aW9uKCl7bigwPD10aGlzLmgubGVuZ3RoKTtaKHRoaXMsdGhpcy5oLnBvcCgpKX07Vy5wcm90b3R5cGUuZW5kU3ViTWVzc2FnZT1XLnByb3RvdHlwZS5ZYTtmdW5jdGlvbiBZKGEsYixjKXtuKDE8PWImJmI9PU1hdGguZmxvb3IoYikpO2EuYS5qKDgqYitjKX1cblcucHJvdG90eXBlLk5jPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYSl7Y2FzZSAxOnRoaXMuSihiLGMpO2JyZWFrO2Nhc2UgMjp0aGlzLkwoYixjKTticmVhaztjYXNlIDM6dGhpcy5UKGIsYyk7YnJlYWs7Y2FzZSA0OnRoaXMuVihiLGMpO2JyZWFrO2Nhc2UgNTp0aGlzLlMoYixjKTticmVhaztjYXNlIDY6dGhpcy5RYShiLGMpO2JyZWFrO2Nhc2UgNzp0aGlzLlBhKGIsYyk7YnJlYWs7Y2FzZSA4OnRoaXMuSShiLGMpO2JyZWFrO2Nhc2UgOTp0aGlzLlUoYixjKTticmVhaztjYXNlIDEwOnAoXCJHcm91cCBmaWVsZCB0eXBlIG5vdCBzdXBwb3J0ZWQgaW4gd3JpdGVBbnkoKVwiKTticmVhaztjYXNlIDExOnAoXCJNZXNzYWdlIGZpZWxkIHR5cGUgbm90IHN1cHBvcnRlZCBpbiB3cml0ZUFueSgpXCIpO2JyZWFrO2Nhc2UgMTI6dGhpcy5qYShiLGMpO2JyZWFrO2Nhc2UgMTM6dGhpcy5zKGIsYyk7YnJlYWs7Y2FzZSAxNDp0aGlzLlIoYixjKTticmVhaztjYXNlIDE1OnRoaXMuUmEoYixjKTticmVhaztcbmNhc2UgMTY6dGhpcy5TYShiLGMpO2JyZWFrO2Nhc2UgMTc6dGhpcy5yYihiLGMpO2JyZWFrO2Nhc2UgMTg6dGhpcy5zYihiLGMpO2JyZWFrO2Nhc2UgMzA6dGhpcy5LKGIsYyk7YnJlYWs7Y2FzZSAzMTp0aGlzLk4oYixjKTticmVhaztkZWZhdWx0OnAoXCJJbnZhbGlkIGZpZWxkIHR5cGUgaW4gd3JpdGVBbnkoKVwiKX19O1cucHJvdG90eXBlLndyaXRlQW55PVcucHJvdG90eXBlLk5jO2Z1bmN0aW9uIHViKGEsYixjKXtudWxsIT1jJiYoWShhLGIsMCksYS5hLmooYykpfWZ1bmN0aW9uIHZiKGEsYixjKXtudWxsIT1jJiYoWShhLGIsMCksYS5hLk0oYykpfVcucHJvdG90eXBlLlM9ZnVuY3Rpb24oYSxiKXtudWxsIT1iJiYobigtMjE0NzQ4MzY0ODw9YiYmMjE0NzQ4MzY0OD5iKSx2Yih0aGlzLGEsYikpfTtXLnByb3RvdHlwZS53cml0ZUludDMyPVcucHJvdG90eXBlLlM7XG5XLnByb3RvdHlwZS5vYj1mdW5jdGlvbihhLGIpe251bGwhPWImJihiPXBhcnNlSW50KGIsMTApLG4oLTIxNDc0ODM2NDg8PWImJjIxNDc0ODM2NDg+YiksdmIodGhpcyxhLGIpKX07Vy5wcm90b3R5cGUud3JpdGVJbnQzMlN0cmluZz1XLnByb3RvdHlwZS5vYjtXLnByb3RvdHlwZS5UPWZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmKG4oLTkyMjMzNzIwMzY4NTQ3NzU4MDg8PWImJjB4N2ZmZmZmZmZmZmZmZmZmZj5iKSxudWxsIT1iJiYoWSh0aGlzLGEsMCksdGhpcy5hLnVhKGIpKSl9O1cucHJvdG90eXBlLndyaXRlSW50NjQ9Vy5wcm90b3R5cGUuVDtXLnByb3RvdHlwZS5rYT1mdW5jdGlvbihhLGIpe251bGwhPWImJihiPXNiKGIpLFkodGhpcyxhLDApLHRoaXMuYS5sKGIubG8sYi5oaSkpfTtXLnByb3RvdHlwZS53cml0ZUludDY0U3RyaW5nPVcucHJvdG90eXBlLmthO1xuVy5wcm90b3R5cGUucz1mdW5jdGlvbihhLGIpe251bGwhPWImJihuKDA8PWImJjQyOTQ5NjcyOTY+YiksdWIodGhpcyxhLGIpKX07Vy5wcm90b3R5cGUud3JpdGVVaW50MzI9Vy5wcm90b3R5cGUucztXLnByb3RvdHlwZS51Yj1mdW5jdGlvbihhLGIpe251bGwhPWImJihiPXBhcnNlSW50KGIsMTApLG4oMDw9YiYmNDI5NDk2NzI5Nj5iKSx1Yih0aGlzLGEsYikpfTtXLnByb3RvdHlwZS53cml0ZVVpbnQzMlN0cmluZz1XLnByb3RvdHlwZS51YjtXLnByb3RvdHlwZS5WPWZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmKG4oMDw9YiYmMS44NDQ2NzQ0MDczNzA5NTUyRTE5PmIpLG51bGwhPWImJihZKHRoaXMsYSwwKSx0aGlzLmEudmEoYikpKX07Vy5wcm90b3R5cGUud3JpdGVVaW50NjQ9Vy5wcm90b3R5cGUuVjtXLnByb3RvdHlwZS52Yj1mdW5jdGlvbihhLGIpe251bGwhPWImJihiPVUoYiksWSh0aGlzLGEsMCksdGhpcy5hLmwoYi5sbyxiLmhpKSl9O1xuVy5wcm90b3R5cGUud3JpdGVVaW50NjRTdHJpbmc9Vy5wcm90b3R5cGUudmI7Vy5wcm90b3R5cGUucmI9ZnVuY3Rpb24oYSxiKXtudWxsIT1iJiYobigtMjE0NzQ4MzY0ODw9YiYmMjE0NzQ4MzY0OD5iKSxudWxsIT1iJiYoWSh0aGlzLGEsMCksdGhpcy5hLndhKGIpKSl9O1cucHJvdG90eXBlLndyaXRlU2ludDMyPVcucHJvdG90eXBlLnJiO1cucHJvdG90eXBlLnNiPWZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmKG4oLTkyMjMzNzIwMzY4NTQ3NzU4MDg8PWImJjB4N2ZmZmZmZmZmZmZmZmZmZj5iKSxudWxsIT1iJiYoWSh0aGlzLGEsMCksdGhpcy5hLnhhKGIpKSl9O1cucHJvdG90eXBlLndyaXRlU2ludDY0PVcucHJvdG90eXBlLnNiO1cucHJvdG90eXBlLiRkPWZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmbnVsbCE9YiYmKFkodGhpcyxhLDApLHRoaXMuYS5XKGIpKX07Vy5wcm90b3R5cGUud3JpdGVTaW50SGFzaDY0PVcucHJvdG90eXBlLiRkO1xuVy5wcm90b3R5cGUuWmQ9ZnVuY3Rpb24oYSxiKXtudWxsIT1iJiZudWxsIT1iJiYoWSh0aGlzLGEsMCksdGhpcy5hLlRhKGIpKX07Vy5wcm90b3R5cGUud3JpdGVTaW50NjRTdHJpbmc9Vy5wcm90b3R5cGUuWmQ7Vy5wcm90b3R5cGUuUGE9ZnVuY3Rpb24oYSxiKXtudWxsIT1iJiYobigwPD1iJiY0Mjk0OTY3Mjk2PmIpLFkodGhpcyxhLDUpLHRoaXMuYS5zKGIpKX07Vy5wcm90b3R5cGUud3JpdGVGaXhlZDMyPVcucHJvdG90eXBlLlBhO1cucHJvdG90eXBlLlFhPWZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmKG4oMDw9YiYmMS44NDQ2NzQ0MDczNzA5NTUyRTE5PmIpLFkodGhpcyxhLDEpLHRoaXMuYS5WKGIpKX07Vy5wcm90b3R5cGUud3JpdGVGaXhlZDY0PVcucHJvdG90eXBlLlFhO1cucHJvdG90eXBlLm5iPWZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmKGI9VShiKSxZKHRoaXMsYSwxKSx0aGlzLmEuQShiLmxvLGIuaGkpKX07Vy5wcm90b3R5cGUud3JpdGVGaXhlZDY0U3RyaW5nPVcucHJvdG90eXBlLm5iO1xuVy5wcm90b3R5cGUuUmE9ZnVuY3Rpb24oYSxiKXtudWxsIT1iJiYobigtMjE0NzQ4MzY0ODw9YiYmMjE0NzQ4MzY0OD5iKSxZKHRoaXMsYSw1KSx0aGlzLmEuUyhiKSl9O1cucHJvdG90eXBlLndyaXRlU2ZpeGVkMzI9Vy5wcm90b3R5cGUuUmE7Vy5wcm90b3R5cGUuU2E9ZnVuY3Rpb24oYSxiKXtudWxsIT1iJiYobigtOTIyMzM3MjAzNjg1NDc3NTgwODw9YiYmMHg3ZmZmZmZmZmZmZmZmZmZmPmIpLFkodGhpcyxhLDEpLHRoaXMuYS5UKGIpKX07Vy5wcm90b3R5cGUud3JpdGVTZml4ZWQ2ND1XLnByb3RvdHlwZS5TYTtXLnByb3RvdHlwZS5xYj1mdW5jdGlvbihhLGIpe251bGwhPWImJihiPXNiKGIpLFkodGhpcyxhLDEpLHRoaXMuYS5BKGIubG8sYi5oaSkpfTtXLnByb3RvdHlwZS53cml0ZVNmaXhlZDY0U3RyaW5nPVcucHJvdG90eXBlLnFiO1cucHJvdG90eXBlLkw9ZnVuY3Rpb24oYSxiKXtudWxsIT1iJiYoWSh0aGlzLGEsNSksdGhpcy5hLkwoYikpfTtcblcucHJvdG90eXBlLndyaXRlRmxvYXQ9Vy5wcm90b3R5cGUuTDtXLnByb3RvdHlwZS5KPWZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmKFkodGhpcyxhLDEpLHRoaXMuYS5KKGIpKX07Vy5wcm90b3R5cGUud3JpdGVEb3VibGU9Vy5wcm90b3R5cGUuSjtXLnByb3RvdHlwZS5JPWZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmKG4oXCJib29sZWFuXCI9PT10eXBlb2YgYnx8XCJudW1iZXJcIj09PXR5cGVvZiBiKSxZKHRoaXMsYSwwKSx0aGlzLmEuSShiKSl9O1cucHJvdG90eXBlLndyaXRlQm9vbD1XLnByb3RvdHlwZS5JO1cucHJvdG90eXBlLlI9ZnVuY3Rpb24oYSxiKXtudWxsIT1iJiYobigtMjE0NzQ4MzY0ODw9YiYmMjE0NzQ4MzY0OD5iKSxZKHRoaXMsYSwwKSx0aGlzLmEuTShiKSl9O1cucHJvdG90eXBlLndyaXRlRW51bT1XLnByb3RvdHlwZS5SO1cucHJvdG90eXBlLlU9ZnVuY3Rpb24oYSxiKXtudWxsIT1iJiYoYT1YKHRoaXMsYSksdGhpcy5hLlUoYiksWih0aGlzLGEpKX07XG5XLnByb3RvdHlwZS53cml0ZVN0cmluZz1XLnByb3RvdHlwZS5VO1cucHJvdG90eXBlLmphPWZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmKGI9VWEoYiksWSh0aGlzLGEsMiksdGhpcy5hLmooYi5sZW5ndGgpLHRiKHRoaXMsYikpfTtXLnByb3RvdHlwZS53cml0ZUJ5dGVzPVcucHJvdG90eXBlLmphO1cucHJvdG90eXBlLlJjPWZ1bmN0aW9uKGEsYixjKXtudWxsIT1iJiYoYT1YKHRoaXMsYSksYyhiLHRoaXMpLFoodGhpcyxhKSl9O1cucHJvdG90eXBlLndyaXRlTWVzc2FnZT1XLnByb3RvdHlwZS5SYztXLnByb3RvdHlwZS5TYz1mdW5jdGlvbihhLGIsYyl7bnVsbCE9YiYmKFkodGhpcywxLDMpLFkodGhpcywyLDApLHRoaXMuYS5NKGEpLGE9WCh0aGlzLDMpLGMoYix0aGlzKSxaKHRoaXMsYSksWSh0aGlzLDEsNCkpfTtXLnByb3RvdHlwZS53cml0ZU1lc3NhZ2VTZXQ9Vy5wcm90b3R5cGUuU2M7XG5XLnByb3RvdHlwZS5PYz1mdW5jdGlvbihhLGIsYyl7bnVsbCE9YiYmKFkodGhpcyxhLDMpLGMoYix0aGlzKSxZKHRoaXMsYSw0KSl9O1cucHJvdG90eXBlLndyaXRlR3JvdXA9Vy5wcm90b3R5cGUuT2M7Vy5wcm90b3R5cGUuSz1mdW5jdGlvbihhLGIpe251bGwhPWImJihuKDg9PWIubGVuZ3RoKSxZKHRoaXMsYSwxKSx0aGlzLmEuSyhiKSl9O1cucHJvdG90eXBlLndyaXRlRml4ZWRIYXNoNjQ9Vy5wcm90b3R5cGUuSztXLnByb3RvdHlwZS5OPWZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmKG4oOD09Yi5sZW5ndGgpLFkodGhpcyxhLDApLHRoaXMuYS5OKGIpKX07Vy5wcm90b3R5cGUud3JpdGVWYXJpbnRIYXNoNjQ9Vy5wcm90b3R5cGUuTjtXLnByb3RvdHlwZS5BPWZ1bmN0aW9uKGEsYixjKXtZKHRoaXMsYSwxKTt0aGlzLmEuQShiLGMpfTtXLnByb3RvdHlwZS53cml0ZVNwbGl0Rml4ZWQ2ND1XLnByb3RvdHlwZS5BO1xuVy5wcm90b3R5cGUubD1mdW5jdGlvbihhLGIsYyl7WSh0aGlzLGEsMCk7dGhpcy5hLmwoYixjKX07Vy5wcm90b3R5cGUud3JpdGVTcGxpdFZhcmludDY0PVcucHJvdG90eXBlLmw7Vy5wcm90b3R5cGUudGI9ZnVuY3Rpb24oYSxiLGMpe1kodGhpcyxhLDApO3ZhciBkPXRoaXMuYTtKYShiLGMsZnVuY3Rpb24oZixoKXtkLmwoZj4+PjAsaD4+PjApfSl9O1cucHJvdG90eXBlLndyaXRlU3BsaXRaaWd6YWdWYXJpbnQ2ND1XLnByb3RvdHlwZS50YjtXLnByb3RvdHlwZS5FZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWIpZm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdmIodGhpcyxhLGJbY10pfTtXLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkSW50MzI9Vy5wcm90b3R5cGUuRWQ7Vy5wcm90b3R5cGUuRmQ9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iKWZvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMub2IoYSxiW2NdKX07XG5XLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkSW50MzJTdHJpbmc9Vy5wcm90b3R5cGUuRmQ7Vy5wcm90b3R5cGUuR2Q9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iKWZvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1iW2NdO251bGwhPWQmJihZKHRoaXMsYSwwKSx0aGlzLmEudWEoZCkpfX07Vy5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEludDY0PVcucHJvdG90eXBlLkdkO1cucHJvdG90eXBlLlFkPWZ1bmN0aW9uKGEsYixjLGQpe2lmKG51bGwhPWIpZm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspdGhpcy5BKGEsYyhiW2ZdKSxkKGJbZl0pKX07Vy5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNwbGl0Rml4ZWQ2ND1XLnByb3RvdHlwZS5RZDtXLnByb3RvdHlwZS5SZD1mdW5jdGlvbihhLGIsYyxkKXtpZihudWxsIT1iKWZvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKXRoaXMubChhLGMoYltmXSksZChiW2ZdKSl9O1xuVy5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNwbGl0VmFyaW50NjQ9Vy5wcm90b3R5cGUuUmQ7Vy5wcm90b3R5cGUuU2Q9ZnVuY3Rpb24oYSxiLGMsZCl7aWYobnVsbCE9Yilmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKyl0aGlzLnRiKGEsYyhiW2ZdKSxkKGJbZl0pKX07Vy5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNwbGl0WmlnemFnVmFyaW50NjQ9Vy5wcm90b3R5cGUuU2Q7Vy5wcm90b3R5cGUuSGQ9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iKWZvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMua2EoYSxiW2NdKX07Vy5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEludDY0U3RyaW5nPVcucHJvdG90eXBlLkhkO1cucHJvdG90eXBlLlVkPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9Yilmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl1Yih0aGlzLGEsYltjXSl9O1cucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRVaW50MzI9Vy5wcm90b3R5cGUuVWQ7XG5XLnByb3RvdHlwZS5WZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWIpZm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy51YihhLGJbY10pfTtXLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkVWludDMyU3RyaW5nPVcucHJvdG90eXBlLlZkO1cucHJvdG90eXBlLldkPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9Yilmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXTtudWxsIT1kJiYoWSh0aGlzLGEsMCksdGhpcy5hLnZhKGQpKX19O1cucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRVaW50NjQ9Vy5wcm90b3R5cGUuV2Q7Vy5wcm90b3R5cGUuWGQ9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iKWZvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMudmIoYSxiW2NdKX07Vy5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFVpbnQ2NFN0cmluZz1XLnByb3RvdHlwZS5YZDtcblcucHJvdG90eXBlLk1kPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9Yilmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXTtudWxsIT1kJiYoWSh0aGlzLGEsMCksdGhpcy5hLndhKGQpKX19O1cucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRTaW50MzI9Vy5wcm90b3R5cGUuTWQ7Vy5wcm90b3R5cGUuTmQ9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iKWZvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1iW2NdO251bGwhPWQmJihZKHRoaXMsYSwwKSx0aGlzLmEueGEoZCkpfX07Vy5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnQ2ND1XLnByb3RvdHlwZS5OZDtXLnByb3RvdHlwZS5PZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWIpZm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY107bnVsbCE9ZCYmKFkodGhpcyxhLDApLHRoaXMuYS5UYShkKSl9fTtXLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkU2ludDY0U3RyaW5nPVcucHJvdG90eXBlLk9kO1xuVy5wcm90b3R5cGUuUGQ9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iKWZvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1iW2NdO251bGwhPWQmJihZKHRoaXMsYSwwKSx0aGlzLmEuVyhkKSl9fTtXLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkU2ludEhhc2g2ND1XLnByb3RvdHlwZS5QZDtXLnByb3RvdHlwZS55ZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWIpZm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5QYShhLGJbY10pfTtXLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRml4ZWQzMj1XLnByb3RvdHlwZS55ZDtXLnByb3RvdHlwZS56ZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWIpZm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5RYShhLGJbY10pfTtXLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRml4ZWQ2ND1XLnByb3RvdHlwZS56ZDtcblcucHJvdG90eXBlLkFkPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9Yilmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLm5iKGEsYltjXSl9O1cucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRGaXhlZDY0U3RyaW5nPVcucHJvdG90eXBlLkFkO1cucHJvdG90eXBlLkpkPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9Yilmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLlJhKGEsYltjXSl9O1cucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRTZml4ZWQzMj1XLnByb3RvdHlwZS5KZDtXLnByb3RvdHlwZS5LZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWIpZm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5TYShhLGJbY10pfTtXLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkU2ZpeGVkNjQ9Vy5wcm90b3R5cGUuS2Q7Vy5wcm90b3R5cGUuTGQ9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iKWZvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMucWIoYSxiW2NdKX07XG5XLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkU2ZpeGVkNjRTdHJpbmc9Vy5wcm90b3R5cGUuTGQ7Vy5wcm90b3R5cGUuQ2Q9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iKWZvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuTChhLGJbY10pfTtXLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRmxvYXQ9Vy5wcm90b3R5cGUuQ2Q7Vy5wcm90b3R5cGUud2Q9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iKWZvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuSihhLGJbY10pfTtXLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRG91YmxlPVcucHJvdG90eXBlLndkO1cucHJvdG90eXBlLnVkPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9Yilmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLkkoYSxiW2NdKX07Vy5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEJvb2w9Vy5wcm90b3R5cGUudWQ7XG5XLnByb3RvdHlwZS54ZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWIpZm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5SKGEsYltjXSl9O1cucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRFbnVtPVcucHJvdG90eXBlLnhkO1cucHJvdG90eXBlLlRkPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9Yilmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLlUoYSxiW2NdKX07Vy5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFN0cmluZz1XLnByb3RvdHlwZS5UZDtXLnByb3RvdHlwZS52ZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWIpZm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5qYShhLGJbY10pfTtXLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkQnl0ZXM9Vy5wcm90b3R5cGUudmQ7Vy5wcm90b3R5cGUuSWQ9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGwhPWIpZm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBmPVgodGhpcyxhKTtjKGJbZF0sdGhpcyk7Wih0aGlzLGYpfX07XG5XLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkTWVzc2FnZT1XLnByb3RvdHlwZS5JZDtXLnByb3RvdHlwZS5EZD1mdW5jdGlvbihhLGIsYyl7aWYobnVsbCE9Yilmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKylZKHRoaXMsYSwzKSxjKGJbZF0sdGhpcyksWSh0aGlzLGEsNCl9O1cucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRHcm91cD1XLnByb3RvdHlwZS5EZDtXLnByb3RvdHlwZS5CZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWIpZm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5LKGEsYltjXSl9O1cucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRGaXhlZEhhc2g2ND1XLnByb3RvdHlwZS5CZDtXLnByb3RvdHlwZS5ZZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWIpZm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5OKGEsYltjXSl9O1cucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRWYXJpbnRIYXNoNjQ9Vy5wcm90b3R5cGUuWWQ7XG5XLnByb3RvdHlwZS5hZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKXthPVgodGhpcyxhKTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLmEuTShiW2NdKTtaKHRoaXMsYSl9fTtXLnByb3RvdHlwZS53cml0ZVBhY2tlZEludDMyPVcucHJvdG90eXBlLmFkO1cucHJvdG90eXBlLmJkPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9YiYmYi5sZW5ndGgpe2E9WCh0aGlzLGEpO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuYS5NKHBhcnNlSW50KGJbY10sMTApKTtaKHRoaXMsYSl9fTtXLnByb3RvdHlwZS53cml0ZVBhY2tlZEludDMyU3RyaW5nPVcucHJvdG90eXBlLmJkO1cucHJvdG90eXBlLmNkPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9YiYmYi5sZW5ndGgpe2E9WCh0aGlzLGEpO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuYS51YShiW2NdKTtaKHRoaXMsYSl9fTtXLnByb3RvdHlwZS53cml0ZVBhY2tlZEludDY0PVcucHJvdG90eXBlLmNkO1xuVy5wcm90b3R5cGUubWQ9ZnVuY3Rpb24oYSxiLGMsZCl7aWYobnVsbCE9Yil7YT1YKHRoaXMsYSk7Zm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspdGhpcy5hLkEoYyhiW2ZdKSxkKGJbZl0pKTtaKHRoaXMsYSl9fTtXLnByb3RvdHlwZS53cml0ZVBhY2tlZFNwbGl0Rml4ZWQ2ND1XLnByb3RvdHlwZS5tZDtXLnByb3RvdHlwZS5uZD1mdW5jdGlvbihhLGIsYyxkKXtpZihudWxsIT1iKXthPVgodGhpcyxhKTtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKyl0aGlzLmEubChjKGJbZl0pLGQoYltmXSkpO1oodGhpcyxhKX19O1cucHJvdG90eXBlLndyaXRlUGFja2VkU3BsaXRWYXJpbnQ2ND1XLnByb3RvdHlwZS5uZDtXLnByb3RvdHlwZS5vZD1mdW5jdGlvbihhLGIsYyxkKXtpZihudWxsIT1iKXthPVgodGhpcyxhKTtmb3IodmFyIGY9dGhpcy5hLGg9MDtoPGIubGVuZ3RoO2grKylKYShjKGJbaF0pLGQoYltoXSksZnVuY3Rpb24obSx0KXtmLmwobT4+PjAsdD4+PjApfSk7Wih0aGlzLGEpfX07XG5XLnByb3RvdHlwZS53cml0ZVBhY2tlZFNwbGl0WmlnemFnVmFyaW50NjQ9Vy5wcm90b3R5cGUub2Q7Vy5wcm90b3R5cGUuZGQ9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iJiZiLmxlbmd0aCl7YT1YKHRoaXMsYSk7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPXNiKGJbY10pO3RoaXMuYS5sKGQubG8sZC5oaSl9Wih0aGlzLGEpfX07Vy5wcm90b3R5cGUud3JpdGVQYWNrZWRJbnQ2NFN0cmluZz1XLnByb3RvdHlwZS5kZDtXLnByb3RvdHlwZS5wZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKXthPVgodGhpcyxhKTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLmEuaihiW2NdKTtaKHRoaXMsYSl9fTtXLnByb3RvdHlwZS53cml0ZVBhY2tlZFVpbnQzMj1XLnByb3RvdHlwZS5wZDtcblcucHJvdG90eXBlLnFkPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9YiYmYi5sZW5ndGgpe2E9WCh0aGlzLGEpO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuYS5qKHBhcnNlSW50KGJbY10sMTApKTtaKHRoaXMsYSl9fTtXLnByb3RvdHlwZS53cml0ZVBhY2tlZFVpbnQzMlN0cmluZz1XLnByb3RvdHlwZS5xZDtXLnByb3RvdHlwZS5yZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKXthPVgodGhpcyxhKTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLmEudmEoYltjXSk7Wih0aGlzLGEpfX07Vy5wcm90b3R5cGUud3JpdGVQYWNrZWRVaW50NjQ9Vy5wcm90b3R5cGUucmQ7Vy5wcm90b3R5cGUuc2Q9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iJiZiLmxlbmd0aCl7YT1YKHRoaXMsYSk7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPVUoYltjXSk7dGhpcy5hLmwoZC5sbyxkLmhpKX1aKHRoaXMsYSl9fTtcblcucHJvdG90eXBlLndyaXRlUGFja2VkVWludDY0U3RyaW5nPVcucHJvdG90eXBlLnNkO1cucHJvdG90eXBlLmhkPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9YiYmYi5sZW5ndGgpe2E9WCh0aGlzLGEpO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuYS53YShiW2NdKTtaKHRoaXMsYSl9fTtXLnByb3RvdHlwZS53cml0ZVBhY2tlZFNpbnQzMj1XLnByb3RvdHlwZS5oZDtXLnByb3RvdHlwZS5qZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKXthPVgodGhpcyxhKTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLmEueGEoYltjXSk7Wih0aGlzLGEpfX07Vy5wcm90b3R5cGUud3JpdGVQYWNrZWRTaW50NjQ9Vy5wcm90b3R5cGUuamQ7Vy5wcm90b3R5cGUua2Q9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iJiZiLmxlbmd0aCl7YT1YKHRoaXMsYSk7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5hLlcoSChiW2NdKSk7Wih0aGlzLGEpfX07XG5XLnByb3RvdHlwZS53cml0ZVBhY2tlZFNpbnQ2NFN0cmluZz1XLnByb3RvdHlwZS5rZDtXLnByb3RvdHlwZS5sZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKXthPVgodGhpcyxhKTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLmEuVyhiW2NdKTtaKHRoaXMsYSl9fTtXLnByb3RvdHlwZS53cml0ZVBhY2tlZFNpbnRIYXNoNjQ9Vy5wcm90b3R5cGUubGQ7Vy5wcm90b3R5cGUuV2M9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iJiZiLmxlbmd0aClmb3IoWSh0aGlzLGEsMiksdGhpcy5hLmooNCpiLmxlbmd0aCksYT0wO2E8Yi5sZW5ndGg7YSsrKXRoaXMuYS5zKGJbYV0pfTtXLnByb3RvdHlwZS53cml0ZVBhY2tlZEZpeGVkMzI9Vy5wcm90b3R5cGUuV2M7Vy5wcm90b3R5cGUuWGM9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iJiZiLmxlbmd0aClmb3IoWSh0aGlzLGEsMiksdGhpcy5hLmooOCpiLmxlbmd0aCksYT0wO2E8Yi5sZW5ndGg7YSsrKXRoaXMuYS5WKGJbYV0pfTtcblcucHJvdG90eXBlLndyaXRlUGFja2VkRml4ZWQ2ND1XLnByb3RvdHlwZS5YYztXLnByb3RvdHlwZS5ZYz1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKWZvcihZKHRoaXMsYSwyKSx0aGlzLmEuaig4KmIubGVuZ3RoKSxhPTA7YTxiLmxlbmd0aDthKyspe3ZhciBjPVUoYlthXSk7dGhpcy5hLkEoYy5sbyxjLmhpKX19O1cucHJvdG90eXBlLndyaXRlUGFja2VkRml4ZWQ2NFN0cmluZz1XLnByb3RvdHlwZS5ZYztXLnByb3RvdHlwZS5lZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKWZvcihZKHRoaXMsYSwyKSx0aGlzLmEuaig0KmIubGVuZ3RoKSxhPTA7YTxiLmxlbmd0aDthKyspdGhpcy5hLlMoYlthXSl9O1cucHJvdG90eXBlLndyaXRlUGFja2VkU2ZpeGVkMzI9Vy5wcm90b3R5cGUuZWQ7XG5XLnByb3RvdHlwZS5mZD1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKWZvcihZKHRoaXMsYSwyKSx0aGlzLmEuaig4KmIubGVuZ3RoKSxhPTA7YTxiLmxlbmd0aDthKyspdGhpcy5hLlQoYlthXSl9O1cucHJvdG90eXBlLndyaXRlUGFja2VkU2ZpeGVkNjQ9Vy5wcm90b3R5cGUuZmQ7Vy5wcm90b3R5cGUuZ2Q9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iJiZiLmxlbmd0aClmb3IoWSh0aGlzLGEsMiksdGhpcy5hLmooOCpiLmxlbmd0aCksYT0wO2E8Yi5sZW5ndGg7YSsrKXRoaXMuYS5rYShiW2FdKX07Vy5wcm90b3R5cGUud3JpdGVQYWNrZWRTZml4ZWQ2NFN0cmluZz1XLnByb3RvdHlwZS5nZDtXLnByb3RvdHlwZS4kYz1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKWZvcihZKHRoaXMsYSwyKSx0aGlzLmEuaig0KmIubGVuZ3RoKSxhPTA7YTxiLmxlbmd0aDthKyspdGhpcy5hLkwoYlthXSl9O1cucHJvdG90eXBlLndyaXRlUGFja2VkRmxvYXQ9Vy5wcm90b3R5cGUuJGM7XG5XLnByb3RvdHlwZS5VYz1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKWZvcihZKHRoaXMsYSwyKSx0aGlzLmEuaig4KmIubGVuZ3RoKSxhPTA7YTxiLmxlbmd0aDthKyspdGhpcy5hLkooYlthXSl9O1cucHJvdG90eXBlLndyaXRlUGFja2VkRG91YmxlPVcucHJvdG90eXBlLlVjO1cucHJvdG90eXBlLlRjPWZ1bmN0aW9uKGEsYil7aWYobnVsbCE9YiYmYi5sZW5ndGgpZm9yKFkodGhpcyxhLDIpLHRoaXMuYS5qKGIubGVuZ3RoKSxhPTA7YTxiLmxlbmd0aDthKyspdGhpcy5hLkkoYlthXSl9O1cucHJvdG90eXBlLndyaXRlUGFja2VkQm9vbD1XLnByb3RvdHlwZS5UYztXLnByb3RvdHlwZS5WYz1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKXthPVgodGhpcyxhKTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLmEuUihiW2NdKTtaKHRoaXMsYSl9fTtXLnByb3RvdHlwZS53cml0ZVBhY2tlZEVudW09Vy5wcm90b3R5cGUuVmM7XG5XLnByb3RvdHlwZS5aYz1mdW5jdGlvbihhLGIpe2lmKG51bGwhPWImJmIubGVuZ3RoKWZvcihZKHRoaXMsYSwyKSx0aGlzLmEuaig4KmIubGVuZ3RoKSxhPTA7YTxiLmxlbmd0aDthKyspdGhpcy5hLksoYlthXSl9O1cucHJvdG90eXBlLndyaXRlUGFja2VkRml4ZWRIYXNoNjQ9Vy5wcm90b3R5cGUuWmM7Vy5wcm90b3R5cGUudGQ9ZnVuY3Rpb24oYSxiKXtpZihudWxsIT1iJiZiLmxlbmd0aCl7YT1YKHRoaXMsYSk7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5hLk4oYltjXSk7Wih0aGlzLGEpfX07Vy5wcm90b3R5cGUud3JpdGVQYWNrZWRWYXJpbnRIYXNoNjQ9Vy5wcm90b3R5cGUudGQ7XCJvYmplY3RcIj09PXR5cGVvZiBleHBvcnRzJiYoZXhwb3J0cy5kZWJ1Zz1SLGV4cG9ydHMuTWFwPXIsZXhwb3J0cy5NZXNzYWdlPU4sZXhwb3J0cy5CaW5hcnlSZWFkZXI9SixleHBvcnRzLkJpbmFyeVdyaXRlcj1XLGV4cG9ydHMuRXh0ZW5zaW9uRmllbGRJbmZvPVlhLGV4cG9ydHMuRXh0ZW5zaW9uRmllbGRCaW5hcnlJbmZvPVphLGV4cG9ydHMuZXhwb3J0U3ltYm9sPW1hLGV4cG9ydHMuaW5oZXJpdHM9bmEsZXhwb3J0cy5vYmplY3Q9e2V4dGVuZDpwYX0sZXhwb3J0cy50eXBlT2Y9ayk7XG4iLG51bGwsbnVsbF0sIm5hbWVzIjpbImV4dGVuZFN0YXRpY3MiLCJkIiwiYiIsIk9iamVjdCIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiQXJyYXkiLCJwIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiX19leHRlbmRzIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiX18iLCJ0aGlzIiwiY29uc3RydWN0b3IiLCJjcmVhdGUiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInZhbHVlIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX19nZW5lcmF0b3IiLCJib2R5IiwiZiIsInkiLCJ0IiwiXyIsImxhYmVsIiwic2VudCIsInRyeXMiLCJvcHMiLCJnIiwiSXRlcmF0b3IiLCJ2ZXJiIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJuIiwidiIsIm9wIiwicG9wIiwibGVuZ3RoIiwicHVzaCIsIl9fdmFsdWVzIiwibyIsInMiLCJtIiwiaSIsIl9fYXN5bmNWYWx1ZXMiLCJhc3luY0l0ZXJhdG9yIiwic2V0dGxlIiwiX19jbGFzc1ByaXZhdGVGaWVsZEdldCIsInJlY2VpdmVyIiwic3RhdGUiLCJraW5kIiwiaGFzIiwiZ2V0IiwiU3VwcHJlc3NlZEVycm9yIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZGVmaW5lUHJvcGVydHkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJfc2V0UHJvdG90eXBlT2YiLCJfZ2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNoYW0iLCJQcm94eSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsInNlbGYiLCJSZWZlcmVuY2VFcnJvciIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2NyZWF0ZVN1cGVyIiwiRGVyaXZlZCIsImhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJTdXBlciIsIk5ld1RhcmdldCIsImFyZ3VtZW50cyIsIl9zdXBlclByb3BCYXNlIiwib2JqZWN0IiwicHJvcGVydHkiLCJfZ2V0IiwiYmFzZSIsImRlc2MiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJFbWl0dGVyIiwidHlwZSIsImNhbGxiYWNrIiwib3B0aW9ucyIsImxpc3RlbmVycyIsInN0YWNrIiwibCIsInNwbGljZSIsImV2ZW50Iiwic3RhY2tUb0NhbGwiLCJzbGljZSIsImxpc3RlbmVyIiwib25jZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkZWZhdWx0UHJldmVudGVkIiwiQWJvcnRTaWduYWwiLCJfRW1pdHRlciIsIl9zdXBlciIsIl90aGlzIiwidW5kZWZpbmVkIiwiYWJvcnRlZCIsIm9uYWJvcnQiLCJBYm9ydENvbnRyb2xsZXIiLCJyZWFzb24iLCJFdmVudCIsImRvY3VtZW50IiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJjcmVhdGVFdmVudE9iamVjdCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwic2lnbmFsUmVhc29uIiwiRXJyb3IiLCJuYW1lIiwiRE9NRXhjZXB0aW9uIiwiZXJyIiwic2lnbmFsIiwiZGlzcGF0Y2hFdmVudCIsInBvbHlmaWxsTmVlZGVkIiwiX19GT1JDRV9JTlNUQUxMX0FCT1JUQ09OVFJPTExFUl9QT0xZRklMTCIsImNvbnNvbGUiLCJsb2ciLCJSZXF1ZXN0IiwidG9TdHJpbmdUYWciLCJnbG9iYWwiLCJmYWN0b3J5IiwiYmxhemUiLCJhYSIsImRlZmluZVByb3BlcnRpZXMiLCJhIiwiYyIsIndpbmRvdyIsImRhIiwiZWEiLCJmYSIsInRvU3RyaW5nIiwiaGEiLCJpYSIsImNhIiwic3BsaXQiLCJiYSIsImphIiwia2EiLCJleGVjU2NyaXB0Iiwic2hpZnQiLCJrIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJsYSIsIm9hIiwicWEiLCJmb3JFYWNoIiwibWFwIiwiaCIsInJhIiwic2EiLCJxIiwidmEiLCJGdW5jdGlvbiIsImRpc3BsYXlOYW1lIiwiciIsImFyckNsZWFuIiwid2EiLCJ3IiwidSIsInhhIiwiZnJvbUNoYXJDb2RlIiwic29ydCIsInRvQXJyYXkiLCJNYyIsInRvT2JqZWN0IiwiZnJvbU9iamVjdCIsInNldCIsIkpiIiwiZ2V0TGVuZ3RoIiwiY2xlYXIiLCJDYiIsImRlbCIsIkViIiwiZ2V0RW50cnlMaXN0IiwiZW50cmllcyIsImtleXMiLCJ2YWx1ZXMiLCJKYyIsIlZhIiwiWWEiLCJzZXJpYWxpemVCaW5hcnkiLCJkZXNlcmlhbGl6ZUJpbmFyeSIsImJiIiwieWEiLCJ6YSIsIkFhIiwieCIsIkJhIiwiQ2EiLCJCIiwiTSIsImpvaW4iLCJEYSIsIk1hdGgiLCJmbG9vciIsImluZGV4T2YiLCJVaW50OEFycmF5IiwiY2hhckF0IiwiTGEiLCJ0ZXN0IiwiRWEiLCJzdWJhcnJheSIsImNvbmNhdCIsInliIiwiZWUiLCJGTE9BVCIsImtlIiwidGUiLCJqZSIsInhiIiwid2IiLCJCT09MIiwicmUiLCJpZSIsImxlIiwiY2UiLCJzZSIsImdlIiwibWUiLCJuZSIsIm9lIiwicGUiLCJoZSIsInZlIiwidWUiLCJkZSIsInFlIiwiZmUiLCJ6IiwiRmEiLCJBIiwiYWJzIiwiR2EiLCJIYSIsImlzTmFOIiwicm91bmQiLCJwb3ciLCJMTjIiLCJJYSIsIkMiLCJjaGFyQ29kZUF0IiwiRCIsIkUiLCJKYSIsIkthIiwiTWEiLCJOYSIsIk5hTiIsIkluZmluaXR5IiwiT2EiLCJQYSIsIkYiLCJHIiwiUWEiLCJIIiwiUmEiLCJTYSIsIlRhIiwiVWEiLCJBcnJheUJ1ZmZlciIsImJ1ZmZlciIsImJ5dGVPZmZzZXQiLCJieXRlTGVuZ3RoIiwiSSIsInRvTG93ZXJDYXNlIiwidG9VcHBlckNhc2UiLCJXYSIsIkoiLCJPIiwiZ2V0SW5zdGFuY2VDYWNoZUxlbmd0aCIsImFsbG9jIiwiZnJlZSIsImNsb25lIiwiWSIsImdldEJ1ZmZlciIsInNldEJsb2NrIiwiRGIiLCJnZXRFbmQiLCJzZXRFbmQiLCJyZXNldCIsImdldEN1cnNvciIsInNldEN1cnNvciIsImFkdmFuY2UiLCJhdEVuZCIsIlFiIiwicGFzdEVuZCIsImdldEVycm9yIiwicmVhZFNwbGl0VmFyaW50NjQiLCJyZWFkU3BsaXRaaWd6YWdWYXJpbnQ2NCIsInRhIiwicmVhZFNwbGl0Rml4ZWQ2NCIsImtiIiwic2tpcFZhcmludCIsIm1iIiwidW5za2lwVmFyaW50IiwicmVhZFVuc2lnbmVkVmFyaW50MzIiLCJyZWFkU2lnbmVkVmFyaW50MzIiLCJyZWFkU2lnbmVkVmFyaW50MzJTdHJpbmciLCJyZWFkWmlnemFnVmFyaW50MzIiLCJyZWFkVW5zaWduZWRWYXJpbnQ2NCIsInJlYWRVbnNpZ25lZFZhcmludDY0U3RyaW5nIiwicmVhZFNpZ25lZFZhcmludDY0IiwicmVhZFNpZ25lZFZhcmludDY0U3RyaW5nIiwicmVhZFppZ3phZ1ZhcmludDY0IiwiZmIiLCJyZWFkWmlnemFnVmFyaW50SGFzaDY0IiwicmVhZFppZ3phZ1ZhcmludDY0U3RyaW5nIiwiR2MiLCJyZWFkVWludDgiLCJFYyIsInJlYWRVaW50MTYiLCJyZWFkVWludDMyIiwiZ2EiLCJyZWFkVWludDY0IiwicmVhZFVpbnQ2NFN0cmluZyIsIlhiIiwicmVhZEludDgiLCJWYiIsInJlYWRJbnQxNiIsInJlYWRJbnQzMiIsInJlYWRJbnQ2NCIsInJlYWRJbnQ2NFN0cmluZyIsInJlYWRGbG9hdCIsIloiLCJyZWFkRG91YmxlIiwicGEiLCJyZWFkQm9vbCIsInJlYWRFbnVtIiwicmVhZFN0cmluZyIsIkRjIiwicmVhZFN0cmluZ1dpdGhMZW5ndGgiLCJyZWFkQnl0ZXMiLCJyZWFkVmFyaW50SGFzaDY0IiwiJCIsInJlYWRGaXhlZEhhc2g2NCIsIksiLCJYYSIsIkwiLCJtYSIsIm5hIiwiWmEiLCJBYiIsIk5iIiwiTiIsImNsZWFySW5zdGFuY2VDYWNoZSIsInpiIiwiRmIiLCJnZXRGaWVsZEN1cnNvciIsIkhiIiwiZ2V0RmllbGROdW1iZXIiLCJMYiIsImdldFdpcmVUeXBlIiwiTWIiLCJpc0RlbGltaXRlZCIsImlzRW5kR3JvdXAiLCJuZXh0RmllbGQiLCJ1bnNraXBIZWFkZXIiLCJMYyIsInNraXBNYXRjaGluZ0ZpZWxkcyIsImxiIiwic2tpcFZhcmludEZpZWxkIiwiZ2IiLCJza2lwRGVsaW1pdGVkRmllbGQiLCJoYiIsInNraXBGaXhlZDMyRmllbGQiLCJpYiIsInNraXBGaXhlZDY0RmllbGQiLCJqYiIsInNraXBHcm91cCIsInNraXBGaWVsZCIsIkhjIiwicmVnaXN0ZXJSZWFkQ2FsbGJhY2siLCJJYyIsInJ1blJlYWRDYWxsYmFjayIsIlliIiwicmVhZE1lc3NhZ2UiLCJVYiIsInJlYWRHcm91cCIsIkdiIiwiZ2V0RmllbGREZWNvZGVyIiwiV2IiLCJyZWFkSW50MzJTdHJpbmciLCJGYyIsInJlYWRVaW50MzJTdHJpbmciLCJ6YyIsInJlYWRTaW50MzIiLCJBYyIsInJlYWRTaW50NjQiLCJCYyIsInJlYWRTaW50NjRTdHJpbmciLCJSYiIsInJlYWRGaXhlZDMyIiwiU2IiLCJyZWFkRml4ZWQ2NCIsIlRiIiwicmVhZEZpeGVkNjRTdHJpbmciLCJ2YyIsInJlYWRTZml4ZWQzMiIsIndjIiwicmVhZFNmaXhlZDMyU3RyaW5nIiwieGMiLCJyZWFkU2ZpeGVkNjQiLCJ5YyIsInJlYWRTZml4ZWQ2NFN0cmluZyIsIkNjIiwicmVhZFNpbnRIYXNoNjQiLCJnYyIsInJlYWRQYWNrZWRJbnQzMiIsImhjIiwicmVhZFBhY2tlZEludDMyU3RyaW5nIiwiaWMiLCJyZWFkUGFja2VkSW50NjQiLCJqYyIsInJlYWRQYWNrZWRJbnQ2NFN0cmluZyIsInFjIiwicmVhZFBhY2tlZFVpbnQzMiIsInJjIiwicmVhZFBhY2tlZFVpbnQzMlN0cmluZyIsInNjIiwicmVhZFBhY2tlZFVpbnQ2NCIsInRjIiwicmVhZFBhY2tlZFVpbnQ2NFN0cmluZyIsIm5jIiwicmVhZFBhY2tlZFNpbnQzMiIsIm9jIiwicmVhZFBhY2tlZFNpbnQ2NCIsInBjIiwicmVhZFBhY2tlZFNpbnQ2NFN0cmluZyIsImJjIiwicmVhZFBhY2tlZEZpeGVkMzIiLCJjYyIsInJlYWRQYWNrZWRGaXhlZDY0IiwiZGMiLCJyZWFkUGFja2VkRml4ZWQ2NFN0cmluZyIsImtjIiwicmVhZFBhY2tlZFNmaXhlZDMyIiwibGMiLCJyZWFkUGFja2VkU2ZpeGVkNjQiLCJtYyIsInJlYWRQYWNrZWRTZml4ZWQ2NFN0cmluZyIsImZjIiwicmVhZFBhY2tlZEZsb2F0IiwiJGIiLCJyZWFkUGFja2VkRG91YmxlIiwiWmIiLCJyZWFkUGFja2VkQm9vbCIsImFjIiwicmVhZFBhY2tlZEVudW0iLCJ1YyIsInJlYWRQYWNrZWRWYXJpbnRIYXNoNjQiLCJlYyIsInJlYWRQYWNrZWRGaXhlZEhhc2g2NCIsImlzTWVzc2FnZVR5cGUiLCJHRU5FUkFURV9UT19PQkpFQ1QiLCJHRU5FUkFURV9GUk9NX09CSkVDVCIsIiRhIiwiSWIiLCJnZXRKc1BiTWVzc2FnZUlkIiwiaW5pdGlhbGl6ZSIsImlzQXJyYXkiLCJtYXgiLCJOdW1iZXIiLCJNQVhfVkFMVUUiLCJhYiIsImNiIiwiZnJlZXplIiwiZGIiLCJlYiIsIlEiLCJvYiIsIm5iIiwicGIiLCJxYiIsInRvT2JqZWN0TGlzdCIsInRvT2JqZWN0RXh0ZW5zaW9uIiwic2VyaWFsaXplQmluYXJ5RXh0ZW5zaW9ucyIsInJlYWRCaW5hcnlFeHRlbnNpb24iLCJnZXRGaWVsZCIsImdldFJlcGVhdGVkRmllbGQiLCJnZXRPcHRpb25hbEZsb2F0aW5nUG9pbnRGaWVsZCIsImdldEJvb2xlYW5GaWVsZCIsImdldFJlcGVhdGVkRmxvYXRpbmdQb2ludEZpZWxkIiwiZ2V0UmVwZWF0ZWRCb29sZWFuRmllbGQiLCJieXRlc0FzQjY0IiwiYnl0ZXNBc1U4IiwiYnl0ZXNMaXN0QXNCNjQiLCJieXRlc0xpc3RBc1U4IiwiZ2V0RmllbGRXaXRoRGVmYXVsdCIsImdldEJvb2xlYW5GaWVsZFdpdGhEZWZhdWx0IiwiZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQiLCJnZXRGaWVsZFByb3RvMyIsImdldE1hcEZpZWxkIiwic2V0RmllbGQiLCJzZXRQcm90bzNJbnRGaWVsZCIsInNldFByb3RvM0Zsb2F0RmllbGQiLCJzZXRQcm90bzNCb29sZWFuRmllbGQiLCJzZXRQcm90bzNTdHJpbmdGaWVsZCIsInNldFByb3RvM0J5dGVzRmllbGQiLCJzZXRQcm90bzNFbnVtRmllbGQiLCJzZXRQcm90bzNTdHJpbmdJbnRGaWVsZCIsImFkZFRvUmVwZWF0ZWRGaWVsZCIsInNldE9uZW9mRmllbGQiLCJjb21wdXRlT25lb2ZDYXNlIiwiZ2V0V3JhcHBlckZpZWxkIiwiZ2V0UmVwZWF0ZWRXcmFwcGVyRmllbGQiLCJzZXRXcmFwcGVyRmllbGQiLCJzZXRPbmVvZldyYXBwZXJGaWVsZCIsInNldFJlcGVhdGVkV3JhcHBlckZpZWxkIiwiYWRkVG9SZXBlYXRlZFdyYXBwZXJGaWVsZCIsInRvTWFwIiwiZ2V0RXh0ZW5zaW9uIiwiS2MiLCJzZXRFeHRlbnNpb24iLCJkaWZmZXJlbmNlIiwiZXF1YWxzIiwiY29tcGFyZUV4dGVuc2lvbnMiLCJjb21wYXJlRmllbGRzIiwiQmIiLCJjbG9uZU1lc3NhZ2UiLCJjb3B5SW50byIsInJlZ2lzdGVyTWVzc2FnZVR5cGUiLCJ3ZSIsIlIiLCJkdW1wIiwiWCIsIlMiLCJUIiwibG8iLCJoaSIsInJiIiwiVSIsInBhcnNlSW50IiwiYWRkIiwiViIsInNiIiwic3Vic3RyaW5nIiwic3ViIiwiVyIsInRiIiwiZW5kIiwiaiIsInViIiwidmIiLCJ1YSIsIiRuYW1lIiwiZXhlYyIsImV4dGVuc2lvbk9iamVjdF8iLCIkZXh0ZW5zaW9ucyIsImV4dGVuc2lvbnMiLCJyZXBsYWNlIiwid3JpdGVTcGxpdFZhcmludDY0Iiwid3JpdGVTcGxpdEZpeGVkNjQiLCJ3cml0ZVVuc2lnbmVkVmFyaW50MzIiLCJ3cml0ZVNpZ25lZFZhcmludDMyIiwid3JpdGVVbnNpZ25lZFZhcmludDY0Iiwid3JpdGVTaWduZWRWYXJpbnQ2NCIsIndyaXRlWmlnemFnVmFyaW50MzIiLCJ3cml0ZVppZ3phZ1ZhcmludDY0Iiwid3JpdGVaaWd6YWdWYXJpbnQ2NFN0cmluZyIsIndyaXRlWmlnemFnVmFyaW50SGFzaDY0IiwiYmUiLCJ3cml0ZVVpbnQ4IiwiYWUiLCJ3cml0ZVVpbnQxNiIsIndyaXRlVWludDMyIiwid3JpdGVVaW50NjQiLCJRYyIsIndyaXRlSW50OCIsIlBjIiwid3JpdGVJbnQxNiIsIndyaXRlSW50MzIiLCJ3cml0ZUludDY0Iiwid3JpdGVJbnQ2NFN0cmluZyIsIndyaXRlRmxvYXQiLCJ3cml0ZURvdWJsZSIsIndyaXRlQm9vbCIsIndyaXRlRW51bSIsIndyaXRlQnl0ZXMiLCJ3cml0ZVZhcmludEhhc2g2NCIsIndyaXRlRml4ZWRIYXNoNjQiLCJ3cml0ZVN0cmluZyIsImNtcCIsInJpZ2h0U2hpZnQiLCJsZWZ0U2hpZnQiLCJtc2IiLCJPYiIsImxzYiIsInplcm8iLCJtdWwzMngzMiIsIm11bCIsImRpdiIsImZyb21TdHJpbmciLCJ3cml0ZVNlcmlhbGl6ZWRNZXNzYWdlIiwiUGIiLCJtYXliZVdyaXRlU2VyaWFsaXplZE1lc3NhZ2UiLCJnZXRSZXN1bHRCdWZmZXIiLCJLYiIsImdldFJlc3VsdEJhc2U2NFN0cmluZyIsImJlZ2luU3ViTWVzc2FnZSIsImVuZFN1Yk1lc3NhZ2UiLCJOYyIsIndyaXRlQW55Iiwid3JpdGVJbnQzMlN0cmluZyIsIndyaXRlVWludDMyU3RyaW5nIiwid3JpdGVVaW50NjRTdHJpbmciLCJ3cml0ZVNpbnQzMiIsIndyaXRlU2ludDY0IiwiJGQiLCJ3cml0ZVNpbnRIYXNoNjQiLCJaZCIsIndyaXRlU2ludDY0U3RyaW5nIiwid3JpdGVGaXhlZDMyIiwid3JpdGVGaXhlZDY0Iiwid3JpdGVGaXhlZDY0U3RyaW5nIiwid3JpdGVTZml4ZWQzMiIsIndyaXRlU2ZpeGVkNjQiLCJ3cml0ZVNmaXhlZDY0U3RyaW5nIiwiUmMiLCJ3cml0ZU1lc3NhZ2UiLCJTYyIsIndyaXRlTWVzc2FnZVNldCIsIk9jIiwid3JpdGVHcm91cCIsIndyaXRlU3BsaXRaaWd6YWdWYXJpbnQ2NCIsIkVkIiwid3JpdGVSZXBlYXRlZEludDMyIiwiRmQiLCJ3cml0ZVJlcGVhdGVkSW50MzJTdHJpbmciLCJHZCIsIndyaXRlUmVwZWF0ZWRJbnQ2NCIsIlFkIiwid3JpdGVSZXBlYXRlZFNwbGl0Rml4ZWQ2NCIsIlJkIiwid3JpdGVSZXBlYXRlZFNwbGl0VmFyaW50NjQiLCJTZCIsIndyaXRlUmVwZWF0ZWRTcGxpdFppZ3phZ1ZhcmludDY0IiwiSGQiLCJ3cml0ZVJlcGVhdGVkSW50NjRTdHJpbmciLCJVZCIsIndyaXRlUmVwZWF0ZWRVaW50MzIiLCJWZCIsIndyaXRlUmVwZWF0ZWRVaW50MzJTdHJpbmciLCJXZCIsIndyaXRlUmVwZWF0ZWRVaW50NjQiLCJYZCIsIndyaXRlUmVwZWF0ZWRVaW50NjRTdHJpbmciLCJNZCIsIndyaXRlUmVwZWF0ZWRTaW50MzIiLCJOZCIsIndyaXRlUmVwZWF0ZWRTaW50NjQiLCJPZCIsIndyaXRlUmVwZWF0ZWRTaW50NjRTdHJpbmciLCJQZCIsIndyaXRlUmVwZWF0ZWRTaW50SGFzaDY0IiwieWQiLCJ3cml0ZVJlcGVhdGVkRml4ZWQzMiIsInpkIiwid3JpdGVSZXBlYXRlZEZpeGVkNjQiLCJBZCIsIndyaXRlUmVwZWF0ZWRGaXhlZDY0U3RyaW5nIiwiSmQiLCJ3cml0ZVJlcGVhdGVkU2ZpeGVkMzIiLCJLZCIsIndyaXRlUmVwZWF0ZWRTZml4ZWQ2NCIsIkxkIiwid3JpdGVSZXBlYXRlZFNmaXhlZDY0U3RyaW5nIiwiQ2QiLCJ3cml0ZVJlcGVhdGVkRmxvYXQiLCJ3ZCIsIndyaXRlUmVwZWF0ZWREb3VibGUiLCJ1ZCIsIndyaXRlUmVwZWF0ZWRCb29sIiwieGQiLCJ3cml0ZVJlcGVhdGVkRW51bSIsIlRkIiwid3JpdGVSZXBlYXRlZFN0cmluZyIsInZkIiwid3JpdGVSZXBlYXRlZEJ5dGVzIiwiSWQiLCJ3cml0ZVJlcGVhdGVkTWVzc2FnZSIsIkRkIiwid3JpdGVSZXBlYXRlZEdyb3VwIiwiQmQiLCJ3cml0ZVJlcGVhdGVkRml4ZWRIYXNoNjQiLCJZZCIsIndyaXRlUmVwZWF0ZWRWYXJpbnRIYXNoNjQiLCJhZCIsIndyaXRlUGFja2VkSW50MzIiLCJiZCIsIndyaXRlUGFja2VkSW50MzJTdHJpbmciLCJjZCIsIndyaXRlUGFja2VkSW50NjQiLCJtZCIsIndyaXRlUGFja2VkU3BsaXRGaXhlZDY0IiwibmQiLCJ3cml0ZVBhY2tlZFNwbGl0VmFyaW50NjQiLCJvZCIsIndyaXRlUGFja2VkU3BsaXRaaWd6YWdWYXJpbnQ2NCIsImRkIiwid3JpdGVQYWNrZWRJbnQ2NFN0cmluZyIsInBkIiwid3JpdGVQYWNrZWRVaW50MzIiLCJxZCIsIndyaXRlUGFja2VkVWludDMyU3RyaW5nIiwicmQiLCJ3cml0ZVBhY2tlZFVpbnQ2NCIsInNkIiwid3JpdGVQYWNrZWRVaW50NjRTdHJpbmciLCJoZCIsIndyaXRlUGFja2VkU2ludDMyIiwiamQiLCJ3cml0ZVBhY2tlZFNpbnQ2NCIsImtkIiwid3JpdGVQYWNrZWRTaW50NjRTdHJpbmciLCJsZCIsIndyaXRlUGFja2VkU2ludEhhc2g2NCIsIldjIiwid3JpdGVQYWNrZWRGaXhlZDMyIiwiWGMiLCJ3cml0ZVBhY2tlZEZpeGVkNjQiLCJZYyIsIndyaXRlUGFja2VkRml4ZWQ2NFN0cmluZyIsImVkIiwid3JpdGVQYWNrZWRTZml4ZWQzMiIsImZkIiwid3JpdGVQYWNrZWRTZml4ZWQ2NCIsImdkIiwid3JpdGVQYWNrZWRTZml4ZWQ2NFN0cmluZyIsIiRjIiwid3JpdGVQYWNrZWRGbG9hdCIsIlVjIiwid3JpdGVQYWNrZWREb3VibGUiLCJUYyIsIndyaXRlUGFja2VkQm9vbCIsIlZjIiwid3JpdGVQYWNrZWRFbnVtIiwiWmMiLCJ3cml0ZVBhY2tlZEZpeGVkSGFzaDY0IiwidGQiLCJ3cml0ZVBhY2tlZFZhcmludEhhc2g2NCIsImV4cG9ydHMiLCJkZWJ1ZyIsIk1hcCIsIk1lc3NhZ2UiLCJCaW5hcnlSZWFkZXIiLCJleHBvcnRTeW1ib2wiLCJpbmhlcml0cyIsImV4dGVuZCIsInR5cGVPZiIsIndvcmtlciIsIklucHV0IiwiZGF0YSIsIl9JbnB1dF9vbmVfb2ZfZGVjbHMiLCJwYl8xLk1lc3NhZ2UiLCJwYXRoIiwiZGlnZXN0IiwibWVzc2FnZSIsInNlcmlhbGl6ZSIsIndyaXRlciIsInBiXzEuQmluYXJ5V3JpdGVyIiwiZGVzZXJpYWxpemUiLCJieXRlcyIsInJlYWRlciIsInBiXzEuQmluYXJ5UmVhZGVyIiwiV29ya1JlcXVlc3QiLCJfV29ya1JlcXVlc3Rfb25lX29mX2RlY2xzIiwiaW5wdXRzIiwicmVxdWVzdF9pZCIsImNhbmNlbCIsInZlcmJvc2l0eSIsInNhbmRib3hfZGlyIiwiaXRlbSIsIldvcmtSZXNwb25zZSIsIl9Xb3JrUmVzcG9uc2Vfb25lX29mX2RlY2xzIiwiZXhpdF9jb2RlIiwib3V0cHV0Iiwid2FzX2NhbmNlbGxlZCIsImltcGxlbWVudGF0aW9uIiwiYWJvcnRpb25NYXAiLCJwcmV2IiwiQnVmZmVyIiwiX2MiLCJfZyIsIl9lIiwiY2h1bmsiLCJjdXJyZW50Iiwic2l6ZSIsImludE9mZnNldCIsImhlYWRlclNpemUiLCJyZWFkV29ya1JlcXVlc3RTaXplIiwicmVxdWVzdCIsIl9kIiwiYWJvcnQiLCJhYm9ydENvbnRyb2xsZXIiLCJyZXNwb25zZSIsIm91dHB1dENodW5rcyIsIm91dHB1dFN0cmVhbSIsIldyaXRhYmxlIiwid3JpdGUiLCJlbmNvZGluZyIsImZyb20iLCJkZWZhdWx0RW5jb2RpbmciLCJleGl0Q29kZSIsImVycm9yIiwicmVzcG9uc2VCeXRlcyIsInJlc3BvbnNlU2l6ZUJ5dGVzIiwiaW5kZXgiLCJ3cml0ZVdvcmtSZXNwb25zZVNpemUiLCJwcm9jZXNzIiwic3Rkb3V0IiwiX2YiLCJzdGRpbiIsImFyZ3MiXSwibWFwcGluZ3MiOiI0RkFnQklBLEVBQWdCLFNBQVNDLEVBQUdDLEdBSTVCLE9BSEFGLEVBQWdCRyxPQUFPQyxnQkFDbEIsQ0FBRUMsVUFBVyxjQUFnQkMsT0FBUyxTQUFVTCxFQUFHQyxHQUFLRCxFQUFFSSxVQUFZSCxDQUFFLEdBQ3pFLFNBQVVELEVBQUdDLEdBQUssSUFBSyxJQUFJSyxLQUFLTCxFQUFPQyxPQUFPSyxVQUFVQyxlQUFlQyxLQUFLUixFQUFHSyxLQUFJTixFQUFFTSxHQUFLTCxFQUFFSyxLQUN6RlAsRUFBY0MsRUFBR0MsRUFDNUIsRUFFTyxTQUFTUyxFQUFVVixFQUFHQyxHQUN6QixHQUFpQixtQkFBTkEsR0FBMEIsT0FBTkEsRUFDM0IsTUFBTSxJQUFJVSxVQUFVLHVCQUF5QkMsT0FBT1gsR0FBSyxpQ0FFN0QsU0FBU1ksSUFBT0MsS0FBS0MsWUFBY2YsQ0FBSSxDQUR2Q0QsRUFBY0MsRUFBR0MsR0FFakJELEVBQUVPLFVBQWtCLE9BQU5OLEVBQWFDLE9BQU9jLE9BQU9mLElBQU1ZLEVBQUdOLFVBQVlOLEVBQUVNLFVBQVcsSUFBSU0sRUFDbkYsQ0FxRk8sU0FBU0ksRUFBVUMsRUFBU0MsRUFBWUMsRUFBR0MsR0FFOUMsT0FBTyxJQUFLRCxJQUFNQSxFQUFJRSxXQUFVLFNBQVVDLEVBQVNDLEdBQy9DLFNBQVNDLEVBQVVDLEdB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 +'use strict'; + +var stream = require('stream'); + +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +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. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +var abortcontrollerPolyfillOnly = {}; + +var hasRequiredAbortcontrollerPolyfillOnly; + +function requireAbortcontrollerPolyfillOnly () { + if (hasRequiredAbortcontrollerPolyfillOnly) return abortcontrollerPolyfillOnly; + hasRequiredAbortcontrollerPolyfillOnly = 1; + (function (factory) { + factory(); + })((function () { + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + Object.defineProperty(subClass, "prototype", { + writable: false + }); + if (superClass) _setPrototypeOf(subClass, superClass); + } + + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } + } + + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; + } + + function _possibleConstructorReturn(self, call) { + if (call && (typeof call === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return _assertThisInitialized(self); + } + + function _createSuper(Derived) { + var hasNativeReflectConstruct = _isNativeReflectConstruct(); + + return function _createSuperInternal() { + var Super = _getPrototypeOf(Derived), + result; + + if (hasNativeReflectConstruct) { + var NewTarget = _getPrototypeOf(this).constructor; + + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + + return _possibleConstructorReturn(this, result); + }; + } + + function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = _getPrototypeOf(object); + if (object === null) break; + } + + return object; + } + + function _get() { + if (typeof Reflect !== "undefined" && Reflect.get) { + _get = Reflect.get.bind(); + } else { + _get = function _get(target, property, receiver) { + var base = _superPropBase(target, property); + + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + + if (desc.get) { + return desc.get.call(arguments.length < 3 ? target : receiver); + } + + return desc.value; + }; + } + + return _get.apply(this, arguments); + } + + var Emitter = /*#__PURE__*/function () { + function Emitter() { + _classCallCheck(this, Emitter); + + Object.defineProperty(this, 'listeners', { + value: {}, + writable: true, + configurable: true + }); + } + + _createClass(Emitter, [{ + key: "addEventListener", + value: function addEventListener(type, callback, options) { + if (!(type in this.listeners)) { + this.listeners[type] = []; + } + + this.listeners[type].push({ + callback: callback, + options: options + }); + } + }, { + key: "removeEventListener", + value: function removeEventListener(type, callback) { + if (!(type in this.listeners)) { + return; + } + + var stack = this.listeners[type]; + + for (var i = 0, l = stack.length; i < l; i++) { + if (stack[i].callback === callback) { + stack.splice(i, 1); + return; + } + } + } + }, { + key: "dispatchEvent", + value: function dispatchEvent(event) { + if (!(event.type in this.listeners)) { + return; + } + + var stack = this.listeners[event.type]; + var stackToCall = stack.slice(); + + for (var i = 0, l = stackToCall.length; i < l; i++) { + var listener = stackToCall[i]; + + try { + listener.callback.call(this, event); + } catch (e) { + Promise.resolve().then(function () { + throw e; + }); + } + + if (listener.options && listener.options.once) { + this.removeEventListener(event.type, listener.callback); + } + } + + return !event.defaultPrevented; + } + }]); + + return Emitter; + }(); + + var AbortSignal = /*#__PURE__*/function (_Emitter) { + _inherits(AbortSignal, _Emitter); + + var _super = _createSuper(AbortSignal); + + function AbortSignal() { + var _this; + + _classCallCheck(this, AbortSignal); + + _this = _super.call(this); // Some versions of babel does not transpile super() correctly for IE <= 10, if the parent + // constructor has failed to run, then "this.listeners" will still be undefined and then we call + // the parent constructor directly instead as a workaround. For general details, see babel bug: + // https://github.com/babel/babel/issues/3041 + // This hack was added as a fix for the issue described here: + // https://github.com/Financial-Times/polyfill-library/pull/59#issuecomment-477558042 + + if (!_this.listeners) { + Emitter.call(_assertThisInitialized(_this)); + } // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and + // we want Object.keys(new AbortController().signal) to be [] for compat with the native impl + + + Object.defineProperty(_assertThisInitialized(_this), 'aborted', { + value: false, + writable: true, + configurable: true + }); + Object.defineProperty(_assertThisInitialized(_this), 'onabort', { + value: null, + writable: true, + configurable: true + }); + Object.defineProperty(_assertThisInitialized(_this), 'reason', { + value: undefined, + writable: true, + configurable: true + }); + return _this; + } + + _createClass(AbortSignal, [{ + key: "toString", + value: function toString() { + return '[object AbortSignal]'; + } + }, { + key: "dispatchEvent", + value: function dispatchEvent(event) { + if (event.type === 'abort') { + this.aborted = true; + + if (typeof this.onabort === 'function') { + this.onabort.call(this, event); + } + } + + _get(_getPrototypeOf(AbortSignal.prototype), "dispatchEvent", this).call(this, event); + } + }]); + + return AbortSignal; + }(Emitter); + var AbortController = /*#__PURE__*/function () { + function AbortController() { + _classCallCheck(this, AbortController); + + // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and + // we want Object.keys(new AbortController()) to be [] for compat with the native impl + Object.defineProperty(this, 'signal', { + value: new AbortSignal(), + writable: true, + configurable: true + }); + } + + _createClass(AbortController, [{ + key: "abort", + value: function abort(reason) { + var event; + + try { + event = new Event('abort'); + } catch (e) { + if (typeof document !== 'undefined') { + if (!document.createEvent) { + // For Internet Explorer 8: + event = document.createEventObject(); + event.type = 'abort'; + } else { + // For Internet Explorer 11: + event = document.createEvent('Event'); + event.initEvent('abort', false, false); + } + } else { + // Fallback where document isn't available: + event = { + type: 'abort', + bubbles: false, + cancelable: false + }; + } + } + + var signalReason = reason; + + if (signalReason === undefined) { + if (typeof document === 'undefined') { + signalReason = new Error('This operation was aborted'); + signalReason.name = 'AbortError'; + } else { + try { + signalReason = new DOMException('signal is aborted without reason'); + } catch (err) { + // IE 11 does not support calling the DOMException constructor, use a + // regular error object on it instead. + signalReason = new Error('This operation was aborted'); + signalReason.name = 'AbortError'; + } + } + } + + this.signal.reason = signalReason; + this.signal.dispatchEvent(event); + } + }, { + key: "toString", + value: function toString() { + return '[object AbortController]'; + } + }]); + + return AbortController; + }(); + + if (typeof Symbol !== 'undefined' && Symbol.toStringTag) { + // These are necessary to make sure that we get correct output for: + // Object.prototype.toString.call(new AbortController()) + AbortController.prototype[Symbol.toStringTag] = 'AbortController'; + AbortSignal.prototype[Symbol.toStringTag] = 'AbortSignal'; + } + + function polyfillNeeded(self) { + if (self.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) { + console.log('__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill'); + return true; + } // Note that the "unfetch" minimal fetch polyfill defines fetch() without + // defining window.Request, and this polyfill need to work on top of unfetch + // so the below feature detection needs the !self.AbortController part. + // The Request.prototype check is also needed because Safari versions 11.1.2 + // up to and including 12.1.x has a window.AbortController present but still + // does NOT correctly implement abortable fetch: + // https://bugs.webkit.org/show_bug.cgi?id=174980#c2 + + + return typeof self.Request === 'function' && !self.Request.prototype.hasOwnProperty('signal') || !self.AbortController; + } + + (function (self) { + + if (!polyfillNeeded(self)) { + return; + } + + self.AbortController = AbortController; + self.AbortSignal = AbortSignal; + })(typeof self !== 'undefined' ? self : commonjsGlobal); + + })); + return abortcontrollerPolyfillOnly; +} + +requireAbortcontrollerPolyfillOnly(); + +/** + * Each protocol buffer message is preceded by its length in varint format + * The flow goes as + * ---> + * WorkRequestMessageSize (varint) + * WorkRequest {} + * <---- + * WorkResponseMessageSize (varint) + * WorkResponse + * See: https://docs.bazel.build/versions/main/creating-workers.html#work-responses + */ +/** + * Extract the delimited header information from a buffer. + * Size in bytes may vary depending on the size of the original message. Specified by `headerSize` + * @param buffer the buffer to extract the varint message size + * @returns an object that contains how long is the header and the size of the WorkRequest + */ +function readWorkRequestSize(buffer) { + var b; + var result = 0; + var intOffset = 0; + for (var i = 0; i < 5; i++) { + b = buffer[intOffset++]; + result |= (b & 0x7f) << (7 * i); + if (!(b & 0x80)) { + break; + } + } + return { size: result, headerSize: intOffset }; +} +/** + * Creates a varint header message that specifies size of the WorkResponse in bytes. + * @param size Size of the WorkResponse in bytes. + * @returns A buffer containing the size information in varint + */ +function writeWorkResponseSize(size) { + var buffer = Buffer.alloc(10); + var index = 0; + while (size > 127) { + buffer[index] = (size & 0x7f) | 0x80; + size = size >>> 7; + index++; + } + buffer[index] = size; + return buffer.slice(0, index + 1); +} + +var googleProtobuf = {}; + +/* + + Copyright The Closure Library Authors. + SPDX-License-Identifier: Apache-2.0 +*/ + +var hasRequiredGoogleProtobuf; + +function requireGoogleProtobuf () { + if (hasRequiredGoogleProtobuf) return googleProtobuf; + hasRequiredGoogleProtobuf = 1; + (function (exports) { + var aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value);},e="undefined"!=typeof window&&window===googleProtobuf?googleProtobuf:"undefined"!=typeof commonjsGlobal&&null!=commonjsGlobal?commonjsGlobal:googleProtobuf;function ba(a,b){if(b){var c=e;a=a.split(".");for(var d=0;d=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}function sa(a,b,c,d){var f="Assertion failed";if(c){f+=": "+c;var h=d;}else a&&(f+=": "+a,h=b);throw Error(f,h||[]);}function n(a,b,c){for(var d=[],f=2;f=a.length)return String.fromCharCode.apply(null,a);for(var b="",c=0;c>2;f=(f&3)<<4|m>>4;m=(m&15)<<2|B>>6;B&=63;t||(B=64,h||(m=64));c.push(b[M],b[f],b[m]||"",b[B]||"");}return c.join("")}function Da(a){var b=a.length,c=3*b/4;c%3?c=Math.floor(c):-1!="=.".indexOf(a[b-1])&&(c=-1!="=.".indexOf(a[b-2])?c-2:c-1);var d=new Uint8Array(c),f=0;Ea(a,function(h){d[f++]=h;});return d.subarray(0,f)} + function Ea(a,b){function c(B){for(;d>4);64!=m&&(b(h<<4&240|m>>2),64!=t&&b(m<<6&192|t));}} + function Ca(){if(!x){x={};for(var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),b=["+/=","+/","-_=","-_.","-_"],c=0;5>c;c++){var d=a.concat(b[c].split(""));Aa[c]=d;for(var f=0;f>>0;a=Math.floor((a-b)/4294967296)>>>0;y=b;z=a;}g("jspb.utils.splitUint64",Fa,void 0);function A(a){var b=0>a;a=Math.abs(a);var c=a>>>0;a=Math.floor((a-c)/4294967296);a>>>=0;b&&(a=~a>>>0,c=(~c>>>0)+1,4294967295a;a=2*Math.abs(a);Fa(a);a=y;var c=z;b&&(0==a?0==c?c=a=4294967295:(c--,a=4294967295):a--);y=a;z=c;}g("jspb.utils.splitZigzag64",Ga,void 0); + function Ha(a){var b=0>a?1:0;a=b?-a:a;if(0===a)0<1/a?y=z=0:(z=0,y=2147483648);else if(isNaN(a))z=0,y=2147483647;else if(3.4028234663852886E38>>0;else if(1.1754943508222875E-38>a)a=Math.round(a/Math.pow(2,-149)),z=0,y=(b<<31|a)>>>0;else {var c=Math.floor(Math.log(a)/Math.LN2);a*=Math.pow(2,-c);a=Math.round(8388608*a);16777216<=a&&++c;z=0;y=(b<<31|c+127<<23|a&8388607)>>>0;}}g("jspb.utils.splitFloat32",Ha,void 0); + function Ia(a){var b=0>a?1:0;a=b?-a:a;if(0===a)z=0<1/a?0:2147483648,y=0;else if(isNaN(a))z=2147483647,y=4294967295;else if(1.7976931348623157E308>>0,y=0;else if(2.2250738585072014E-308>a)a/=Math.pow(2,-1074),z=(b<<31|a/4294967296)>>>0,y=a>>>0;else {var c=a,d=0;if(2<=c)for(;2<=c&&1023>d;)d++,c/=2;else for(;1>c&&-1022>>0;y=4503599627370496*a>>>0;}}g("jspb.utils.splitFloat64",Ia,void 0); + function C(a){var b=a.charCodeAt(4),c=a.charCodeAt(5),d=a.charCodeAt(6),f=a.charCodeAt(7);y=a.charCodeAt(0)+(a.charCodeAt(1)<<8)+(a.charCodeAt(2)<<16)+(a.charCodeAt(3)<<24)>>>0;z=b+(c<<8)+(d<<16)+(f<<24)>>>0;}g("jspb.utils.splitHash64",C,void 0);function D(a,b){return 4294967296*b+(a>>>0)}g("jspb.utils.joinUint64",D,void 0);function E(a,b){var c=b&2147483648;c&&(a=~a+1>>>0,b=~b>>>0,0==a&&(b=b+1>>>0));a=D(a,b);return c?-a:a}g("jspb.utils.joinInt64",E,void 0); + function Ja(a,b,c){var d=b>>31;return c(a<<1^d,(b<<1|a>>>31)^d)}g("jspb.utils.toZigzag64",Ja,void 0);function Ka(a,b){return Ma(a,b,E)}g("jspb.utils.joinZigzag64",Ka,void 0);function Ma(a,b,c){var d=-(a&1);return c((a>>>1|b<<31)^d,b>>>1^d)}g("jspb.utils.fromZigzag64",Ma,void 0);function Na(a){var b=2*(a>>31)+1,c=a>>>23&255;a&=8388607;return 255==c?a?NaN:Infinity*b:0==c?b*Math.pow(2,-149)*a:b*Math.pow(2,c-150)*(a+Math.pow(2,23))}g("jspb.utils.joinFloat32",Na,void 0); + function Oa(a,b){var c=2*(b>>31)+1,d=b>>>20&2047;a=4294967296*(b&1048575)+a;return 2047==d?a?NaN:Infinity*c:0==d?c*Math.pow(2,-1074)*a:c*Math.pow(2,d-1075)*(a+4503599627370496)}g("jspb.utils.joinFloat64",Oa,void 0);function Pa(a,b){return String.fromCharCode(a>>>0&255,a>>>8&255,a>>>16&255,a>>>24&255,b>>>0&255,b>>>8&255,b>>>16&255,b>>>24&255)}g("jspb.utils.joinHash64",Pa,void 0);g("jspb.utils.DIGITS","0123456789abcdef".split(""),void 0); + function F(a,b){function c(f,h){f=f?String(f):"";return h?"0000000".slice(f.length)+f:f}if(2097151>=b)return ""+D(a,b);var d=(a>>>24|b<<8)>>>0&16777215;b=b>>16&65535;a=(a&16777215)+6777216*d+6710656*b;d+=8147497*b;b*=2;1E7<=a&&(d+=Math.floor(a/1E7),a%=1E7);1E7<=d&&(b+=Math.floor(d/1E7),d%=1E7);return c(b,0)+c(d,b)+c(a,1)}g("jspb.utils.joinUnsignedDecimalString",F,void 0);function G(a,b){var c=b&2147483648;c&&(a=~a+1>>>0,b=~b+(0==a?1:0)>>>0);a=F(a,b);return c?"-"+a:a} + g("jspb.utils.joinSignedDecimalString",G,void 0);function Qa(a,b){C(a);a=y;var c=z;return b?G(a,c):F(a,c)}g("jspb.utils.hash64ToDecimalString",Qa,void 0);g("jspb.utils.hash64ArrayToDecimalStrings",function(a,b){for(var c=Array(a.length),d=0;dB&&(1!==m||0>>=8;}function c(){for(var m=0;8>m;m++)f[m]=~f[m]&255;}n(0a?48+a:87+a)} + function Sa(a){return 97<=a?a-97+10:a-48}g("jspb.utils.hash64ToHexString",function(a){var b=Array(18);b[0]="0";b[1]="x";for(var c=0;8>c;c++){var d=a.charCodeAt(7-c);b[2*c+2]=Ra(d>>4);b[2*c+3]=Ra(d&15);}return b.join("")},void 0);g("jspb.utils.hexStringToHash64",function(a){a=a.toLowerCase();n(18==a.length);n("0"==a[0]);n("x"==a[1]);for(var b="",c=0;8>c;c++)b=String.fromCharCode(16*Sa(a.charCodeAt(2*c+2))+Sa(a.charCodeAt(2*c+3)))+b;return b},void 0); + g("jspb.utils.hash64ToNumber",function(a,b){C(a);a=y;var c=z;return b?E(a,c):D(a,c)},void 0);g("jspb.utils.numberToHash64",function(a){A(a);return Pa(y,z)},void 0);g("jspb.utils.countVarints",function(a,b,c){for(var d=0,f=b;f>7;return c-b-d},void 0); + g("jspb.utils.countVarintFields",function(a,b,c,d){var f=0;d*=8;if(128>d)for(;b>=7;}if(a[b++]!=h)break;for(f++;h=a[b++],0!=(h&128););}return f},void 0);function Ta(a,b,c,d,f){var h=0;if(128>d)for(;b>=7;}if(a[b++]!=m)break;h++;b+=f;}return h} + g("jspb.utils.countFixed32Fields",function(a,b,c,d){return Ta(a,b,c,8*d+5,4)},void 0);g("jspb.utils.countFixed64Fields",function(a,b,c,d){return Ta(a,b,c,8*d+1,8)},void 0);g("jspb.utils.countDelimitedFields",function(a,b,c,d){var f=0;for(d=8*d+2;b>=7;}if(a[b++]!=h)break;f++;for(var m=0,t=1;h=a[b++],m+=(h&127)*t,t*=128,0!=(h&128););b+=m;}return f},void 0); + g("jspb.utils.debugBytesToTextFormat",function(a){var b='"';if(a){a=Ua(a);for(var c=0;ca[c]&&(b+="0"),b+=a[c].toString(16);}return b+'"'},void 0); + g("jspb.utils.debugScalarToTextFormat",function(a){if("string"===typeof a){a=String(a);for(var b=['"'],c=0;cf))if(f=d,f in za)d=za[f];else if(f in ya)d=za[f]=ya[f];else {m=f.charCodeAt(0);if(31m)d=f;else {if(256>m){if(d="\\x",16>m||256m&&(d+="0");d+=m.toString(16).toUpperCase();}d=za[f]=d;}m=d;}b[h]=m;}b.push('"');a=b.join("");}else a=a.toString();return a},void 0); + g("jspb.utils.stringToByteArray",function(a){for(var b=new Uint8Array(a.length),c=0;cVa.length&&Va.push(this);};I.prototype.free=I.prototype.Ca;I.prototype.clone=function(){return Wa(this.b,this.h,this.c-this.h)};I.prototype.clone=I.prototype.clone; + I.prototype.clear=function(){this.b=null;this.a=this.c=this.h=0;this.v=false;};I.prototype.clear=I.prototype.clear;I.prototype.Y=function(){return this.b};I.prototype.getBuffer=I.prototype.Y;I.prototype.H=function(a,b,c){this.b=Ua(a);this.h=void 0!==b?b:0;this.c=void 0!==c?this.h+c:this.b.length;this.a=this.h;};I.prototype.setBlock=I.prototype.H;I.prototype.Db=function(){return this.c};I.prototype.getEnd=I.prototype.Db;I.prototype.setEnd=function(a){this.c=a;};I.prototype.setEnd=I.prototype.setEnd; + I.prototype.reset=function(){this.a=this.h;};I.prototype.reset=I.prototype.reset;I.prototype.B=function(){return this.a};I.prototype.getCursor=I.prototype.B;I.prototype.Ma=function(a){this.a=a;};I.prototype.setCursor=I.prototype.Ma;I.prototype.advance=function(a){this.a+=a;n(this.a<=this.c);};I.prototype.advance=I.prototype.advance;I.prototype.ya=function(){return this.a==this.c};I.prototype.atEnd=I.prototype.ya;I.prototype.Qb=function(){return this.a>this.c};I.prototype.pastEnd=I.prototype.Qb; + I.prototype.getError=function(){return this.v||0>this.a||this.a>this.c};I.prototype.getError=I.prototype.getError;I.prototype.w=function(a){for(var b=128,c=0,d=0,f=0;4>f&&128<=b;f++)b=this.b[this.a++],c|=(b&127)<<7*f;128<=b&&(b=this.b[this.a++],c|=(b&127)<<28,d|=(b&127)>>4);if(128<=b)for(f=0;5>f&&128<=b;f++)b=this.b[this.a++],d|=(b&127)<<7*f+3;if(128>b)return a(c>>>0,d>>>0);p("Failed to read varint, encoding is invalid.");this.v=true;};I.prototype.readSplitVarint64=I.prototype.w; + I.prototype.ea=function(a){return this.w(function(b,c){return Ma(b,c,a)})};I.prototype.readSplitZigzagVarint64=I.prototype.ea;I.prototype.ta=function(a){var b=this.b,c=this.a;this.a+=8;for(var d=0,f=0,h=c+7;h>=c;h--)d=d<<8|b[h],f=f<<8|b[h+4];return a(d,f)};I.prototype.readSplitFixed64=I.prototype.ta;I.prototype.kb=function(){for(;this.b[this.a]&128;)this.a++;this.a++;};I.prototype.skipVarint=I.prototype.kb;I.prototype.mb=function(a){for(;128>>=7;this.a--;};I.prototype.unskipVarint=I.prototype.mb; + I.prototype.o=function(){var a=this.b;var b=a[this.a];var c=b&127;if(128>b)return this.a+=1,n(this.a<=this.c),c;b=a[this.a+1];c|=(b&127)<<7;if(128>b)return this.a+=2,n(this.a<=this.c),c;b=a[this.a+2];c|=(b&127)<<14;if(128>b)return this.a+=3,n(this.a<=this.c),c;b=a[this.a+3];c|=(b&127)<<21;if(128>b)return this.a+=4,n(this.a<=this.c),c;b=a[this.a+4];c|=(b&15)<<28;if(128>b)return this.a+=5,n(this.a<=this.c),c>>>0;this.a+=5;128<=a[this.a++]&&128<=a[this.a++]&&128<=a[this.a++]&&128<=a[this.a++]&&128<= + a[this.a++]&&n(false);n(this.a<=this.c);return c};I.prototype.readUnsignedVarint32=I.prototype.o;I.prototype.da=function(){return ~~this.o()};I.prototype.readSignedVarint32=I.prototype.da;I.prototype.O=function(){return this.o().toString()};I.prototype.Ea=function(){return this.da().toString()};I.prototype.readSignedVarint32String=I.prototype.Ea;I.prototype.Ia=function(){var a=this.o();return a>>>1^-(a&1)};I.prototype.readZigzagVarint32=I.prototype.Ia;I.prototype.Ga=function(){return this.w(D)}; + I.prototype.readUnsignedVarint64=I.prototype.Ga;I.prototype.Ha=function(){return this.w(F)};I.prototype.readUnsignedVarint64String=I.prototype.Ha;I.prototype.sa=function(){return this.w(E)};I.prototype.readSignedVarint64=I.prototype.sa;I.prototype.Fa=function(){return this.w(G)};I.prototype.readSignedVarint64String=I.prototype.Fa;I.prototype.Ja=function(){return this.w(Ka)};I.prototype.readZigzagVarint64=I.prototype.Ja;I.prototype.fb=function(){return this.ea(Pa)}; + I.prototype.readZigzagVarintHash64=I.prototype.fb;I.prototype.Ka=function(){return this.ea(G)};I.prototype.readZigzagVarint64String=I.prototype.Ka;I.prototype.Gc=function(){var a=this.b[this.a];this.a+=1;n(this.a<=this.c);return a};I.prototype.readUint8=I.prototype.Gc;I.prototype.Ec=function(){var a=this.b[this.a],b=this.b[this.a+1];this.a+=2;n(this.a<=this.c);return a<<0|b<<8};I.prototype.readUint16=I.prototype.Ec; + I.prototype.m=function(){var a=this.b[this.a],b=this.b[this.a+1],c=this.b[this.a+2],d=this.b[this.a+3];this.a+=4;n(this.a<=this.c);return (a<<0|b<<8|c<<16|d<<24)>>>0};I.prototype.readUint32=I.prototype.m;I.prototype.ga=function(){var a=this.m(),b=this.m();return D(a,b)};I.prototype.readUint64=I.prototype.ga;I.prototype.ha=function(){var a=this.m(),b=this.m();return F(a,b)};I.prototype.readUint64String=I.prototype.ha; + I.prototype.Xb=function(){var a=this.b[this.a];this.a+=1;n(this.a<=this.c);return a<<24>>24};I.prototype.readInt8=I.prototype.Xb;I.prototype.Vb=function(){var a=this.b[this.a],b=this.b[this.a+1];this.a+=2;n(this.a<=this.c);return (a<<0|b<<8)<<16>>16};I.prototype.readInt16=I.prototype.Vb;I.prototype.P=function(){var a=this.b[this.a],b=this.b[this.a+1],c=this.b[this.a+2],d=this.b[this.a+3];this.a+=4;n(this.a<=this.c);return a<<0|b<<8|c<<16|d<<24};I.prototype.readInt32=I.prototype.P; + I.prototype.ba=function(){var a=this.m(),b=this.m();return E(a,b)};I.prototype.readInt64=I.prototype.ba;I.prototype.ca=function(){var a=this.m(),b=this.m();return G(a,b)};I.prototype.readInt64String=I.prototype.ca;I.prototype.aa=function(){var a=this.m();return Na(a)};I.prototype.readFloat=I.prototype.aa;I.prototype.Z=function(){var a=this.m(),b=this.m();return Oa(a,b)};I.prototype.readDouble=I.prototype.Z;I.prototype.pa=function(){return !!this.b[this.a++]};I.prototype.readBool=I.prototype.pa; + I.prototype.ra=function(){return this.da()};I.prototype.readEnum=I.prototype.ra; + I.prototype.fa=function(a){var b=this.b,c=this.a;a=c+a;for(var d=[],f="";ch)d.push(h);else if(192>h)continue;else if(224>h){var m=b[c++];d.push((h&31)<<6|m&63);}else if(240>h){m=b[c++];var t=b[c++];d.push((h&15)<<12|(m&63)<<6|t&63);}else if(248>h){m=b[c++];t=b[c++];var B=b[c++];h=(h&7)<<18|(m&63)<<12|(t&63)<<6|B&63;h-=65536;d.push((h>>10&1023)+55296,(h&1023)+56320);}8192<=d.length&&(f+=String.fromCharCode.apply(null,d),d.length=0);}f+=xa(d);this.a=c;return f}; + I.prototype.readString=I.prototype.fa;I.prototype.Dc=function(){var a=this.o();return this.fa(a)};I.prototype.readStringWithLength=I.prototype.Dc;I.prototype.qa=function(a){if(0>a||this.a+a>this.b.length)return this.v=true,p("Invalid byte length!"),new Uint8Array(0);var b=this.b.subarray(this.a,this.a+a);this.a+=a;n(this.a<=this.c);return b};I.prototype.readBytes=I.prototype.qa;I.prototype.ia=function(){return this.w(Pa)};I.prototype.readVarintHash64=I.prototype.ia; + I.prototype.$=function(){var a=this.b,b=this.a,c=a[b],d=a[b+1],f=a[b+2],h=a[b+3],m=a[b+4],t=a[b+5],B=a[b+6];a=a[b+7];this.a+=8;return String.fromCharCode(c,d,f,h,m,t,B,a)};I.prototype.readFixedHash64=I.prototype.$;function J(a,b,c){this.a=Wa(a,b,c);this.O=this.a.B();this.b=this.c=-1;this.h=false;this.v=null;}g("jspb.BinaryReader",J,void 0);var K=[];J.clearInstanceCache=function(){K=[];};J.getInstanceCacheLength=function(){return K.length};function Xa(a,b,c){if(K.length){var d=K.pop();a&&d.a.H(a,b,c);return d}return new J(a,b,c)}J.alloc=Xa;J.prototype.zb=Xa;J.prototype.alloc=J.prototype.zb;J.prototype.Ca=function(){this.a.clear();this.b=this.c=-1;this.h=false;this.v=null;100>K.length&&K.push(this);}; + J.prototype.free=J.prototype.Ca;J.prototype.Fb=function(){return this.O};J.prototype.getFieldCursor=J.prototype.Fb;J.prototype.B=function(){return this.a.B()};J.prototype.getCursor=J.prototype.B;J.prototype.Y=function(){return this.a.Y()};J.prototype.getBuffer=J.prototype.Y;J.prototype.Hb=function(){return this.c};J.prototype.getFieldNumber=J.prototype.Hb;J.prototype.Lb=function(){return this.b};J.prototype.getWireType=J.prototype.Lb;J.prototype.Mb=function(){return 2==this.b}; + J.prototype.isDelimited=J.prototype.Mb;J.prototype.bb=function(){return 4==this.b};J.prototype.isEndGroup=J.prototype.bb;J.prototype.getError=function(){return this.h||this.a.getError()};J.prototype.getError=J.prototype.getError;J.prototype.H=function(a,b,c){this.a.H(a,b,c);this.b=this.c=-1;};J.prototype.setBlock=J.prototype.H;J.prototype.reset=function(){this.a.reset();this.b=this.c=-1;};J.prototype.reset=J.prototype.reset;J.prototype.advance=function(a){this.a.advance(a);};J.prototype.advance=J.prototype.advance; + J.prototype.oa=function(){if(this.a.ya())return false;if(this.getError())return p("Decoder hit an error"),false;this.O=this.a.B();var a=this.a.o(),b=a>>>3;a&=7;if(0!=a&&5!=a&&1!=a&&2!=a&&3!=a&&4!=a)return p("Invalid wire type: %s (at position %s)",a,this.O),this.h=true,false;this.c=b;this.b=a;return true};J.prototype.nextField=J.prototype.oa;J.prototype.Oa=function(){this.a.mb(this.c<<3|this.b);};J.prototype.unskipHeader=J.prototype.Oa; + J.prototype.Lc=function(){var a=this.c;for(this.Oa();this.oa()&&this.c==a;)this.C();this.a.ya()||this.Oa();};J.prototype.skipMatchingFields=J.prototype.Lc;J.prototype.lb=function(){0!=this.b?(p("Invalid wire type for skipVarintField"),this.C()):this.a.kb();};J.prototype.skipVarintField=J.prototype.lb;J.prototype.gb=function(){if(2!=this.b)p("Invalid wire type for skipDelimitedField"),this.C();else {var a=this.a.o();this.a.advance(a);}};J.prototype.skipDelimitedField=J.prototype.gb; + J.prototype.hb=function(){5!=this.b?(p("Invalid wire type for skipFixed32Field"),this.C()):this.a.advance(4);};J.prototype.skipFixed32Field=J.prototype.hb;J.prototype.ib=function(){1!=this.b?(p("Invalid wire type for skipFixed64Field"),this.C()):this.a.advance(8);};J.prototype.skipFixed64Field=J.prototype.ib;J.prototype.jb=function(){var a=this.c;do{if(!this.oa()){p("Unmatched start-group tag: stream EOF");this.h=true;break}if(4==this.b){this.c!=a&&(p("Unmatched end-group tag"),this.h=true);break}this.C();}while(1)}; + J.prototype.skipGroup=J.prototype.jb;J.prototype.C=function(){switch(this.b){case 0:this.lb();break;case 1:this.ib();break;case 2:this.gb();break;case 5:this.hb();break;case 3:this.jb();break;default:p("Invalid wire encoding for field.");}};J.prototype.skipField=J.prototype.C;J.prototype.Hc=function(a,b){null===this.v&&(this.v={});n(!this.v[a]);this.v[a]=b;};J.prototype.registerReadCallback=J.prototype.Hc;J.prototype.Ic=function(a){n(null!==this.v);a=this.v[a];n(a);return a(this)}; + J.prototype.runReadCallback=J.prototype.Ic;J.prototype.Yb=function(a,b){n(2==this.b);var c=this.a.c,d=this.a.o();d=this.a.B()+d;this.a.setEnd(d);b(a,this);this.a.Ma(d);this.a.setEnd(c);};J.prototype.readMessage=J.prototype.Yb;J.prototype.Ub=function(a,b,c){n(3==this.b);n(this.c==a);c(b,this);this.h||4==this.b||(p("Group submessage did not end with an END_GROUP tag"),this.h=true);};J.prototype.readGroup=J.prototype.Ub; + J.prototype.Gb=function(){n(2==this.b);var a=this.a.o(),b=this.a.B(),c=b+a;a=Wa(this.a.Y(),b,a);this.a.Ma(c);return a};J.prototype.getFieldDecoder=J.prototype.Gb;J.prototype.P=function(){n(0==this.b);return this.a.da()};J.prototype.readInt32=J.prototype.P;J.prototype.Wb=function(){n(0==this.b);return this.a.Ea()};J.prototype.readInt32String=J.prototype.Wb;J.prototype.ba=function(){n(0==this.b);return this.a.sa()};J.prototype.readInt64=J.prototype.ba;J.prototype.ca=function(){n(0==this.b);return this.a.Fa()}; + J.prototype.readInt64String=J.prototype.ca;J.prototype.m=function(){n(0==this.b);return this.a.o()};J.prototype.readUint32=J.prototype.m;J.prototype.Fc=function(){n(0==this.b);return this.a.O()};J.prototype.readUint32String=J.prototype.Fc;J.prototype.ga=function(){n(0==this.b);return this.a.Ga()};J.prototype.readUint64=J.prototype.ga;J.prototype.ha=function(){n(0==this.b);return this.a.Ha()};J.prototype.readUint64String=J.prototype.ha;J.prototype.zc=function(){n(0==this.b);return this.a.Ia()}; + J.prototype.readSint32=J.prototype.zc;J.prototype.Ac=function(){n(0==this.b);return this.a.Ja()};J.prototype.readSint64=J.prototype.Ac;J.prototype.Bc=function(){n(0==this.b);return this.a.Ka()};J.prototype.readSint64String=J.prototype.Bc;J.prototype.Rb=function(){n(5==this.b);return this.a.m()};J.prototype.readFixed32=J.prototype.Rb;J.prototype.Sb=function(){n(1==this.b);return this.a.ga()};J.prototype.readFixed64=J.prototype.Sb;J.prototype.Tb=function(){n(1==this.b);return this.a.ha()}; + J.prototype.readFixed64String=J.prototype.Tb;J.prototype.vc=function(){n(5==this.b);return this.a.P()};J.prototype.readSfixed32=J.prototype.vc;J.prototype.wc=function(){n(5==this.b);return this.a.P().toString()};J.prototype.readSfixed32String=J.prototype.wc;J.prototype.xc=function(){n(1==this.b);return this.a.ba()};J.prototype.readSfixed64=J.prototype.xc;J.prototype.yc=function(){n(1==this.b);return this.a.ca()};J.prototype.readSfixed64String=J.prototype.yc; + J.prototype.aa=function(){n(5==this.b);return this.a.aa()};J.prototype.readFloat=J.prototype.aa;J.prototype.Z=function(){n(1==this.b);return this.a.Z()};J.prototype.readDouble=J.prototype.Z;J.prototype.pa=function(){n(0==this.b);return !!this.a.o()};J.prototype.readBool=J.prototype.pa;J.prototype.ra=function(){n(0==this.b);return this.a.sa()};J.prototype.readEnum=J.prototype.ra;J.prototype.fa=function(){n(2==this.b);var a=this.a.o();return this.a.fa(a)};J.prototype.readString=J.prototype.fa; + J.prototype.qa=function(){n(2==this.b);var a=this.a.o();return this.a.qa(a)};J.prototype.readBytes=J.prototype.qa;J.prototype.ia=function(){n(0==this.b);return this.a.ia()};J.prototype.readVarintHash64=J.prototype.ia;J.prototype.Cc=function(){n(0==this.b);return this.a.fb()};J.prototype.readSintHash64=J.prototype.Cc;J.prototype.w=function(a){n(0==this.b);return this.a.w(a)};J.prototype.readSplitVarint64=J.prototype.w; + J.prototype.ea=function(a){n(0==this.b);return this.a.w(function(b,c){return Ma(b,c,a)})};J.prototype.readSplitZigzagVarint64=J.prototype.ea;J.prototype.$=function(){n(1==this.b);return this.a.$()};J.prototype.readFixedHash64=J.prototype.$;J.prototype.ta=function(a){n(1==this.b);return this.a.ta(a)};J.prototype.readSplitFixed64=J.prototype.ta;function L(a,b){n(2==a.b);var c=a.a.o();c=a.a.B()+c;for(var d=[];a.a.B()b.length?c.length:b.length;a.b&&(d[0]=a.b,f=1);for(;fa);for(n(0<=b&&4294967296>b);0>>7|b<<25)>>>0,b>>>=7;this.a.push(a);};S.prototype.writeSplitVarint64=S.prototype.l; + S.prototype.A=function(a,b){n(a==Math.floor(a));n(b==Math.floor(b));n(0<=a&&4294967296>a);n(0<=b&&4294967296>b);this.s(a);this.s(b);};S.prototype.writeSplitFixed64=S.prototype.A;S.prototype.j=function(a){n(a==Math.floor(a));for(n(0<=a&&4294967296>a);127>>=7;this.a.push(a);};S.prototype.writeUnsignedVarint32=S.prototype.j;S.prototype.M=function(a){n(a==Math.floor(a));n(-2147483648<=a&&2147483648>a);if(0<=a)this.j(a);else {for(var b=0;9>b;b++)this.a.push(a&127|128),a>>=7;this.a.push(1);}}; + S.prototype.writeSignedVarint32=S.prototype.M;S.prototype.va=function(a){n(a==Math.floor(a));n(0<=a&&1.8446744073709552E19>a);A(a);this.l(y,z);};S.prototype.writeUnsignedVarint64=S.prototype.va;S.prototype.ua=function(a){n(a==Math.floor(a));n(-9223372036854776e3<=a&&0x7fffffffffffffff>a);A(a);this.l(y,z);};S.prototype.writeSignedVarint64=S.prototype.ua;S.prototype.wa=function(a){n(a==Math.floor(a));n(-2147483648<=a&&2147483648>a);this.j((a<<1^a>>31)>>>0);};S.prototype.writeZigzagVarint32=S.prototype.wa; + S.prototype.xa=function(a){n(a==Math.floor(a));n(-9223372036854776e3<=a&&0x7fffffffffffffff>a);Ga(a);this.l(y,z);};S.prototype.writeZigzagVarint64=S.prototype.xa;S.prototype.Ta=function(a){this.W(H(a));};S.prototype.writeZigzagVarint64String=S.prototype.Ta;S.prototype.W=function(a){var b=this;C(a);Ja(y,z,function(c,d){b.l(c>>>0,d>>>0);});};S.prototype.writeZigzagVarintHash64=S.prototype.W;S.prototype.be=function(a){n(a==Math.floor(a));n(0<=a&&256>a);this.a.push(a>>>0&255);};S.prototype.writeUint8=S.prototype.be; + S.prototype.ae=function(a){n(a==Math.floor(a));n(0<=a&&65536>a);this.a.push(a>>>0&255);this.a.push(a>>>8&255);};S.prototype.writeUint16=S.prototype.ae;S.prototype.s=function(a){n(a==Math.floor(a));n(0<=a&&4294967296>a);this.a.push(a>>>0&255);this.a.push(a>>>8&255);this.a.push(a>>>16&255);this.a.push(a>>>24&255);};S.prototype.writeUint32=S.prototype.s;S.prototype.V=function(a){n(a==Math.floor(a));n(0<=a&&1.8446744073709552E19>a);Fa(a);this.s(y);this.s(z);};S.prototype.writeUint64=S.prototype.V; + S.prototype.Qc=function(a){n(a==Math.floor(a));n(-128<=a&&128>a);this.a.push(a>>>0&255);};S.prototype.writeInt8=S.prototype.Qc;S.prototype.Pc=function(a){n(a==Math.floor(a));n(-32768<=a&&32768>a);this.a.push(a>>>0&255);this.a.push(a>>>8&255);};S.prototype.writeInt16=S.prototype.Pc;S.prototype.S=function(a){n(a==Math.floor(a));n(-2147483648<=a&&2147483648>a);this.a.push(a>>>0&255);this.a.push(a>>>8&255);this.a.push(a>>>16&255);this.a.push(a>>>24&255);};S.prototype.writeInt32=S.prototype.S; + S.prototype.T=function(a){n(a==Math.floor(a));n(-9223372036854776e3<=a&&0x7fffffffffffffff>a);A(a);this.A(y,z);};S.prototype.writeInt64=S.prototype.T;S.prototype.ka=function(a){n(a==Math.floor(a));n(-9223372036854776e3<=+a&&0x7fffffffffffffff>+a);C(H(a));this.A(y,z);};S.prototype.writeInt64String=S.prototype.ka;S.prototype.L=function(a){n(Infinity===a||-Infinity===a||isNaN(a)||-34028234663852886e22<=a&&3.4028234663852886E38>=a);Ha(a);this.s(y);};S.prototype.writeFloat=S.prototype.L; + S.prototype.J=function(a){n(Infinity===a||-Infinity===a||isNaN(a)||-17976931348623157e292<=a&&1.7976931348623157E308>=a);Ia(a);this.s(y);this.s(z);};S.prototype.writeDouble=S.prototype.J;S.prototype.I=function(a){n("boolean"===typeof a||"number"===typeof a);this.a.push(a?1:0);};S.prototype.writeBool=S.prototype.I;S.prototype.R=function(a){n(a==Math.floor(a));n(-2147483648<=a&&2147483648>a);this.M(a);};S.prototype.writeEnum=S.prototype.R;S.prototype.ja=function(a){this.a.push.apply(this.a,a);}; + S.prototype.writeBytes=S.prototype.ja;S.prototype.N=function(a){C(a);this.l(y,z);};S.prototype.writeVarintHash64=S.prototype.N;S.prototype.K=function(a){C(a);this.s(y);this.s(z);};S.prototype.writeFixedHash64=S.prototype.K; + S.prototype.U=function(a){var b=this.a.length;ta(a);for(var c=0;cd)this.a.push(d);else if(2048>d)this.a.push(d>>6|192),this.a.push(d&63|128);else if(65536>d)if(55296<=d&&56319>=d&&c+1=f&&(d=1024*(d-55296)+f-56320+65536,this.a.push(d>>18|240),this.a.push(d>>12&63|128),this.a.push(d>>6&63|128),this.a.push(d&63|128),c++);}else this.a.push(d>>12|224),this.a.push(d>>6&63|128),this.a.push(d&63|128);}return this.a.length- + b};S.prototype.writeString=S.prototype.U;function T(a,b){this.lo=a;this.hi=b;}g("jspb.arith.UInt64",T,void 0);T.prototype.cmp=function(a){return this.hi>>1|(this.hi&1)<<31)>>>0,this.hi>>>1>>>0)};T.prototype.rightShift=T.prototype.La;T.prototype.Da=function(){return new T(this.lo<<1>>>0,(this.hi<<1|this.lo>>>31)>>>0)};T.prototype.leftShift=T.prototype.Da; + T.prototype.cb=function(){return !!(this.hi&2147483648)};T.prototype.msb=T.prototype.cb;T.prototype.Ob=function(){return !!(this.lo&1)};T.prototype.lsb=T.prototype.Ob;T.prototype.Ua=function(){return 0==this.lo&&0==this.hi};T.prototype.zero=T.prototype.Ua;T.prototype.add=function(a){return new T((this.lo+a.lo&4294967295)>>>0>>>0,((this.hi+a.hi&4294967295)>>>0)+(4294967296<=this.lo+a.lo?1:0)>>>0)};T.prototype.add=T.prototype.add; + T.prototype.sub=function(a){return new T((this.lo-a.lo&4294967295)>>>0>>>0,((this.hi-a.hi&4294967295)>>>0)-(0>this.lo-a.lo?1:0)>>>0)};T.prototype.sub=T.prototype.sub;function rb(a,b){var c=a&65535;a>>>=16;var d=b&65535,f=b>>>16;b=c*d+65536*(c*f&65535)+65536*(a*d&65535);for(c=a*f+(c*f>>>16)+(a*d>>>16);4294967296<=b;)b-=4294967296,c+=1;return new T(b>>>0,c>>>0)}T.mul32x32=rb;T.prototype.eb=function(a){var b=rb(this.lo,a);a=rb(this.hi,a);a.hi=a.lo;a.lo=0;return b.add(a)};T.prototype.mul=T.prototype.eb; + T.prototype.Xa=function(a){if(0==a)return [];var b=new T(0,0),c=new T(this.lo,this.hi);a=new T(a,0);for(var d=new T(1,0);!a.cb();)a=a.Da(),d=d.Da();for(;!d.Ua();)0>=a.cmp(c)&&(b=b.add(d),c=c.sub(a)),a=a.La(),d=d.La();return [b,c]};T.prototype.div=T.prototype.Xa;T.prototype.toString=function(){for(var a="",b=this;!b.Ua();){b=b.Xa(10);var c=b[0];a=b[1].lo+a;b=c;}""==a&&(a="0");return a};T.prototype.toString=T.prototype.toString; + function U(a){for(var b=new T(0,0),c=new T(0,0),d=0;da[d]||"9">>0>>>0,((this.hi+a.hi&4294967295)>>>0)+(4294967296<=this.lo+a.lo?1:0)>>>0)};V.prototype.add=V.prototype.add; + V.prototype.sub=function(a){return new V((this.lo-a.lo&4294967295)>>>0>>>0,((this.hi-a.hi&4294967295)>>>0)-(0>this.lo-a.lo?1:0)>>>0)};V.prototype.sub=V.prototype.sub;V.prototype.clone=function(){return new V(this.lo,this.hi)};V.prototype.clone=V.prototype.clone;V.prototype.toString=function(){var a=0!=(this.hi&2147483648),b=new T(this.lo,this.hi);a&&(b=(new T(0,0)).sub(b));return (a?"-":"")+b.toString()};V.prototype.toString=V.prototype.toString; + function sb(a){var b=0>>=7,a.b++;b.push(c);a.b++;}W.prototype.pb=function(a,b,c){tb(this,a.subarray(b,c));};W.prototype.writeSerializedMessage=W.prototype.pb; + W.prototype.Pb=function(a,b,c){null!=a&&null!=b&&null!=c&&this.pb(a,b,c);};W.prototype.maybeWriteSerializedMessage=W.prototype.Pb;W.prototype.reset=function(){this.c=[];this.a.end();this.b=0;this.h=[];};W.prototype.reset=W.prototype.reset;W.prototype.ab=function(){n(0==this.h.length);for(var a=new Uint8Array(this.b+this.a.length()),b=this.c,c=b.length,d=0,f=0;fb),vb(this,a,b));};W.prototype.writeInt32=W.prototype.S; + W.prototype.ob=function(a,b){null!=b&&(b=parseInt(b,10),n(-2147483648<=b&&2147483648>b),vb(this,a,b));};W.prototype.writeInt32String=W.prototype.ob;W.prototype.T=function(a,b){null!=b&&(n(-9223372036854776e3<=b&&0x7fffffffffffffff>b),null!=b&&(Y(this,a,0),this.a.ua(b)));};W.prototype.writeInt64=W.prototype.T;W.prototype.ka=function(a,b){null!=b&&(b=sb(b),Y(this,a,0),this.a.l(b.lo,b.hi));};W.prototype.writeInt64String=W.prototype.ka; + W.prototype.s=function(a,b){null!=b&&(n(0<=b&&4294967296>b),ub(this,a,b));};W.prototype.writeUint32=W.prototype.s;W.prototype.ub=function(a,b){null!=b&&(b=parseInt(b,10),n(0<=b&&4294967296>b),ub(this,a,b));};W.prototype.writeUint32String=W.prototype.ub;W.prototype.V=function(a,b){null!=b&&(n(0<=b&&1.8446744073709552E19>b),null!=b&&(Y(this,a,0),this.a.va(b)));};W.prototype.writeUint64=W.prototype.V;W.prototype.vb=function(a,b){null!=b&&(b=U(b),Y(this,a,0),this.a.l(b.lo,b.hi));}; + W.prototype.writeUint64String=W.prototype.vb;W.prototype.rb=function(a,b){null!=b&&(n(-2147483648<=b&&2147483648>b),null!=b&&(Y(this,a,0),this.a.wa(b)));};W.prototype.writeSint32=W.prototype.rb;W.prototype.sb=function(a,b){null!=b&&(n(-9223372036854776e3<=b&&0x7fffffffffffffff>b),null!=b&&(Y(this,a,0),this.a.xa(b)));};W.prototype.writeSint64=W.prototype.sb;W.prototype.$d=function(a,b){null!=b&&null!=b&&(Y(this,a,0),this.a.W(b));};W.prototype.writeSintHash64=W.prototype.$d; + W.prototype.Zd=function(a,b){null!=b&&null!=b&&(Y(this,a,0),this.a.Ta(b));};W.prototype.writeSint64String=W.prototype.Zd;W.prototype.Pa=function(a,b){null!=b&&(n(0<=b&&4294967296>b),Y(this,a,5),this.a.s(b));};W.prototype.writeFixed32=W.prototype.Pa;W.prototype.Qa=function(a,b){null!=b&&(n(0<=b&&1.8446744073709552E19>b),Y(this,a,1),this.a.V(b));};W.prototype.writeFixed64=W.prototype.Qa;W.prototype.nb=function(a,b){null!=b&&(b=U(b),Y(this,a,1),this.a.A(b.lo,b.hi));};W.prototype.writeFixed64String=W.prototype.nb; + W.prototype.Ra=function(a,b){null!=b&&(n(-2147483648<=b&&2147483648>b),Y(this,a,5),this.a.S(b));};W.prototype.writeSfixed32=W.prototype.Ra;W.prototype.Sa=function(a,b){null!=b&&(n(-9223372036854776e3<=b&&0x7fffffffffffffff>b),Y(this,a,1),this.a.T(b));};W.prototype.writeSfixed64=W.prototype.Sa;W.prototype.qb=function(a,b){null!=b&&(b=sb(b),Y(this,a,1),this.a.A(b.lo,b.hi));};W.prototype.writeSfixed64String=W.prototype.qb;W.prototype.L=function(a,b){null!=b&&(Y(this,a,5),this.a.L(b));}; + W.prototype.writeFloat=W.prototype.L;W.prototype.J=function(a,b){null!=b&&(Y(this,a,1),this.a.J(b));};W.prototype.writeDouble=W.prototype.J;W.prototype.I=function(a,b){null!=b&&(n("boolean"===typeof b||"number"===typeof b),Y(this,a,0),this.a.I(b));};W.prototype.writeBool=W.prototype.I;W.prototype.R=function(a,b){null!=b&&(n(-2147483648<=b&&2147483648>b),Y(this,a,0),this.a.M(b));};W.prototype.writeEnum=W.prototype.R;W.prototype.U=function(a,b){null!=b&&(a=X(this,a),this.a.U(b),Z(this,a));}; + W.prototype.writeString=W.prototype.U;W.prototype.ja=function(a,b){null!=b&&(b=Ua(b),Y(this,a,2),this.a.j(b.length),tb(this,b));};W.prototype.writeBytes=W.prototype.ja;W.prototype.Rc=function(a,b,c){null!=b&&(a=X(this,a),c(b,this),Z(this,a));};W.prototype.writeMessage=W.prototype.Rc;W.prototype.Sc=function(a,b,c){null!=b&&(Y(this,1,3),Y(this,2,0),this.a.M(a),a=X(this,3),c(b,this),Z(this,a),Y(this,1,4));};W.prototype.writeMessageSet=W.prototype.Sc; + W.prototype.Oc=function(a,b,c){null!=b&&(Y(this,a,3),c(b,this),Y(this,a,4));};W.prototype.writeGroup=W.prototype.Oc;W.prototype.K=function(a,b){null!=b&&(n(8==b.length),Y(this,a,1),this.a.K(b));};W.prototype.writeFixedHash64=W.prototype.K;W.prototype.N=function(a,b){null!=b&&(n(8==b.length),Y(this,a,0),this.a.N(b));};W.prototype.writeVarintHash64=W.prototype.N;W.prototype.A=function(a,b,c){Y(this,a,1);this.a.A(b,c);};W.prototype.writeSplitFixed64=W.prototype.A; + W.prototype.l=function(a,b,c){Y(this,a,0);this.a.l(b,c);};W.prototype.writeSplitVarint64=W.prototype.l;W.prototype.tb=function(a,b,c){Y(this,a,0);var d=this.a;Ja(b,c,function(f,h){d.l(f>>>0,h>>>0);});};W.prototype.writeSplitZigzagVarint64=W.prototype.tb;W.prototype.Ed=function(a,b){if(null!=b)for(var c=0;c>>0,t>>>0);});Z(this,a);}}; + W.prototype.writePackedSplitZigzagVarint64=W.prototype.od;W.prototype.dd=function(a,b){if(null!=b&&b.length){a=X(this,a);for(var c=0;c 0 && console.error(error); + })["finally"](function () { + abortionMap["delete"](request.request_id); + outputStream.end(); + response.was_cancelled = abortController.signal.aborted; + response.output = Buffer.concat(outputChunks).toString('utf-8'); + var responseBytes = response.serialize(); + var responseSizeBytes = writeWorkResponseSize(responseBytes.byteLength); + process.stdout.write(Buffer.concat([responseSizeBytes, responseBytes])); + }); + } + finally { + _e = true; + } + }; + _e = true, _f = __asyncValues(process.stdin); + _h.label = 2; + case 2: return [4 /*yield*/, _f.next()]; + case 3: + if (!(_g = _h.sent(), _a = _g.done, !_a)) return [3 /*break*/, 5]; + _loop_1(); + _h.label = 4; + case 4: return [3 /*break*/, 2]; + case 5: return [3 /*break*/, 12]; + case 6: + e_1_1 = _h.sent(); + e_1 = { error: e_1_1 }; + return [3 /*break*/, 12]; + case 7: + _h.trys.push([7, , 10, 11]); + if (!(!_e && !_a && (_b = _f["return"]))) return [3 /*break*/, 9]; + return [4 /*yield*/, _b.call(_f)]; + case 8: + _h.sent(); + _h.label = 9; + case 9: return [3 /*break*/, 11]; + case 10: + if (e_1) throw e_1.error; + return [7 /*endfinally*/]; + case 11: return [7 /*endfinally*/]; + case 12: return [2 /*return*/]; + } + }); + }); +} +function isPersistentWorker(args) { + return args.indexOf('--persistent_worker') !== -1; +} + +exports.enterWorkerLoop = enterWorkerLoop; +exports.isPersistentWorker = isPersistentWorker; diff --git a/npm/private/lifecycle/package.json b/npm/private/lifecycle/package.json index c34357c2a..95084fa3a 100644 --- a/npm/private/lifecycle/package.json +++ b/npm/private/lifecycle/package.json @@ -6,9 +6,9 @@ "@pnpm/logger": "5.0.0" }, "devDependencies": { - "@rollup/plugin-commonjs": "^24.1.0-0", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.0.1", - "@rollup/plugin-replace": "^5.0.2" + "@rollup/plugin-commonjs": "^28.0.3", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.1", + "@rollup/plugin-replace": "^6.0.2" } } diff --git a/npm/private/test/snapshots/bzlmod/npm_defs.bzl b/npm/private/test/snapshots/bzlmod/npm_defs.bzl index 1ffa6adad..83a10a85c 100644 --- a/npm/private/test/snapshots/bzlmod/npm_defs.bzl +++ b/npm/private/test/snapshots/bzlmod/npm_defs.bzl @@ -155,933 +155,946 @@ load("@@_main~npm~npm__at_isaacs_fs-minipass__4.0.1__links//:defs.bzl", store_15 load("@@_main~npm~npm__at_istanbuljs_schema__0.1.3__links//:defs.bzl", store_152 = "npm_imported_package_store") load("@@_main~npm~npm__at_jridgewell_gen-mapping__0.1.1__links//:defs.bzl", store_153 = "npm_imported_package_store") load("@@_main~npm~npm__at_jridgewell_gen-mapping__0.3.2__links//:defs.bzl", store_154 = "npm_imported_package_store") -load("@@_main~npm~npm__at_jridgewell_gen-mapping__0.3.5__links//:defs.bzl", store_155 = "npm_imported_package_store") -load("@@_main~npm~npm__at_jridgewell_resolve-uri__3.1.0__links//:defs.bzl", store_156 = "npm_imported_package_store") -load("@@_main~npm~npm__at_jridgewell_set-array__1.1.2__links//:defs.bzl", store_157 = "npm_imported_package_store") -load("@@_main~npm~npm__at_jridgewell_set-array__1.2.1__links//:defs.bzl", store_158 = "npm_imported_package_store") -load("@@_main~npm~npm__at_jridgewell_source-map__0.3.2__links//:defs.bzl", store_159 = "npm_imported_package_store") -load("@@_main~npm~npm__at_jridgewell_source-map__0.3.6__links//:defs.bzl", store_160 = "npm_imported_package_store") -load("@@_main~npm~npm__at_jridgewell_sourcemap-codec__1.4.14__links//:defs.bzl", store_161 = "npm_imported_package_store") -load("@@_main~npm~npm__at_jridgewell_trace-mapping__0.3.17__links//:defs.bzl", store_162 = "npm_imported_package_store") -load("@@_main~npm~npm__at_jridgewell_trace-mapping__0.3.25__links//:defs.bzl", store_163 = "npm_imported_package_store") -load("@@_main~npm~npm__at_jsep-plugin_assignment__1.2.1_jsep_1.3.9__links//:defs.bzl", store_164 = "npm_imported_package_store") -load("@@_main~npm~npm__at_jsep-plugin_regex__1.0.3_jsep_1.3.9__links//:defs.bzl", store_165 = "npm_imported_package_store") -load("@@_main~npm~npm__at_kubernetes_client-node__github.com_kubernetes-client_javascript_bd6ab5810d013103d244ddaebe0304649c012b38_bufferutil_4.0.8__links//:defs.bzl", link_166 = "npm_link_imported_package_store", store_166 = "npm_imported_package_store") -load("@@_main~npm~npm__at_lukeed_ms__2.0.2__links//:defs.bzl", store_167 = "npm_imported_package_store") -load("@@_main~npm~npm__at_mapbox_geojson-rewind__0.5.2__links//:defs.bzl", store_168 = "npm_imported_package_store") -load("@@_main~npm~npm__at_mapbox_geojson-types__1.0.2__links//:defs.bzl", store_169 = "npm_imported_package_store") -load("@@_main~npm~npm__at_mapbox_jsonlint-lines-primitives__2.0.2__links//:defs.bzl", store_170 = "npm_imported_package_store") -load("@@_main~npm~npm__at_mapbox_mapbox-gl-supported__1.5.0_mapbox-gl_1.10.1__links//:defs.bzl", store_171 = "npm_imported_package_store") -load("@@_main~npm~npm__at_mapbox_node-pre-gyp__1.0.10__links//:defs.bzl", store_172 = "npm_imported_package_store") -load("@@_main~npm~npm__at_mapbox_point-geometry__0.1.0__links//:defs.bzl", store_173 = "npm_imported_package_store") -load("@@_main~npm~npm__at_mapbox_tiny-sdf__1.2.5__links//:defs.bzl", store_174 = "npm_imported_package_store") -load("@@_main~npm~npm__at_mapbox_unitbezier__0.0.0__links//:defs.bzl", store_175 = "npm_imported_package_store") -load("@@_main~npm~npm__at_mapbox_vector-tile__1.3.1__links//:defs.bzl", store_176 = "npm_imported_package_store") -load("@@_main~npm~npm__at_mapbox_whoots-js__3.1.0__links//:defs.bzl", store_177 = "npm_imported_package_store") -load("@@_main~npm~npm__at_next_env__15.2.4__links//:defs.bzl", store_178 = "npm_imported_package_store") -load("@@_main~npm~npm__at_next_swc-darwin-arm64__15.2.4__links//:defs.bzl", store_179 = "npm_imported_package_store") -load("@@_main~npm~npm__at_next_swc-darwin-x64__15.2.4__links//:defs.bzl", store_180 = "npm_imported_package_store") -load("@@_main~npm~npm__at_next_swc-linux-arm64-gnu__15.2.4__links//:defs.bzl", store_181 = "npm_imported_package_store") -load("@@_main~npm~npm__at_next_swc-linux-arm64-musl__15.2.4__links//:defs.bzl", store_182 = "npm_imported_package_store") -load("@@_main~npm~npm__at_next_swc-linux-x64-gnu__15.2.4__links//:defs.bzl", store_183 = "npm_imported_package_store") -load("@@_main~npm~npm__at_next_swc-linux-x64-musl__15.2.4__links//:defs.bzl", store_184 = "npm_imported_package_store") -load("@@_main~npm~npm__at_next_swc-win32-arm64-msvc__15.2.4__links//:defs.bzl", store_185 = "npm_imported_package_store") -load("@@_main~npm~npm__at_next_swc-win32-x64-msvc__15.2.4__links//:defs.bzl", store_186 = "npm_imported_package_store") -load("@@_main~npm~npm__at_npmcli_fs__2.1.2__links//:defs.bzl", store_187 = "npm_imported_package_store") -load("@@_main~npm~npm__at_npmcli_move-file__2.0.1__links//:defs.bzl", store_188 = "npm_imported_package_store") -load("@@_main~npm~npm__at_pkgjs_parseargs__0.11.0__links//:defs.bzl", store_189 = "npm_imported_package_store") -load("@@_main~npm~npm__at_plotly_d3-sankey-circular__0.33.1__links//:defs.bzl", store_190 = "npm_imported_package_store") -load("@@_main~npm~npm__at_plotly_d3-sankey__0.7.2__links//:defs.bzl", store_191 = "npm_imported_package_store") -load("@@_main~npm~npm__at_plotly_d3__3.8.1__links//:defs.bzl", store_192 = "npm_imported_package_store") -load("@@_main~npm~npm__at_plotly_point-cluster__3.1.9__links//:defs.bzl", store_193 = "npm_imported_package_store") -load("@@_main~npm~npm__at_plotly_regl__2.1.2__links//:defs.bzl", link_194 = "npm_link_imported_package_store", store_194 = "npm_imported_package_store") -load("@@_main~npm~npm__at_polka_url__1.0.0-next.21__links//:defs.bzl", store_195 = "npm_imported_package_store") -load("@@_main~npm~npm__at_puppeteer_browsers__0.5.0_typescript_4.9.5__links//:defs.bzl", store_196 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_plugin-commonjs__21.1.0_rollup_2.70.2__links//:defs.bzl", link_197 = "npm_link_imported_package_store", store_197 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_plugin-commonjs__23.0.7_rollup_2.79.2__links//:defs.bzl", link_198 = "npm_link_imported_package_store", store_198 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_plugin-commonjs__23.0.7_rollup_3.29.5__links//:defs.bzl", link_199 = "npm_link_imported_package_store", store_199 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_plugin-json__5.0.2_rollup_2.79.2__links//:defs.bzl", link_200 = "npm_link_imported_package_store", store_200 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_plugin-json__5.0.2_rollup_3.29.5__links//:defs.bzl", link_201 = "npm_link_imported_package_store", store_201 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_plugin-node-resolve__15.3.0_rollup_2.79.2__links//:defs.bzl", link_202 = "npm_link_imported_package_store", store_202 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_plugin-node-resolve__15.3.0_rollup_3.29.5__links//:defs.bzl", link_203 = "npm_link_imported_package_store", store_203 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_plugin-terser__0.4.4_rollup_2.79.2__links//:defs.bzl", link_204 = "npm_link_imported_package_store", store_204 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_plugin-typescript__10.0.1_574194173__links//:defs.bzl", link_205 = "npm_link_imported_package_store", store_205 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_pluginutils__3.1.0_rollup_2.70.2__links//:defs.bzl", store_206 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_pluginutils__5.0.2_rollup_2.79.2__links//:defs.bzl", store_207 = "npm_imported_package_store") -load("@@_main~npm~npm__at_rollup_pluginutils__5.0.2_rollup_3.29.5__links//:defs.bzl", store_208 = "npm_imported_package_store") -load("@@_main~npm~npm__at_sindresorhus_is__2.1.1__links//:defs.bzl", store_209 = "npm_imported_package_store") -load("@@_main~npm~npm__at_swc_counter__0.1.3__links//:defs.bzl", store_210 = "npm_imported_package_store") -load("@@_main~npm~npm__at_swc_helpers__0.5.15__links//:defs.bzl", store_211 = "npm_imported_package_store") -load("@@_main~npm~npm__at_szmarczak_http-timer__4.0.6__links//:defs.bzl", store_212 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_node__4.1.0__links//:defs.bzl", store_213 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide-android-arm64__4.1.0__links//:defs.bzl", store_214 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide-darwin-arm64__4.1.0__links//:defs.bzl", store_215 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide-darwin-x64__4.1.0__links//:defs.bzl", store_216 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide-freebsd-x64__4.1.0__links//:defs.bzl", store_217 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide-linux-arm-gnueabihf__4.1.0__links//:defs.bzl", store_218 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide-linux-arm64-gnu__4.1.0__links//:defs.bzl", store_219 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide-linux-arm64-musl__4.1.0__links//:defs.bzl", store_220 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide-linux-x64-gnu__4.1.0__links//:defs.bzl", store_221 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide-linux-x64-musl__4.1.0__links//:defs.bzl", store_222 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide-win32-arm64-msvc__4.1.0__links//:defs.bzl", store_223 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide-win32-x64-msvc__4.1.0__links//:defs.bzl", store_224 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_oxide__4.1.0__links//:defs.bzl", store_225 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tailwindcss_postcss__4.1.0__links//:defs.bzl", link_226 = "npm_link_imported_package_store", store_226 = "npm_imported_package_store") -load("@@_main~npm~npm__at_tootallnate_once__2.0.0__links//:defs.bzl", store_227 = "npm_imported_package_store") -load("@@_main~npm~npm__at_turf_area__6.5.0__links//:defs.bzl", store_228 = "npm_imported_package_store") -load("@@_main~npm~npm__at_turf_bbox__6.5.0__links//:defs.bzl", store_229 = "npm_imported_package_store") -load("@@_main~npm~npm__at_turf_centroid__6.5.0__links//:defs.bzl", store_230 = "npm_imported_package_store") -load("@@_main~npm~npm__at_turf_helpers__6.5.0__links//:defs.bzl", store_231 = "npm_imported_package_store") -load("@@_main~npm~npm__at_turf_meta__6.5.0__links//:defs.bzl", store_232 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_cacheable-request__6.0.3__links//:defs.bzl", store_233 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_caseless__0.12.2__links//:defs.bzl", store_234 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_eslint-scope__3.7.4__links//:defs.bzl", store_235 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_eslint__8.21.1__links//:defs.bzl", store_236 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_estree__0.0.39__links//:defs.bzl", store_237 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_estree__0.0.51__links//:defs.bzl", store_238 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_estree__1.0.0__links//:defs.bzl", store_239 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_google-protobuf__3.15.12__links//:defs.bzl", link_240 = "npm_link_imported_package_store", store_240 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_http-cache-semantics__4.0.1__links//:defs.bzl", store_241 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_istanbul-lib-coverage__2.0.4__links//:defs.bzl", store_242 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_js-yaml__4.0.5__links//:defs.bzl", store_243 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_json-schema__7.0.11__links//:defs.bzl", store_244 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_keyv__3.1.4__links//:defs.bzl", store_245 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_node__16.18.112__links//:defs.bzl", link_246 = "npm_link_imported_package_store", store_246 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_node__18.13.0__links//:defs.bzl", link_247 = "npm_link_imported_package_store", store_247 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_node__18.19.54__links//:defs.bzl", link_248 = "npm_link_imported_package_store", store_248 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_node__22.7.4__links//:defs.bzl", store_249 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_request__2.48.8__links//:defs.bzl", store_250 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_resolve__1.20.2__links//:defs.bzl", store_251 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_responselike__1.0.0__links//:defs.bzl", store_252 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_tough-cookie__4.0.2__links//:defs.bzl", store_253 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_underscore__1.11.4__links//:defs.bzl", store_254 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_ws__8.5.5__links//:defs.bzl", store_255 = "npm_imported_package_store") -load("@@_main~npm~npm__at_types_yauzl__2.10.0__links//:defs.bzl", store_256 = "npm_imported_package_store") -load("@@_main~npm~npm__at_vanilla-extract_babel-plugin-debug-ids__1.0.1__links//:defs.bzl", store_257 = "npm_imported_package_store") -load("@@_main~npm~npm__at_vanilla-extract_css__1.9.2__links//:defs.bzl", link_258 = "npm_link_imported_package_store", store_258 = "npm_imported_package_store") -load("@@_main~npm~npm__at_vanilla-extract_css__1.9.5__links//:defs.bzl", store_259 = "npm_imported_package_store") -load("@@_main~npm~npm__at_vanilla-extract_integration__6.1.0__links//:defs.bzl", store_260 = "npm_imported_package_store") -load("@@_main~npm~npm__at_vanilla-extract_private__1.0.3__links//:defs.bzl", store_261 = "npm_imported_package_store") -load("@@_main~npm~npm__at_vanilla-extract_webpack-plugin__2.2.0_webpack_5.76.3__links//:defs.bzl", link_262 = "npm_link_imported_package_store", store_262 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_ast__1.11.1__links//:defs.bzl", store_263 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_floating-point-hex-parser__1.11.1__links//:defs.bzl", store_264 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_helper-api-error__1.11.1__links//:defs.bzl", store_265 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_helper-buffer__1.11.1__links//:defs.bzl", store_266 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_helper-numbers__1.11.1__links//:defs.bzl", store_267 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_helper-wasm-bytecode__1.11.1__links//:defs.bzl", store_268 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_helper-wasm-section__1.11.1__links//:defs.bzl", store_269 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_ieee754__1.11.1__links//:defs.bzl", store_270 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_leb128__1.11.1__links//:defs.bzl", store_271 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_utf8__1.11.1__links//:defs.bzl", store_272 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_wasm-edit__1.11.1__links//:defs.bzl", store_273 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_wasm-gen__1.11.1__links//:defs.bzl", store_274 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_wasm-opt__1.11.1__links//:defs.bzl", store_275 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_wasm-parser__1.11.1__links//:defs.bzl", store_276 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webassemblyjs_wast-printer__1.11.1__links//:defs.bzl", store_277 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webpack-cli_configtest__2.0.1_1256213976__links//:defs.bzl", store_278 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webpack-cli_info__2.0.1_1256213976__links//:defs.bzl", store_279 = "npm_imported_package_store") -load("@@_main~npm~npm__at_webpack-cli_serve__2.0.1_1256213976__links//:defs.bzl", store_280 = "npm_imported_package_store") -load("@@_main~npm~npm__at_xtuc_ieee754__1.2.0__links//:defs.bzl", store_281 = "npm_imported_package_store") -load("@@_main~npm~npm__at_xtuc_long__4.2.2__links//:defs.bzl", store_282 = "npm_imported_package_store") -load("@@_main~npm~npm__aws-sign2__0.7.0__links//:defs.bzl", store_283 = "npm_imported_package_store") -load("@@_main~npm~npm__aws4__1.12.0__links//:defs.bzl", store_284 = "npm_imported_package_store") -load("@@_main~npm~npm__balanced-match__1.0.2__links//:defs.bzl", store_285 = "npm_imported_package_store") -load("@@_main~npm~npm__base64-js__1.5.1__links//:defs.bzl", store_286 = "npm_imported_package_store") -load("@@_main~npm~npm__bcrypt-pbkdf__1.0.2__links//:defs.bzl", store_287 = "npm_imported_package_store") -load("@@_main~npm~npm__big.js__5.2.2__links//:defs.bzl", store_288 = "npm_imported_package_store") -load("@@_main~npm~npm__binary-extensions__2.2.0__links//:defs.bzl", store_289 = "npm_imported_package_store") -load("@@_main~npm~npm__binary-search-bounds__2.0.5__links//:defs.bzl", store_290 = "npm_imported_package_store") -load("@@_main~npm~npm__bindings__1.5.0__links//:defs.bzl", store_291 = "npm_imported_package_store") -load("@@_main~npm~npm__bit-twiddle__1.0.2__links//:defs.bzl", store_292 = "npm_imported_package_store") -load("@@_main~npm~npm__bitmap-sdf__1.0.4__links//:defs.bzl", store_293 = "npm_imported_package_store") -load("@@_main~npm~npm__bl__1.2.3__links//:defs.bzl", store_294 = "npm_imported_package_store") -load("@@_main~npm~npm__bl__2.2.1__links//:defs.bzl", store_295 = "npm_imported_package_store") -load("@@_main~npm~npm__bl__4.1.0__links//:defs.bzl", store_296 = "npm_imported_package_store") -load("@@_main~npm~npm__brace-expansion__1.1.11__links//:defs.bzl", store_297 = "npm_imported_package_store") -load("@@_main~npm~npm__brace-expansion__2.0.1__links//:defs.bzl", store_298 = "npm_imported_package_store") -load("@@_main~npm~npm__braces__3.0.2__links//:defs.bzl", store_299 = "npm_imported_package_store") -load("@@_main~npm~npm__browser-stdout__1.3.1__links//:defs.bzl", store_300 = "npm_imported_package_store") -load("@@_main~npm~npm__browserslist__4.21.5__links//:defs.bzl", store_301 = "npm_imported_package_store") -load("@@_main~npm~npm__buffer-alloc-unsafe__1.1.0__links//:defs.bzl", store_302 = "npm_imported_package_store") -load("@@_main~npm~npm__buffer-alloc__1.2.0__links//:defs.bzl", store_303 = "npm_imported_package_store") -load("@@_main~npm~npm__buffer-crc32__0.2.13__links//:defs.bzl", store_304 = "npm_imported_package_store") -load("@@_main~npm~npm__buffer-fill__1.0.0__links//:defs.bzl", store_305 = "npm_imported_package_store") -load("@@_main~npm~npm__buffer-from__1.1.2__links//:defs.bzl", store_306 = "npm_imported_package_store") -load("@@_main~npm~npm__buffer__5.7.1__links//:defs.bzl", store_307 = "npm_imported_package_store") -load("@@_main~npm~npm__bufferutil__4.0.8__links//:defs.bzl", link_308 = "npm_link_imported_package_store", store_308 = "npm_imported_package_store") -load("@@_main~npm~npm__busboy__1.6.0__links//:defs.bzl", store_309 = "npm_imported_package_store") -load("@@_main~npm~npm__byline__5.0.0__links//:defs.bzl", store_310 = "npm_imported_package_store") -load("@@_main~npm~npm__c8__7.13.0__links//:defs.bzl", link_311 = "npm_link_imported_package_store", store_311 = "npm_imported_package_store") -load("@@_main~npm~npm__cacache__16.1.3__links//:defs.bzl", store_312 = "npm_imported_package_store") -load("@@_main~npm~npm__cacheable-lookup__2.0.1__links//:defs.bzl", store_313 = "npm_imported_package_store") -load("@@_main~npm~npm__cacheable-request__7.0.2__links//:defs.bzl", store_314 = "npm_imported_package_store") -load("@@_main~npm~npm__callsites__3.1.0__links//:defs.bzl", store_315 = "npm_imported_package_store") -load("@@_main~npm~npm__camelcase__6.3.0__links//:defs.bzl", store_316 = "npm_imported_package_store") -load("@@_main~npm~npm__caniuse-lite__1.0.30001458__links//:defs.bzl", store_317 = "npm_imported_package_store") -load("@@_main~npm~npm__caniuse-lite__1.0.30001707__links//:defs.bzl", store_318 = "npm_imported_package_store") -load("@@_main~npm~npm__canvas-fit__1.5.0__links//:defs.bzl", store_319 = "npm_imported_package_store") -load("@@_main~npm~npm__caseless__0.12.0__links//:defs.bzl", store_320 = "npm_imported_package_store") -load("@@_main~npm~npm__chalk__2.4.2__links//:defs.bzl", store_321 = "npm_imported_package_store") -load("@@_main~npm~npm__chalk__4.1.2__links//:defs.bzl", store_322 = "npm_imported_package_store") -load("@@_main~npm~npm__chalk__5.0.1__links//:defs.bzl", link_323 = "npm_link_imported_package_store", store_323 = "npm_imported_package_store") -load("@@_main~npm~npm__chalk__5.1.1__links//:defs.bzl", link_324 = "npm_link_imported_package_store", store_324 = "npm_imported_package_store") -load("@@_main~npm~npm__charenc__0.0.2__links//:defs.bzl", store_325 = "npm_imported_package_store") -load("@@_main~npm~npm__chokidar__3.5.3__links//:defs.bzl", store_326 = "npm_imported_package_store") -load("@@_main~npm~npm__chownr__1.1.4__links//:defs.bzl", store_327 = "npm_imported_package_store") -load("@@_main~npm~npm__chownr__2.0.0__links//:defs.bzl", store_328 = "npm_imported_package_store") -load("@@_main~npm~npm__chownr__3.0.0__links//:defs.bzl", store_329 = "npm_imported_package_store") -load("@@_main~npm~npm__chrome-trace-event__1.0.3__links//:defs.bzl", store_330 = "npm_imported_package_store") -load("@@_main~npm~npm__chromium-bidi__0.4.7_devtools-protocol_0.0.1107588__links//:defs.bzl", store_331 = "npm_imported_package_store") -load("@@_main~npm~npm__clamp__1.0.1__links//:defs.bzl", store_332 = "npm_imported_package_store") -load("@@_main~npm~npm__clean-stack__2.2.0__links//:defs.bzl", store_333 = "npm_imported_package_store") -load("@@_main~npm~npm__client-only__0.0.1__links//:defs.bzl", store_334 = "npm_imported_package_store") -load("@@_main~npm~npm__cliui__7.0.4__links//:defs.bzl", store_335 = "npm_imported_package_store") -load("@@_main~npm~npm__cliui__8.0.1__links//:defs.bzl", store_336 = "npm_imported_package_store") -load("@@_main~npm~npm__clone-deep__4.0.1__links//:defs.bzl", store_337 = "npm_imported_package_store") -load("@@_main~npm~npm__clone-response__1.0.3__links//:defs.bzl", store_338 = "npm_imported_package_store") -load("@@_main~npm~npm__code-point-at__1.1.0__links//:defs.bzl", store_339 = "npm_imported_package_store") -load("@@_main~npm~npm__color-alpha__1.0.4__links//:defs.bzl", store_340 = "npm_imported_package_store") -load("@@_main~npm~npm__color-convert__1.9.3__links//:defs.bzl", store_341 = "npm_imported_package_store") -load("@@_main~npm~npm__color-convert__2.0.1__links//:defs.bzl", store_342 = "npm_imported_package_store") -load("@@_main~npm~npm__color-id__1.1.0__links//:defs.bzl", store_343 = "npm_imported_package_store") -load("@@_main~npm~npm__color-name__1.1.3__links//:defs.bzl", store_344 = "npm_imported_package_store") -load("@@_main~npm~npm__color-name__1.1.4__links//:defs.bzl", store_345 = "npm_imported_package_store") -load("@@_main~npm~npm__color-normalize__1.5.0__links//:defs.bzl", store_346 = "npm_imported_package_store") -load("@@_main~npm~npm__color-parse__1.3.8__links//:defs.bzl", store_347 = "npm_imported_package_store") -load("@@_main~npm~npm__color-rgba__2.1.1__links//:defs.bzl", store_348 = "npm_imported_package_store") -load("@@_main~npm~npm__color-space__1.16.0__links//:defs.bzl", store_349 = "npm_imported_package_store") -load("@@_main~npm~npm__color-string__1.9.1__links//:defs.bzl", store_350 = "npm_imported_package_store") -load("@@_main~npm~npm__color-support__1.1.3__links//:defs.bzl", store_351 = "npm_imported_package_store") -load("@@_main~npm~npm__color__4.2.3__links//:defs.bzl", store_352 = "npm_imported_package_store") -load("@@_main~npm~npm__colorette__2.0.19__links//:defs.bzl", store_353 = "npm_imported_package_store") -load("@@_main~npm~npm__combined-stream__1.0.8__links//:defs.bzl", store_354 = "npm_imported_package_store") -load("@@_main~npm~npm__commander__10.0.1__links//:defs.bzl", store_355 = "npm_imported_package_store") -load("@@_main~npm~npm__commander__2.20.3__links//:defs.bzl", store_356 = "npm_imported_package_store") -load("@@_main~npm~npm__commander__7.2.0__links//:defs.bzl", store_357 = "npm_imported_package_store") -load("@@_main~npm~npm__commander__9.5.0__links//:defs.bzl", store_358 = "npm_imported_package_store") -load("@@_main~npm~npm__commondir__1.0.1__links//:defs.bzl", store_359 = "npm_imported_package_store") -load("@@_main~npm~npm__complex.js__2.1.1__links//:defs.bzl", store_360 = "npm_imported_package_store") -load("@@_main~npm~npm__concat-map__0.0.1__links//:defs.bzl", store_361 = "npm_imported_package_store") -load("@@_main~npm~npm__concat-stream__1.6.2__links//:defs.bzl", store_362 = "npm_imported_package_store") -load("@@_main~npm~npm__console-control-strings__1.1.0__links//:defs.bzl", store_363 = "npm_imported_package_store") -load("@@_main~npm~npm__convert-source-map__1.9.0__links//:defs.bzl", store_364 = "npm_imported_package_store") -load("@@_main~npm~npm__core-util-is__1.0.2__links//:defs.bzl", store_365 = "npm_imported_package_store") -load("@@_main~npm~npm__core-util-is__1.0.3__links//:defs.bzl", store_366 = "npm_imported_package_store") -load("@@_main~npm~npm__cosmiconfig__8.1.3__links//:defs.bzl", store_367 = "npm_imported_package_store") -load("@@_main~npm~npm__country-regex__1.1.0__links//:defs.bzl", store_368 = "npm_imported_package_store") -load("@@_main~npm~npm__cross-fetch__3.1.5__links//:defs.bzl", store_369 = "npm_imported_package_store") -load("@@_main~npm~npm__cross-spawn__7.0.3__links//:defs.bzl", store_370 = "npm_imported_package_store") -load("@@_main~npm~npm__crypt__0.0.2__links//:defs.bzl", store_371 = "npm_imported_package_store") -load("@@_main~npm~npm__css-font-size-keywords__1.0.0__links//:defs.bzl", store_372 = "npm_imported_package_store") -load("@@_main~npm~npm__css-font-stretch-keywords__1.0.1__links//:defs.bzl", store_373 = "npm_imported_package_store") -load("@@_main~npm~npm__css-font-style-keywords__1.0.1__links//:defs.bzl", store_374 = "npm_imported_package_store") -load("@@_main~npm~npm__css-font-weight-keywords__1.0.0__links//:defs.bzl", store_375 = "npm_imported_package_store") -load("@@_main~npm~npm__css-font__1.2.0__links//:defs.bzl", store_376 = "npm_imported_package_store") -load("@@_main~npm~npm__css-global-keywords__1.0.1__links//:defs.bzl", store_377 = "npm_imported_package_store") -load("@@_main~npm~npm__css-loader__6.7.3_webpack_5.76.3__links//:defs.bzl", link_378 = "npm_link_imported_package_store", store_378 = "npm_imported_package_store") -load("@@_main~npm~npm__css-system-font-keywords__1.0.0__links//:defs.bzl", store_379 = "npm_imported_package_store") -load("@@_main~npm~npm__css-what__5.1.0__links//:defs.bzl", store_380 = "npm_imported_package_store") -load("@@_main~npm~npm__csscolorparser__1.0.3__links//:defs.bzl", store_381 = "npm_imported_package_store") -load("@@_main~npm~npm__cssesc__3.0.0__links//:defs.bzl", store_382 = "npm_imported_package_store") -load("@@_main~npm~npm__csstype__3.1.1__links//:defs.bzl", store_383 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-array__1.2.4__links//:defs.bzl", store_384 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-collection__1.0.7__links//:defs.bzl", store_385 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-color__1.4.1__links//:defs.bzl", store_386 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-dispatch__1.0.6__links//:defs.bzl", store_387 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-force__1.2.1__links//:defs.bzl", store_388 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-format__1.4.5__links//:defs.bzl", store_389 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-geo-projection__2.9.0__links//:defs.bzl", store_390 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-geo__1.12.1__links//:defs.bzl", store_391 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-hierarchy__1.1.9__links//:defs.bzl", store_392 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-interpolate__3.0.1__links//:defs.bzl", store_393 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-path__1.0.9__links//:defs.bzl", store_394 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-quadtree__1.0.7__links//:defs.bzl", store_395 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-shape__1.3.7__links//:defs.bzl", store_396 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-time-format__2.3.0__links//:defs.bzl", store_397 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-time__1.1.0__links//:defs.bzl", store_398 = "npm_imported_package_store") -load("@@_main~npm~npm__d3-timer__1.0.10__links//:defs.bzl", store_399 = "npm_imported_package_store") -load("@@_main~npm~npm__d__1.0.1__links//:defs.bzl", store_400 = "npm_imported_package_store") -load("@@_main~npm~npm__dashdash__1.14.1__links//:defs.bzl", store_401 = "npm_imported_package_store") -load("@@_main~npm~npm__date.js__0.3.3__links//:defs.bzl", store_402 = "npm_imported_package_store") -load("@@_main~npm~npm__debug__2.6.9__links//:defs.bzl", store_403 = "npm_imported_package_store") -load("@@_main~npm~npm__debug__3.1.0__links//:defs.bzl", store_404 = "npm_imported_package_store") -load("@@_main~npm~npm__debug__3.2.7__links//:defs.bzl", link_405 = "npm_link_imported_package_store", store_405 = "npm_imported_package_store") -load("@@_main~npm~npm__debug__4.3.4_supports-color_8.1.1__links//:defs.bzl", store_406 = "npm_imported_package_store") -load("@@_main~npm~npm__debug__github.com_ngokevin_debug_9742c5f383a6f8046241920156236ade8ec30d53__links//:defs.bzl", link_407 = "npm_link_imported_package_store", store_407 = "npm_imported_package_store") -load("@@_main~npm~npm__decamelize__4.0.0__links//:defs.bzl", store_408 = "npm_imported_package_store") -load("@@_main~npm~npm__decimal.js__10.4.3__links//:defs.bzl", store_409 = "npm_imported_package_store") -load("@@_main~npm~npm__decompress-response__5.0.0__links//:defs.bzl", store_410 = "npm_imported_package_store") -load("@@_main~npm~npm__deep-extend__0.6.0__links//:defs.bzl", store_411 = "npm_imported_package_store") -load("@@_main~npm~npm__deep-is__0.1.4__links//:defs.bzl", store_412 = "npm_imported_package_store") -load("@@_main~npm~npm__deep-object-diff__1.1.9__links//:defs.bzl", store_413 = "npm_imported_package_store") -load("@@_main~npm~npm__deepmerge__4.3.0__links//:defs.bzl", store_414 = "npm_imported_package_store") -load("@@_main~npm~npm__defer-to-connect__2.0.1__links//:defs.bzl", store_415 = "npm_imported_package_store") -load("@@_main~npm~npm__defined__1.0.1__links//:defs.bzl", store_416 = "npm_imported_package_store") -load("@@_main~npm~npm__delayed-stream__1.0.0__links//:defs.bzl", store_417 = "npm_imported_package_store") -load("@@_main~npm~npm__delegates__1.0.0__links//:defs.bzl", store_418 = "npm_imported_package_store") -load("@@_main~npm~npm__depd__1.1.2__links//:defs.bzl", store_419 = "npm_imported_package_store") -load("@@_main~npm~npm__depd__2.0.0__links//:defs.bzl", store_420 = "npm_imported_package_store") -load("@@_main~npm~npm__dequal__2.0.3__links//:defs.bzl", store_421 = "npm_imported_package_store") -load("@@_main~npm~npm__detect-kerning__2.1.2__links//:defs.bzl", store_422 = "npm_imported_package_store") -load("@@_main~npm~npm__detect-libc__1.0.3__links//:defs.bzl", store_423 = "npm_imported_package_store") -load("@@_main~npm~npm__detect-libc__2.0.3__links//:defs.bzl", store_424 = "npm_imported_package_store") -load("@@_main~npm~npm__devtools-protocol__0.0.1107588__links//:defs.bzl", store_425 = "npm_imported_package_store") -load("@@_main~npm~npm__diff__5.0.0__links//:defs.bzl", store_426 = "npm_imported_package_store") -load("@@_main~npm~npm__diff__5.1.0__links//:defs.bzl", store_427 = "npm_imported_package_store") -load("@@_main~npm~npm__draw-svg-path__1.0.0__links//:defs.bzl", store_428 = "npm_imported_package_store") -load("@@_main~npm~npm__dtype__2.0.0__links//:defs.bzl", store_429 = "npm_imported_package_store") -load("@@_main~npm~npm__dup__1.0.0__links//:defs.bzl", store_430 = "npm_imported_package_store") -load("@@_main~npm~npm__duplexer3__0.1.5__links//:defs.bzl", store_431 = "npm_imported_package_store") -load("@@_main~npm~npm__duplexer__0.1.2__links//:defs.bzl", store_432 = "npm_imported_package_store") -load("@@_main~npm~npm__duplexify__3.7.1__links//:defs.bzl", store_433 = "npm_imported_package_store") -load("@@_main~npm~npm__earcut__2.2.4__links//:defs.bzl", store_434 = "npm_imported_package_store") -load("@@_main~npm~npm__eastasianwidth__0.2.0__links//:defs.bzl", store_435 = "npm_imported_package_store") -load("@@_main~npm~npm__ecc-jsbn__0.1.2__links//:defs.bzl", store_436 = "npm_imported_package_store") -load("@@_main~npm~npm__electron-to-chromium__1.4.311__links//:defs.bzl", store_437 = "npm_imported_package_store") -load("@@_main~npm~npm__element-size__1.1.1__links//:defs.bzl", store_438 = "npm_imported_package_store") -load("@@_main~npm~npm__elementary-circuits-directed-graph__1.3.1__links//:defs.bzl", store_439 = "npm_imported_package_store") -load("@@_main~npm~npm__emoji-regex__8.0.0__links//:defs.bzl", store_440 = "npm_imported_package_store") -load("@@_main~npm~npm__emoji-regex__9.2.2__links//:defs.bzl", store_441 = "npm_imported_package_store") -load("@@_main~npm~npm__emojis-list__3.0.0__links//:defs.bzl", store_442 = "npm_imported_package_store") -load("@@_main~npm~npm__encoding__0.1.13__links//:defs.bzl", store_443 = "npm_imported_package_store") -load("@@_main~npm~npm__end-of-stream__1.4.4__links//:defs.bzl", store_444 = "npm_imported_package_store") -load("@@_main~npm~npm__enhanced-resolve__5.12.0__links//:defs.bzl", store_445 = "npm_imported_package_store") -load("@@_main~npm~npm__enhanced-resolve__5.18.1__links//:defs.bzl", store_446 = "npm_imported_package_store") -load("@@_main~npm~npm__env-paths__2.2.1__links//:defs.bzl", store_447 = "npm_imported_package_store") -load("@@_main~npm~npm__envinfo__7.8.1__links//:defs.bzl", store_448 = "npm_imported_package_store") -load("@@_main~npm~npm__err-code__2.0.3__links//:defs.bzl", store_449 = "npm_imported_package_store") -load("@@_main~npm~npm__error-ex__1.3.2__links//:defs.bzl", store_450 = "npm_imported_package_store") -load("@@_main~npm~npm__es-module-lexer__0.9.3__links//:defs.bzl", store_451 = "npm_imported_package_store") -load("@@_main~npm~npm__es5-ext__0.10.62__links//:defs.bzl", store_452 = "npm_imported_package_store") -load("@@_main~npm~npm__es6-iterator__2.0.3__links//:defs.bzl", store_453 = "npm_imported_package_store") -load("@@_main~npm~npm__es6-symbol__3.1.3__links//:defs.bzl", store_454 = "npm_imported_package_store") -load("@@_main~npm~npm__es6-weak-map__2.0.3__links//:defs.bzl", store_455 = "npm_imported_package_store") -load("@@_main~npm~npm__esbuild__0.16.17__links//:defs.bzl", store_456 = "npm_imported_package_store") -load("@@_main~npm~npm__esbuild__0.24.0__links//:defs.bzl", link_457 = "npm_link_imported_package_store", store_457 = "npm_imported_package_store") -load("@@_main~npm~npm__escalade__3.1.1__links//:defs.bzl", store_458 = "npm_imported_package_store") -load("@@_main~npm~npm__escape-html__1.0.3__links//:defs.bzl", store_459 = "npm_imported_package_store") -load("@@_main~npm~npm__escape-latex__1.2.0__links//:defs.bzl", store_460 = "npm_imported_package_store") -load("@@_main~npm~npm__escape-string-regexp__1.0.5__links//:defs.bzl", store_461 = "npm_imported_package_store") -load("@@_main~npm~npm__escape-string-regexp__4.0.0__links//:defs.bzl", store_462 = "npm_imported_package_store") -load("@@_main~npm~npm__escodegen__1.14.3__links//:defs.bzl", store_463 = "npm_imported_package_store") -load("@@_main~npm~npm__eslint-scope__5.1.1__links//:defs.bzl", store_464 = "npm_imported_package_store") -load("@@_main~npm~npm__esprima__1.0.0__links//:defs.bzl", store_465 = "npm_imported_package_store") -load("@@_main~npm~npm__esprima__4.0.1__links//:defs.bzl", store_466 = "npm_imported_package_store") -load("@@_main~npm~npm__esrecurse__4.3.0__links//:defs.bzl", store_467 = "npm_imported_package_store") -load("@@_main~npm~npm__estraverse__4.3.0__links//:defs.bzl", store_468 = "npm_imported_package_store") -load("@@_main~npm~npm__estraverse__5.3.0__links//:defs.bzl", store_469 = "npm_imported_package_store") -load("@@_main~npm~npm__estree-walker__1.0.1__links//:defs.bzl", store_470 = "npm_imported_package_store") -load("@@_main~npm~npm__estree-walker__2.0.2__links//:defs.bzl", store_471 = "npm_imported_package_store") -load("@@_main~npm~npm__esutils__2.0.3__links//:defs.bzl", store_472 = "npm_imported_package_store") -load("@@_main~npm~npm__eval__0.1.6__links//:defs.bzl", store_473 = "npm_imported_package_store") -load("@@_main~npm~npm__events__3.3.0__links//:defs.bzl", store_474 = "npm_imported_package_store") -load("@@_main~npm~npm__ext__1.7.0__links//:defs.bzl", store_475 = "npm_imported_package_store") -load("@@_main~npm~npm__extend__3.0.2__links//:defs.bzl", store_476 = "npm_imported_package_store") -load("@@_main~npm~npm__extract-zip__2.0.1__links//:defs.bzl", store_477 = "npm_imported_package_store") -load("@@_main~npm~npm__extsprintf__1.3.0__links//:defs.bzl", store_478 = "npm_imported_package_store") -load("@@_main~npm~npm__falafel__2.2.5__links//:defs.bzl", store_479 = "npm_imported_package_store") -load("@@_main~npm~npm__fast-decode-uri-component__1.0.1__links//:defs.bzl", store_480 = "npm_imported_package_store") -load("@@_main~npm~npm__fast-deep-equal__3.1.3__links//:defs.bzl", store_481 = "npm_imported_package_store") -load("@@_main~npm~npm__fast-isnumeric__1.1.4__links//:defs.bzl", store_482 = "npm_imported_package_store") -load("@@_main~npm~npm__fast-json-stable-stringify__2.1.0__links//:defs.bzl", store_483 = "npm_imported_package_store") -load("@@_main~npm~npm__fast-levenshtein__2.0.6__links//:defs.bzl", store_484 = "npm_imported_package_store") -load("@@_main~npm~npm__fastest-levenshtein__1.0.16__links//:defs.bzl", store_485 = "npm_imported_package_store") -load("@@_main~npm~npm__fd-slicer__1.1.0__links//:defs.bzl", store_486 = "npm_imported_package_store") -load("@@_main~npm~npm__file-uri-to-path__1.0.0__links//:defs.bzl", store_487 = "npm_imported_package_store") -load("@@_main~npm~npm__fill-range__7.0.1__links//:defs.bzl", store_488 = "npm_imported_package_store") -load("@@_main~npm~npm__find-up__4.1.0__links//:defs.bzl", store_489 = "npm_imported_package_store") -load("@@_main~npm~npm__find-up__5.0.0__links//:defs.bzl", store_490 = "npm_imported_package_store") -load("@@_main~npm~npm__flat__5.0.2__links//:defs.bzl", store_491 = "npm_imported_package_store") -load("@@_main~npm~npm__flatten-vertex-data__1.0.2__links//:defs.bzl", store_492 = "npm_imported_package_store") -load("@@_main~npm~npm__font-atlas__2.1.0__links//:defs.bzl", store_493 = "npm_imported_package_store") -load("@@_main~npm~npm__font-measure__1.2.2__links//:defs.bzl", store_494 = "npm_imported_package_store") -load("@@_main~npm~npm__foreground-child__2.0.0__links//:defs.bzl", store_495 = "npm_imported_package_store") -load("@@_main~npm~npm__foreground-child__3.1.1__links//:defs.bzl", store_496 = "npm_imported_package_store") -load("@@_main~npm~npm__forever-agent__0.6.1__links//:defs.bzl", store_497 = "npm_imported_package_store") -load("@@_main~npm~npm__form-data__2.3.3__links//:defs.bzl", store_498 = "npm_imported_package_store") -load("@@_main~npm~npm__form-data__2.5.1__links//:defs.bzl", store_499 = "npm_imported_package_store") -load("@@_main~npm~npm__fraction.js__4.2.0__links//:defs.bzl", store_500 = "npm_imported_package_store") -load("@@_main~npm~npm__from2__2.3.0__links//:defs.bzl", store_501 = "npm_imported_package_store") -load("@@_main~npm~npm__fs-constants__1.0.0__links//:defs.bzl", store_502 = "npm_imported_package_store") -load("@@_main~npm~npm__fs-extra__11.1.1__links//:defs.bzl", store_503 = "npm_imported_package_store") -load("@@_main~npm~npm__fs-extra__7.0.1__links//:defs.bzl", store_504 = "npm_imported_package_store") -load("@@_main~npm~npm__fs-minipass__1.2.7__links//:defs.bzl", store_505 = "npm_imported_package_store") -load("@@_main~npm~npm__fs-minipass__2.1.0__links//:defs.bzl", store_506 = "npm_imported_package_store") -load("@@_main~npm~npm__fs.realpath__1.0.0__links//:defs.bzl", store_507 = "npm_imported_package_store") -load("@@_main~npm~npm__fsevents__2.3.2__links//:defs.bzl", store_508 = "npm_imported_package_store") -load("@@_main~npm~npm__function-bind__1.1.1__links//:defs.bzl", store_509 = "npm_imported_package_store") -load("@@_main~npm~npm__gauge__2.7.4__links//:defs.bzl", store_510 = "npm_imported_package_store") -load("@@_main~npm~npm__gauge__3.0.2__links//:defs.bzl", store_511 = "npm_imported_package_store") -load("@@_main~npm~npm__gauge__4.0.4__links//:defs.bzl", store_512 = "npm_imported_package_store") -load("@@_main~npm~npm__gensync__1.0.0-beta.2__links//:defs.bzl", store_513 = "npm_imported_package_store") -load("@@_main~npm~npm__geojson-vt__3.2.1__links//:defs.bzl", store_514 = "npm_imported_package_store") -load("@@_main~npm~npm__get-caller-file__2.0.5__links//:defs.bzl", store_515 = "npm_imported_package_store") -load("@@_main~npm~npm__get-canvas-context__1.0.2__links//:defs.bzl", store_516 = "npm_imported_package_store") -load("@@_main~npm~npm__get-stream__5.2.0__links//:defs.bzl", store_517 = "npm_imported_package_store") -load("@@_main~npm~npm__get-stream__6.0.1__links//:defs.bzl", store_518 = "npm_imported_package_store") -load("@@_main~npm~npm__getpass__0.1.7__links//:defs.bzl", store_519 = "npm_imported_package_store") -load("@@_main~npm~npm__gl-mat4__1.2.0__links//:defs.bzl", store_520 = "npm_imported_package_store") -load("@@_main~npm~npm__gl-matrix__3.4.3__links//:defs.bzl", store_521 = "npm_imported_package_store") -load("@@_main~npm~npm__gl-text__1.3.1__links//:defs.bzl", store_522 = "npm_imported_package_store") -load("@@_main~npm~npm__gl-util__3.1.3__links//:defs.bzl", store_523 = "npm_imported_package_store") -load("@@_main~npm~npm__glob-parent__5.1.2__links//:defs.bzl", store_524 = "npm_imported_package_store") -load("@@_main~npm~npm__glob-to-regexp__0.4.1__links//:defs.bzl", store_525 = "npm_imported_package_store") -load("@@_main~npm~npm__glob__10.3.3__links//:defs.bzl", store_526 = "npm_imported_package_store") -load("@@_main~npm~npm__glob__10.4.5__links//:defs.bzl", store_527 = "npm_imported_package_store") -load("@@_main~npm~npm__glob__7.2.0__links//:defs.bzl", store_528 = "npm_imported_package_store") -load("@@_main~npm~npm__glob__7.2.3__links//:defs.bzl", store_529 = "npm_imported_package_store") -load("@@_main~npm~npm__glob__8.1.0__links//:defs.bzl", store_530 = "npm_imported_package_store") -load("@@_main~npm~npm__globals__11.12.0__links//:defs.bzl", store_531 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-inject-defines__1.0.3__links//:defs.bzl", store_532 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-resolve__0.0.1__links//:defs.bzl", store_533 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-token-assignments__2.0.2__links//:defs.bzl", store_534 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-token-defines__1.0.0__links//:defs.bzl", store_535 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-token-depth__1.1.2__links//:defs.bzl", store_536 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-token-descope__1.0.2__links//:defs.bzl", store_537 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-token-inject-block__1.1.0__links//:defs.bzl", store_538 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-token-properties__1.0.1__links//:defs.bzl", store_539 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-token-scope__1.1.2__links//:defs.bzl", store_540 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-token-string__1.0.1__links//:defs.bzl", store_541 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-token-whitespace-trim__1.0.0__links//:defs.bzl", store_542 = "npm_imported_package_store") -load("@@_main~npm~npm__glsl-tokenizer__2.1.5__links//:defs.bzl", store_543 = "npm_imported_package_store") -load("@@_main~npm~npm__glslify-bundle__5.1.1__links//:defs.bzl", store_544 = "npm_imported_package_store") -load("@@_main~npm~npm__glslify-deps__1.3.2__links//:defs.bzl", store_545 = "npm_imported_package_store") -load("@@_main~npm~npm__glslify__7.1.1__links//:defs.bzl", store_546 = "npm_imported_package_store") -load("@@_main~npm~npm__google-protobuf__3.21.4__links//:defs.bzl", link_547 = "npm_link_imported_package_store", store_547 = "npm_imported_package_store") -load("@@_main~npm~npm__got__10.7.0__links//:defs.bzl", store_548 = "npm_imported_package_store") -load("@@_main~npm~npm__graceful-fs__4.2.10__links//:defs.bzl", store_549 = "npm_imported_package_store") -load("@@_main~npm~npm__grid-index__1.1.0__links//:defs.bzl", store_550 = "npm_imported_package_store") -load("@@_main~npm~npm__gzip-size__6.0.0__links//:defs.bzl", store_551 = "npm_imported_package_store") -load("@@_main~npm~npm__handlebars-utils__1.0.6__links//:defs.bzl", store_552 = "npm_imported_package_store") -load("@@_main~npm~npm__har-schema__2.0.0__links//:defs.bzl", store_553 = "npm_imported_package_store") -load("@@_main~npm~npm__har-validator__5.1.5__links//:defs.bzl", store_554 = "npm_imported_package_store") -load("@@_main~npm~npm__has-flag__3.0.0__links//:defs.bzl", store_555 = "npm_imported_package_store") -load("@@_main~npm~npm__has-flag__4.0.0__links//:defs.bzl", store_556 = "npm_imported_package_store") -load("@@_main~npm~npm__has-hover__1.0.1__links//:defs.bzl", store_557 = "npm_imported_package_store") -load("@@_main~npm~npm__has-passive-events__1.0.0__links//:defs.bzl", store_558 = "npm_imported_package_store") -load("@@_main~npm~npm__has-unicode__2.0.1__links//:defs.bzl", store_559 = "npm_imported_package_store") -load("@@_main~npm~npm__has__1.0.3__links//:defs.bzl", store_560 = "npm_imported_package_store") -load("@@_main~npm~npm__he__1.2.0__links//:defs.bzl", store_561 = "npm_imported_package_store") -load("@@_main~npm~npm__hello__at_gitpkg.vercel.app_EqualMa_gitpkg-hello_packages_hello__links//:defs.bzl", link_562 = "npm_link_imported_package_store", store_562 = "npm_imported_package_store") -load("@@_main~npm~npm__helper-date__github.com_coda_helper-date_a2cb4284148cbba7d36173dff4c7c60ce59eae55__links//:defs.bzl", link_563 = "npm_link_imported_package_store", store_563 = "npm_imported_package_store") -load("@@_main~npm~npm__hot-shots__10.0.0__links//:defs.bzl", link_564 = "npm_link_imported_package_store", store_564 = "npm_imported_package_store") -load("@@_main~npm~npm__hsluv__0.0.3__links//:defs.bzl", store_565 = "npm_imported_package_store") -load("@@_main~npm~npm__html-escaper__2.0.2__links//:defs.bzl", store_566 = "npm_imported_package_store") -load("@@_main~npm~npm__http-cache-semantics__4.1.1__links//:defs.bzl", store_567 = "npm_imported_package_store") -load("@@_main~npm~npm__http-errors__2.0.0__links//:defs.bzl", store_568 = "npm_imported_package_store") -load("@@_main~npm~npm__http-proxy-agent__5.0.0__links//:defs.bzl", store_569 = "npm_imported_package_store") -load("@@_main~npm~npm__http-signature__1.2.0__links//:defs.bzl", store_570 = "npm_imported_package_store") -load("@@_main~npm~npm__https-proxy-agent__5.0.1__links//:defs.bzl", store_571 = "npm_imported_package_store") -load("@@_main~npm~npm__humanize-ms__1.2.1__links//:defs.bzl", store_572 = "npm_imported_package_store") -load("@@_main~npm~npm__iconv-lite__0.4.24__links//:defs.bzl", store_573 = "npm_imported_package_store") -load("@@_main~npm~npm__iconv-lite__0.6.3__links//:defs.bzl", store_574 = "npm_imported_package_store") -load("@@_main~npm~npm__icss-utils__5.1.0_postcss_8.4.21__links//:defs.bzl", store_575 = "npm_imported_package_store") -load("@@_main~npm~npm__ieee754__1.2.1__links//:defs.bzl", store_576 = "npm_imported_package_store") -load("@@_main~npm~npm__ignore-walk__3.0.4__links//:defs.bzl", store_577 = "npm_imported_package_store") -load("@@_main~npm~npm__import-fresh__3.3.0__links//:defs.bzl", store_578 = "npm_imported_package_store") -load("@@_main~npm~npm__import-local__3.1.0__links//:defs.bzl", store_579 = "npm_imported_package_store") -load("@@_main~npm~npm__imurmurhash__0.1.4__links//:defs.bzl", store_580 = "npm_imported_package_store") -load("@@_main~npm~npm__indent-string__4.0.0__links//:defs.bzl", store_581 = "npm_imported_package_store") -load("@@_main~npm~npm__infer-owner__1.0.4__links//:defs.bzl", store_582 = "npm_imported_package_store") -load("@@_main~npm~npm__inflight__1.0.6__links//:defs.bzl", store_583 = "npm_imported_package_store") -load("@@_main~npm~npm__inherits__2.0.4__links//:defs.bzl", store_584 = "npm_imported_package_store") -load("@@_main~npm~npm__ini__1.3.8__links//:defs.bzl", store_585 = "npm_imported_package_store") -load("@@_main~npm~npm__inline-fixtures__1.1.0__links//:defs.bzl", link_586 = "npm_link_imported_package_store", store_586 = "npm_imported_package_store") -load("@@_main~npm~npm__inline-fixtures__at_registry.yarnpkg.com_inline-fixtures_-_inline-fixtures-1.1.0.tgz_5f9edf644ac02a1322012dbbb9f0a4739831d662__links//:defs.bzl", link_587 = "npm_link_imported_package_store", store_587 = "npm_imported_package_store") -load("@@_main~npm~npm__interpret__3.1.1__links//:defs.bzl", store_588 = "npm_imported_package_store") -load("@@_main~npm~npm__ip__2.0.0__links//:defs.bzl", store_589 = "npm_imported_package_store") -load("@@_main~npm~npm__is-arrayish__0.2.1__links//:defs.bzl", store_590 = "npm_imported_package_store") -load("@@_main~npm~npm__is-arrayish__0.3.2__links//:defs.bzl", store_591 = "npm_imported_package_store") -load("@@_main~npm~npm__is-binary-path__2.1.0__links//:defs.bzl", store_592 = "npm_imported_package_store") -load("@@_main~npm~npm__is-browser__2.1.0__links//:defs.bzl", store_593 = "npm_imported_package_store") -load("@@_main~npm~npm__is-buffer__1.1.6__links//:defs.bzl", store_594 = "npm_imported_package_store") -load("@@_main~npm~npm__is-core-module__2.11.0__links//:defs.bzl", store_595 = "npm_imported_package_store") -load("@@_main~npm~npm__is-extglob__2.1.1__links//:defs.bzl", store_596 = "npm_imported_package_store") -load("@@_main~npm~npm__is-finite__1.1.0__links//:defs.bzl", store_597 = "npm_imported_package_store") -load("@@_main~npm~npm__is-firefox__1.0.3__links//:defs.bzl", store_598 = "npm_imported_package_store") -load("@@_main~npm~npm__is-fullwidth-code-point__1.0.0__links//:defs.bzl", store_599 = "npm_imported_package_store") -load("@@_main~npm~npm__is-fullwidth-code-point__3.0.0__links//:defs.bzl", store_600 = "npm_imported_package_store") -load("@@_main~npm~npm__is-glob__4.0.3__links//:defs.bzl", store_601 = "npm_imported_package_store") -load("@@_main~npm~npm__is-iexplorer__1.0.0__links//:defs.bzl", store_602 = "npm_imported_package_store") -load("@@_main~npm~npm__is-lambda__1.0.1__links//:defs.bzl", store_603 = "npm_imported_package_store") -load("@@_main~npm~npm__is-mobile__4.0.0__links//:defs.bzl", store_604 = "npm_imported_package_store") -load("@@_main~npm~npm__is-module__1.0.0__links//:defs.bzl", store_605 = "npm_imported_package_store") -load("@@_main~npm~npm__is-number__6.0.0__links//:defs.bzl", store_606 = "npm_imported_package_store") -load("@@_main~npm~npm__is-number__7.0.0__links//:defs.bzl", store_607 = "npm_imported_package_store") -load("@@_main~npm~npm__is-obj__1.0.1__links//:defs.bzl", store_608 = "npm_imported_package_store") -load("@@_main~npm~npm__is-plain-obj__1.1.0__links//:defs.bzl", store_609 = "npm_imported_package_store") -load("@@_main~npm~npm__is-plain-obj__2.1.0__links//:defs.bzl", store_610 = "npm_imported_package_store") -load("@@_main~npm~npm__is-plain-object__2.0.4__links//:defs.bzl", store_611 = "npm_imported_package_store") -load("@@_main~npm~npm__is-reference__1.2.1__links//:defs.bzl", store_612 = "npm_imported_package_store") -load("@@_main~npm~npm__is-string-blank__1.0.1__links//:defs.bzl", store_613 = "npm_imported_package_store") -load("@@_main~npm~npm__is-svg-path__1.0.2__links//:defs.bzl", store_614 = "npm_imported_package_store") -load("@@_main~npm~npm__is-typedarray__1.0.0__links//:defs.bzl", store_615 = "npm_imported_package_store") -load("@@_main~npm~npm__is-unicode-supported__0.1.0__links//:defs.bzl", store_616 = "npm_imported_package_store") -load("@@_main~npm~npm__isarray__0.0.1__links//:defs.bzl", store_617 = "npm_imported_package_store") -load("@@_main~npm~npm__isarray__1.0.0__links//:defs.bzl", store_618 = "npm_imported_package_store") -load("@@_main~npm~npm__isarray__2.0.5__links//:defs.bzl", store_619 = "npm_imported_package_store") -load("@@_main~npm~npm__isexe__2.0.0__links//:defs.bzl", store_620 = "npm_imported_package_store") -load("@@_main~npm~npm__isobject__3.0.1__links//:defs.bzl", store_621 = "npm_imported_package_store") -load("@@_main~npm~npm__isomorphic-ws__5.0.0_ws_8.18.0__links//:defs.bzl", store_622 = "npm_imported_package_store") -load("@@_main~npm~npm__isstream__0.1.2__links//:defs.bzl", store_623 = "npm_imported_package_store") -load("@@_main~npm~npm__istanbul-lib-coverage__3.2.0__links//:defs.bzl", store_624 = "npm_imported_package_store") -load("@@_main~npm~npm__istanbul-lib-report__3.0.0__links//:defs.bzl", store_625 = "npm_imported_package_store") -load("@@_main~npm~npm__istanbul-reports__3.1.5__links//:defs.bzl", store_626 = "npm_imported_package_store") -load("@@_main~npm~npm__jackspeak__2.2.3__links//:defs.bzl", store_627 = "npm_imported_package_store") -load("@@_main~npm~npm__jackspeak__3.4.3__links//:defs.bzl", store_628 = "npm_imported_package_store") -load("@@_main~npm~npm__jasmine-core__5.1.0__links//:defs.bzl", store_629 = "npm_imported_package_store") -load("@@_main~npm~npm__jasmine__5.1.0__links//:defs.bzl", link_630 = "npm_link_imported_package_store", store_630 = "npm_imported_package_store") -load("@@_main~npm~npm__javascript-natural-sort__0.7.1__links//:defs.bzl", store_631 = "npm_imported_package_store") -load("@@_main~npm~npm__javascript-stringify__2.1.0__links//:defs.bzl", store_632 = "npm_imported_package_store") -load("@@_main~npm~npm__jest-worker__27.5.1__links//:defs.bzl", store_633 = "npm_imported_package_store") -load("@@_main~npm~npm__jiti__2.4.2__links//:defs.bzl", store_634 = "npm_imported_package_store") -load("@@_main~npm~npm__jose__4.12.0__links//:defs.bzl", store_635 = "npm_imported_package_store") -load("@@_main~npm~npm__js-tokens__4.0.0__links//:defs.bzl", store_636 = "npm_imported_package_store") -load("@@_main~npm~npm__js-yaml__4.1.0__links//:defs.bzl", store_637 = "npm_imported_package_store") -load("@@_main~npm~npm__jsbn__0.1.1__links//:defs.bzl", store_638 = "npm_imported_package_store") -load("@@_main~npm~npm__jsep__1.3.9__links//:defs.bzl", store_639 = "npm_imported_package_store") -load("@@_main~npm~npm__jsesc__2.5.2__links//:defs.bzl", store_640 = "npm_imported_package_store") -load("@@_main~npm~npm__json-buffer__3.0.1__links//:defs.bzl", store_641 = "npm_imported_package_store") -load("@@_main~npm~npm__json-parse-even-better-errors__2.3.1__links//:defs.bzl", store_642 = "npm_imported_package_store") -load("@@_main~npm~npm__json-schema-traverse__0.4.1__links//:defs.bzl", store_643 = "npm_imported_package_store") -load("@@_main~npm~npm__json-schema-traverse__1.0.0__links//:defs.bzl", store_644 = "npm_imported_package_store") -load("@@_main~npm~npm__json-schema__0.4.0__links//:defs.bzl", store_645 = "npm_imported_package_store") -load("@@_main~npm~npm__json-stable-stringify__1.0.1__links//:defs.bzl", link_646 = "npm_link_imported_package_store", store_646 = "npm_imported_package_store") -load("@@_main~npm~npm__json-stringify-safe__5.0.1__links//:defs.bzl", store_647 = "npm_imported_package_store") -load("@@_main~npm~npm__json5__2.2.3__links//:defs.bzl", store_648 = "npm_imported_package_store") -load("@@_main~npm~npm__jsonc-parser__3.2.0__links//:defs.bzl", store_649 = "npm_imported_package_store") -load("@@_main~npm~npm__jsonfile__4.0.0__links//:defs.bzl", store_650 = "npm_imported_package_store") -load("@@_main~npm~npm__jsonfile__6.1.0__links//:defs.bzl", store_651 = "npm_imported_package_store") -load("@@_main~npm~npm__jsonpath-plus__7.2.0__links//:defs.bzl", link_652 = "npm_link_imported_package_store", store_652 = "npm_imported_package_store") -load("@@_main~npm~npm__jsonpath-plus__9.0.0__links//:defs.bzl", store_653 = "npm_imported_package_store") -load("@@_main~npm~npm__jsprim__1.4.2__links//:defs.bzl", store_654 = "npm_imported_package_store") -load("@@_main~npm~npm__kdbush__3.0.0__links//:defs.bzl", store_655 = "npm_imported_package_store") -load("@@_main~npm~npm__keyv__4.5.2__links//:defs.bzl", store_656 = "npm_imported_package_store") -load("@@_main~npm~npm__kind-of__3.2.2__links//:defs.bzl", store_657 = "npm_imported_package_store") -load("@@_main~npm~npm__kind-of__6.0.3__links//:defs.bzl", store_658 = "npm_imported_package_store") -load("@@_main~npm~npm__kleur__4.1.5__links//:defs.bzl", store_659 = "npm_imported_package_store") -load("@@_main~npm~npm__levn__0.3.0__links//:defs.bzl", store_660 = "npm_imported_package_store") -load("@@_main~npm~npm__lightningcss-darwin-arm64__1.29.2__links//:defs.bzl", store_661 = "npm_imported_package_store") -load("@@_main~npm~npm__lightningcss-darwin-x64__1.29.2__links//:defs.bzl", store_662 = "npm_imported_package_store") -load("@@_main~npm~npm__lightningcss-freebsd-x64__1.29.2__links//:defs.bzl", store_663 = "npm_imported_package_store") -load("@@_main~npm~npm__lightningcss-linux-arm-gnueabihf__1.29.2__links//:defs.bzl", store_664 = "npm_imported_package_store") -load("@@_main~npm~npm__lightningcss-linux-arm64-gnu__1.29.2__links//:defs.bzl", store_665 = "npm_imported_package_store") -load("@@_main~npm~npm__lightningcss-linux-arm64-musl__1.29.2__links//:defs.bzl", store_666 = "npm_imported_package_store") -load("@@_main~npm~npm__lightningcss-linux-x64-gnu__1.29.2__links//:defs.bzl", store_667 = "npm_imported_package_store") -load("@@_main~npm~npm__lightningcss-linux-x64-musl__1.29.2__links//:defs.bzl", store_668 = "npm_imported_package_store") -load("@@_main~npm~npm__lightningcss-win32-arm64-msvc__1.29.2__links//:defs.bzl", store_669 = "npm_imported_package_store") -load("@@_main~npm~npm__lightningcss-win32-x64-msvc__1.29.2__links//:defs.bzl", store_670 = "npm_imported_package_store") -load("@@_main~npm~npm__lightningcss__1.29.2__links//:defs.bzl", store_671 = "npm_imported_package_store") -load("@@_main~npm~npm__lines-and-columns__1.2.4__links//:defs.bzl", store_672 = "npm_imported_package_store") -load("@@_main~npm~npm__loader-runner__4.3.0__links//:defs.bzl", store_673 = "npm_imported_package_store") -load("@@_main~npm~npm__loader-utils__2.0.4__links//:defs.bzl", store_674 = "npm_imported_package_store") -load("@@_main~npm~npm__locate-path__5.0.0__links//:defs.bzl", store_675 = "npm_imported_package_store") -load("@@_main~npm~npm__locate-path__6.0.0__links//:defs.bzl", store_676 = "npm_imported_package_store") -load("@@_main~npm~npm__lodash.merge__4.6.2__links//:defs.bzl", store_677 = "npm_imported_package_store") -load("@@_main~npm~npm__lodash__4.17.21__links//:defs.bzl", link_678 = "npm_link_imported_package_store", store_678 = "npm_imported_package_store") -load("@@_main~npm~npm__log-symbols__4.1.0__links//:defs.bzl", store_679 = "npm_imported_package_store") -load("@@_main~npm~npm__loose-envify__1.4.0__links//:defs.bzl", store_680 = "npm_imported_package_store") -load("@@_main~npm~npm__lowercase-keys__2.0.0__links//:defs.bzl", store_681 = "npm_imported_package_store") -load("@@_main~npm~npm__lru-cache__10.4.3__links//:defs.bzl", store_682 = "npm_imported_package_store") -load("@@_main~npm~npm__lru-cache__5.1.1__links//:defs.bzl", store_683 = "npm_imported_package_store") -load("@@_main~npm~npm__lru-cache__6.0.0__links//:defs.bzl", store_684 = "npm_imported_package_store") -load("@@_main~npm~npm__lru-cache__7.17.0__links//:defs.bzl", store_685 = "npm_imported_package_store") -load("@@_main~npm~npm__magic-string__0.25.9__links//:defs.bzl", store_686 = "npm_imported_package_store") -load("@@_main~npm~npm__magic-string__0.27.0__links//:defs.bzl", store_687 = "npm_imported_package_store") -load("@@_main~npm~npm__make-dir__2.1.0__links//:defs.bzl", store_688 = "npm_imported_package_store") -load("@@_main~npm~npm__make-dir__3.1.0__links//:defs.bzl", store_689 = "npm_imported_package_store") -load("@@_main~npm~npm__make-fetch-happen__10.2.1__links//:defs.bzl", store_690 = "npm_imported_package_store") -load("@@_main~npm~npm__map-limit__0.0.1__links//:defs.bzl", store_691 = "npm_imported_package_store") -load("@@_main~npm~npm__mapbox-gl__1.10.1__links//:defs.bzl", store_692 = "npm_imported_package_store") -load("@@_main~npm~npm__math-log2__1.0.1__links//:defs.bzl", store_693 = "npm_imported_package_store") -load("@@_main~npm~npm__mathjs__11.4.0__links//:defs.bzl", link_694 = "npm_link_imported_package_store", store_694 = "npm_imported_package_store") -load("@@_main~npm~npm__md5__2.3.0__links//:defs.bzl", store_695 = "npm_imported_package_store") -load("@@_main~npm~npm__meaning-of-life__1.0.0_o3deharooos255qt5xdujc3cuq__links//:defs.bzl", link_696 = "npm_link_imported_package_store", store_696 = "npm_imported_package_store") -load("@@_main~npm~npm__media-query-parser__2.0.2__links//:defs.bzl", store_697 = "npm_imported_package_store") -load("@@_main~npm~npm__merge-stream__2.0.0__links//:defs.bzl", store_698 = "npm_imported_package_store") -load("@@_main~npm~npm__mime-db__1.52.0__links//:defs.bzl", store_699 = "npm_imported_package_store") -load("@@_main~npm~npm__mime-types__2.1.35__links//:defs.bzl", store_700 = "npm_imported_package_store") -load("@@_main~npm~npm__mime__3.0.0__links//:defs.bzl", store_701 = "npm_imported_package_store") -load("@@_main~npm~npm__mimic-response__1.0.1__links//:defs.bzl", store_702 = "npm_imported_package_store") -load("@@_main~npm~npm__mimic-response__2.1.0__links//:defs.bzl", store_703 = "npm_imported_package_store") -load("@@_main~npm~npm__mini-css-extract-plugin__2.7.5_webpack_5.76.3__links//:defs.bzl", link_704 = "npm_link_imported_package_store", store_704 = "npm_imported_package_store") -load("@@_main~npm~npm__minimatch__3.1.2__links//:defs.bzl", store_705 = "npm_imported_package_store") -load("@@_main~npm~npm__minimatch__5.0.1__links//:defs.bzl", store_706 = "npm_imported_package_store") -load("@@_main~npm~npm__minimatch__5.1.6__links//:defs.bzl", store_707 = "npm_imported_package_store") -load("@@_main~npm~npm__minimatch__6.2.0__links//:defs.bzl", store_708 = "npm_imported_package_store") -load("@@_main~npm~npm__minimatch__9.0.3__links//:defs.bzl", store_709 = "npm_imported_package_store") -load("@@_main~npm~npm__minimatch__9.0.5__links//:defs.bzl", store_710 = "npm_imported_package_store") -load("@@_main~npm~npm__minimist__0.0.10__links//:defs.bzl", store_711 = "npm_imported_package_store") -load("@@_main~npm~npm__minimist__1.2.8__links//:defs.bzl", store_712 = "npm_imported_package_store") -load("@@_main~npm~npm__minipass-collect__1.0.2__links//:defs.bzl", store_713 = "npm_imported_package_store") -load("@@_main~npm~npm__minipass-fetch__2.1.2__links//:defs.bzl", store_714 = "npm_imported_package_store") -load("@@_main~npm~npm__minipass-flush__1.0.5__links//:defs.bzl", store_715 = "npm_imported_package_store") -load("@@_main~npm~npm__minipass-pipeline__1.2.4__links//:defs.bzl", store_716 = "npm_imported_package_store") -load("@@_main~npm~npm__minipass-sized__1.0.3__links//:defs.bzl", store_717 = "npm_imported_package_store") -load("@@_main~npm~npm__minipass__2.9.0__links//:defs.bzl", store_718 = "npm_imported_package_store") -load("@@_main~npm~npm__minipass__3.3.6__links//:defs.bzl", store_719 = "npm_imported_package_store") -load("@@_main~npm~npm__minipass__4.2.4__links//:defs.bzl", store_720 = "npm_imported_package_store") -load("@@_main~npm~npm__minipass__7.0.3__links//:defs.bzl", store_721 = "npm_imported_package_store") -load("@@_main~npm~npm__minipass__7.1.2__links//:defs.bzl", store_722 = "npm_imported_package_store") -load("@@_main~npm~npm__minizlib__1.3.3__links//:defs.bzl", store_723 = "npm_imported_package_store") -load("@@_main~npm~npm__minizlib__2.1.2__links//:defs.bzl", store_724 = "npm_imported_package_store") -load("@@_main~npm~npm__minizlib__3.0.1__links//:defs.bzl", store_725 = "npm_imported_package_store") -load("@@_main~npm~npm__mitt__3.0.0__links//:defs.bzl", store_726 = "npm_imported_package_store") -load("@@_main~npm~npm__mkdirp-classic__0.5.3__links//:defs.bzl", store_727 = "npm_imported_package_store") -load("@@_main~npm~npm__mkdirp__0.5.6__links//:defs.bzl", store_728 = "npm_imported_package_store") -load("@@_main~npm~npm__mkdirp__1.0.4__links//:defs.bzl", store_729 = "npm_imported_package_store") -load("@@_main~npm~npm__mkdirp__3.0.1__links//:defs.bzl", store_730 = "npm_imported_package_store") -load("@@_main~npm~npm__mlly__1.1.1__links//:defs.bzl", store_731 = "npm_imported_package_store") -load("@@_main~npm~npm__mobx-react-lite__3.4.0_mobx_6.3.0_react_17.0.2__links//:defs.bzl", store_732 = "npm_imported_package_store") -load("@@_main~npm~npm__mobx-react__7.3.0_mobx_6.3.0_react_17.0.2__links//:defs.bzl", link_733 = "npm_link_imported_package_store", store_733 = "npm_imported_package_store") -load("@@_main~npm~npm__mobx__6.3.0__links//:defs.bzl", link_734 = "npm_link_imported_package_store", store_734 = "npm_imported_package_store") -load("@@_main~npm~npm__mocha-junit-reporter__2.2.0_mocha_10.2.0__links//:defs.bzl", link_735 = "npm_link_imported_package_store", store_735 = "npm_imported_package_store") -load("@@_main~npm~npm__mocha-multi-reporters__1.5.1_181752652__links//:defs.bzl", link_736 = "npm_link_imported_package_store", store_736 = "npm_imported_package_store") -load("@@_main~npm~npm__mocha__10.2.0_mocha-multi-reporters_1.5.1__links//:defs.bzl", link_737 = "npm_link_imported_package_store", store_737 = "npm_imported_package_store") -load("@@_main~npm~npm__moment-timezone__0.5.41__links//:defs.bzl", store_738 = "npm_imported_package_store") -load("@@_main~npm~npm__moment__2.29.4__links//:defs.bzl", store_739 = "npm_imported_package_store") -load("@@_main~npm~npm__mouse-change__1.4.0__links//:defs.bzl", store_740 = "npm_imported_package_store") -load("@@_main~npm~npm__mouse-event-offset__3.0.2__links//:defs.bzl", store_741 = "npm_imported_package_store") -load("@@_main~npm~npm__mouse-event__1.0.5__links//:defs.bzl", store_742 = "npm_imported_package_store") -load("@@_main~npm~npm__mouse-wheel__1.2.0__links//:defs.bzl", store_743 = "npm_imported_package_store") -load("@@_main~npm~npm__mri__1.2.0__links//:defs.bzl", store_744 = "npm_imported_package_store") -load("@@_main~npm~npm__mrmime__1.0.1__links//:defs.bzl", store_745 = "npm_imported_package_store") -load("@@_main~npm~npm__ms__0.7.3__links//:defs.bzl", store_746 = "npm_imported_package_store") -load("@@_main~npm~npm__ms__2.0.0__links//:defs.bzl", store_747 = "npm_imported_package_store") -load("@@_main~npm~npm__ms__2.1.2__links//:defs.bzl", store_748 = "npm_imported_package_store") -load("@@_main~npm~npm__ms__2.1.3__links//:defs.bzl", link_749 = "npm_link_imported_package_store", store_749 = "npm_imported_package_store") -load("@@_main~npm~npm__mumath__3.3.4__links//:defs.bzl", store_750 = "npm_imported_package_store") -load("@@_main~npm~npm__murmurhash-js__1.0.0__links//:defs.bzl", store_751 = "npm_imported_package_store") -load("@@_main~npm~npm__nan__2.17.0__links//:defs.bzl", store_752 = "npm_imported_package_store") -load("@@_main~npm~npm__nanoid__3.3.11__links//:defs.bzl", store_753 = "npm_imported_package_store") -load("@@_main~npm~npm__nanoid__3.3.3__links//:defs.bzl", store_754 = "npm_imported_package_store") -load("@@_main~npm~npm__nanoid__3.3.4__links//:defs.bzl", store_755 = "npm_imported_package_store") -load("@@_main~npm~npm__native-promise-only__0.8.1__links//:defs.bzl", store_756 = "npm_imported_package_store") -load("@@_main~npm~npm__needle__2.9.1__links//:defs.bzl", store_757 = "npm_imported_package_store") -load("@@_main~npm~npm__negotiator__0.6.3__links//:defs.bzl", store_758 = "npm_imported_package_store") -load("@@_main~npm~npm__neo-async__2.6.2__links//:defs.bzl", store_759 = "npm_imported_package_store") -load("@@_main~npm~npm__next-tick__1.1.0__links//:defs.bzl", store_760 = "npm_imported_package_store") -load("@@_main~npm~npm__next__15.2.4_react-dom_19.1.0_react_19.1.0__links//:defs.bzl", link_761 = "npm_link_imported_package_store", store_761 = "npm_imported_package_store") -load("@@_main~npm~npm__node-fetch__2.6.12__links//:defs.bzl", store_762 = "npm_imported_package_store") -load("@@_main~npm~npm__node-fetch__2.6.7__links//:defs.bzl", store_763 = "npm_imported_package_store") -load("@@_main~npm~npm__node-gyp-build__4.6.0__links//:defs.bzl", store_764 = "npm_imported_package_store") -load("@@_main~npm~npm__node-gyp__7.1.2__links//:defs.bzl", store_765 = "npm_imported_package_store") -load("@@_main~npm~npm__node-gyp__9.3.0__links//:defs.bzl", link_766 = "npm_link_imported_package_store", store_766 = "npm_imported_package_store") -load("@@_main~npm~npm__node-pre-gyp__0.13.0__links//:defs.bzl", store_767 = "npm_imported_package_store") -load("@@_main~npm~npm__node-releases__2.0.10__links//:defs.bzl", store_768 = "npm_imported_package_store") -load("@@_main~npm~npm__nopt__4.0.3__links//:defs.bzl", store_769 = "npm_imported_package_store") -load("@@_main~npm~npm__nopt__5.0.0__links//:defs.bzl", store_770 = "npm_imported_package_store") -load("@@_main~npm~npm__nopt__6.0.0__links//:defs.bzl", store_771 = "npm_imported_package_store") -load("@@_main~npm~npm__normalize-path__3.0.0__links//:defs.bzl", store_772 = "npm_imported_package_store") -load("@@_main~npm~npm__normalize-svg-path__0.1.0__links//:defs.bzl", store_773 = "npm_imported_package_store") -load("@@_main~npm~npm__normalize-svg-path__1.1.0__links//:defs.bzl", store_774 = "npm_imported_package_store") -load("@@_main~npm~npm__normalize-url__6.1.0__links//:defs.bzl", store_775 = "npm_imported_package_store") -load("@@_main~npm~npm__npm-bundled__1.1.2__links//:defs.bzl", store_776 = "npm_imported_package_store") -load("@@_main~npm~npm__npm-normalize-package-bin__1.0.1__links//:defs.bzl", store_777 = "npm_imported_package_store") -load("@@_main~npm~npm__npm-packlist__1.4.8__links//:defs.bzl", store_778 = "npm_imported_package_store") -load("@@_main~npm~npm__npmlog__4.1.2__links//:defs.bzl", store_779 = "npm_imported_package_store") -load("@@_main~npm~npm__npmlog__5.0.1__links//:defs.bzl", store_780 = "npm_imported_package_store") -load("@@_main~npm~npm__npmlog__6.0.2__links//:defs.bzl", store_781 = "npm_imported_package_store") -load("@@_main~npm~npm__number-is-integer__1.0.1__links//:defs.bzl", store_782 = "npm_imported_package_store") -load("@@_main~npm~npm__number-is-nan__1.0.1__links//:defs.bzl", store_783 = "npm_imported_package_store") -load("@@_main~npm~npm__oauth-sign__0.9.0__links//:defs.bzl", store_784 = "npm_imported_package_store") -load("@@_main~npm~npm__object-assign__4.1.1__links//:defs.bzl", store_785 = "npm_imported_package_store") -load("@@_main~npm~npm__object-hash__2.2.0__links//:defs.bzl", store_786 = "npm_imported_package_store") -load("@@_main~npm~npm__oidc-token-hash__5.0.1__links//:defs.bzl", store_787 = "npm_imported_package_store") -load("@@_main~npm~npm__once__1.3.3__links//:defs.bzl", store_788 = "npm_imported_package_store") -load("@@_main~npm~npm__once__1.4.0__links//:defs.bzl", store_789 = "npm_imported_package_store") -load("@@_main~npm~npm__opener__1.5.2__links//:defs.bzl", store_790 = "npm_imported_package_store") -load("@@_main~npm~npm__openid-client__5.4.0__links//:defs.bzl", store_791 = "npm_imported_package_store") -load("@@_main~npm~npm__optimist__0.6.0__links//:defs.bzl", store_792 = "npm_imported_package_store") -load("@@_main~npm~npm__optionator__0.8.3__links//:defs.bzl", store_793 = "npm_imported_package_store") -load("@@_main~npm~npm__os-homedir__1.0.2__links//:defs.bzl", store_794 = "npm_imported_package_store") -load("@@_main~npm~npm__os-tmpdir__1.0.2__links//:defs.bzl", store_795 = "npm_imported_package_store") -load("@@_main~npm~npm__osenv__0.1.5__links//:defs.bzl", store_796 = "npm_imported_package_store") -load("@@_main~npm~npm__outdent__0.8.0__links//:defs.bzl", store_797 = "npm_imported_package_store") -load("@@_main~npm~npm__p-cancelable__2.1.1__links//:defs.bzl", store_798 = "npm_imported_package_store") -load("@@_main~npm~npm__p-event__4.2.0__links//:defs.bzl", store_799 = "npm_imported_package_store") -load("@@_main~npm~npm__p-finally__1.0.0__links//:defs.bzl", store_800 = "npm_imported_package_store") -load("@@_main~npm~npm__p-limit__2.3.0__links//:defs.bzl", store_801 = "npm_imported_package_store") -load("@@_main~npm~npm__p-limit__3.1.0__links//:defs.bzl", store_802 = "npm_imported_package_store") -load("@@_main~npm~npm__p-locate__4.1.0__links//:defs.bzl", store_803 = "npm_imported_package_store") -load("@@_main~npm~npm__p-locate__5.0.0__links//:defs.bzl", store_804 = "npm_imported_package_store") -load("@@_main~npm~npm__p-map__4.0.0__links//:defs.bzl", store_805 = "npm_imported_package_store") -load("@@_main~npm~npm__p-timeout__3.2.0__links//:defs.bzl", store_806 = "npm_imported_package_store") -load("@@_main~npm~npm__p-try__2.2.0__links//:defs.bzl", store_807 = "npm_imported_package_store") -load("@@_main~npm~npm__package-json-from-dist__1.0.1__links//:defs.bzl", store_808 = "npm_imported_package_store") -load("@@_main~npm~npm__parent-module__1.0.1__links//:defs.bzl", store_809 = "npm_imported_package_store") -load("@@_main~npm~npm__parenthesis__3.1.8__links//:defs.bzl", store_810 = "npm_imported_package_store") -load("@@_main~npm~npm__parse-json__5.2.0__links//:defs.bzl", store_811 = "npm_imported_package_store") -load("@@_main~npm~npm__parse-rect__1.2.0__links//:defs.bzl", store_812 = "npm_imported_package_store") -load("@@_main~npm~npm__parse-svg-path__0.1.2__links//:defs.bzl", store_813 = "npm_imported_package_store") -load("@@_main~npm~npm__parse-unit__1.0.1__links//:defs.bzl", store_814 = "npm_imported_package_store") -load("@@_main~npm~npm__path-exists__4.0.0__links//:defs.bzl", store_815 = "npm_imported_package_store") -load("@@_main~npm~npm__path-is-absolute__1.0.1__links//:defs.bzl", store_816 = "npm_imported_package_store") -load("@@_main~npm~npm__path-key__3.1.1__links//:defs.bzl", store_817 = "npm_imported_package_store") -load("@@_main~npm~npm__path-parse__1.0.7__links//:defs.bzl", store_818 = "npm_imported_package_store") -load("@@_main~npm~npm__path-scurry__1.10.1__links//:defs.bzl", store_819 = "npm_imported_package_store") -load("@@_main~npm~npm__path-scurry__1.11.1__links//:defs.bzl", store_820 = "npm_imported_package_store") -load("@@_main~npm~npm__path-type__4.0.0__links//:defs.bzl", store_821 = "npm_imported_package_store") -load("@@_main~npm~npm__pathe__1.1.0__links//:defs.bzl", store_822 = "npm_imported_package_store") -load("@@_main~npm~npm__pbf__3.2.1__links//:defs.bzl", store_823 = "npm_imported_package_store") -load("@@_main~npm~npm__pend__1.2.0__links//:defs.bzl", store_824 = "npm_imported_package_store") -load("@@_main~npm~npm__performance-now__2.1.0__links//:defs.bzl", store_825 = "npm_imported_package_store") -load("@@_main~npm~npm__pick-by-alias__1.2.0__links//:defs.bzl", store_826 = "npm_imported_package_store") -load("@@_main~npm~npm__picocolors__1.0.0__links//:defs.bzl", store_827 = "npm_imported_package_store") -load("@@_main~npm~npm__picocolors__1.1.1__links//:defs.bzl", store_828 = "npm_imported_package_store") -load("@@_main~npm~npm__picomatch__2.3.1__links//:defs.bzl", store_829 = "npm_imported_package_store") -load("@@_main~npm~npm__pify__4.0.1__links//:defs.bzl", store_830 = "npm_imported_package_store") -load("@@_main~npm~npm__pkg-dir__4.2.0__links//:defs.bzl", store_831 = "npm_imported_package_store") -load("@@_main~npm~npm__pkg-types__1.0.2__links//:defs.bzl", store_832 = "npm_imported_package_store") -load("@@_main~npm~npm__plotly.js__2.25.2__links//:defs.bzl", link_833 = "npm_link_imported_package_store", store_833 = "npm_imported_package_store") -load("@@_main~npm~npm__pngjs__5.0.0__links//:defs.bzl", link_834 = "npm_link_imported_package_store", store_834 = "npm_imported_package_store") -load("@@_main~npm~npm__point-in-polygon__1.1.0__links//:defs.bzl", store_835 = "npm_imported_package_store") -load("@@_main~npm~npm__polybooljs__1.2.0__links//:defs.bzl", store_836 = "npm_imported_package_store") -load("@@_main~npm~npm__postcss-modules-extract-imports__3.0.0_postcss_8.4.21__links//:defs.bzl", store_837 = "npm_imported_package_store") -load("@@_main~npm~npm__postcss-modules-local-by-default__4.0.0_postcss_8.4.21__links//:defs.bzl", store_838 = "npm_imported_package_store") -load("@@_main~npm~npm__postcss-modules-scope__3.0.0_postcss_8.4.21__links//:defs.bzl", store_839 = "npm_imported_package_store") -load("@@_main~npm~npm__postcss-modules-values__4.0.0_postcss_8.4.21__links//:defs.bzl", store_840 = "npm_imported_package_store") -load("@@_main~npm~npm__postcss-selector-parser__6.0.11__links//:defs.bzl", store_841 = "npm_imported_package_store") -load("@@_main~npm~npm__postcss-value-parser__4.2.0__links//:defs.bzl", store_842 = "npm_imported_package_store") -load("@@_main~npm~npm__postcss__8.4.21__links//:defs.bzl", store_843 = "npm_imported_package_store") -load("@@_main~npm~npm__postcss__8.4.31__links//:defs.bzl", store_844 = "npm_imported_package_store") -load("@@_main~npm~npm__postcss__8.5.3__links//:defs.bzl", store_845 = "npm_imported_package_store") -load("@@_main~npm~npm__potpack__1.0.2__links//:defs.bzl", store_846 = "npm_imported_package_store") -load("@@_main~npm~npm__prelude-ls__1.1.2__links//:defs.bzl", store_847 = "npm_imported_package_store") -load("@@_main~npm~npm__probe-image-size__7.2.3__links//:defs.bzl", store_848 = "npm_imported_package_store") -load("@@_main~npm~npm__process-nextick-args__2.0.1__links//:defs.bzl", store_849 = "npm_imported_package_store") -load("@@_main~npm~npm__progress__2.0.3__links//:defs.bzl", store_850 = "npm_imported_package_store") -load("@@_main~npm~npm__promise-inflight__1.0.1__links//:defs.bzl", store_851 = "npm_imported_package_store") -load("@@_main~npm~npm__promise-retry__2.0.1__links//:defs.bzl", store_852 = "npm_imported_package_store") -load("@@_main~npm~npm__protoc-gen-grpc__github.com_gregmagolan-codaio_protoc-gen-grpc-ts_be5580b06348d3eb9b4610a4a94065154a0df41f__links//:defs.bzl", link_853 = "npm_link_imported_package_store", store_853 = "npm_imported_package_store") -load("@@_main~npm~npm__protocol-buffers-schema__3.6.0__links//:defs.bzl", store_854 = "npm_imported_package_store") -load("@@_main~npm~npm__proxy-from-env__1.1.0__links//:defs.bzl", store_855 = "npm_imported_package_store") -load("@@_main~npm~npm__psl__1.9.0__links//:defs.bzl", store_856 = "npm_imported_package_store") -load("@@_main~npm~npm__pump__1.0.3__links//:defs.bzl", store_857 = "npm_imported_package_store") -load("@@_main~npm~npm__pump__3.0.0__links//:defs.bzl", store_858 = "npm_imported_package_store") -load("@@_main~npm~npm__punycode__2.3.0__links//:defs.bzl", store_859 = "npm_imported_package_store") -load("@@_main~npm~npm__puppeteer-core__19.11.1_777974123__links//:defs.bzl", store_860 = "npm_imported_package_store") -load("@@_main~npm~npm__puppeteer__19.11.1_777974123__links//:defs.bzl", link_861 = "npm_link_imported_package_store", store_861 = "npm_imported_package_store") -load("@@_main~npm~npm__qs__6.5.3__links//:defs.bzl", store_862 = "npm_imported_package_store") -load("@@_main~npm~npm__quickselect__2.0.0__links//:defs.bzl", store_863 = "npm_imported_package_store") -load("@@_main~npm~npm__raf__3.4.1__links//:defs.bzl", store_864 = "npm_imported_package_store") -load("@@_main~npm~npm__ramda__0.25.0__links//:defs.bzl", store_865 = "npm_imported_package_store") -load("@@_main~npm~npm__randombytes__2.1.0__links//:defs.bzl", store_866 = "npm_imported_package_store") -load("@@_main~npm~npm__rc__1.2.8__links//:defs.bzl", store_867 = "npm_imported_package_store") -load("@@_main~npm~npm__react-dom__19.1.0_react_19.1.0__links//:defs.bzl", link_868 = "npm_link_imported_package_store", store_868 = "npm_imported_package_store") -load("@@_main~npm~npm__react__17.0.2__links//:defs.bzl", link_869 = "npm_link_imported_package_store", store_869 = "npm_imported_package_store") -load("@@_main~npm~npm__react__19.1.0__links//:defs.bzl", link_870 = "npm_link_imported_package_store", store_870 = "npm_imported_package_store") -load("@@_main~npm~npm__read-yaml-file__2.1.0__links//:defs.bzl", store_871 = "npm_imported_package_store") -load("@@_main~npm~npm__readable-stream__1.0.34__links//:defs.bzl", store_872 = "npm_imported_package_store") -load("@@_main~npm~npm__readable-stream__2.3.8__links//:defs.bzl", store_873 = "npm_imported_package_store") -load("@@_main~npm~npm__readable-stream__3.6.1__links//:defs.bzl", store_874 = "npm_imported_package_store") -load("@@_main~npm~npm__readdirp__3.6.0__links//:defs.bzl", store_875 = "npm_imported_package_store") -load("@@_main~npm~npm__rechoir__0.8.0__links//:defs.bzl", store_876 = "npm_imported_package_store") -load("@@_main~npm~npm__regenerator-runtime__0.13.11__links//:defs.bzl", store_877 = "npm_imported_package_store") -load("@@_main~npm~npm__regl-error2d__2.0.12__links//:defs.bzl", store_878 = "npm_imported_package_store") -load("@@_main~npm~npm__regl-line2d__3.1.2__links//:defs.bzl", store_879 = "npm_imported_package_store") -load("@@_main~npm~npm__regl-scatter2d__3.3.1__links//:defs.bzl", store_880 = "npm_imported_package_store") -load("@@_main~npm~npm__regl-splom__1.0.14__links//:defs.bzl", store_881 = "npm_imported_package_store") -load("@@_main~npm~npm__regl__2.1.0__links//:defs.bzl", store_882 = "npm_imported_package_store") -load("@@_main~npm~npm__request__2.88.2__links//:defs.bzl", store_883 = "npm_imported_package_store") -load("@@_main~npm~npm__require-directory__2.1.1__links//:defs.bzl", store_884 = "npm_imported_package_store") -load("@@_main~npm~npm__require-from-string__2.0.2__links//:defs.bzl", store_885 = "npm_imported_package_store") -load("@@_main~npm~npm__require-like__0.1.2__links//:defs.bzl", store_886 = "npm_imported_package_store") -load("@@_main~npm~npm__resolve-cwd__3.0.0__links//:defs.bzl", store_887 = "npm_imported_package_store") -load("@@_main~npm~npm__resolve-from__4.0.0__links//:defs.bzl", store_888 = "npm_imported_package_store") -load("@@_main~npm~npm__resolve-from__5.0.0__links//:defs.bzl", store_889 = "npm_imported_package_store") -load("@@_main~npm~npm__resolve-protobuf-schema__2.1.0__links//:defs.bzl", store_890 = "npm_imported_package_store") -load("@@_main~npm~npm__resolve__0.6.3__links//:defs.bzl", store_891 = "npm_imported_package_store") -load("@@_main~npm~npm__resolve__1.22.1__links//:defs.bzl", store_892 = "npm_imported_package_store") -load("@@_main~npm~npm__responselike__2.0.1__links//:defs.bzl", store_893 = "npm_imported_package_store") -load("@@_main~npm~npm__retry__0.12.0__links//:defs.bzl", store_894 = "npm_imported_package_store") -load("@@_main~npm~npm__rfc4648__1.5.2__links//:defs.bzl", store_895 = "npm_imported_package_store") -load("@@_main~npm~npm__right-now__1.0.0__links//:defs.bzl", store_896 = "npm_imported_package_store") -load("@@_main~npm~npm__rimraf__2.7.1__links//:defs.bzl", store_897 = "npm_imported_package_store") -load("@@_main~npm~npm__rimraf__3.0.2__links//:defs.bzl", store_898 = "npm_imported_package_store") -load("@@_main~npm~npm__rimraf__5.0.10__links//:defs.bzl", store_899 = "npm_imported_package_store") -load("@@_main~npm~npm__rollup__2.70.2__links//:defs.bzl", link_900 = "npm_link_imported_package_store", store_900 = "npm_imported_package_store") -load("@@_main~npm~npm__rollup__2.79.2__links//:defs.bzl", link_901 = "npm_link_imported_package_store", store_901 = "npm_imported_package_store") -load("@@_main~npm~npm__rollup__3.29.5__links//:defs.bzl", link_902 = "npm_link_imported_package_store", store_902 = "npm_imported_package_store") -load("@@_main~npm~npm__rw__1.3.3__links//:defs.bzl", store_903 = "npm_imported_package_store") -load("@@_main~npm~npm__sade__1.8.1__links//:defs.bzl", store_904 = "npm_imported_package_store") -load("@@_main~npm~npm__safe-buffer__5.1.2__links//:defs.bzl", store_905 = "npm_imported_package_store") -load("@@_main~npm~npm__safe-buffer__5.2.1__links//:defs.bzl", store_906 = "npm_imported_package_store") -load("@@_main~npm~npm__safer-buffer__2.1.2__links//:defs.bzl", store_907 = "npm_imported_package_store") -load("@@_main~npm~npm__sax__1.2.4__links//:defs.bzl", store_908 = "npm_imported_package_store") -load("@@_main~npm~npm__scheduler__0.26.0__links//:defs.bzl", store_909 = "npm_imported_package_store") -load("@@_main~npm~npm__schema-utils__3.1.1__links//:defs.bzl", store_910 = "npm_imported_package_store") -load("@@_main~npm~npm__schema-utils__4.0.0__links//:defs.bzl", store_911 = "npm_imported_package_store") -load("@@_main~npm~npm__seedrandom__3.0.5__links//:defs.bzl", store_912 = "npm_imported_package_store") -load("@@_main~npm~npm__segfault-handler__1.3.0__links//:defs.bzl", link_913 = "npm_link_imported_package_store", store_913 = "npm_imported_package_store") -load("@@_main~npm~npm__semver-first-satisfied__1.1.0__links//:defs.bzl", link_914 = "npm_link_imported_package_store", store_914 = "npm_imported_package_store") -load("@@_main~npm~npm__semver__5.7.1__links//:defs.bzl", store_915 = "npm_imported_package_store") -load("@@_main~npm~npm__semver__6.3.0__links//:defs.bzl", store_916 = "npm_imported_package_store") -load("@@_main~npm~npm__semver__7.3.8__links//:defs.bzl", store_917 = "npm_imported_package_store") -load("@@_main~npm~npm__semver__7.5.0__links//:defs.bzl", store_918 = "npm_imported_package_store") -load("@@_main~npm~npm__semver__7.7.1__links//:defs.bzl", store_919 = "npm_imported_package_store") -load("@@_main~npm~npm__serialize-javascript__6.0.0__links//:defs.bzl", store_920 = "npm_imported_package_store") -load("@@_main~npm~npm__serialize-javascript__6.0.1__links//:defs.bzl", store_921 = "npm_imported_package_store") -load("@@_main~npm~npm__set-blocking__2.0.0__links//:defs.bzl", store_922 = "npm_imported_package_store") -load("@@_main~npm~npm__setprototypeof__1.2.0__links//:defs.bzl", store_923 = "npm_imported_package_store") -load("@@_main~npm~npm__shallow-clone__3.0.1__links//:defs.bzl", store_924 = "npm_imported_package_store") -load("@@_main~npm~npm__shallow-copy__0.0.1__links//:defs.bzl", store_925 = "npm_imported_package_store") -load("@@_main~npm~npm__sharp__0.33.5__links//:defs.bzl", store_926 = "npm_imported_package_store") -load("@@_main~npm~npm__shebang-command__2.0.0__links//:defs.bzl", store_927 = "npm_imported_package_store") -load("@@_main~npm~npm__shebang-regex__3.0.0__links//:defs.bzl", store_928 = "npm_imported_package_store") -load("@@_main~npm~npm__signal-exit__3.0.7__links//:defs.bzl", store_929 = "npm_imported_package_store") -load("@@_main~npm~npm__signal-exit__4.1.0__links//:defs.bzl", store_930 = "npm_imported_package_store") -load("@@_main~npm~npm__signum__1.0.0__links//:defs.bzl", store_931 = "npm_imported_package_store") -load("@@_main~npm~npm__simple-swizzle__0.2.2__links//:defs.bzl", store_932 = "npm_imported_package_store") -load("@@_main~npm~npm__sirv__1.0.19__links//:defs.bzl", store_933 = "npm_imported_package_store") -load("@@_main~npm~npm__smart-buffer__4.2.0__links//:defs.bzl", store_934 = "npm_imported_package_store") -load("@@_main~npm~npm__smob__1.5.0__links//:defs.bzl", store_935 = "npm_imported_package_store") -load("@@_main~npm~npm__socks-proxy-agent__7.0.0__links//:defs.bzl", store_936 = "npm_imported_package_store") -load("@@_main~npm~npm__socks__2.7.1__links//:defs.bzl", store_937 = "npm_imported_package_store") -load("@@_main~npm~npm__source-map-js__1.0.2__links//:defs.bzl", store_938 = "npm_imported_package_store") -load("@@_main~npm~npm__source-map-js__1.2.1__links//:defs.bzl", store_939 = "npm_imported_package_store") -load("@@_main~npm~npm__source-map-support__0.5.21__links//:defs.bzl", link_940 = "npm_link_imported_package_store", store_940 = "npm_imported_package_store") -load("@@_main~npm~npm__source-map__0.6.1__links//:defs.bzl", store_941 = "npm_imported_package_store") -load("@@_main~npm~npm__sourcemap-codec__1.4.8__links//:defs.bzl", store_942 = "npm_imported_package_store") -load("@@_main~npm~npm__sshpk__1.17.0__links//:defs.bzl", store_943 = "npm_imported_package_store") -load("@@_main~npm~npm__ssri__9.0.1__links//:defs.bzl", store_944 = "npm_imported_package_store") -load("@@_main~npm~npm__stack-trace__0.0.9__links//:defs.bzl", store_945 = "npm_imported_package_store") -load("@@_main~npm~npm__static-eval__2.1.0__links//:defs.bzl", store_946 = "npm_imported_package_store") -load("@@_main~npm~npm__statuses__2.0.1__links//:defs.bzl", store_947 = "npm_imported_package_store") -load("@@_main~npm~npm__stream-buffers__3.0.2__links//:defs.bzl", store_948 = "npm_imported_package_store") -load("@@_main~npm~npm__stream-parser__0.3.1__links//:defs.bzl", store_949 = "npm_imported_package_store") -load("@@_main~npm~npm__stream-shift__1.0.1__links//:defs.bzl", store_950 = "npm_imported_package_store") -load("@@_main~npm~npm__streamsearch__1.1.0__links//:defs.bzl", store_951 = "npm_imported_package_store") -load("@@_main~npm~npm__string-split-by__1.0.0__links//:defs.bzl", store_952 = "npm_imported_package_store") -load("@@_main~npm~npm__string-width__1.0.2__links//:defs.bzl", store_953 = "npm_imported_package_store") -load("@@_main~npm~npm__string-width__4.2.3__links//:defs.bzl", store_954 = "npm_imported_package_store") -load("@@_main~npm~npm__string-width__5.1.2__links//:defs.bzl", store_955 = "npm_imported_package_store") -load("@@_main~npm~npm__string_decoder__0.10.31__links//:defs.bzl", store_956 = "npm_imported_package_store") -load("@@_main~npm~npm__string_decoder__1.1.1__links//:defs.bzl", store_957 = "npm_imported_package_store") -load("@@_main~npm~npm__string_decoder__1.3.0__links//:defs.bzl", store_958 = "npm_imported_package_store") -load("@@_main~npm~npm__strip-ansi__3.0.1__links//:defs.bzl", store_959 = "npm_imported_package_store") -load("@@_main~npm~npm__strip-ansi__6.0.1__links//:defs.bzl", store_960 = "npm_imported_package_store") -load("@@_main~npm~npm__strip-ansi__7.1.0__links//:defs.bzl", store_961 = "npm_imported_package_store") -load("@@_main~npm~npm__strip-bom__4.0.0__links//:defs.bzl", store_962 = "npm_imported_package_store") -load("@@_main~npm~npm__strip-json-comments__2.0.1__links//:defs.bzl", store_963 = "npm_imported_package_store") -load("@@_main~npm~npm__strip-json-comments__3.1.1__links//:defs.bzl", store_964 = "npm_imported_package_store") -load("@@_main~npm~npm__strongly-connected-components__1.0.1__links//:defs.bzl", store_965 = "npm_imported_package_store") -load("@@_main~npm~npm__styled-jsx__5.1.6_react_19.1.0__links//:defs.bzl", store_966 = "npm_imported_package_store") -load("@@_main~npm~npm__supercluster__7.1.5__links//:defs.bzl", store_967 = "npm_imported_package_store") -load("@@_main~npm~npm__superscript-text__1.0.0__links//:defs.bzl", store_968 = "npm_imported_package_store") -load("@@_main~npm~npm__supports-color__5.5.0__links//:defs.bzl", store_969 = "npm_imported_package_store") -load("@@_main~npm~npm__supports-color__7.2.0__links//:defs.bzl", store_970 = "npm_imported_package_store") -load("@@_main~npm~npm__supports-color__8.1.1__links//:defs.bzl", store_971 = "npm_imported_package_store") -load("@@_main~npm~npm__supports-preserve-symlinks-flag__1.0.0__links//:defs.bzl", store_972 = "npm_imported_package_store") -load("@@_main~npm~npm__svg-arc-to-cubic-bezier__3.2.0__links//:defs.bzl", store_973 = "npm_imported_package_store") -load("@@_main~npm~npm__svg-path-bounds__1.0.2__links//:defs.bzl", store_974 = "npm_imported_package_store") -load("@@_main~npm~npm__svg-path-sdf__1.1.3__links//:defs.bzl", store_975 = "npm_imported_package_store") -load("@@_main~npm~npm__syncpack__github.com_JamieMason_syncpack_c245af8ea73ce3345d92bbda6c684092a841e262__links//:defs.bzl", link_976 = "npm_link_imported_package_store", store_976 = "npm_imported_package_store") -load("@@_main~npm~npm__tailwindcss__4.1.0__links//:defs.bzl", link_977 = "npm_link_imported_package_store", store_977 = "npm_imported_package_store") -load("@@_main~npm~npm__tapable__2.2.1__links//:defs.bzl", store_978 = "npm_imported_package_store") -load("@@_main~npm~npm__tar-fs__1.16.3__links//:defs.bzl", store_979 = "npm_imported_package_store") -load("@@_main~npm~npm__tar-fs__2.1.1__links//:defs.bzl", store_980 = "npm_imported_package_store") -load("@@_main~npm~npm__tar-stream__1.6.2__links//:defs.bzl", store_981 = "npm_imported_package_store") -load("@@_main~npm~npm__tar-stream__2.2.0__links//:defs.bzl", store_982 = "npm_imported_package_store") -load("@@_main~npm~npm__tar__4.4.19__links//:defs.bzl", store_983 = "npm_imported_package_store") -load("@@_main~npm~npm__tar__6.1.13__links//:defs.bzl", store_984 = "npm_imported_package_store") -load("@@_main~npm~npm__tar__7.4.3__links//:defs.bzl", store_985 = "npm_imported_package_store") -load("@@_main~npm~npm__terser-webpack-plugin__5.3.6_webpack_5.76.3__links//:defs.bzl", store_986 = "npm_imported_package_store") -load("@@_main~npm~npm__terser__5.16.5__links//:defs.bzl", store_987 = "npm_imported_package_store") -load("@@_main~npm~npm__terser__5.34.1__links//:defs.bzl", store_988 = "npm_imported_package_store") -load("@@_main~npm~npm__test-exclude__6.0.0__links//:defs.bzl", store_989 = "npm_imported_package_store") -load("@@_main~npm~npm__through2__0.6.5__links//:defs.bzl", store_990 = "npm_imported_package_store") -load("@@_main~npm~npm__through2__2.0.5__links//:defs.bzl", store_991 = "npm_imported_package_store") -load("@@_main~npm~npm__through__2.3.8__links//:defs.bzl", store_992 = "npm_imported_package_store") -load("@@_main~npm~npm__tightrope__0.1.0__links//:defs.bzl", store_993 = "npm_imported_package_store") -load("@@_main~npm~npm__tiny-emitter__2.1.0__links//:defs.bzl", store_994 = "npm_imported_package_store") -load("@@_main~npm~npm__tinycolor2__1.6.0__links//:defs.bzl", store_995 = "npm_imported_package_store") -load("@@_main~npm~npm__tinyqueue__2.0.3__links//:defs.bzl", store_996 = "npm_imported_package_store") -load("@@_main~npm~npm__tmp__0.0.33__links//:defs.bzl", store_997 = "npm_imported_package_store") -load("@@_main~npm~npm__to-buffer__1.1.1__links//:defs.bzl", store_998 = "npm_imported_package_store") -load("@@_main~npm~npm__to-fast-properties__2.0.0__links//:defs.bzl", store_999 = "npm_imported_package_store") -load("@@_main~npm~npm__to-float32__1.1.0__links//:defs.bzl", store_1000 = "npm_imported_package_store") -load("@@_main~npm~npm__to-px__1.0.1__links//:defs.bzl", store_1001 = "npm_imported_package_store") -load("@@_main~npm~npm__to-readable-stream__2.1.0__links//:defs.bzl", store_1002 = "npm_imported_package_store") -load("@@_main~npm~npm__to-regex-range__5.0.1__links//:defs.bzl", store_1003 = "npm_imported_package_store") -load("@@_main~npm~npm__toidentifier__1.0.1__links//:defs.bzl", store_1004 = "npm_imported_package_store") -load("@@_main~npm~npm__topojson-client__3.1.0__links//:defs.bzl", store_1005 = "npm_imported_package_store") -load("@@_main~npm~npm__totalist__1.1.0__links//:defs.bzl", store_1006 = "npm_imported_package_store") -load("@@_main~npm~npm__tough-cookie__2.5.0__links//:defs.bzl", store_1007 = "npm_imported_package_store") -load("@@_main~npm~npm__tr46__0.0.3__links//:defs.bzl", store_1008 = "npm_imported_package_store") -load("@@_main~npm~npm__tslib__2.7.0__links//:defs.bzl", link_1009 = "npm_link_imported_package_store", store_1009 = "npm_imported_package_store") -load("@@_main~npm~npm__tslib__2.8.1__links//:defs.bzl", store_1010 = "npm_imported_package_store") -load("@@_main~npm~npm__tunnel-agent__0.6.0__links//:defs.bzl", store_1011 = "npm_imported_package_store") -load("@@_main~npm~npm__tweetnacl__0.14.5__links//:defs.bzl", store_1012 = "npm_imported_package_store") -load("@@_main~npm~npm__type-check__0.3.2__links//:defs.bzl", store_1013 = "npm_imported_package_store") -load("@@_main~npm~npm__type-fest__0.10.0__links//:defs.bzl", store_1014 = "npm_imported_package_store") -load("@@_main~npm~npm__type__1.2.0__links//:defs.bzl", store_1015 = "npm_imported_package_store") -load("@@_main~npm~npm__type__2.7.2__links//:defs.bzl", store_1016 = "npm_imported_package_store") -load("@@_main~npm~npm__typed-function__4.1.0__links//:defs.bzl", store_1017 = "npm_imported_package_store") -load("@@_main~npm~npm__typedarray-pool__1.2.0__links//:defs.bzl", store_1018 = "npm_imported_package_store") -load("@@_main~npm~npm__typedarray__0.0.6__links//:defs.bzl", store_1019 = "npm_imported_package_store") -load("@@_main~npm~npm__typeof-article__0.1.1__links//:defs.bzl", store_1020 = "npm_imported_package_store") -load("@@_main~npm~npm__typescript__4.9.5__links//:defs.bzl", link_1021 = "npm_link_imported_package_store", store_1021 = "npm_imported_package_store") -load("@@_main~npm~npm__ufo__1.1.0__links//:defs.bzl", store_1022 = "npm_imported_package_store") -load("@@_main~npm~npm__unbzip2-stream__1.4.3__links//:defs.bzl", store_1023 = "npm_imported_package_store") -load("@@_main~npm~npm__undici-types__5.26.5__links//:defs.bzl", store_1024 = "npm_imported_package_store") -load("@@_main~npm~npm__undici-types__6.19.8__links//:defs.bzl", store_1025 = "npm_imported_package_store") -load("@@_main~npm~npm__unique-filename__2.0.1__links//:defs.bzl", store_1026 = "npm_imported_package_store") -load("@@_main~npm~npm__unique-slug__3.0.0__links//:defs.bzl", store_1027 = "npm_imported_package_store") -load("@@_main~npm~npm__universalify__0.1.2__links//:defs.bzl", store_1028 = "npm_imported_package_store") -load("@@_main~npm~npm__universalify__2.0.0__links//:defs.bzl", store_1029 = "npm_imported_package_store") -load("@@_main~npm~npm__unix-dgram__2.0.6__links//:defs.bzl", store_1030 = "npm_imported_package_store") -load("@@_main~npm~npm__unquote__1.1.1__links//:defs.bzl", store_1031 = "npm_imported_package_store") -load("@@_main~npm~npm__unused__0.2.2__links//:defs.bzl", link_1032 = "npm_link_imported_package_store", store_1032 = "npm_imported_package_store") -load("@@_main~npm~npm__update-browserslist-db__1.0.10_browserslist_4.21.5__links//:defs.bzl", store_1033 = "npm_imported_package_store") -load("@@_main~npm~npm__update-diff__1.1.0__links//:defs.bzl", store_1034 = "npm_imported_package_store") -load("@@_main~npm~npm__uri-js__4.4.1__links//:defs.bzl", store_1035 = "npm_imported_package_store") -load("@@_main~npm~npm__util-deprecate__1.0.2__links//:defs.bzl", store_1036 = "npm_imported_package_store") -load("@@_main~npm~npm__uuid__3.4.0__links//:defs.bzl", store_1037 = "npm_imported_package_store") -load("@@_main~npm~npm__uuid__8.3.2__links//:defs.bzl", link_1038 = "npm_link_imported_package_store", store_1038 = "npm_imported_package_store") -load("@@_main~npm~npm__uvu__0.5.3__links//:defs.bzl", link_1039 = "npm_link_imported_package_store", store_1039 = "npm_imported_package_store") -load("@@_main~npm~npm__v8-to-istanbul__9.1.0__links//:defs.bzl", store_1040 = "npm_imported_package_store") -load("@@_main~npm~npm__verror__1.10.0__links//:defs.bzl", store_1041 = "npm_imported_package_store") -load("@@_main~npm~npm__vt-pbf__3.1.3__links//:defs.bzl", store_1042 = "npm_imported_package_store") -load("@@_main~npm~npm__watchpack__2.4.0__links//:defs.bzl", store_1043 = "npm_imported_package_store") -load("@@_main~npm~npm__weak-map__1.0.8__links//:defs.bzl", store_1044 = "npm_imported_package_store") -load("@@_main~npm~npm__webgl-context__2.2.0__links//:defs.bzl", store_1045 = "npm_imported_package_store") -load("@@_main~npm~npm__webidl-conversions__3.0.1__links//:defs.bzl", store_1046 = "npm_imported_package_store") -load("@@_main~npm~npm__webpack-bundle-analyzer__4.5.0_bufferutil_4.0.8__links//:defs.bzl", link_1047 = "npm_link_imported_package_store", store_1047 = "npm_imported_package_store") -load("@@_main~npm~npm__webpack-cli__5.0.1_webpack_5.76.3__links//:defs.bzl", link_1048 = "npm_link_imported_package_store", store_1048 = "npm_imported_package_store") -load("@@_main~npm~npm__webpack-merge__5.8.0__links//:defs.bzl", store_1049 = "npm_imported_package_store") -load("@@_main~npm~npm__webpack-sources__3.2.3__links//:defs.bzl", store_1050 = "npm_imported_package_store") -load("@@_main~npm~npm__webpack__5.76.3_webpack-cli_5.0.1__links//:defs.bzl", link_1051 = "npm_link_imported_package_store", store_1051 = "npm_imported_package_store") -load("@@_main~npm~npm__whatwg-url__5.0.0__links//:defs.bzl", store_1052 = "npm_imported_package_store") -load("@@_main~npm~npm__which__2.0.2__links//:defs.bzl", store_1053 = "npm_imported_package_store") -load("@@_main~npm~npm__wide-align__1.1.5__links//:defs.bzl", store_1054 = "npm_imported_package_store") -load("@@_main~npm~npm__wildcard__2.0.0__links//:defs.bzl", store_1055 = "npm_imported_package_store") -load("@@_main~npm~npm__word-wrap__1.2.3__links//:defs.bzl", store_1056 = "npm_imported_package_store") -load("@@_main~npm~npm__wordwrap__0.0.3__links//:defs.bzl", store_1057 = "npm_imported_package_store") -load("@@_main~npm~npm__workerpool__6.2.1__links//:defs.bzl", store_1058 = "npm_imported_package_store") -load("@@_main~npm~npm__world-calendars__1.0.3__links//:defs.bzl", store_1059 = "npm_imported_package_store") -load("@@_main~npm~npm__wrap-ansi__7.0.0__links//:defs.bzl", store_1060 = "npm_imported_package_store") -load("@@_main~npm~npm__wrap-ansi__8.1.0__links//:defs.bzl", store_1061 = "npm_imported_package_store") -load("@@_main~npm~npm__wrappy__1.0.2__links//:defs.bzl", store_1062 = "npm_imported_package_store") -load("@@_main~npm~npm__ws__7.5.9_bufferutil_4.0.8__links//:defs.bzl", store_1063 = "npm_imported_package_store") -load("@@_main~npm~npm__ws__8.13.0_bufferutil_4.0.8__links//:defs.bzl", store_1064 = "npm_imported_package_store") -load("@@_main~npm~npm__ws__8.18.0_bufferutil_4.0.8__links//:defs.bzl", store_1065 = "npm_imported_package_store") -load("@@_main~npm~npm__xml__1.0.1__links//:defs.bzl", store_1066 = "npm_imported_package_store") -load("@@_main~npm~npm__xtend__2.2.0__links//:defs.bzl", store_1067 = "npm_imported_package_store") -load("@@_main~npm~npm__xtend__4.0.2__links//:defs.bzl", store_1068 = "npm_imported_package_store") -load("@@_main~npm~npm__y18n__5.0.8__links//:defs.bzl", store_1069 = "npm_imported_package_store") -load("@@_main~npm~npm__yallist__3.1.1__links//:defs.bzl", store_1070 = "npm_imported_package_store") -load("@@_main~npm~npm__yallist__4.0.0__links//:defs.bzl", store_1071 = "npm_imported_package_store") -load("@@_main~npm~npm__yallist__5.0.0__links//:defs.bzl", store_1072 = "npm_imported_package_store") -load("@@_main~npm~npm__yargs-parser__20.2.4__links//:defs.bzl", store_1073 = "npm_imported_package_store") -load("@@_main~npm~npm__yargs-parser__20.2.9__links//:defs.bzl", store_1074 = "npm_imported_package_store") -load("@@_main~npm~npm__yargs-parser__21.1.1__links//:defs.bzl", store_1075 = "npm_imported_package_store") -load("@@_main~npm~npm__yargs-unparser__2.0.0__links//:defs.bzl", store_1076 = "npm_imported_package_store") -load("@@_main~npm~npm__yargs__16.2.0__links//:defs.bzl", store_1077 = "npm_imported_package_store") -load("@@_main~npm~npm__yargs__17.7.1__links//:defs.bzl", store_1078 = "npm_imported_package_store") -load("@@_main~npm~npm__yauzl__2.10.0__links//:defs.bzl", store_1079 = "npm_imported_package_store") -load("@@_main~npm~npm__yocto-queue__0.1.0__links//:defs.bzl", store_1080 = "npm_imported_package_store") -load("@@_main~npm~npm__zod__3.21.4__links//:defs.bzl", store_1081 = "npm_imported_package_store") +load("@@_main~npm~npm__at_jridgewell_resolve-uri__3.1.0__links//:defs.bzl", store_155 = "npm_imported_package_store") +load("@@_main~npm~npm__at_jridgewell_set-array__1.1.2__links//:defs.bzl", store_156 = "npm_imported_package_store") +load("@@_main~npm~npm__at_jridgewell_source-map__0.3.2__links//:defs.bzl", store_157 = "npm_imported_package_store") +load("@@_main~npm~npm__at_jridgewell_sourcemap-codec__1.4.14__links//:defs.bzl", store_158 = "npm_imported_package_store") +load("@@_main~npm~npm__at_jridgewell_sourcemap-codec__1.5.0__links//:defs.bzl", store_159 = "npm_imported_package_store") +load("@@_main~npm~npm__at_jridgewell_trace-mapping__0.3.17__links//:defs.bzl", store_160 = "npm_imported_package_store") +load("@@_main~npm~npm__at_jsep-plugin_assignment__1.2.1_jsep_1.3.9__links//:defs.bzl", store_161 = "npm_imported_package_store") +load("@@_main~npm~npm__at_jsep-plugin_regex__1.0.3_jsep_1.3.9__links//:defs.bzl", store_162 = "npm_imported_package_store") +load("@@_main~npm~npm__at_kubernetes_client-node__github.com_kubernetes-client_javascript_bd6ab5810d013103d244ddaebe0304649c012b38_bufferutil_4.0.8__links//:defs.bzl", link_163 = "npm_link_imported_package_store", store_163 = "npm_imported_package_store") +load("@@_main~npm~npm__at_lukeed_ms__2.0.2__links//:defs.bzl", store_164 = "npm_imported_package_store") +load("@@_main~npm~npm__at_mapbox_geojson-rewind__0.5.2__links//:defs.bzl", store_165 = "npm_imported_package_store") +load("@@_main~npm~npm__at_mapbox_geojson-types__1.0.2__links//:defs.bzl", store_166 = "npm_imported_package_store") +load("@@_main~npm~npm__at_mapbox_jsonlint-lines-primitives__2.0.2__links//:defs.bzl", store_167 = "npm_imported_package_store") +load("@@_main~npm~npm__at_mapbox_mapbox-gl-supported__1.5.0_mapbox-gl_1.10.1__links//:defs.bzl", store_168 = "npm_imported_package_store") +load("@@_main~npm~npm__at_mapbox_node-pre-gyp__1.0.10__links//:defs.bzl", store_169 = "npm_imported_package_store") +load("@@_main~npm~npm__at_mapbox_point-geometry__0.1.0__links//:defs.bzl", store_170 = "npm_imported_package_store") +load("@@_main~npm~npm__at_mapbox_tiny-sdf__1.2.5__links//:defs.bzl", store_171 = "npm_imported_package_store") +load("@@_main~npm~npm__at_mapbox_unitbezier__0.0.0__links//:defs.bzl", store_172 = "npm_imported_package_store") +load("@@_main~npm~npm__at_mapbox_vector-tile__1.3.1__links//:defs.bzl", store_173 = "npm_imported_package_store") +load("@@_main~npm~npm__at_mapbox_whoots-js__3.1.0__links//:defs.bzl", store_174 = "npm_imported_package_store") +load("@@_main~npm~npm__at_next_env__15.2.4__links//:defs.bzl", store_175 = "npm_imported_package_store") +load("@@_main~npm~npm__at_next_swc-darwin-arm64__15.2.4__links//:defs.bzl", store_176 = "npm_imported_package_store") +load("@@_main~npm~npm__at_next_swc-darwin-x64__15.2.4__links//:defs.bzl", store_177 = "npm_imported_package_store") +load("@@_main~npm~npm__at_next_swc-linux-arm64-gnu__15.2.4__links//:defs.bzl", store_178 = "npm_imported_package_store") +load("@@_main~npm~npm__at_next_swc-linux-arm64-musl__15.2.4__links//:defs.bzl", store_179 = "npm_imported_package_store") +load("@@_main~npm~npm__at_next_swc-linux-x64-gnu__15.2.4__links//:defs.bzl", store_180 = "npm_imported_package_store") +load("@@_main~npm~npm__at_next_swc-linux-x64-musl__15.2.4__links//:defs.bzl", store_181 = "npm_imported_package_store") +load("@@_main~npm~npm__at_next_swc-win32-arm64-msvc__15.2.4__links//:defs.bzl", store_182 = "npm_imported_package_store") +load("@@_main~npm~npm__at_next_swc-win32-x64-msvc__15.2.4__links//:defs.bzl", store_183 = "npm_imported_package_store") +load("@@_main~npm~npm__at_npmcli_fs__2.1.2__links//:defs.bzl", store_184 = "npm_imported_package_store") +load("@@_main~npm~npm__at_npmcli_move-file__2.0.1__links//:defs.bzl", store_185 = "npm_imported_package_store") +load("@@_main~npm~npm__at_pkgjs_parseargs__0.11.0__links//:defs.bzl", store_186 = "npm_imported_package_store") +load("@@_main~npm~npm__at_plotly_d3-sankey-circular__0.33.1__links//:defs.bzl", store_187 = "npm_imported_package_store") +load("@@_main~npm~npm__at_plotly_d3-sankey__0.7.2__links//:defs.bzl", store_188 = "npm_imported_package_store") +load("@@_main~npm~npm__at_plotly_d3__3.8.1__links//:defs.bzl", store_189 = "npm_imported_package_store") +load("@@_main~npm~npm__at_plotly_point-cluster__3.1.9__links//:defs.bzl", store_190 = "npm_imported_package_store") +load("@@_main~npm~npm__at_plotly_regl__2.1.2__links//:defs.bzl", link_191 = "npm_link_imported_package_store", store_191 = "npm_imported_package_store") +load("@@_main~npm~npm__at_polka_url__1.0.0-next.21__links//:defs.bzl", store_192 = "npm_imported_package_store") +load("@@_main~npm~npm__at_puppeteer_browsers__0.5.0_typescript_4.9.5__links//:defs.bzl", store_193 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_plugin-commonjs__21.1.0_rollup_2.70.2__links//:defs.bzl", link_194 = "npm_link_imported_package_store", store_194 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_plugin-commonjs__28.0.3_rollup_4.39.0__links//:defs.bzl", link_195 = "npm_link_imported_package_store", store_195 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_plugin-json__6.1.0_rollup_4.39.0__links//:defs.bzl", link_196 = "npm_link_imported_package_store", store_196 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_plugin-node-resolve__16.0.1_rollup_4.39.0__links//:defs.bzl", link_197 = "npm_link_imported_package_store", store_197 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_plugin-typescript__12.1.2_405955005__links//:defs.bzl", link_198 = "npm_link_imported_package_store", store_198 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_pluginutils__3.1.0_rollup_2.70.2__links//:defs.bzl", store_199 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_pluginutils__5.0.2_rollup_4.39.0__links//:defs.bzl", store_200 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_pluginutils__5.1.4_rollup_4.39.0__links//:defs.bzl", store_201 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-android-arm-eabi__4.39.0__links//:defs.bzl", store_202 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-android-arm64__4.39.0__links//:defs.bzl", store_203 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-darwin-arm64__4.39.0__links//:defs.bzl", store_204 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-darwin-x64__4.39.0__links//:defs.bzl", store_205 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-freebsd-arm64__4.39.0__links//:defs.bzl", store_206 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-freebsd-x64__4.39.0__links//:defs.bzl", store_207 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-linux-arm-gnueabihf__4.39.0__links//:defs.bzl", store_208 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-linux-arm-musleabihf__4.39.0__links//:defs.bzl", store_209 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-linux-arm64-gnu__4.39.0__links//:defs.bzl", store_210 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-linux-arm64-musl__4.39.0__links//:defs.bzl", store_211 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-linux-loongarch64-gnu__4.39.0__links//:defs.bzl", store_212 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-linux-powerpc64le-gnu__4.39.0__links//:defs.bzl", store_213 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-linux-riscv64-gnu__4.39.0__links//:defs.bzl", store_214 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-linux-riscv64-musl__4.39.0__links//:defs.bzl", store_215 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-linux-s390x-gnu__4.39.0__links//:defs.bzl", store_216 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-linux-x64-gnu__4.39.0__links//:defs.bzl", store_217 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-linux-x64-musl__4.39.0__links//:defs.bzl", store_218 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-win32-arm64-msvc__4.39.0__links//:defs.bzl", store_219 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-win32-ia32-msvc__4.39.0__links//:defs.bzl", store_220 = "npm_imported_package_store") +load("@@_main~npm~npm__at_rollup_rollup-win32-x64-msvc__4.39.0__links//:defs.bzl", store_221 = "npm_imported_package_store") +load("@@_main~npm~npm__at_sindresorhus_is__2.1.1__links//:defs.bzl", store_222 = "npm_imported_package_store") +load("@@_main~npm~npm__at_swc_counter__0.1.3__links//:defs.bzl", store_223 = "npm_imported_package_store") +load("@@_main~npm~npm__at_swc_helpers__0.5.15__links//:defs.bzl", store_224 = "npm_imported_package_store") +load("@@_main~npm~npm__at_szmarczak_http-timer__4.0.6__links//:defs.bzl", store_225 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_node__4.1.0__links//:defs.bzl", store_226 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide-android-arm64__4.1.0__links//:defs.bzl", store_227 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide-darwin-arm64__4.1.0__links//:defs.bzl", store_228 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide-darwin-x64__4.1.0__links//:defs.bzl", store_229 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide-freebsd-x64__4.1.0__links//:defs.bzl", store_230 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide-linux-arm-gnueabihf__4.1.0__links//:defs.bzl", store_231 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide-linux-arm64-gnu__4.1.0__links//:defs.bzl", store_232 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide-linux-arm64-musl__4.1.0__links//:defs.bzl", store_233 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide-linux-x64-gnu__4.1.0__links//:defs.bzl", store_234 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide-linux-x64-musl__4.1.0__links//:defs.bzl", store_235 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide-win32-arm64-msvc__4.1.0__links//:defs.bzl", store_236 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide-win32-x64-msvc__4.1.0__links//:defs.bzl", store_237 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_oxide__4.1.0__links//:defs.bzl", store_238 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tailwindcss_postcss__4.1.0__links//:defs.bzl", link_239 = "npm_link_imported_package_store", store_239 = "npm_imported_package_store") +load("@@_main~npm~npm__at_tootallnate_once__2.0.0__links//:defs.bzl", store_240 = "npm_imported_package_store") +load("@@_main~npm~npm__at_turf_area__6.5.0__links//:defs.bzl", store_241 = "npm_imported_package_store") +load("@@_main~npm~npm__at_turf_bbox__6.5.0__links//:defs.bzl", store_242 = "npm_imported_package_store") +load("@@_main~npm~npm__at_turf_centroid__6.5.0__links//:defs.bzl", store_243 = "npm_imported_package_store") +load("@@_main~npm~npm__at_turf_helpers__6.5.0__links//:defs.bzl", store_244 = "npm_imported_package_store") +load("@@_main~npm~npm__at_turf_meta__6.5.0__links//:defs.bzl", store_245 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_cacheable-request__6.0.3__links//:defs.bzl", store_246 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_caseless__0.12.2__links//:defs.bzl", store_247 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_eslint-scope__3.7.4__links//:defs.bzl", store_248 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_eslint__8.21.1__links//:defs.bzl", store_249 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_estree__0.0.39__links//:defs.bzl", store_250 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_estree__0.0.51__links//:defs.bzl", store_251 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_estree__1.0.0__links//:defs.bzl", store_252 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_estree__1.0.7__links//:defs.bzl", store_253 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_google-protobuf__3.15.12__links//:defs.bzl", link_254 = "npm_link_imported_package_store", store_254 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_http-cache-semantics__4.0.1__links//:defs.bzl", store_255 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_istanbul-lib-coverage__2.0.4__links//:defs.bzl", store_256 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_js-yaml__4.0.5__links//:defs.bzl", store_257 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_json-schema__7.0.11__links//:defs.bzl", store_258 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_keyv__3.1.4__links//:defs.bzl", store_259 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_node__16.18.112__links//:defs.bzl", link_260 = "npm_link_imported_package_store", store_260 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_node__18.13.0__links//:defs.bzl", link_261 = "npm_link_imported_package_store", store_261 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_node__18.19.54__links//:defs.bzl", link_262 = "npm_link_imported_package_store", store_262 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_node__22.7.4__links//:defs.bzl", store_263 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_request__2.48.8__links//:defs.bzl", store_264 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_resolve__1.20.2__links//:defs.bzl", store_265 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_responselike__1.0.0__links//:defs.bzl", store_266 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_tough-cookie__4.0.2__links//:defs.bzl", store_267 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_underscore__1.11.4__links//:defs.bzl", store_268 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_ws__8.5.5__links//:defs.bzl", store_269 = "npm_imported_package_store") +load("@@_main~npm~npm__at_types_yauzl__2.10.0__links//:defs.bzl", store_270 = "npm_imported_package_store") +load("@@_main~npm~npm__at_vanilla-extract_babel-plugin-debug-ids__1.0.1__links//:defs.bzl", store_271 = "npm_imported_package_store") +load("@@_main~npm~npm__at_vanilla-extract_css__1.9.2__links//:defs.bzl", link_272 = "npm_link_imported_package_store", store_272 = "npm_imported_package_store") +load("@@_main~npm~npm__at_vanilla-extract_css__1.9.5__links//:defs.bzl", store_273 = "npm_imported_package_store") +load("@@_main~npm~npm__at_vanilla-extract_integration__6.1.0__links//:defs.bzl", store_274 = "npm_imported_package_store") +load("@@_main~npm~npm__at_vanilla-extract_private__1.0.3__links//:defs.bzl", store_275 = "npm_imported_package_store") +load("@@_main~npm~npm__at_vanilla-extract_webpack-plugin__2.2.0_webpack_5.76.3__links//:defs.bzl", link_276 = "npm_link_imported_package_store", store_276 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_ast__1.11.1__links//:defs.bzl", store_277 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_floating-point-hex-parser__1.11.1__links//:defs.bzl", store_278 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_helper-api-error__1.11.1__links//:defs.bzl", store_279 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_helper-buffer__1.11.1__links//:defs.bzl", store_280 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_helper-numbers__1.11.1__links//:defs.bzl", store_281 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_helper-wasm-bytecode__1.11.1__links//:defs.bzl", store_282 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_helper-wasm-section__1.11.1__links//:defs.bzl", store_283 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_ieee754__1.11.1__links//:defs.bzl", store_284 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_leb128__1.11.1__links//:defs.bzl", store_285 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_utf8__1.11.1__links//:defs.bzl", store_286 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_wasm-edit__1.11.1__links//:defs.bzl", store_287 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_wasm-gen__1.11.1__links//:defs.bzl", store_288 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_wasm-opt__1.11.1__links//:defs.bzl", store_289 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_wasm-parser__1.11.1__links//:defs.bzl", store_290 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webassemblyjs_wast-printer__1.11.1__links//:defs.bzl", store_291 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webpack-cli_configtest__2.0.1_1256213976__links//:defs.bzl", store_292 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webpack-cli_info__2.0.1_1256213976__links//:defs.bzl", store_293 = "npm_imported_package_store") +load("@@_main~npm~npm__at_webpack-cli_serve__2.0.1_1256213976__links//:defs.bzl", store_294 = "npm_imported_package_store") +load("@@_main~npm~npm__at_xtuc_ieee754__1.2.0__links//:defs.bzl", store_295 = "npm_imported_package_store") +load("@@_main~npm~npm__at_xtuc_long__4.2.2__links//:defs.bzl", store_296 = "npm_imported_package_store") +load("@@_main~npm~npm__aws-sign2__0.7.0__links//:defs.bzl", store_297 = "npm_imported_package_store") +load("@@_main~npm~npm__aws4__1.12.0__links//:defs.bzl", store_298 = "npm_imported_package_store") +load("@@_main~npm~npm__balanced-match__1.0.2__links//:defs.bzl", store_299 = "npm_imported_package_store") +load("@@_main~npm~npm__base64-js__1.5.1__links//:defs.bzl", store_300 = "npm_imported_package_store") +load("@@_main~npm~npm__bcrypt-pbkdf__1.0.2__links//:defs.bzl", store_301 = "npm_imported_package_store") +load("@@_main~npm~npm__big.js__5.2.2__links//:defs.bzl", store_302 = "npm_imported_package_store") +load("@@_main~npm~npm__binary-extensions__2.2.0__links//:defs.bzl", store_303 = "npm_imported_package_store") +load("@@_main~npm~npm__binary-search-bounds__2.0.5__links//:defs.bzl", store_304 = "npm_imported_package_store") +load("@@_main~npm~npm__bindings__1.5.0__links//:defs.bzl", store_305 = "npm_imported_package_store") +load("@@_main~npm~npm__bit-twiddle__1.0.2__links//:defs.bzl", store_306 = "npm_imported_package_store") +load("@@_main~npm~npm__bitmap-sdf__1.0.4__links//:defs.bzl", store_307 = "npm_imported_package_store") +load("@@_main~npm~npm__bl__1.2.3__links//:defs.bzl", store_308 = "npm_imported_package_store") +load("@@_main~npm~npm__bl__2.2.1__links//:defs.bzl", store_309 = "npm_imported_package_store") +load("@@_main~npm~npm__bl__4.1.0__links//:defs.bzl", store_310 = "npm_imported_package_store") +load("@@_main~npm~npm__brace-expansion__1.1.11__links//:defs.bzl", store_311 = "npm_imported_package_store") +load("@@_main~npm~npm__brace-expansion__2.0.1__links//:defs.bzl", store_312 = "npm_imported_package_store") +load("@@_main~npm~npm__braces__3.0.2__links//:defs.bzl", store_313 = "npm_imported_package_store") +load("@@_main~npm~npm__browser-stdout__1.3.1__links//:defs.bzl", store_314 = "npm_imported_package_store") +load("@@_main~npm~npm__browserslist__4.21.5__links//:defs.bzl", store_315 = "npm_imported_package_store") +load("@@_main~npm~npm__buffer-alloc-unsafe__1.1.0__links//:defs.bzl", store_316 = "npm_imported_package_store") +load("@@_main~npm~npm__buffer-alloc__1.2.0__links//:defs.bzl", store_317 = "npm_imported_package_store") +load("@@_main~npm~npm__buffer-crc32__0.2.13__links//:defs.bzl", store_318 = "npm_imported_package_store") +load("@@_main~npm~npm__buffer-fill__1.0.0__links//:defs.bzl", store_319 = "npm_imported_package_store") +load("@@_main~npm~npm__buffer-from__1.1.2__links//:defs.bzl", store_320 = "npm_imported_package_store") +load("@@_main~npm~npm__buffer__5.7.1__links//:defs.bzl", store_321 = "npm_imported_package_store") +load("@@_main~npm~npm__bufferutil__4.0.8__links//:defs.bzl", link_322 = "npm_link_imported_package_store", store_322 = "npm_imported_package_store") +load("@@_main~npm~npm__busboy__1.6.0__links//:defs.bzl", store_323 = "npm_imported_package_store") +load("@@_main~npm~npm__byline__5.0.0__links//:defs.bzl", store_324 = "npm_imported_package_store") +load("@@_main~npm~npm__c8__7.13.0__links//:defs.bzl", link_325 = "npm_link_imported_package_store", store_325 = "npm_imported_package_store") +load("@@_main~npm~npm__cacache__16.1.3__links//:defs.bzl", store_326 = "npm_imported_package_store") +load("@@_main~npm~npm__cacheable-lookup__2.0.1__links//:defs.bzl", store_327 = "npm_imported_package_store") +load("@@_main~npm~npm__cacheable-request__7.0.2__links//:defs.bzl", store_328 = "npm_imported_package_store") +load("@@_main~npm~npm__callsites__3.1.0__links//:defs.bzl", store_329 = "npm_imported_package_store") +load("@@_main~npm~npm__camelcase__6.3.0__links//:defs.bzl", store_330 = "npm_imported_package_store") +load("@@_main~npm~npm__caniuse-lite__1.0.30001458__links//:defs.bzl", store_331 = "npm_imported_package_store") +load("@@_main~npm~npm__caniuse-lite__1.0.30001707__links//:defs.bzl", store_332 = "npm_imported_package_store") +load("@@_main~npm~npm__canvas-fit__1.5.0__links//:defs.bzl", store_333 = "npm_imported_package_store") +load("@@_main~npm~npm__caseless__0.12.0__links//:defs.bzl", store_334 = "npm_imported_package_store") +load("@@_main~npm~npm__chalk__2.4.2__links//:defs.bzl", store_335 = "npm_imported_package_store") +load("@@_main~npm~npm__chalk__4.1.2__links//:defs.bzl", store_336 = "npm_imported_package_store") +load("@@_main~npm~npm__chalk__5.0.1__links//:defs.bzl", link_337 = "npm_link_imported_package_store", store_337 = "npm_imported_package_store") +load("@@_main~npm~npm__chalk__5.1.1__links//:defs.bzl", link_338 = "npm_link_imported_package_store", store_338 = "npm_imported_package_store") +load("@@_main~npm~npm__charenc__0.0.2__links//:defs.bzl", store_339 = "npm_imported_package_store") +load("@@_main~npm~npm__chokidar__3.5.3__links//:defs.bzl", store_340 = "npm_imported_package_store") +load("@@_main~npm~npm__chownr__1.1.4__links//:defs.bzl", store_341 = "npm_imported_package_store") +load("@@_main~npm~npm__chownr__2.0.0__links//:defs.bzl", store_342 = "npm_imported_package_store") +load("@@_main~npm~npm__chownr__3.0.0__links//:defs.bzl", store_343 = "npm_imported_package_store") +load("@@_main~npm~npm__chrome-trace-event__1.0.3__links//:defs.bzl", store_344 = "npm_imported_package_store") +load("@@_main~npm~npm__chromium-bidi__0.4.7_devtools-protocol_0.0.1107588__links//:defs.bzl", store_345 = "npm_imported_package_store") +load("@@_main~npm~npm__clamp__1.0.1__links//:defs.bzl", store_346 = "npm_imported_package_store") +load("@@_main~npm~npm__clean-stack__2.2.0__links//:defs.bzl", store_347 = "npm_imported_package_store") +load("@@_main~npm~npm__client-only__0.0.1__links//:defs.bzl", store_348 = "npm_imported_package_store") +load("@@_main~npm~npm__cliui__7.0.4__links//:defs.bzl", store_349 = "npm_imported_package_store") +load("@@_main~npm~npm__cliui__8.0.1__links//:defs.bzl", store_350 = "npm_imported_package_store") +load("@@_main~npm~npm__clone-deep__4.0.1__links//:defs.bzl", store_351 = "npm_imported_package_store") +load("@@_main~npm~npm__clone-response__1.0.3__links//:defs.bzl", store_352 = "npm_imported_package_store") +load("@@_main~npm~npm__code-point-at__1.1.0__links//:defs.bzl", store_353 = "npm_imported_package_store") +load("@@_main~npm~npm__color-alpha__1.0.4__links//:defs.bzl", store_354 = "npm_imported_package_store") +load("@@_main~npm~npm__color-convert__1.9.3__links//:defs.bzl", store_355 = "npm_imported_package_store") +load("@@_main~npm~npm__color-convert__2.0.1__links//:defs.bzl", store_356 = "npm_imported_package_store") +load("@@_main~npm~npm__color-id__1.1.0__links//:defs.bzl", store_357 = "npm_imported_package_store") +load("@@_main~npm~npm__color-name__1.1.3__links//:defs.bzl", store_358 = "npm_imported_package_store") +load("@@_main~npm~npm__color-name__1.1.4__links//:defs.bzl", store_359 = "npm_imported_package_store") +load("@@_main~npm~npm__color-normalize__1.5.0__links//:defs.bzl", store_360 = "npm_imported_package_store") +load("@@_main~npm~npm__color-parse__1.3.8__links//:defs.bzl", store_361 = "npm_imported_package_store") +load("@@_main~npm~npm__color-rgba__2.1.1__links//:defs.bzl", store_362 = "npm_imported_package_store") +load("@@_main~npm~npm__color-space__1.16.0__links//:defs.bzl", store_363 = "npm_imported_package_store") +load("@@_main~npm~npm__color-string__1.9.1__links//:defs.bzl", store_364 = "npm_imported_package_store") +load("@@_main~npm~npm__color-support__1.1.3__links//:defs.bzl", store_365 = "npm_imported_package_store") +load("@@_main~npm~npm__color__4.2.3__links//:defs.bzl", store_366 = "npm_imported_package_store") +load("@@_main~npm~npm__colorette__2.0.19__links//:defs.bzl", store_367 = "npm_imported_package_store") +load("@@_main~npm~npm__combined-stream__1.0.8__links//:defs.bzl", store_368 = "npm_imported_package_store") +load("@@_main~npm~npm__commander__10.0.1__links//:defs.bzl", store_369 = "npm_imported_package_store") +load("@@_main~npm~npm__commander__2.20.3__links//:defs.bzl", store_370 = "npm_imported_package_store") +load("@@_main~npm~npm__commander__7.2.0__links//:defs.bzl", store_371 = "npm_imported_package_store") +load("@@_main~npm~npm__commander__9.5.0__links//:defs.bzl", store_372 = "npm_imported_package_store") +load("@@_main~npm~npm__commondir__1.0.1__links//:defs.bzl", store_373 = "npm_imported_package_store") +load("@@_main~npm~npm__complex.js__2.1.1__links//:defs.bzl", store_374 = "npm_imported_package_store") +load("@@_main~npm~npm__concat-map__0.0.1__links//:defs.bzl", store_375 = "npm_imported_package_store") +load("@@_main~npm~npm__concat-stream__1.6.2__links//:defs.bzl", store_376 = "npm_imported_package_store") +load("@@_main~npm~npm__console-control-strings__1.1.0__links//:defs.bzl", store_377 = "npm_imported_package_store") +load("@@_main~npm~npm__convert-source-map__1.9.0__links//:defs.bzl", store_378 = "npm_imported_package_store") +load("@@_main~npm~npm__core-util-is__1.0.2__links//:defs.bzl", store_379 = "npm_imported_package_store") +load("@@_main~npm~npm__core-util-is__1.0.3__links//:defs.bzl", store_380 = "npm_imported_package_store") +load("@@_main~npm~npm__cosmiconfig__8.1.3__links//:defs.bzl", store_381 = "npm_imported_package_store") +load("@@_main~npm~npm__country-regex__1.1.0__links//:defs.bzl", store_382 = "npm_imported_package_store") +load("@@_main~npm~npm__cross-fetch__3.1.5__links//:defs.bzl", store_383 = "npm_imported_package_store") +load("@@_main~npm~npm__cross-spawn__7.0.3__links//:defs.bzl", store_384 = "npm_imported_package_store") +load("@@_main~npm~npm__crypt__0.0.2__links//:defs.bzl", store_385 = "npm_imported_package_store") +load("@@_main~npm~npm__css-font-size-keywords__1.0.0__links//:defs.bzl", store_386 = "npm_imported_package_store") +load("@@_main~npm~npm__css-font-stretch-keywords__1.0.1__links//:defs.bzl", store_387 = "npm_imported_package_store") +load("@@_main~npm~npm__css-font-style-keywords__1.0.1__links//:defs.bzl", store_388 = "npm_imported_package_store") +load("@@_main~npm~npm__css-font-weight-keywords__1.0.0__links//:defs.bzl", store_389 = "npm_imported_package_store") +load("@@_main~npm~npm__css-font__1.2.0__links//:defs.bzl", store_390 = "npm_imported_package_store") +load("@@_main~npm~npm__css-global-keywords__1.0.1__links//:defs.bzl", store_391 = "npm_imported_package_store") +load("@@_main~npm~npm__css-loader__6.7.3_webpack_5.76.3__links//:defs.bzl", link_392 = "npm_link_imported_package_store", store_392 = "npm_imported_package_store") +load("@@_main~npm~npm__css-system-font-keywords__1.0.0__links//:defs.bzl", store_393 = "npm_imported_package_store") +load("@@_main~npm~npm__css-what__5.1.0__links//:defs.bzl", store_394 = "npm_imported_package_store") +load("@@_main~npm~npm__csscolorparser__1.0.3__links//:defs.bzl", store_395 = "npm_imported_package_store") +load("@@_main~npm~npm__cssesc__3.0.0__links//:defs.bzl", store_396 = "npm_imported_package_store") +load("@@_main~npm~npm__csstype__3.1.1__links//:defs.bzl", store_397 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-array__1.2.4__links//:defs.bzl", store_398 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-collection__1.0.7__links//:defs.bzl", store_399 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-color__1.4.1__links//:defs.bzl", store_400 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-dispatch__1.0.6__links//:defs.bzl", store_401 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-force__1.2.1__links//:defs.bzl", store_402 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-format__1.4.5__links//:defs.bzl", store_403 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-geo-projection__2.9.0__links//:defs.bzl", store_404 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-geo__1.12.1__links//:defs.bzl", store_405 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-hierarchy__1.1.9__links//:defs.bzl", store_406 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-interpolate__3.0.1__links//:defs.bzl", store_407 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-path__1.0.9__links//:defs.bzl", store_408 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-quadtree__1.0.7__links//:defs.bzl", store_409 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-shape__1.3.7__links//:defs.bzl", store_410 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-time-format__2.3.0__links//:defs.bzl", store_411 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-time__1.1.0__links//:defs.bzl", store_412 = "npm_imported_package_store") +load("@@_main~npm~npm__d3-timer__1.0.10__links//:defs.bzl", store_413 = "npm_imported_package_store") +load("@@_main~npm~npm__d__1.0.1__links//:defs.bzl", store_414 = "npm_imported_package_store") +load("@@_main~npm~npm__dashdash__1.14.1__links//:defs.bzl", store_415 = "npm_imported_package_store") +load("@@_main~npm~npm__date.js__0.3.3__links//:defs.bzl", store_416 = "npm_imported_package_store") +load("@@_main~npm~npm__debug__2.6.9__links//:defs.bzl", store_417 = "npm_imported_package_store") +load("@@_main~npm~npm__debug__3.1.0__links//:defs.bzl", store_418 = "npm_imported_package_store") +load("@@_main~npm~npm__debug__3.2.7__links//:defs.bzl", link_419 = "npm_link_imported_package_store", store_419 = "npm_imported_package_store") +load("@@_main~npm~npm__debug__4.3.4_supports-color_8.1.1__links//:defs.bzl", store_420 = "npm_imported_package_store") +load("@@_main~npm~npm__debug__github.com_ngokevin_debug_9742c5f383a6f8046241920156236ade8ec30d53__links//:defs.bzl", link_421 = "npm_link_imported_package_store", store_421 = "npm_imported_package_store") +load("@@_main~npm~npm__decamelize__4.0.0__links//:defs.bzl", store_422 = "npm_imported_package_store") +load("@@_main~npm~npm__decimal.js__10.4.3__links//:defs.bzl", store_423 = "npm_imported_package_store") +load("@@_main~npm~npm__decompress-response__5.0.0__links//:defs.bzl", store_424 = "npm_imported_package_store") +load("@@_main~npm~npm__deep-extend__0.6.0__links//:defs.bzl", store_425 = "npm_imported_package_store") +load("@@_main~npm~npm__deep-is__0.1.4__links//:defs.bzl", store_426 = "npm_imported_package_store") +load("@@_main~npm~npm__deep-object-diff__1.1.9__links//:defs.bzl", store_427 = "npm_imported_package_store") +load("@@_main~npm~npm__deepmerge__4.3.0__links//:defs.bzl", store_428 = "npm_imported_package_store") +load("@@_main~npm~npm__defer-to-connect__2.0.1__links//:defs.bzl", store_429 = "npm_imported_package_store") +load("@@_main~npm~npm__defined__1.0.1__links//:defs.bzl", store_430 = "npm_imported_package_store") +load("@@_main~npm~npm__delayed-stream__1.0.0__links//:defs.bzl", store_431 = "npm_imported_package_store") +load("@@_main~npm~npm__delegates__1.0.0__links//:defs.bzl", store_432 = "npm_imported_package_store") +load("@@_main~npm~npm__depd__1.1.2__links//:defs.bzl", store_433 = "npm_imported_package_store") +load("@@_main~npm~npm__depd__2.0.0__links//:defs.bzl", store_434 = "npm_imported_package_store") +load("@@_main~npm~npm__dequal__2.0.3__links//:defs.bzl", store_435 = "npm_imported_package_store") +load("@@_main~npm~npm__detect-kerning__2.1.2__links//:defs.bzl", store_436 = "npm_imported_package_store") +load("@@_main~npm~npm__detect-libc__1.0.3__links//:defs.bzl", store_437 = "npm_imported_package_store") +load("@@_main~npm~npm__detect-libc__2.0.3__links//:defs.bzl", store_438 = "npm_imported_package_store") +load("@@_main~npm~npm__devtools-protocol__0.0.1107588__links//:defs.bzl", store_439 = "npm_imported_package_store") +load("@@_main~npm~npm__diff__5.0.0__links//:defs.bzl", store_440 = "npm_imported_package_store") +load("@@_main~npm~npm__diff__5.1.0__links//:defs.bzl", store_441 = "npm_imported_package_store") +load("@@_main~npm~npm__draw-svg-path__1.0.0__links//:defs.bzl", store_442 = "npm_imported_package_store") +load("@@_main~npm~npm__dtype__2.0.0__links//:defs.bzl", store_443 = "npm_imported_package_store") +load("@@_main~npm~npm__dup__1.0.0__links//:defs.bzl", store_444 = "npm_imported_package_store") +load("@@_main~npm~npm__duplexer3__0.1.5__links//:defs.bzl", store_445 = "npm_imported_package_store") +load("@@_main~npm~npm__duplexer__0.1.2__links//:defs.bzl", store_446 = "npm_imported_package_store") +load("@@_main~npm~npm__duplexify__3.7.1__links//:defs.bzl", store_447 = "npm_imported_package_store") +load("@@_main~npm~npm__earcut__2.2.4__links//:defs.bzl", store_448 = "npm_imported_package_store") +load("@@_main~npm~npm__eastasianwidth__0.2.0__links//:defs.bzl", store_449 = "npm_imported_package_store") +load("@@_main~npm~npm__ecc-jsbn__0.1.2__links//:defs.bzl", store_450 = "npm_imported_package_store") +load("@@_main~npm~npm__electron-to-chromium__1.4.311__links//:defs.bzl", store_451 = "npm_imported_package_store") +load("@@_main~npm~npm__element-size__1.1.1__links//:defs.bzl", store_452 = "npm_imported_package_store") +load("@@_main~npm~npm__elementary-circuits-directed-graph__1.3.1__links//:defs.bzl", store_453 = "npm_imported_package_store") +load("@@_main~npm~npm__emoji-regex__8.0.0__links//:defs.bzl", store_454 = "npm_imported_package_store") +load("@@_main~npm~npm__emoji-regex__9.2.2__links//:defs.bzl", store_455 = "npm_imported_package_store") +load("@@_main~npm~npm__emojis-list__3.0.0__links//:defs.bzl", store_456 = "npm_imported_package_store") +load("@@_main~npm~npm__encoding__0.1.13__links//:defs.bzl", store_457 = "npm_imported_package_store") +load("@@_main~npm~npm__end-of-stream__1.4.4__links//:defs.bzl", store_458 = "npm_imported_package_store") +load("@@_main~npm~npm__enhanced-resolve__5.12.0__links//:defs.bzl", store_459 = "npm_imported_package_store") +load("@@_main~npm~npm__enhanced-resolve__5.18.1__links//:defs.bzl", store_460 = "npm_imported_package_store") +load("@@_main~npm~npm__env-paths__2.2.1__links//:defs.bzl", store_461 = "npm_imported_package_store") +load("@@_main~npm~npm__envinfo__7.8.1__links//:defs.bzl", store_462 = "npm_imported_package_store") +load("@@_main~npm~npm__err-code__2.0.3__links//:defs.bzl", store_463 = "npm_imported_package_store") +load("@@_main~npm~npm__error-ex__1.3.2__links//:defs.bzl", store_464 = "npm_imported_package_store") +load("@@_main~npm~npm__es-module-lexer__0.9.3__links//:defs.bzl", store_465 = "npm_imported_package_store") +load("@@_main~npm~npm__es5-ext__0.10.62__links//:defs.bzl", store_466 = "npm_imported_package_store") +load("@@_main~npm~npm__es6-iterator__2.0.3__links//:defs.bzl", store_467 = "npm_imported_package_store") +load("@@_main~npm~npm__es6-symbol__3.1.3__links//:defs.bzl", store_468 = "npm_imported_package_store") +load("@@_main~npm~npm__es6-weak-map__2.0.3__links//:defs.bzl", store_469 = "npm_imported_package_store") +load("@@_main~npm~npm__esbuild__0.16.17__links//:defs.bzl", store_470 = "npm_imported_package_store") +load("@@_main~npm~npm__esbuild__0.24.0__links//:defs.bzl", link_471 = "npm_link_imported_package_store", store_471 = "npm_imported_package_store") +load("@@_main~npm~npm__escalade__3.1.1__links//:defs.bzl", store_472 = "npm_imported_package_store") +load("@@_main~npm~npm__escape-html__1.0.3__links//:defs.bzl", store_473 = "npm_imported_package_store") +load("@@_main~npm~npm__escape-latex__1.2.0__links//:defs.bzl", store_474 = "npm_imported_package_store") +load("@@_main~npm~npm__escape-string-regexp__1.0.5__links//:defs.bzl", store_475 = "npm_imported_package_store") +load("@@_main~npm~npm__escape-string-regexp__4.0.0__links//:defs.bzl", store_476 = "npm_imported_package_store") +load("@@_main~npm~npm__escodegen__1.14.3__links//:defs.bzl", store_477 = "npm_imported_package_store") +load("@@_main~npm~npm__eslint-scope__5.1.1__links//:defs.bzl", store_478 = "npm_imported_package_store") +load("@@_main~npm~npm__esprima__1.0.0__links//:defs.bzl", store_479 = "npm_imported_package_store") +load("@@_main~npm~npm__esprima__4.0.1__links//:defs.bzl", store_480 = "npm_imported_package_store") +load("@@_main~npm~npm__esrecurse__4.3.0__links//:defs.bzl", store_481 = "npm_imported_package_store") +load("@@_main~npm~npm__estraverse__4.3.0__links//:defs.bzl", store_482 = "npm_imported_package_store") +load("@@_main~npm~npm__estraverse__5.3.0__links//:defs.bzl", store_483 = "npm_imported_package_store") +load("@@_main~npm~npm__estree-walker__1.0.1__links//:defs.bzl", store_484 = "npm_imported_package_store") +load("@@_main~npm~npm__estree-walker__2.0.2__links//:defs.bzl", store_485 = "npm_imported_package_store") +load("@@_main~npm~npm__esutils__2.0.3__links//:defs.bzl", store_486 = "npm_imported_package_store") +load("@@_main~npm~npm__eval__0.1.6__links//:defs.bzl", store_487 = "npm_imported_package_store") +load("@@_main~npm~npm__events__3.3.0__links//:defs.bzl", store_488 = "npm_imported_package_store") +load("@@_main~npm~npm__ext__1.7.0__links//:defs.bzl", store_489 = "npm_imported_package_store") +load("@@_main~npm~npm__extend__3.0.2__links//:defs.bzl", store_490 = "npm_imported_package_store") +load("@@_main~npm~npm__extract-zip__2.0.1__links//:defs.bzl", store_491 = "npm_imported_package_store") +load("@@_main~npm~npm__extsprintf__1.3.0__links//:defs.bzl", store_492 = "npm_imported_package_store") +load("@@_main~npm~npm__falafel__2.2.5__links//:defs.bzl", store_493 = "npm_imported_package_store") +load("@@_main~npm~npm__fast-decode-uri-component__1.0.1__links//:defs.bzl", store_494 = "npm_imported_package_store") +load("@@_main~npm~npm__fast-deep-equal__3.1.3__links//:defs.bzl", store_495 = "npm_imported_package_store") +load("@@_main~npm~npm__fast-isnumeric__1.1.4__links//:defs.bzl", store_496 = "npm_imported_package_store") +load("@@_main~npm~npm__fast-json-stable-stringify__2.1.0__links//:defs.bzl", store_497 = "npm_imported_package_store") +load("@@_main~npm~npm__fast-levenshtein__2.0.6__links//:defs.bzl", store_498 = "npm_imported_package_store") +load("@@_main~npm~npm__fastest-levenshtein__1.0.16__links//:defs.bzl", store_499 = "npm_imported_package_store") +load("@@_main~npm~npm__fd-slicer__1.1.0__links//:defs.bzl", store_500 = "npm_imported_package_store") +load("@@_main~npm~npm__fdir__6.4.3_picomatch_4.0.2__links//:defs.bzl", store_501 = "npm_imported_package_store") +load("@@_main~npm~npm__file-uri-to-path__1.0.0__links//:defs.bzl", store_502 = "npm_imported_package_store") +load("@@_main~npm~npm__fill-range__7.0.1__links//:defs.bzl", store_503 = "npm_imported_package_store") +load("@@_main~npm~npm__find-up__4.1.0__links//:defs.bzl", store_504 = "npm_imported_package_store") +load("@@_main~npm~npm__find-up__5.0.0__links//:defs.bzl", store_505 = "npm_imported_package_store") +load("@@_main~npm~npm__flat__5.0.2__links//:defs.bzl", store_506 = "npm_imported_package_store") +load("@@_main~npm~npm__flatten-vertex-data__1.0.2__links//:defs.bzl", store_507 = "npm_imported_package_store") +load("@@_main~npm~npm__font-atlas__2.1.0__links//:defs.bzl", store_508 = "npm_imported_package_store") +load("@@_main~npm~npm__font-measure__1.2.2__links//:defs.bzl", store_509 = "npm_imported_package_store") +load("@@_main~npm~npm__foreground-child__2.0.0__links//:defs.bzl", store_510 = "npm_imported_package_store") +load("@@_main~npm~npm__foreground-child__3.1.1__links//:defs.bzl", store_511 = "npm_imported_package_store") +load("@@_main~npm~npm__forever-agent__0.6.1__links//:defs.bzl", store_512 = "npm_imported_package_store") +load("@@_main~npm~npm__form-data__2.3.3__links//:defs.bzl", store_513 = "npm_imported_package_store") +load("@@_main~npm~npm__form-data__2.5.1__links//:defs.bzl", store_514 = "npm_imported_package_store") +load("@@_main~npm~npm__fraction.js__4.2.0__links//:defs.bzl", store_515 = "npm_imported_package_store") +load("@@_main~npm~npm__from2__2.3.0__links//:defs.bzl", store_516 = "npm_imported_package_store") +load("@@_main~npm~npm__fs-constants__1.0.0__links//:defs.bzl", store_517 = "npm_imported_package_store") +load("@@_main~npm~npm__fs-extra__11.1.1__links//:defs.bzl", store_518 = "npm_imported_package_store") +load("@@_main~npm~npm__fs-extra__7.0.1__links//:defs.bzl", store_519 = "npm_imported_package_store") +load("@@_main~npm~npm__fs-minipass__1.2.7__links//:defs.bzl", store_520 = "npm_imported_package_store") +load("@@_main~npm~npm__fs-minipass__2.1.0__links//:defs.bzl", store_521 = "npm_imported_package_store") +load("@@_main~npm~npm__fs.realpath__1.0.0__links//:defs.bzl", store_522 = "npm_imported_package_store") +load("@@_main~npm~npm__fsevents__2.3.2__links//:defs.bzl", store_523 = "npm_imported_package_store") +load("@@_main~npm~npm__function-bind__1.1.1__links//:defs.bzl", store_524 = "npm_imported_package_store") +load("@@_main~npm~npm__gauge__2.7.4__links//:defs.bzl", store_525 = "npm_imported_package_store") +load("@@_main~npm~npm__gauge__3.0.2__links//:defs.bzl", store_526 = "npm_imported_package_store") +load("@@_main~npm~npm__gauge__4.0.4__links//:defs.bzl", store_527 = "npm_imported_package_store") +load("@@_main~npm~npm__gensync__1.0.0-beta.2__links//:defs.bzl", store_528 = "npm_imported_package_store") +load("@@_main~npm~npm__geojson-vt__3.2.1__links//:defs.bzl", store_529 = "npm_imported_package_store") +load("@@_main~npm~npm__get-caller-file__2.0.5__links//:defs.bzl", store_530 = "npm_imported_package_store") +load("@@_main~npm~npm__get-canvas-context__1.0.2__links//:defs.bzl", store_531 = "npm_imported_package_store") +load("@@_main~npm~npm__get-stream__5.2.0__links//:defs.bzl", store_532 = "npm_imported_package_store") +load("@@_main~npm~npm__get-stream__6.0.1__links//:defs.bzl", store_533 = "npm_imported_package_store") +load("@@_main~npm~npm__getpass__0.1.7__links//:defs.bzl", store_534 = "npm_imported_package_store") +load("@@_main~npm~npm__gl-mat4__1.2.0__links//:defs.bzl", store_535 = "npm_imported_package_store") +load("@@_main~npm~npm__gl-matrix__3.4.3__links//:defs.bzl", store_536 = "npm_imported_package_store") +load("@@_main~npm~npm__gl-text__1.3.1__links//:defs.bzl", store_537 = "npm_imported_package_store") +load("@@_main~npm~npm__gl-util__3.1.3__links//:defs.bzl", store_538 = "npm_imported_package_store") +load("@@_main~npm~npm__glob-parent__5.1.2__links//:defs.bzl", store_539 = "npm_imported_package_store") +load("@@_main~npm~npm__glob-to-regexp__0.4.1__links//:defs.bzl", store_540 = "npm_imported_package_store") +load("@@_main~npm~npm__glob__10.3.3__links//:defs.bzl", store_541 = "npm_imported_package_store") +load("@@_main~npm~npm__glob__10.4.5__links//:defs.bzl", store_542 = "npm_imported_package_store") +load("@@_main~npm~npm__glob__7.2.0__links//:defs.bzl", store_543 = "npm_imported_package_store") +load("@@_main~npm~npm__glob__7.2.3__links//:defs.bzl", store_544 = "npm_imported_package_store") +load("@@_main~npm~npm__glob__8.1.0__links//:defs.bzl", store_545 = "npm_imported_package_store") +load("@@_main~npm~npm__globals__11.12.0__links//:defs.bzl", store_546 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-inject-defines__1.0.3__links//:defs.bzl", store_547 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-resolve__0.0.1__links//:defs.bzl", store_548 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-token-assignments__2.0.2__links//:defs.bzl", store_549 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-token-defines__1.0.0__links//:defs.bzl", store_550 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-token-depth__1.1.2__links//:defs.bzl", store_551 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-token-descope__1.0.2__links//:defs.bzl", store_552 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-token-inject-block__1.1.0__links//:defs.bzl", store_553 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-token-properties__1.0.1__links//:defs.bzl", store_554 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-token-scope__1.1.2__links//:defs.bzl", store_555 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-token-string__1.0.1__links//:defs.bzl", store_556 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-token-whitespace-trim__1.0.0__links//:defs.bzl", store_557 = "npm_imported_package_store") +load("@@_main~npm~npm__glsl-tokenizer__2.1.5__links//:defs.bzl", store_558 = "npm_imported_package_store") +load("@@_main~npm~npm__glslify-bundle__5.1.1__links//:defs.bzl", store_559 = "npm_imported_package_store") +load("@@_main~npm~npm__glslify-deps__1.3.2__links//:defs.bzl", store_560 = "npm_imported_package_store") +load("@@_main~npm~npm__glslify__7.1.1__links//:defs.bzl", store_561 = "npm_imported_package_store") +load("@@_main~npm~npm__google-protobuf__3.21.4__links//:defs.bzl", link_562 = "npm_link_imported_package_store", store_562 = "npm_imported_package_store") +load("@@_main~npm~npm__got__10.7.0__links//:defs.bzl", store_563 = "npm_imported_package_store") +load("@@_main~npm~npm__graceful-fs__4.2.10__links//:defs.bzl", store_564 = "npm_imported_package_store") +load("@@_main~npm~npm__grid-index__1.1.0__links//:defs.bzl", store_565 = "npm_imported_package_store") +load("@@_main~npm~npm__gzip-size__6.0.0__links//:defs.bzl", store_566 = "npm_imported_package_store") +load("@@_main~npm~npm__handlebars-utils__1.0.6__links//:defs.bzl", store_567 = "npm_imported_package_store") +load("@@_main~npm~npm__har-schema__2.0.0__links//:defs.bzl", store_568 = "npm_imported_package_store") +load("@@_main~npm~npm__har-validator__5.1.5__links//:defs.bzl", store_569 = "npm_imported_package_store") +load("@@_main~npm~npm__has-flag__3.0.0__links//:defs.bzl", store_570 = "npm_imported_package_store") +load("@@_main~npm~npm__has-flag__4.0.0__links//:defs.bzl", store_571 = "npm_imported_package_store") +load("@@_main~npm~npm__has-hover__1.0.1__links//:defs.bzl", store_572 = "npm_imported_package_store") +load("@@_main~npm~npm__has-passive-events__1.0.0__links//:defs.bzl", store_573 = "npm_imported_package_store") +load("@@_main~npm~npm__has-unicode__2.0.1__links//:defs.bzl", store_574 = "npm_imported_package_store") +load("@@_main~npm~npm__has__1.0.3__links//:defs.bzl", store_575 = "npm_imported_package_store") +load("@@_main~npm~npm__he__1.2.0__links//:defs.bzl", store_576 = "npm_imported_package_store") +load("@@_main~npm~npm__hello__at_gitpkg.vercel.app_EqualMa_gitpkg-hello_packages_hello__links//:defs.bzl", link_577 = "npm_link_imported_package_store", store_577 = "npm_imported_package_store") +load("@@_main~npm~npm__helper-date__github.com_coda_helper-date_a2cb4284148cbba7d36173dff4c7c60ce59eae55__links//:defs.bzl", link_578 = "npm_link_imported_package_store", store_578 = "npm_imported_package_store") +load("@@_main~npm~npm__hot-shots__10.0.0__links//:defs.bzl", link_579 = "npm_link_imported_package_store", store_579 = "npm_imported_package_store") +load("@@_main~npm~npm__hsluv__0.0.3__links//:defs.bzl", store_580 = "npm_imported_package_store") +load("@@_main~npm~npm__html-escaper__2.0.2__links//:defs.bzl", store_581 = "npm_imported_package_store") +load("@@_main~npm~npm__http-cache-semantics__4.1.1__links//:defs.bzl", store_582 = "npm_imported_package_store") +load("@@_main~npm~npm__http-errors__2.0.0__links//:defs.bzl", store_583 = "npm_imported_package_store") +load("@@_main~npm~npm__http-proxy-agent__5.0.0__links//:defs.bzl", store_584 = "npm_imported_package_store") +load("@@_main~npm~npm__http-signature__1.2.0__links//:defs.bzl", store_585 = "npm_imported_package_store") +load("@@_main~npm~npm__https-proxy-agent__5.0.1__links//:defs.bzl", store_586 = "npm_imported_package_store") +load("@@_main~npm~npm__humanize-ms__1.2.1__links//:defs.bzl", store_587 = "npm_imported_package_store") +load("@@_main~npm~npm__iconv-lite__0.4.24__links//:defs.bzl", store_588 = "npm_imported_package_store") +load("@@_main~npm~npm__iconv-lite__0.6.3__links//:defs.bzl", store_589 = "npm_imported_package_store") +load("@@_main~npm~npm__icss-utils__5.1.0_postcss_8.4.21__links//:defs.bzl", store_590 = "npm_imported_package_store") +load("@@_main~npm~npm__ieee754__1.2.1__links//:defs.bzl", store_591 = "npm_imported_package_store") +load("@@_main~npm~npm__ignore-walk__3.0.4__links//:defs.bzl", store_592 = "npm_imported_package_store") +load("@@_main~npm~npm__import-fresh__3.3.0__links//:defs.bzl", store_593 = "npm_imported_package_store") +load("@@_main~npm~npm__import-local__3.1.0__links//:defs.bzl", store_594 = "npm_imported_package_store") +load("@@_main~npm~npm__imurmurhash__0.1.4__links//:defs.bzl", store_595 = "npm_imported_package_store") +load("@@_main~npm~npm__indent-string__4.0.0__links//:defs.bzl", store_596 = "npm_imported_package_store") +load("@@_main~npm~npm__infer-owner__1.0.4__links//:defs.bzl", store_597 = "npm_imported_package_store") +load("@@_main~npm~npm__inflight__1.0.6__links//:defs.bzl", store_598 = "npm_imported_package_store") +load("@@_main~npm~npm__inherits__2.0.4__links//:defs.bzl", store_599 = "npm_imported_package_store") +load("@@_main~npm~npm__ini__1.3.8__links//:defs.bzl", store_600 = "npm_imported_package_store") +load("@@_main~npm~npm__inline-fixtures__1.1.0__links//:defs.bzl", link_601 = "npm_link_imported_package_store", store_601 = "npm_imported_package_store") +load("@@_main~npm~npm__inline-fixtures__at_registry.yarnpkg.com_inline-fixtures_-_inline-fixtures-1.1.0.tgz_5f9edf644ac02a1322012dbbb9f0a4739831d662__links//:defs.bzl", link_602 = "npm_link_imported_package_store", store_602 = "npm_imported_package_store") +load("@@_main~npm~npm__interpret__3.1.1__links//:defs.bzl", store_603 = "npm_imported_package_store") +load("@@_main~npm~npm__ip__2.0.0__links//:defs.bzl", store_604 = "npm_imported_package_store") +load("@@_main~npm~npm__is-arrayish__0.2.1__links//:defs.bzl", store_605 = "npm_imported_package_store") +load("@@_main~npm~npm__is-arrayish__0.3.2__links//:defs.bzl", store_606 = "npm_imported_package_store") +load("@@_main~npm~npm__is-binary-path__2.1.0__links//:defs.bzl", store_607 = "npm_imported_package_store") +load("@@_main~npm~npm__is-browser__2.1.0__links//:defs.bzl", store_608 = "npm_imported_package_store") +load("@@_main~npm~npm__is-buffer__1.1.6__links//:defs.bzl", store_609 = "npm_imported_package_store") +load("@@_main~npm~npm__is-core-module__2.11.0__links//:defs.bzl", store_610 = "npm_imported_package_store") +load("@@_main~npm~npm__is-extglob__2.1.1__links//:defs.bzl", store_611 = "npm_imported_package_store") +load("@@_main~npm~npm__is-finite__1.1.0__links//:defs.bzl", store_612 = "npm_imported_package_store") +load("@@_main~npm~npm__is-firefox__1.0.3__links//:defs.bzl", store_613 = "npm_imported_package_store") +load("@@_main~npm~npm__is-fullwidth-code-point__1.0.0__links//:defs.bzl", store_614 = "npm_imported_package_store") +load("@@_main~npm~npm__is-fullwidth-code-point__3.0.0__links//:defs.bzl", store_615 = "npm_imported_package_store") +load("@@_main~npm~npm__is-glob__4.0.3__links//:defs.bzl", store_616 = "npm_imported_package_store") +load("@@_main~npm~npm__is-iexplorer__1.0.0__links//:defs.bzl", store_617 = "npm_imported_package_store") +load("@@_main~npm~npm__is-lambda__1.0.1__links//:defs.bzl", store_618 = "npm_imported_package_store") +load("@@_main~npm~npm__is-mobile__4.0.0__links//:defs.bzl", store_619 = "npm_imported_package_store") +load("@@_main~npm~npm__is-module__1.0.0__links//:defs.bzl", store_620 = "npm_imported_package_store") +load("@@_main~npm~npm__is-number__6.0.0__links//:defs.bzl", store_621 = "npm_imported_package_store") +load("@@_main~npm~npm__is-number__7.0.0__links//:defs.bzl", store_622 = "npm_imported_package_store") +load("@@_main~npm~npm__is-obj__1.0.1__links//:defs.bzl", store_623 = "npm_imported_package_store") +load("@@_main~npm~npm__is-plain-obj__1.1.0__links//:defs.bzl", store_624 = "npm_imported_package_store") +load("@@_main~npm~npm__is-plain-obj__2.1.0__links//:defs.bzl", store_625 = "npm_imported_package_store") +load("@@_main~npm~npm__is-plain-object__2.0.4__links//:defs.bzl", store_626 = "npm_imported_package_store") +load("@@_main~npm~npm__is-reference__1.2.1__links//:defs.bzl", store_627 = "npm_imported_package_store") +load("@@_main~npm~npm__is-string-blank__1.0.1__links//:defs.bzl", store_628 = "npm_imported_package_store") +load("@@_main~npm~npm__is-svg-path__1.0.2__links//:defs.bzl", store_629 = "npm_imported_package_store") +load("@@_main~npm~npm__is-typedarray__1.0.0__links//:defs.bzl", store_630 = "npm_imported_package_store") +load("@@_main~npm~npm__is-unicode-supported__0.1.0__links//:defs.bzl", store_631 = "npm_imported_package_store") +load("@@_main~npm~npm__isarray__0.0.1__links//:defs.bzl", store_632 = "npm_imported_package_store") +load("@@_main~npm~npm__isarray__1.0.0__links//:defs.bzl", store_633 = "npm_imported_package_store") +load("@@_main~npm~npm__isarray__2.0.5__links//:defs.bzl", store_634 = "npm_imported_package_store") +load("@@_main~npm~npm__isexe__2.0.0__links//:defs.bzl", store_635 = "npm_imported_package_store") +load("@@_main~npm~npm__isobject__3.0.1__links//:defs.bzl", store_636 = "npm_imported_package_store") +load("@@_main~npm~npm__isomorphic-ws__5.0.0_ws_8.18.0__links//:defs.bzl", store_637 = "npm_imported_package_store") +load("@@_main~npm~npm__isstream__0.1.2__links//:defs.bzl", store_638 = "npm_imported_package_store") +load("@@_main~npm~npm__istanbul-lib-coverage__3.2.0__links//:defs.bzl", store_639 = "npm_imported_package_store") +load("@@_main~npm~npm__istanbul-lib-report__3.0.0__links//:defs.bzl", store_640 = "npm_imported_package_store") +load("@@_main~npm~npm__istanbul-reports__3.1.5__links//:defs.bzl", store_641 = "npm_imported_package_store") +load("@@_main~npm~npm__jackspeak__2.2.3__links//:defs.bzl", store_642 = "npm_imported_package_store") +load("@@_main~npm~npm__jackspeak__3.4.3__links//:defs.bzl", store_643 = "npm_imported_package_store") +load("@@_main~npm~npm__jasmine-core__5.1.0__links//:defs.bzl", store_644 = "npm_imported_package_store") +load("@@_main~npm~npm__jasmine__5.1.0__links//:defs.bzl", link_645 = "npm_link_imported_package_store", store_645 = "npm_imported_package_store") +load("@@_main~npm~npm__javascript-natural-sort__0.7.1__links//:defs.bzl", store_646 = "npm_imported_package_store") +load("@@_main~npm~npm__javascript-stringify__2.1.0__links//:defs.bzl", store_647 = "npm_imported_package_store") +load("@@_main~npm~npm__jest-worker__27.5.1__links//:defs.bzl", store_648 = "npm_imported_package_store") +load("@@_main~npm~npm__jiti__2.4.2__links//:defs.bzl", store_649 = "npm_imported_package_store") +load("@@_main~npm~npm__jose__4.12.0__links//:defs.bzl", store_650 = "npm_imported_package_store") +load("@@_main~npm~npm__js-tokens__4.0.0__links//:defs.bzl", store_651 = "npm_imported_package_store") +load("@@_main~npm~npm__js-yaml__4.1.0__links//:defs.bzl", store_652 = "npm_imported_package_store") +load("@@_main~npm~npm__jsbn__0.1.1__links//:defs.bzl", store_653 = "npm_imported_package_store") +load("@@_main~npm~npm__jsep__1.3.9__links//:defs.bzl", store_654 = "npm_imported_package_store") +load("@@_main~npm~npm__jsesc__2.5.2__links//:defs.bzl", store_655 = "npm_imported_package_store") +load("@@_main~npm~npm__json-buffer__3.0.1__links//:defs.bzl", store_656 = "npm_imported_package_store") +load("@@_main~npm~npm__json-parse-even-better-errors__2.3.1__links//:defs.bzl", store_657 = "npm_imported_package_store") +load("@@_main~npm~npm__json-schema-traverse__0.4.1__links//:defs.bzl", store_658 = "npm_imported_package_store") +load("@@_main~npm~npm__json-schema-traverse__1.0.0__links//:defs.bzl", store_659 = "npm_imported_package_store") +load("@@_main~npm~npm__json-schema__0.4.0__links//:defs.bzl", store_660 = "npm_imported_package_store") +load("@@_main~npm~npm__json-stable-stringify__1.0.1__links//:defs.bzl", link_661 = "npm_link_imported_package_store", store_661 = "npm_imported_package_store") +load("@@_main~npm~npm__json-stringify-safe__5.0.1__links//:defs.bzl", store_662 = "npm_imported_package_store") +load("@@_main~npm~npm__json5__2.2.3__links//:defs.bzl", store_663 = "npm_imported_package_store") +load("@@_main~npm~npm__jsonc-parser__3.2.0__links//:defs.bzl", store_664 = "npm_imported_package_store") +load("@@_main~npm~npm__jsonfile__4.0.0__links//:defs.bzl", store_665 = "npm_imported_package_store") +load("@@_main~npm~npm__jsonfile__6.1.0__links//:defs.bzl", store_666 = "npm_imported_package_store") +load("@@_main~npm~npm__jsonpath-plus__7.2.0__links//:defs.bzl", link_667 = "npm_link_imported_package_store", store_667 = "npm_imported_package_store") +load("@@_main~npm~npm__jsonpath-plus__9.0.0__links//:defs.bzl", store_668 = "npm_imported_package_store") +load("@@_main~npm~npm__jsprim__1.4.2__links//:defs.bzl", store_669 = "npm_imported_package_store") +load("@@_main~npm~npm__kdbush__3.0.0__links//:defs.bzl", store_670 = "npm_imported_package_store") +load("@@_main~npm~npm__keyv__4.5.2__links//:defs.bzl", store_671 = "npm_imported_package_store") +load("@@_main~npm~npm__kind-of__3.2.2__links//:defs.bzl", store_672 = "npm_imported_package_store") +load("@@_main~npm~npm__kind-of__6.0.3__links//:defs.bzl", store_673 = "npm_imported_package_store") +load("@@_main~npm~npm__kleur__4.1.5__links//:defs.bzl", store_674 = "npm_imported_package_store") +load("@@_main~npm~npm__levn__0.3.0__links//:defs.bzl", store_675 = "npm_imported_package_store") +load("@@_main~npm~npm__lightningcss-darwin-arm64__1.29.2__links//:defs.bzl", store_676 = "npm_imported_package_store") +load("@@_main~npm~npm__lightningcss-darwin-x64__1.29.2__links//:defs.bzl", store_677 = "npm_imported_package_store") +load("@@_main~npm~npm__lightningcss-freebsd-x64__1.29.2__links//:defs.bzl", store_678 = "npm_imported_package_store") +load("@@_main~npm~npm__lightningcss-linux-arm-gnueabihf__1.29.2__links//:defs.bzl", store_679 = "npm_imported_package_store") +load("@@_main~npm~npm__lightningcss-linux-arm64-gnu__1.29.2__links//:defs.bzl", store_680 = "npm_imported_package_store") +load("@@_main~npm~npm__lightningcss-linux-arm64-musl__1.29.2__links//:defs.bzl", store_681 = "npm_imported_package_store") +load("@@_main~npm~npm__lightningcss-linux-x64-gnu__1.29.2__links//:defs.bzl", store_682 = "npm_imported_package_store") +load("@@_main~npm~npm__lightningcss-linux-x64-musl__1.29.2__links//:defs.bzl", store_683 = "npm_imported_package_store") +load("@@_main~npm~npm__lightningcss-win32-arm64-msvc__1.29.2__links//:defs.bzl", store_684 = "npm_imported_package_store") +load("@@_main~npm~npm__lightningcss-win32-x64-msvc__1.29.2__links//:defs.bzl", store_685 = "npm_imported_package_store") +load("@@_main~npm~npm__lightningcss__1.29.2__links//:defs.bzl", store_686 = "npm_imported_package_store") +load("@@_main~npm~npm__lines-and-columns__1.2.4__links//:defs.bzl", store_687 = "npm_imported_package_store") +load("@@_main~npm~npm__loader-runner__4.3.0__links//:defs.bzl", store_688 = "npm_imported_package_store") +load("@@_main~npm~npm__loader-utils__2.0.4__links//:defs.bzl", store_689 = "npm_imported_package_store") +load("@@_main~npm~npm__locate-path__5.0.0__links//:defs.bzl", store_690 = "npm_imported_package_store") +load("@@_main~npm~npm__locate-path__6.0.0__links//:defs.bzl", store_691 = "npm_imported_package_store") +load("@@_main~npm~npm__lodash.merge__4.6.2__links//:defs.bzl", store_692 = "npm_imported_package_store") +load("@@_main~npm~npm__lodash__4.17.21__links//:defs.bzl", link_693 = "npm_link_imported_package_store", store_693 = "npm_imported_package_store") +load("@@_main~npm~npm__log-symbols__4.1.0__links//:defs.bzl", store_694 = "npm_imported_package_store") +load("@@_main~npm~npm__loose-envify__1.4.0__links//:defs.bzl", store_695 = "npm_imported_package_store") +load("@@_main~npm~npm__lowercase-keys__2.0.0__links//:defs.bzl", store_696 = "npm_imported_package_store") +load("@@_main~npm~npm__lru-cache__10.4.3__links//:defs.bzl", store_697 = "npm_imported_package_store") +load("@@_main~npm~npm__lru-cache__5.1.1__links//:defs.bzl", store_698 = "npm_imported_package_store") +load("@@_main~npm~npm__lru-cache__6.0.0__links//:defs.bzl", store_699 = "npm_imported_package_store") +load("@@_main~npm~npm__lru-cache__7.17.0__links//:defs.bzl", store_700 = "npm_imported_package_store") +load("@@_main~npm~npm__magic-string__0.25.9__links//:defs.bzl", store_701 = "npm_imported_package_store") +load("@@_main~npm~npm__magic-string__0.30.17__links//:defs.bzl", store_702 = "npm_imported_package_store") +load("@@_main~npm~npm__make-dir__2.1.0__links//:defs.bzl", store_703 = "npm_imported_package_store") +load("@@_main~npm~npm__make-dir__3.1.0__links//:defs.bzl", store_704 = "npm_imported_package_store") +load("@@_main~npm~npm__make-fetch-happen__10.2.1__links//:defs.bzl", store_705 = "npm_imported_package_store") +load("@@_main~npm~npm__map-limit__0.0.1__links//:defs.bzl", store_706 = "npm_imported_package_store") +load("@@_main~npm~npm__mapbox-gl__1.10.1__links//:defs.bzl", store_707 = "npm_imported_package_store") +load("@@_main~npm~npm__math-log2__1.0.1__links//:defs.bzl", store_708 = "npm_imported_package_store") +load("@@_main~npm~npm__mathjs__11.4.0__links//:defs.bzl", link_709 = "npm_link_imported_package_store", store_709 = "npm_imported_package_store") +load("@@_main~npm~npm__md5__2.3.0__links//:defs.bzl", store_710 = "npm_imported_package_store") +load("@@_main~npm~npm__meaning-of-life__1.0.0_o3deharooos255qt5xdujc3cuq__links//:defs.bzl", link_711 = "npm_link_imported_package_store", store_711 = "npm_imported_package_store") +load("@@_main~npm~npm__media-query-parser__2.0.2__links//:defs.bzl", store_712 = "npm_imported_package_store") +load("@@_main~npm~npm__merge-stream__2.0.0__links//:defs.bzl", store_713 = "npm_imported_package_store") +load("@@_main~npm~npm__mime-db__1.52.0__links//:defs.bzl", store_714 = "npm_imported_package_store") +load("@@_main~npm~npm__mime-types__2.1.35__links//:defs.bzl", store_715 = "npm_imported_package_store") +load("@@_main~npm~npm__mime__3.0.0__links//:defs.bzl", store_716 = "npm_imported_package_store") +load("@@_main~npm~npm__mimic-response__1.0.1__links//:defs.bzl", store_717 = "npm_imported_package_store") +load("@@_main~npm~npm__mimic-response__2.1.0__links//:defs.bzl", store_718 = "npm_imported_package_store") +load("@@_main~npm~npm__mini-css-extract-plugin__2.7.5_webpack_5.76.3__links//:defs.bzl", link_719 = "npm_link_imported_package_store", store_719 = "npm_imported_package_store") +load("@@_main~npm~npm__minimatch__3.1.2__links//:defs.bzl", store_720 = "npm_imported_package_store") +load("@@_main~npm~npm__minimatch__5.0.1__links//:defs.bzl", store_721 = "npm_imported_package_store") +load("@@_main~npm~npm__minimatch__5.1.6__links//:defs.bzl", store_722 = "npm_imported_package_store") +load("@@_main~npm~npm__minimatch__6.2.0__links//:defs.bzl", store_723 = "npm_imported_package_store") +load("@@_main~npm~npm__minimatch__9.0.3__links//:defs.bzl", store_724 = "npm_imported_package_store") +load("@@_main~npm~npm__minimatch__9.0.5__links//:defs.bzl", store_725 = "npm_imported_package_store") +load("@@_main~npm~npm__minimist__0.0.10__links//:defs.bzl", store_726 = "npm_imported_package_store") +load("@@_main~npm~npm__minimist__1.2.8__links//:defs.bzl", store_727 = "npm_imported_package_store") +load("@@_main~npm~npm__minipass-collect__1.0.2__links//:defs.bzl", store_728 = "npm_imported_package_store") +load("@@_main~npm~npm__minipass-fetch__2.1.2__links//:defs.bzl", store_729 = "npm_imported_package_store") +load("@@_main~npm~npm__minipass-flush__1.0.5__links//:defs.bzl", store_730 = "npm_imported_package_store") +load("@@_main~npm~npm__minipass-pipeline__1.2.4__links//:defs.bzl", store_731 = "npm_imported_package_store") +load("@@_main~npm~npm__minipass-sized__1.0.3__links//:defs.bzl", store_732 = "npm_imported_package_store") +load("@@_main~npm~npm__minipass__2.9.0__links//:defs.bzl", store_733 = "npm_imported_package_store") +load("@@_main~npm~npm__minipass__3.3.6__links//:defs.bzl", store_734 = "npm_imported_package_store") +load("@@_main~npm~npm__minipass__4.2.4__links//:defs.bzl", store_735 = "npm_imported_package_store") +load("@@_main~npm~npm__minipass__7.0.3__links//:defs.bzl", store_736 = "npm_imported_package_store") +load("@@_main~npm~npm__minipass__7.1.2__links//:defs.bzl", store_737 = "npm_imported_package_store") +load("@@_main~npm~npm__minizlib__1.3.3__links//:defs.bzl", store_738 = "npm_imported_package_store") +load("@@_main~npm~npm__minizlib__2.1.2__links//:defs.bzl", store_739 = "npm_imported_package_store") +load("@@_main~npm~npm__minizlib__3.0.1__links//:defs.bzl", store_740 = "npm_imported_package_store") +load("@@_main~npm~npm__mitt__3.0.0__links//:defs.bzl", store_741 = "npm_imported_package_store") +load("@@_main~npm~npm__mkdirp-classic__0.5.3__links//:defs.bzl", store_742 = "npm_imported_package_store") +load("@@_main~npm~npm__mkdirp__0.5.6__links//:defs.bzl", store_743 = "npm_imported_package_store") +load("@@_main~npm~npm__mkdirp__1.0.4__links//:defs.bzl", store_744 = "npm_imported_package_store") +load("@@_main~npm~npm__mkdirp__3.0.1__links//:defs.bzl", store_745 = "npm_imported_package_store") +load("@@_main~npm~npm__mlly__1.1.1__links//:defs.bzl", store_746 = "npm_imported_package_store") +load("@@_main~npm~npm__mobx-react-lite__3.4.0_mobx_6.3.0_react_17.0.2__links//:defs.bzl", store_747 = "npm_imported_package_store") +load("@@_main~npm~npm__mobx-react__7.3.0_mobx_6.3.0_react_17.0.2__links//:defs.bzl", link_748 = "npm_link_imported_package_store", store_748 = "npm_imported_package_store") +load("@@_main~npm~npm__mobx__6.3.0__links//:defs.bzl", link_749 = "npm_link_imported_package_store", store_749 = "npm_imported_package_store") +load("@@_main~npm~npm__mocha-junit-reporter__2.2.0_mocha_10.2.0__links//:defs.bzl", link_750 = "npm_link_imported_package_store", store_750 = "npm_imported_package_store") +load("@@_main~npm~npm__mocha-multi-reporters__1.5.1_181752652__links//:defs.bzl", link_751 = "npm_link_imported_package_store", store_751 = "npm_imported_package_store") +load("@@_main~npm~npm__mocha__10.2.0_mocha-multi-reporters_1.5.1__links//:defs.bzl", link_752 = "npm_link_imported_package_store", store_752 = "npm_imported_package_store") +load("@@_main~npm~npm__moment-timezone__0.5.41__links//:defs.bzl", store_753 = "npm_imported_package_store") +load("@@_main~npm~npm__moment__2.29.4__links//:defs.bzl", store_754 = "npm_imported_package_store") +load("@@_main~npm~npm__mouse-change__1.4.0__links//:defs.bzl", store_755 = "npm_imported_package_store") +load("@@_main~npm~npm__mouse-event-offset__3.0.2__links//:defs.bzl", store_756 = "npm_imported_package_store") +load("@@_main~npm~npm__mouse-event__1.0.5__links//:defs.bzl", store_757 = "npm_imported_package_store") +load("@@_main~npm~npm__mouse-wheel__1.2.0__links//:defs.bzl", store_758 = "npm_imported_package_store") +load("@@_main~npm~npm__mri__1.2.0__links//:defs.bzl", store_759 = "npm_imported_package_store") +load("@@_main~npm~npm__mrmime__1.0.1__links//:defs.bzl", store_760 = "npm_imported_package_store") +load("@@_main~npm~npm__ms__0.7.3__links//:defs.bzl", store_761 = "npm_imported_package_store") +load("@@_main~npm~npm__ms__2.0.0__links//:defs.bzl", store_762 = "npm_imported_package_store") +load("@@_main~npm~npm__ms__2.1.2__links//:defs.bzl", store_763 = "npm_imported_package_store") +load("@@_main~npm~npm__ms__2.1.3__links//:defs.bzl", link_764 = "npm_link_imported_package_store", store_764 = "npm_imported_package_store") +load("@@_main~npm~npm__mumath__3.3.4__links//:defs.bzl", store_765 = "npm_imported_package_store") +load("@@_main~npm~npm__murmurhash-js__1.0.0__links//:defs.bzl", store_766 = "npm_imported_package_store") +load("@@_main~npm~npm__nan__2.17.0__links//:defs.bzl", store_767 = "npm_imported_package_store") +load("@@_main~npm~npm__nanoid__3.3.11__links//:defs.bzl", store_768 = "npm_imported_package_store") +load("@@_main~npm~npm__nanoid__3.3.3__links//:defs.bzl", store_769 = "npm_imported_package_store") +load("@@_main~npm~npm__nanoid__3.3.4__links//:defs.bzl", store_770 = "npm_imported_package_store") +load("@@_main~npm~npm__native-promise-only__0.8.1__links//:defs.bzl", store_771 = "npm_imported_package_store") +load("@@_main~npm~npm__needle__2.9.1__links//:defs.bzl", store_772 = "npm_imported_package_store") +load("@@_main~npm~npm__negotiator__0.6.3__links//:defs.bzl", store_773 = "npm_imported_package_store") +load("@@_main~npm~npm__neo-async__2.6.2__links//:defs.bzl", store_774 = "npm_imported_package_store") +load("@@_main~npm~npm__next-tick__1.1.0__links//:defs.bzl", store_775 = "npm_imported_package_store") +load("@@_main~npm~npm__next__15.2.4_react-dom_19.1.0_react_19.1.0__links//:defs.bzl", link_776 = "npm_link_imported_package_store", store_776 = "npm_imported_package_store") +load("@@_main~npm~npm__node-fetch__2.6.12__links//:defs.bzl", store_777 = "npm_imported_package_store") +load("@@_main~npm~npm__node-fetch__2.6.7__links//:defs.bzl", store_778 = "npm_imported_package_store") +load("@@_main~npm~npm__node-gyp-build__4.6.0__links//:defs.bzl", store_779 = "npm_imported_package_store") +load("@@_main~npm~npm__node-gyp__7.1.2__links//:defs.bzl", store_780 = "npm_imported_package_store") +load("@@_main~npm~npm__node-gyp__9.3.0__links//:defs.bzl", link_781 = "npm_link_imported_package_store", store_781 = "npm_imported_package_store") +load("@@_main~npm~npm__node-pre-gyp__0.13.0__links//:defs.bzl", store_782 = "npm_imported_package_store") +load("@@_main~npm~npm__node-releases__2.0.10__links//:defs.bzl", store_783 = "npm_imported_package_store") +load("@@_main~npm~npm__nopt__4.0.3__links//:defs.bzl", store_784 = "npm_imported_package_store") +load("@@_main~npm~npm__nopt__5.0.0__links//:defs.bzl", store_785 = "npm_imported_package_store") +load("@@_main~npm~npm__nopt__6.0.0__links//:defs.bzl", store_786 = "npm_imported_package_store") +load("@@_main~npm~npm__normalize-path__3.0.0__links//:defs.bzl", store_787 = "npm_imported_package_store") +load("@@_main~npm~npm__normalize-svg-path__0.1.0__links//:defs.bzl", store_788 = "npm_imported_package_store") +load("@@_main~npm~npm__normalize-svg-path__1.1.0__links//:defs.bzl", store_789 = "npm_imported_package_store") +load("@@_main~npm~npm__normalize-url__6.1.0__links//:defs.bzl", store_790 = "npm_imported_package_store") +load("@@_main~npm~npm__npm-bundled__1.1.2__links//:defs.bzl", store_791 = "npm_imported_package_store") +load("@@_main~npm~npm__npm-normalize-package-bin__1.0.1__links//:defs.bzl", store_792 = "npm_imported_package_store") +load("@@_main~npm~npm__npm-packlist__1.4.8__links//:defs.bzl", store_793 = "npm_imported_package_store") +load("@@_main~npm~npm__npmlog__4.1.2__links//:defs.bzl", store_794 = "npm_imported_package_store") +load("@@_main~npm~npm__npmlog__5.0.1__links//:defs.bzl", store_795 = "npm_imported_package_store") +load("@@_main~npm~npm__npmlog__6.0.2__links//:defs.bzl", store_796 = "npm_imported_package_store") +load("@@_main~npm~npm__number-is-integer__1.0.1__links//:defs.bzl", store_797 = "npm_imported_package_store") +load("@@_main~npm~npm__number-is-nan__1.0.1__links//:defs.bzl", store_798 = "npm_imported_package_store") +load("@@_main~npm~npm__oauth-sign__0.9.0__links//:defs.bzl", store_799 = "npm_imported_package_store") +load("@@_main~npm~npm__object-assign__4.1.1__links//:defs.bzl", store_800 = "npm_imported_package_store") +load("@@_main~npm~npm__object-hash__2.2.0__links//:defs.bzl", store_801 = "npm_imported_package_store") +load("@@_main~npm~npm__oidc-token-hash__5.0.1__links//:defs.bzl", store_802 = "npm_imported_package_store") +load("@@_main~npm~npm__once__1.3.3__links//:defs.bzl", store_803 = "npm_imported_package_store") +load("@@_main~npm~npm__once__1.4.0__links//:defs.bzl", store_804 = "npm_imported_package_store") +load("@@_main~npm~npm__opener__1.5.2__links//:defs.bzl", store_805 = "npm_imported_package_store") +load("@@_main~npm~npm__openid-client__5.4.0__links//:defs.bzl", store_806 = "npm_imported_package_store") +load("@@_main~npm~npm__optimist__0.6.0__links//:defs.bzl", store_807 = "npm_imported_package_store") +load("@@_main~npm~npm__optionator__0.8.3__links//:defs.bzl", store_808 = "npm_imported_package_store") +load("@@_main~npm~npm__os-homedir__1.0.2__links//:defs.bzl", store_809 = "npm_imported_package_store") +load("@@_main~npm~npm__os-tmpdir__1.0.2__links//:defs.bzl", store_810 = "npm_imported_package_store") +load("@@_main~npm~npm__osenv__0.1.5__links//:defs.bzl", store_811 = "npm_imported_package_store") +load("@@_main~npm~npm__outdent__0.8.0__links//:defs.bzl", store_812 = "npm_imported_package_store") +load("@@_main~npm~npm__p-cancelable__2.1.1__links//:defs.bzl", store_813 = "npm_imported_package_store") +load("@@_main~npm~npm__p-event__4.2.0__links//:defs.bzl", store_814 = "npm_imported_package_store") +load("@@_main~npm~npm__p-finally__1.0.0__links//:defs.bzl", store_815 = "npm_imported_package_store") +load("@@_main~npm~npm__p-limit__2.3.0__links//:defs.bzl", store_816 = "npm_imported_package_store") +load("@@_main~npm~npm__p-limit__3.1.0__links//:defs.bzl", store_817 = "npm_imported_package_store") +load("@@_main~npm~npm__p-locate__4.1.0__links//:defs.bzl", store_818 = "npm_imported_package_store") +load("@@_main~npm~npm__p-locate__5.0.0__links//:defs.bzl", store_819 = "npm_imported_package_store") +load("@@_main~npm~npm__p-map__4.0.0__links//:defs.bzl", store_820 = "npm_imported_package_store") +load("@@_main~npm~npm__p-timeout__3.2.0__links//:defs.bzl", store_821 = "npm_imported_package_store") +load("@@_main~npm~npm__p-try__2.2.0__links//:defs.bzl", store_822 = "npm_imported_package_store") +load("@@_main~npm~npm__package-json-from-dist__1.0.1__links//:defs.bzl", store_823 = "npm_imported_package_store") +load("@@_main~npm~npm__parent-module__1.0.1__links//:defs.bzl", store_824 = "npm_imported_package_store") +load("@@_main~npm~npm__parenthesis__3.1.8__links//:defs.bzl", store_825 = "npm_imported_package_store") +load("@@_main~npm~npm__parse-json__5.2.0__links//:defs.bzl", store_826 = "npm_imported_package_store") +load("@@_main~npm~npm__parse-rect__1.2.0__links//:defs.bzl", store_827 = "npm_imported_package_store") +load("@@_main~npm~npm__parse-svg-path__0.1.2__links//:defs.bzl", store_828 = "npm_imported_package_store") +load("@@_main~npm~npm__parse-unit__1.0.1__links//:defs.bzl", store_829 = "npm_imported_package_store") +load("@@_main~npm~npm__path-exists__4.0.0__links//:defs.bzl", store_830 = "npm_imported_package_store") +load("@@_main~npm~npm__path-is-absolute__1.0.1__links//:defs.bzl", store_831 = "npm_imported_package_store") +load("@@_main~npm~npm__path-key__3.1.1__links//:defs.bzl", store_832 = "npm_imported_package_store") +load("@@_main~npm~npm__path-parse__1.0.7__links//:defs.bzl", store_833 = "npm_imported_package_store") +load("@@_main~npm~npm__path-scurry__1.10.1__links//:defs.bzl", store_834 = "npm_imported_package_store") +load("@@_main~npm~npm__path-scurry__1.11.1__links//:defs.bzl", store_835 = "npm_imported_package_store") +load("@@_main~npm~npm__path-type__4.0.0__links//:defs.bzl", store_836 = "npm_imported_package_store") +load("@@_main~npm~npm__pathe__1.1.0__links//:defs.bzl", store_837 = "npm_imported_package_store") +load("@@_main~npm~npm__pbf__3.2.1__links//:defs.bzl", store_838 = "npm_imported_package_store") +load("@@_main~npm~npm__pend__1.2.0__links//:defs.bzl", store_839 = "npm_imported_package_store") +load("@@_main~npm~npm__performance-now__2.1.0__links//:defs.bzl", store_840 = "npm_imported_package_store") +load("@@_main~npm~npm__pick-by-alias__1.2.0__links//:defs.bzl", store_841 = "npm_imported_package_store") +load("@@_main~npm~npm__picocolors__1.0.0__links//:defs.bzl", store_842 = "npm_imported_package_store") +load("@@_main~npm~npm__picocolors__1.1.1__links//:defs.bzl", store_843 = "npm_imported_package_store") +load("@@_main~npm~npm__picomatch__2.3.1__links//:defs.bzl", store_844 = "npm_imported_package_store") +load("@@_main~npm~npm__picomatch__4.0.2__links//:defs.bzl", store_845 = "npm_imported_package_store") +load("@@_main~npm~npm__pify__4.0.1__links//:defs.bzl", store_846 = "npm_imported_package_store") +load("@@_main~npm~npm__pkg-dir__4.2.0__links//:defs.bzl", store_847 = "npm_imported_package_store") +load("@@_main~npm~npm__pkg-types__1.0.2__links//:defs.bzl", store_848 = "npm_imported_package_store") +load("@@_main~npm~npm__plotly.js__2.25.2__links//:defs.bzl", link_849 = "npm_link_imported_package_store", store_849 = "npm_imported_package_store") +load("@@_main~npm~npm__pngjs__5.0.0__links//:defs.bzl", link_850 = "npm_link_imported_package_store", store_850 = "npm_imported_package_store") +load("@@_main~npm~npm__point-in-polygon__1.1.0__links//:defs.bzl", store_851 = "npm_imported_package_store") +load("@@_main~npm~npm__polybooljs__1.2.0__links//:defs.bzl", store_852 = "npm_imported_package_store") +load("@@_main~npm~npm__postcss-modules-extract-imports__3.0.0_postcss_8.4.21__links//:defs.bzl", store_853 = "npm_imported_package_store") +load("@@_main~npm~npm__postcss-modules-local-by-default__4.0.0_postcss_8.4.21__links//:defs.bzl", store_854 = "npm_imported_package_store") +load("@@_main~npm~npm__postcss-modules-scope__3.0.0_postcss_8.4.21__links//:defs.bzl", store_855 = "npm_imported_package_store") +load("@@_main~npm~npm__postcss-modules-values__4.0.0_postcss_8.4.21__links//:defs.bzl", store_856 = "npm_imported_package_store") +load("@@_main~npm~npm__postcss-selector-parser__6.0.11__links//:defs.bzl", store_857 = "npm_imported_package_store") +load("@@_main~npm~npm__postcss-value-parser__4.2.0__links//:defs.bzl", store_858 = "npm_imported_package_store") +load("@@_main~npm~npm__postcss__8.4.21__links//:defs.bzl", store_859 = "npm_imported_package_store") +load("@@_main~npm~npm__postcss__8.4.31__links//:defs.bzl", store_860 = "npm_imported_package_store") +load("@@_main~npm~npm__postcss__8.5.3__links//:defs.bzl", store_861 = "npm_imported_package_store") +load("@@_main~npm~npm__potpack__1.0.2__links//:defs.bzl", store_862 = "npm_imported_package_store") +load("@@_main~npm~npm__prelude-ls__1.1.2__links//:defs.bzl", store_863 = "npm_imported_package_store") +load("@@_main~npm~npm__probe-image-size__7.2.3__links//:defs.bzl", store_864 = "npm_imported_package_store") +load("@@_main~npm~npm__process-nextick-args__2.0.1__links//:defs.bzl", store_865 = "npm_imported_package_store") +load("@@_main~npm~npm__progress__2.0.3__links//:defs.bzl", store_866 = "npm_imported_package_store") +load("@@_main~npm~npm__promise-inflight__1.0.1__links//:defs.bzl", store_867 = "npm_imported_package_store") +load("@@_main~npm~npm__promise-retry__2.0.1__links//:defs.bzl", store_868 = "npm_imported_package_store") +load("@@_main~npm~npm__protoc-gen-grpc__github.com_gregmagolan-codaio_protoc-gen-grpc-ts_be5580b06348d3eb9b4610a4a94065154a0df41f__links//:defs.bzl", link_869 = "npm_link_imported_package_store", store_869 = "npm_imported_package_store") +load("@@_main~npm~npm__protocol-buffers-schema__3.6.0__links//:defs.bzl", store_870 = "npm_imported_package_store") +load("@@_main~npm~npm__proxy-from-env__1.1.0__links//:defs.bzl", store_871 = "npm_imported_package_store") +load("@@_main~npm~npm__psl__1.9.0__links//:defs.bzl", store_872 = "npm_imported_package_store") +load("@@_main~npm~npm__pump__1.0.3__links//:defs.bzl", store_873 = "npm_imported_package_store") +load("@@_main~npm~npm__pump__3.0.0__links//:defs.bzl", store_874 = "npm_imported_package_store") +load("@@_main~npm~npm__punycode__2.3.0__links//:defs.bzl", store_875 = "npm_imported_package_store") +load("@@_main~npm~npm__puppeteer-core__19.11.1_777974123__links//:defs.bzl", store_876 = "npm_imported_package_store") +load("@@_main~npm~npm__puppeteer__19.11.1_777974123__links//:defs.bzl", link_877 = "npm_link_imported_package_store", store_877 = "npm_imported_package_store") +load("@@_main~npm~npm__qs__6.5.3__links//:defs.bzl", store_878 = "npm_imported_package_store") +load("@@_main~npm~npm__quickselect__2.0.0__links//:defs.bzl", store_879 = "npm_imported_package_store") +load("@@_main~npm~npm__raf__3.4.1__links//:defs.bzl", store_880 = "npm_imported_package_store") +load("@@_main~npm~npm__ramda__0.25.0__links//:defs.bzl", store_881 = "npm_imported_package_store") +load("@@_main~npm~npm__randombytes__2.1.0__links//:defs.bzl", store_882 = "npm_imported_package_store") +load("@@_main~npm~npm__rc__1.2.8__links//:defs.bzl", store_883 = "npm_imported_package_store") +load("@@_main~npm~npm__react-dom__19.1.0_react_19.1.0__links//:defs.bzl", link_884 = "npm_link_imported_package_store", store_884 = "npm_imported_package_store") +load("@@_main~npm~npm__react__17.0.2__links//:defs.bzl", link_885 = "npm_link_imported_package_store", store_885 = "npm_imported_package_store") +load("@@_main~npm~npm__react__19.1.0__links//:defs.bzl", link_886 = "npm_link_imported_package_store", store_886 = "npm_imported_package_store") +load("@@_main~npm~npm__read-yaml-file__2.1.0__links//:defs.bzl", store_887 = "npm_imported_package_store") +load("@@_main~npm~npm__readable-stream__1.0.34__links//:defs.bzl", store_888 = "npm_imported_package_store") +load("@@_main~npm~npm__readable-stream__2.3.8__links//:defs.bzl", store_889 = "npm_imported_package_store") +load("@@_main~npm~npm__readable-stream__3.6.1__links//:defs.bzl", store_890 = "npm_imported_package_store") +load("@@_main~npm~npm__readdirp__3.6.0__links//:defs.bzl", store_891 = "npm_imported_package_store") +load("@@_main~npm~npm__rechoir__0.8.0__links//:defs.bzl", store_892 = "npm_imported_package_store") +load("@@_main~npm~npm__regenerator-runtime__0.13.11__links//:defs.bzl", store_893 = "npm_imported_package_store") +load("@@_main~npm~npm__regl-error2d__2.0.12__links//:defs.bzl", store_894 = "npm_imported_package_store") +load("@@_main~npm~npm__regl-line2d__3.1.2__links//:defs.bzl", store_895 = "npm_imported_package_store") +load("@@_main~npm~npm__regl-scatter2d__3.3.1__links//:defs.bzl", store_896 = "npm_imported_package_store") +load("@@_main~npm~npm__regl-splom__1.0.14__links//:defs.bzl", store_897 = "npm_imported_package_store") +load("@@_main~npm~npm__regl__2.1.0__links//:defs.bzl", store_898 = "npm_imported_package_store") +load("@@_main~npm~npm__request__2.88.2__links//:defs.bzl", store_899 = "npm_imported_package_store") +load("@@_main~npm~npm__require-directory__2.1.1__links//:defs.bzl", store_900 = "npm_imported_package_store") +load("@@_main~npm~npm__require-from-string__2.0.2__links//:defs.bzl", store_901 = "npm_imported_package_store") +load("@@_main~npm~npm__require-like__0.1.2__links//:defs.bzl", store_902 = "npm_imported_package_store") +load("@@_main~npm~npm__resolve-cwd__3.0.0__links//:defs.bzl", store_903 = "npm_imported_package_store") +load("@@_main~npm~npm__resolve-from__4.0.0__links//:defs.bzl", store_904 = "npm_imported_package_store") +load("@@_main~npm~npm__resolve-from__5.0.0__links//:defs.bzl", store_905 = "npm_imported_package_store") +load("@@_main~npm~npm__resolve-protobuf-schema__2.1.0__links//:defs.bzl", store_906 = "npm_imported_package_store") +load("@@_main~npm~npm__resolve__0.6.3__links//:defs.bzl", store_907 = "npm_imported_package_store") +load("@@_main~npm~npm__resolve__1.22.1__links//:defs.bzl", store_908 = "npm_imported_package_store") +load("@@_main~npm~npm__responselike__2.0.1__links//:defs.bzl", store_909 = "npm_imported_package_store") +load("@@_main~npm~npm__retry__0.12.0__links//:defs.bzl", store_910 = "npm_imported_package_store") +load("@@_main~npm~npm__rfc4648__1.5.2__links//:defs.bzl", store_911 = "npm_imported_package_store") +load("@@_main~npm~npm__right-now__1.0.0__links//:defs.bzl", store_912 = "npm_imported_package_store") +load("@@_main~npm~npm__rimraf__2.7.1__links//:defs.bzl", store_913 = "npm_imported_package_store") +load("@@_main~npm~npm__rimraf__3.0.2__links//:defs.bzl", store_914 = "npm_imported_package_store") +load("@@_main~npm~npm__rimraf__5.0.10__links//:defs.bzl", store_915 = "npm_imported_package_store") +load("@@_main~npm~npm__rollup__2.70.2__links//:defs.bzl", link_916 = "npm_link_imported_package_store", store_916 = "npm_imported_package_store") +load("@@_main~npm~npm__rollup__4.39.0__links//:defs.bzl", link_917 = "npm_link_imported_package_store", store_917 = "npm_imported_package_store") +load("@@_main~npm~npm__rw__1.3.3__links//:defs.bzl", store_918 = "npm_imported_package_store") +load("@@_main~npm~npm__sade__1.8.1__links//:defs.bzl", store_919 = "npm_imported_package_store") +load("@@_main~npm~npm__safe-buffer__5.1.2__links//:defs.bzl", store_920 = "npm_imported_package_store") +load("@@_main~npm~npm__safe-buffer__5.2.1__links//:defs.bzl", store_921 = "npm_imported_package_store") +load("@@_main~npm~npm__safer-buffer__2.1.2__links//:defs.bzl", store_922 = "npm_imported_package_store") +load("@@_main~npm~npm__sax__1.2.4__links//:defs.bzl", store_923 = "npm_imported_package_store") +load("@@_main~npm~npm__scheduler__0.26.0__links//:defs.bzl", store_924 = "npm_imported_package_store") +load("@@_main~npm~npm__schema-utils__3.1.1__links//:defs.bzl", store_925 = "npm_imported_package_store") +load("@@_main~npm~npm__schema-utils__4.0.0__links//:defs.bzl", store_926 = "npm_imported_package_store") +load("@@_main~npm~npm__seedrandom__3.0.5__links//:defs.bzl", store_927 = "npm_imported_package_store") +load("@@_main~npm~npm__segfault-handler__1.3.0__links//:defs.bzl", link_928 = "npm_link_imported_package_store", store_928 = "npm_imported_package_store") +load("@@_main~npm~npm__semver-first-satisfied__1.1.0__links//:defs.bzl", link_929 = "npm_link_imported_package_store", store_929 = "npm_imported_package_store") +load("@@_main~npm~npm__semver__5.7.1__links//:defs.bzl", store_930 = "npm_imported_package_store") +load("@@_main~npm~npm__semver__6.3.0__links//:defs.bzl", store_931 = "npm_imported_package_store") +load("@@_main~npm~npm__semver__7.3.8__links//:defs.bzl", store_932 = "npm_imported_package_store") +load("@@_main~npm~npm__semver__7.5.0__links//:defs.bzl", store_933 = "npm_imported_package_store") +load("@@_main~npm~npm__semver__7.7.1__links//:defs.bzl", store_934 = "npm_imported_package_store") +load("@@_main~npm~npm__serialize-javascript__6.0.0__links//:defs.bzl", store_935 = "npm_imported_package_store") +load("@@_main~npm~npm__serialize-javascript__6.0.1__links//:defs.bzl", store_936 = "npm_imported_package_store") +load("@@_main~npm~npm__set-blocking__2.0.0__links//:defs.bzl", store_937 = "npm_imported_package_store") +load("@@_main~npm~npm__setprototypeof__1.2.0__links//:defs.bzl", store_938 = "npm_imported_package_store") +load("@@_main~npm~npm__shallow-clone__3.0.1__links//:defs.bzl", store_939 = "npm_imported_package_store") +load("@@_main~npm~npm__shallow-copy__0.0.1__links//:defs.bzl", store_940 = "npm_imported_package_store") +load("@@_main~npm~npm__sharp__0.33.5__links//:defs.bzl", store_941 = "npm_imported_package_store") +load("@@_main~npm~npm__shebang-command__2.0.0__links//:defs.bzl", store_942 = "npm_imported_package_store") +load("@@_main~npm~npm__shebang-regex__3.0.0__links//:defs.bzl", store_943 = "npm_imported_package_store") +load("@@_main~npm~npm__signal-exit__3.0.7__links//:defs.bzl", store_944 = "npm_imported_package_store") +load("@@_main~npm~npm__signal-exit__4.1.0__links//:defs.bzl", store_945 = "npm_imported_package_store") +load("@@_main~npm~npm__signum__1.0.0__links//:defs.bzl", store_946 = "npm_imported_package_store") +load("@@_main~npm~npm__simple-swizzle__0.2.2__links//:defs.bzl", store_947 = "npm_imported_package_store") +load("@@_main~npm~npm__sirv__1.0.19__links//:defs.bzl", store_948 = "npm_imported_package_store") +load("@@_main~npm~npm__smart-buffer__4.2.0__links//:defs.bzl", store_949 = "npm_imported_package_store") +load("@@_main~npm~npm__socks-proxy-agent__7.0.0__links//:defs.bzl", store_950 = "npm_imported_package_store") +load("@@_main~npm~npm__socks__2.7.1__links//:defs.bzl", store_951 = "npm_imported_package_store") +load("@@_main~npm~npm__source-map-js__1.0.2__links//:defs.bzl", store_952 = "npm_imported_package_store") +load("@@_main~npm~npm__source-map-js__1.2.1__links//:defs.bzl", store_953 = "npm_imported_package_store") +load("@@_main~npm~npm__source-map-support__0.5.21__links//:defs.bzl", link_954 = "npm_link_imported_package_store", store_954 = "npm_imported_package_store") +load("@@_main~npm~npm__source-map__0.6.1__links//:defs.bzl", store_955 = "npm_imported_package_store") +load("@@_main~npm~npm__sourcemap-codec__1.4.8__links//:defs.bzl", store_956 = "npm_imported_package_store") +load("@@_main~npm~npm__sshpk__1.17.0__links//:defs.bzl", store_957 = "npm_imported_package_store") +load("@@_main~npm~npm__ssri__9.0.1__links//:defs.bzl", store_958 = "npm_imported_package_store") +load("@@_main~npm~npm__stack-trace__0.0.9__links//:defs.bzl", store_959 = "npm_imported_package_store") +load("@@_main~npm~npm__static-eval__2.1.0__links//:defs.bzl", store_960 = "npm_imported_package_store") +load("@@_main~npm~npm__statuses__2.0.1__links//:defs.bzl", store_961 = "npm_imported_package_store") +load("@@_main~npm~npm__stream-buffers__3.0.2__links//:defs.bzl", store_962 = "npm_imported_package_store") +load("@@_main~npm~npm__stream-parser__0.3.1__links//:defs.bzl", store_963 = "npm_imported_package_store") +load("@@_main~npm~npm__stream-shift__1.0.1__links//:defs.bzl", store_964 = "npm_imported_package_store") +load("@@_main~npm~npm__streamsearch__1.1.0__links//:defs.bzl", store_965 = "npm_imported_package_store") +load("@@_main~npm~npm__string-split-by__1.0.0__links//:defs.bzl", store_966 = "npm_imported_package_store") +load("@@_main~npm~npm__string-width__1.0.2__links//:defs.bzl", store_967 = "npm_imported_package_store") +load("@@_main~npm~npm__string-width__4.2.3__links//:defs.bzl", store_968 = "npm_imported_package_store") +load("@@_main~npm~npm__string-width__5.1.2__links//:defs.bzl", store_969 = "npm_imported_package_store") +load("@@_main~npm~npm__string_decoder__0.10.31__links//:defs.bzl", store_970 = "npm_imported_package_store") +load("@@_main~npm~npm__string_decoder__1.1.1__links//:defs.bzl", store_971 = "npm_imported_package_store") +load("@@_main~npm~npm__string_decoder__1.3.0__links//:defs.bzl", store_972 = "npm_imported_package_store") +load("@@_main~npm~npm__strip-ansi__3.0.1__links//:defs.bzl", store_973 = "npm_imported_package_store") +load("@@_main~npm~npm__strip-ansi__6.0.1__links//:defs.bzl", store_974 = "npm_imported_package_store") +load("@@_main~npm~npm__strip-ansi__7.1.0__links//:defs.bzl", store_975 = "npm_imported_package_store") +load("@@_main~npm~npm__strip-bom__4.0.0__links//:defs.bzl", store_976 = "npm_imported_package_store") +load("@@_main~npm~npm__strip-json-comments__2.0.1__links//:defs.bzl", store_977 = "npm_imported_package_store") +load("@@_main~npm~npm__strip-json-comments__3.1.1__links//:defs.bzl", store_978 = "npm_imported_package_store") +load("@@_main~npm~npm__strongly-connected-components__1.0.1__links//:defs.bzl", store_979 = "npm_imported_package_store") +load("@@_main~npm~npm__styled-jsx__5.1.6_react_19.1.0__links//:defs.bzl", store_980 = "npm_imported_package_store") +load("@@_main~npm~npm__supercluster__7.1.5__links//:defs.bzl", store_981 = "npm_imported_package_store") +load("@@_main~npm~npm__superscript-text__1.0.0__links//:defs.bzl", store_982 = "npm_imported_package_store") +load("@@_main~npm~npm__supports-color__5.5.0__links//:defs.bzl", store_983 = "npm_imported_package_store") +load("@@_main~npm~npm__supports-color__7.2.0__links//:defs.bzl", store_984 = "npm_imported_package_store") +load("@@_main~npm~npm__supports-color__8.1.1__links//:defs.bzl", store_985 = "npm_imported_package_store") +load("@@_main~npm~npm__supports-preserve-symlinks-flag__1.0.0__links//:defs.bzl", store_986 = "npm_imported_package_store") +load("@@_main~npm~npm__svg-arc-to-cubic-bezier__3.2.0__links//:defs.bzl", store_987 = "npm_imported_package_store") +load("@@_main~npm~npm__svg-path-bounds__1.0.2__links//:defs.bzl", store_988 = "npm_imported_package_store") +load("@@_main~npm~npm__svg-path-sdf__1.1.3__links//:defs.bzl", store_989 = "npm_imported_package_store") +load("@@_main~npm~npm__syncpack__github.com_JamieMason_syncpack_c245af8ea73ce3345d92bbda6c684092a841e262__links//:defs.bzl", link_990 = "npm_link_imported_package_store", store_990 = "npm_imported_package_store") +load("@@_main~npm~npm__tailwindcss__4.1.0__links//:defs.bzl", link_991 = "npm_link_imported_package_store", store_991 = "npm_imported_package_store") +load("@@_main~npm~npm__tapable__2.2.1__links//:defs.bzl", store_992 = "npm_imported_package_store") +load("@@_main~npm~npm__tar-fs__1.16.3__links//:defs.bzl", store_993 = "npm_imported_package_store") +load("@@_main~npm~npm__tar-fs__2.1.1__links//:defs.bzl", store_994 = "npm_imported_package_store") +load("@@_main~npm~npm__tar-stream__1.6.2__links//:defs.bzl", store_995 = "npm_imported_package_store") +load("@@_main~npm~npm__tar-stream__2.2.0__links//:defs.bzl", store_996 = "npm_imported_package_store") +load("@@_main~npm~npm__tar__4.4.19__links//:defs.bzl", store_997 = "npm_imported_package_store") +load("@@_main~npm~npm__tar__6.1.13__links//:defs.bzl", store_998 = "npm_imported_package_store") +load("@@_main~npm~npm__tar__7.4.3__links//:defs.bzl", store_999 = "npm_imported_package_store") +load("@@_main~npm~npm__terser-webpack-plugin__5.3.6_webpack_5.76.3__links//:defs.bzl", store_1000 = "npm_imported_package_store") +load("@@_main~npm~npm__terser__5.16.5__links//:defs.bzl", store_1001 = "npm_imported_package_store") +load("@@_main~npm~npm__test-exclude__6.0.0__links//:defs.bzl", store_1002 = "npm_imported_package_store") +load("@@_main~npm~npm__through2__0.6.5__links//:defs.bzl", store_1003 = "npm_imported_package_store") +load("@@_main~npm~npm__through2__2.0.5__links//:defs.bzl", store_1004 = "npm_imported_package_store") +load("@@_main~npm~npm__through__2.3.8__links//:defs.bzl", store_1005 = "npm_imported_package_store") +load("@@_main~npm~npm__tightrope__0.1.0__links//:defs.bzl", store_1006 = "npm_imported_package_store") +load("@@_main~npm~npm__tiny-emitter__2.1.0__links//:defs.bzl", store_1007 = "npm_imported_package_store") +load("@@_main~npm~npm__tinycolor2__1.6.0__links//:defs.bzl", store_1008 = "npm_imported_package_store") +load("@@_main~npm~npm__tinyqueue__2.0.3__links//:defs.bzl", store_1009 = "npm_imported_package_store") +load("@@_main~npm~npm__tmp__0.0.33__links//:defs.bzl", store_1010 = "npm_imported_package_store") +load("@@_main~npm~npm__to-buffer__1.1.1__links//:defs.bzl", store_1011 = "npm_imported_package_store") +load("@@_main~npm~npm__to-fast-properties__2.0.0__links//:defs.bzl", store_1012 = "npm_imported_package_store") +load("@@_main~npm~npm__to-float32__1.1.0__links//:defs.bzl", store_1013 = "npm_imported_package_store") +load("@@_main~npm~npm__to-px__1.0.1__links//:defs.bzl", store_1014 = "npm_imported_package_store") +load("@@_main~npm~npm__to-readable-stream__2.1.0__links//:defs.bzl", store_1015 = "npm_imported_package_store") +load("@@_main~npm~npm__to-regex-range__5.0.1__links//:defs.bzl", store_1016 = "npm_imported_package_store") +load("@@_main~npm~npm__toidentifier__1.0.1__links//:defs.bzl", store_1017 = "npm_imported_package_store") +load("@@_main~npm~npm__topojson-client__3.1.0__links//:defs.bzl", store_1018 = "npm_imported_package_store") +load("@@_main~npm~npm__totalist__1.1.0__links//:defs.bzl", store_1019 = "npm_imported_package_store") +load("@@_main~npm~npm__tough-cookie__2.5.0__links//:defs.bzl", store_1020 = "npm_imported_package_store") +load("@@_main~npm~npm__tr46__0.0.3__links//:defs.bzl", store_1021 = "npm_imported_package_store") +load("@@_main~npm~npm__tslib__2.7.0__links//:defs.bzl", link_1022 = "npm_link_imported_package_store", store_1022 = "npm_imported_package_store") +load("@@_main~npm~npm__tslib__2.8.1__links//:defs.bzl", store_1023 = "npm_imported_package_store") +load("@@_main~npm~npm__tunnel-agent__0.6.0__links//:defs.bzl", store_1024 = "npm_imported_package_store") +load("@@_main~npm~npm__tweetnacl__0.14.5__links//:defs.bzl", store_1025 = "npm_imported_package_store") +load("@@_main~npm~npm__type-check__0.3.2__links//:defs.bzl", store_1026 = "npm_imported_package_store") +load("@@_main~npm~npm__type-fest__0.10.0__links//:defs.bzl", store_1027 = "npm_imported_package_store") +load("@@_main~npm~npm__type__1.2.0__links//:defs.bzl", store_1028 = "npm_imported_package_store") +load("@@_main~npm~npm__type__2.7.2__links//:defs.bzl", store_1029 = "npm_imported_package_store") +load("@@_main~npm~npm__typed-function__4.1.0__links//:defs.bzl", store_1030 = "npm_imported_package_store") +load("@@_main~npm~npm__typedarray-pool__1.2.0__links//:defs.bzl", store_1031 = "npm_imported_package_store") +load("@@_main~npm~npm__typedarray__0.0.6__links//:defs.bzl", store_1032 = "npm_imported_package_store") +load("@@_main~npm~npm__typeof-article__0.1.1__links//:defs.bzl", store_1033 = "npm_imported_package_store") +load("@@_main~npm~npm__typescript__4.9.5__links//:defs.bzl", link_1034 = "npm_link_imported_package_store", store_1034 = "npm_imported_package_store") +load("@@_main~npm~npm__ufo__1.1.0__links//:defs.bzl", store_1035 = "npm_imported_package_store") +load("@@_main~npm~npm__unbzip2-stream__1.4.3__links//:defs.bzl", store_1036 = "npm_imported_package_store") +load("@@_main~npm~npm__undici-types__5.26.5__links//:defs.bzl", store_1037 = "npm_imported_package_store") +load("@@_main~npm~npm__undici-types__6.19.8__links//:defs.bzl", store_1038 = "npm_imported_package_store") +load("@@_main~npm~npm__unique-filename__2.0.1__links//:defs.bzl", store_1039 = "npm_imported_package_store") +load("@@_main~npm~npm__unique-slug__3.0.0__links//:defs.bzl", store_1040 = "npm_imported_package_store") +load("@@_main~npm~npm__universalify__0.1.2__links//:defs.bzl", store_1041 = "npm_imported_package_store") +load("@@_main~npm~npm__universalify__2.0.0__links//:defs.bzl", store_1042 = "npm_imported_package_store") +load("@@_main~npm~npm__unix-dgram__2.0.6__links//:defs.bzl", store_1043 = "npm_imported_package_store") +load("@@_main~npm~npm__unquote__1.1.1__links//:defs.bzl", store_1044 = "npm_imported_package_store") +load("@@_main~npm~npm__unused__0.2.2__links//:defs.bzl", link_1045 = "npm_link_imported_package_store", store_1045 = "npm_imported_package_store") +load("@@_main~npm~npm__update-browserslist-db__1.0.10_browserslist_4.21.5__links//:defs.bzl", store_1046 = "npm_imported_package_store") +load("@@_main~npm~npm__update-diff__1.1.0__links//:defs.bzl", store_1047 = "npm_imported_package_store") +load("@@_main~npm~npm__uri-js__4.4.1__links//:defs.bzl", store_1048 = "npm_imported_package_store") +load("@@_main~npm~npm__util-deprecate__1.0.2__links//:defs.bzl", store_1049 = "npm_imported_package_store") +load("@@_main~npm~npm__uuid__3.4.0__links//:defs.bzl", store_1050 = "npm_imported_package_store") +load("@@_main~npm~npm__uuid__8.3.2__links//:defs.bzl", link_1051 = "npm_link_imported_package_store", store_1051 = "npm_imported_package_store") +load("@@_main~npm~npm__uvu__0.5.3__links//:defs.bzl", link_1052 = "npm_link_imported_package_store", store_1052 = "npm_imported_package_store") +load("@@_main~npm~npm__v8-to-istanbul__9.1.0__links//:defs.bzl", store_1053 = "npm_imported_package_store") +load("@@_main~npm~npm__verror__1.10.0__links//:defs.bzl", store_1054 = "npm_imported_package_store") +load("@@_main~npm~npm__vt-pbf__3.1.3__links//:defs.bzl", store_1055 = "npm_imported_package_store") +load("@@_main~npm~npm__watchpack__2.4.0__links//:defs.bzl", store_1056 = "npm_imported_package_store") +load("@@_main~npm~npm__weak-map__1.0.8__links//:defs.bzl", store_1057 = "npm_imported_package_store") +load("@@_main~npm~npm__webgl-context__2.2.0__links//:defs.bzl", store_1058 = "npm_imported_package_store") +load("@@_main~npm~npm__webidl-conversions__3.0.1__links//:defs.bzl", store_1059 = "npm_imported_package_store") +load("@@_main~npm~npm__webpack-bundle-analyzer__4.5.0_bufferutil_4.0.8__links//:defs.bzl", link_1060 = "npm_link_imported_package_store", store_1060 = "npm_imported_package_store") +load("@@_main~npm~npm__webpack-cli__5.0.1_webpack_5.76.3__links//:defs.bzl", link_1061 = "npm_link_imported_package_store", store_1061 = "npm_imported_package_store") +load("@@_main~npm~npm__webpack-merge__5.8.0__links//:defs.bzl", store_1062 = "npm_imported_package_store") +load("@@_main~npm~npm__webpack-sources__3.2.3__links//:defs.bzl", store_1063 = "npm_imported_package_store") +load("@@_main~npm~npm__webpack__5.76.3_webpack-cli_5.0.1__links//:defs.bzl", link_1064 = "npm_link_imported_package_store", store_1064 = "npm_imported_package_store") +load("@@_main~npm~npm__whatwg-url__5.0.0__links//:defs.bzl", store_1065 = "npm_imported_package_store") +load("@@_main~npm~npm__which__2.0.2__links//:defs.bzl", store_1066 = "npm_imported_package_store") +load("@@_main~npm~npm__wide-align__1.1.5__links//:defs.bzl", store_1067 = "npm_imported_package_store") +load("@@_main~npm~npm__wildcard__2.0.0__links//:defs.bzl", store_1068 = "npm_imported_package_store") +load("@@_main~npm~npm__word-wrap__1.2.3__links//:defs.bzl", store_1069 = "npm_imported_package_store") +load("@@_main~npm~npm__wordwrap__0.0.3__links//:defs.bzl", store_1070 = "npm_imported_package_store") +load("@@_main~npm~npm__workerpool__6.2.1__links//:defs.bzl", store_1071 = "npm_imported_package_store") +load("@@_main~npm~npm__world-calendars__1.0.3__links//:defs.bzl", store_1072 = "npm_imported_package_store") +load("@@_main~npm~npm__wrap-ansi__7.0.0__links//:defs.bzl", store_1073 = "npm_imported_package_store") +load("@@_main~npm~npm__wrap-ansi__8.1.0__links//:defs.bzl", store_1074 = "npm_imported_package_store") +load("@@_main~npm~npm__wrappy__1.0.2__links//:defs.bzl", store_1075 = "npm_imported_package_store") +load("@@_main~npm~npm__ws__7.5.9_bufferutil_4.0.8__links//:defs.bzl", store_1076 = "npm_imported_package_store") +load("@@_main~npm~npm__ws__8.13.0_bufferutil_4.0.8__links//:defs.bzl", store_1077 = "npm_imported_package_store") +load("@@_main~npm~npm__ws__8.18.0_bufferutil_4.0.8__links//:defs.bzl", store_1078 = "npm_imported_package_store") +load("@@_main~npm~npm__xml__1.0.1__links//:defs.bzl", store_1079 = "npm_imported_package_store") +load("@@_main~npm~npm__xtend__2.2.0__links//:defs.bzl", store_1080 = "npm_imported_package_store") +load("@@_main~npm~npm__xtend__4.0.2__links//:defs.bzl", store_1081 = "npm_imported_package_store") +load("@@_main~npm~npm__y18n__5.0.8__links//:defs.bzl", store_1082 = "npm_imported_package_store") +load("@@_main~npm~npm__yallist__3.1.1__links//:defs.bzl", store_1083 = "npm_imported_package_store") +load("@@_main~npm~npm__yallist__4.0.0__links//:defs.bzl", store_1084 = "npm_imported_package_store") +load("@@_main~npm~npm__yallist__5.0.0__links//:defs.bzl", store_1085 = "npm_imported_package_store") +load("@@_main~npm~npm__yargs-parser__20.2.4__links//:defs.bzl", store_1086 = "npm_imported_package_store") +load("@@_main~npm~npm__yargs-parser__20.2.9__links//:defs.bzl", store_1087 = "npm_imported_package_store") +load("@@_main~npm~npm__yargs-parser__21.1.1__links//:defs.bzl", store_1088 = "npm_imported_package_store") +load("@@_main~npm~npm__yargs-unparser__2.0.0__links//:defs.bzl", store_1089 = "npm_imported_package_store") +load("@@_main~npm~npm__yargs__16.2.0__links//:defs.bzl", store_1090 = "npm_imported_package_store") +load("@@_main~npm~npm__yargs__17.7.1__links//:defs.bzl", store_1091 = "npm_imported_package_store") +load("@@_main~npm~npm__yauzl__2.10.0__links//:defs.bzl", store_1092 = "npm_imported_package_store") +load("@@_main~npm~npm__yocto-queue__0.1.0__links//:defs.bzl", store_1093 = "npm_imported_package_store") +load("@@_main~npm~npm__zod__3.21.4__links//:defs.bzl", store_1094 = "npm_imported_package_store") # buildifier: disable=bzl-visibility load("@aspect_rules_js//js:defs.bzl", _js_library = "js_library") @@ -1270,986 +1283,993 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): store_152(name = "{}/@istanbuljs/schema".format(name)) store_153(name = "{}/@jridgewell/gen-mapping".format(name)) store_154(name = "{}/@jridgewell/gen-mapping".format(name)) - store_155(name = "{}/@jridgewell/gen-mapping".format(name)) - store_156(name = "{}/@jridgewell/resolve-uri".format(name)) - store_157(name = "{}/@jridgewell/set-array".format(name)) - store_158(name = "{}/@jridgewell/set-array".format(name)) - store_159(name = "{}/@jridgewell/source-map".format(name)) - store_160(name = "{}/@jridgewell/source-map".format(name)) - store_161(name = "{}/@jridgewell/sourcemap-codec".format(name)) - store_162(name = "{}/@jridgewell/trace-mapping".format(name)) - store_163(name = "{}/@jridgewell/trace-mapping".format(name)) - store_164(name = "{}/@jsep-plugin/assignment".format(name)) - store_165(name = "{}/@jsep-plugin/regex".format(name)) - store_166(name = "{}/@kubernetes/client-node".format(name)) - store_167(name = "{}/@lukeed/ms".format(name)) - store_168(name = "{}/@mapbox/geojson-rewind".format(name)) - store_169(name = "{}/@mapbox/geojson-types".format(name)) - store_170(name = "{}/@mapbox/jsonlint-lines-primitives".format(name)) - store_171(name = "{}/@mapbox/mapbox-gl-supported".format(name)) - store_172(name = "{}/@mapbox/node-pre-gyp".format(name)) - store_173(name = "{}/@mapbox/point-geometry".format(name)) - store_174(name = "{}/@mapbox/tiny-sdf".format(name)) - store_175(name = "{}/@mapbox/unitbezier".format(name)) - store_176(name = "{}/@mapbox/vector-tile".format(name)) - store_177(name = "{}/@mapbox/whoots-js".format(name)) - store_178(name = "{}/@next/env".format(name)) - store_179(name = "{}/@next/swc-darwin-arm64".format(name)) - store_180(name = "{}/@next/swc-darwin-x64".format(name)) - store_181(name = "{}/@next/swc-linux-arm64-gnu".format(name)) - store_182(name = "{}/@next/swc-linux-arm64-musl".format(name)) - store_183(name = "{}/@next/swc-linux-x64-gnu".format(name)) - store_184(name = "{}/@next/swc-linux-x64-musl".format(name)) - store_185(name = "{}/@next/swc-win32-arm64-msvc".format(name)) - store_186(name = "{}/@next/swc-win32-x64-msvc".format(name)) - store_187(name = "{}/@npmcli/fs".format(name)) - store_188(name = "{}/@npmcli/move-file".format(name)) - store_189(name = "{}/@pkgjs/parseargs".format(name)) - store_190(name = "{}/@plotly/d3-sankey-circular".format(name)) - store_191(name = "{}/@plotly/d3-sankey".format(name)) - store_192(name = "{}/@plotly/d3".format(name)) - store_193(name = "{}/@plotly/point-cluster".format(name)) - store_194(name = "{}/@plotly/regl".format(name)) - store_195(name = "{}/@polka/url".format(name)) - store_196(name = "{}/@puppeteer/browsers".format(name)) - store_197(name = "{}/@rollup/plugin-commonjs".format(name)) - store_198(name = "{}/@rollup/plugin-commonjs".format(name)) - store_199(name = "{}/@rollup/plugin-commonjs".format(name)) - store_200(name = "{}/@rollup/plugin-json".format(name)) - store_201(name = "{}/@rollup/plugin-json".format(name)) - store_202(name = "{}/@rollup/plugin-node-resolve".format(name)) - store_203(name = "{}/@rollup/plugin-node-resolve".format(name)) - store_204(name = "{}/@rollup/plugin-terser".format(name)) - store_205(name = "{}/@rollup/plugin-typescript".format(name)) - store_206(name = "{}/@rollup/pluginutils".format(name)) - store_207(name = "{}/@rollup/pluginutils".format(name)) - store_208(name = "{}/@rollup/pluginutils".format(name)) - store_209(name = "{}/@sindresorhus/is".format(name)) - store_210(name = "{}/@swc/counter".format(name)) - store_211(name = "{}/@swc/helpers".format(name)) - store_212(name = "{}/@szmarczak/http-timer".format(name)) - store_213(name = "{}/@tailwindcss/node".format(name)) - store_214(name = "{}/@tailwindcss/oxide-android-arm64".format(name)) - store_215(name = "{}/@tailwindcss/oxide-darwin-arm64".format(name)) - store_216(name = "{}/@tailwindcss/oxide-darwin-x64".format(name)) - store_217(name = "{}/@tailwindcss/oxide-freebsd-x64".format(name)) - store_218(name = "{}/@tailwindcss/oxide-linux-arm-gnueabihf".format(name)) - store_219(name = "{}/@tailwindcss/oxide-linux-arm64-gnu".format(name)) - store_220(name = "{}/@tailwindcss/oxide-linux-arm64-musl".format(name)) - store_221(name = "{}/@tailwindcss/oxide-linux-x64-gnu".format(name)) - store_222(name = "{}/@tailwindcss/oxide-linux-x64-musl".format(name)) - store_223(name = "{}/@tailwindcss/oxide-win32-arm64-msvc".format(name)) - store_224(name = "{}/@tailwindcss/oxide-win32-x64-msvc".format(name)) - store_225(name = "{}/@tailwindcss/oxide".format(name)) - store_226(name = "{}/@tailwindcss/postcss".format(name)) - store_227(name = "{}/@tootallnate/once".format(name)) - store_228(name = "{}/@turf/area".format(name)) - store_229(name = "{}/@turf/bbox".format(name)) - store_230(name = "{}/@turf/centroid".format(name)) - store_231(name = "{}/@turf/helpers".format(name)) - store_232(name = "{}/@turf/meta".format(name)) - store_233(name = "{}/@types/cacheable-request".format(name)) - store_234(name = "{}/@types/caseless".format(name)) - store_235(name = "{}/@types/eslint-scope".format(name)) - store_236(name = "{}/@types/eslint".format(name)) - store_237(name = "{}/@types/estree".format(name)) - store_238(name = "{}/@types/estree".format(name)) - store_239(name = "{}/@types/estree".format(name)) - store_240(name = "{}/@types/google-protobuf".format(name)) - store_241(name = "{}/@types/http-cache-semantics".format(name)) - store_242(name = "{}/@types/istanbul-lib-coverage".format(name)) - store_243(name = "{}/@types/js-yaml".format(name)) - store_244(name = "{}/@types/json-schema".format(name)) - store_245(name = "{}/@types/keyv".format(name)) - store_246(name = "{}/@types/node".format(name)) - store_247(name = "{}/@types/node".format(name)) - store_248(name = "{}/@types/node".format(name)) - store_249(name = "{}/@types/node".format(name)) - store_250(name = "{}/@types/request".format(name)) - store_251(name = "{}/@types/resolve".format(name)) - store_252(name = "{}/@types/responselike".format(name)) - store_253(name = "{}/@types/tough-cookie".format(name)) - store_254(name = "{}/@types/underscore".format(name)) - store_255(name = "{}/@types/ws".format(name)) - store_256(name = "{}/@types/yauzl".format(name)) - store_257(name = "{}/@vanilla-extract/babel-plugin-debug-ids".format(name)) - store_258(name = "{}/@vanilla-extract/css".format(name)) - store_259(name = "{}/@vanilla-extract/css".format(name)) - store_260(name = "{}/@vanilla-extract/integration".format(name)) - store_261(name = "{}/@vanilla-extract/private".format(name)) - store_262(name = "{}/@vanilla-extract/webpack-plugin".format(name)) - store_263(name = "{}/@webassemblyjs/ast".format(name)) - store_264(name = "{}/@webassemblyjs/floating-point-hex-parser".format(name)) - store_265(name = "{}/@webassemblyjs/helper-api-error".format(name)) - store_266(name = "{}/@webassemblyjs/helper-buffer".format(name)) - store_267(name = "{}/@webassemblyjs/helper-numbers".format(name)) - store_268(name = "{}/@webassemblyjs/helper-wasm-bytecode".format(name)) - store_269(name = "{}/@webassemblyjs/helper-wasm-section".format(name)) - store_270(name = "{}/@webassemblyjs/ieee754".format(name)) - store_271(name = "{}/@webassemblyjs/leb128".format(name)) - store_272(name = "{}/@webassemblyjs/utf8".format(name)) - store_273(name = "{}/@webassemblyjs/wasm-edit".format(name)) - store_274(name = "{}/@webassemblyjs/wasm-gen".format(name)) - store_275(name = "{}/@webassemblyjs/wasm-opt".format(name)) - store_276(name = "{}/@webassemblyjs/wasm-parser".format(name)) - store_277(name = "{}/@webassemblyjs/wast-printer".format(name)) - store_278(name = "{}/@webpack-cli/configtest".format(name)) - store_279(name = "{}/@webpack-cli/info".format(name)) - store_280(name = "{}/@webpack-cli/serve".format(name)) - store_281(name = "{}/@xtuc/ieee754".format(name)) - store_282(name = "{}/@xtuc/long".format(name)) - store_283(name = "{}/aws-sign2".format(name)) - store_284(name = "{}/aws4".format(name)) - store_285(name = "{}/balanced-match".format(name)) - store_286(name = "{}/base64-js".format(name)) - store_287(name = "{}/bcrypt-pbkdf".format(name)) - store_288(name = "{}/big.js".format(name)) - store_289(name = "{}/binary-extensions".format(name)) - store_290(name = "{}/binary-search-bounds".format(name)) - store_291(name = "{}/bindings".format(name)) - store_292(name = "{}/bit-twiddle".format(name)) - store_293(name = "{}/bitmap-sdf".format(name)) - store_294(name = "{}/bl".format(name)) - store_295(name = "{}/bl".format(name)) - store_296(name = "{}/bl".format(name)) - store_297(name = "{}/brace-expansion".format(name)) - store_298(name = "{}/brace-expansion".format(name)) - store_299(name = "{}/braces".format(name)) - store_300(name = "{}/browser-stdout".format(name)) - store_301(name = "{}/browserslist".format(name)) - store_302(name = "{}/buffer-alloc-unsafe".format(name)) - store_303(name = "{}/buffer-alloc".format(name)) - store_304(name = "{}/buffer-crc32".format(name)) - store_305(name = "{}/buffer-fill".format(name)) - store_306(name = "{}/buffer-from".format(name)) - store_307(name = "{}/buffer".format(name)) - store_308(name = "{}/bufferutil".format(name)) - store_309(name = "{}/busboy".format(name)) - store_310(name = "{}/byline".format(name)) - store_311(name = "{}/c8".format(name)) - store_312(name = "{}/cacache".format(name)) - store_313(name = "{}/cacheable-lookup".format(name)) - store_314(name = "{}/cacheable-request".format(name)) - store_315(name = "{}/callsites".format(name)) - store_316(name = "{}/camelcase".format(name)) - store_317(name = "{}/caniuse-lite".format(name)) - store_318(name = "{}/caniuse-lite".format(name)) - store_319(name = "{}/canvas-fit".format(name)) - store_320(name = "{}/caseless".format(name)) - store_321(name = "{}/chalk".format(name)) - store_322(name = "{}/chalk".format(name)) - store_323(name = "{}/chalk".format(name)) - store_324(name = "{}/chalk".format(name)) - store_325(name = "{}/charenc".format(name)) - store_326(name = "{}/chokidar".format(name)) - store_327(name = "{}/chownr".format(name)) - store_328(name = "{}/chownr".format(name)) - store_329(name = "{}/chownr".format(name)) - store_330(name = "{}/chrome-trace-event".format(name)) - store_331(name = "{}/chromium-bidi".format(name)) - store_332(name = "{}/clamp".format(name)) - store_333(name = "{}/clean-stack".format(name)) - store_334(name = "{}/client-only".format(name)) - store_335(name = "{}/cliui".format(name)) - store_336(name = "{}/cliui".format(name)) - store_337(name = "{}/clone-deep".format(name)) - store_338(name = "{}/clone-response".format(name)) - store_339(name = "{}/code-point-at".format(name)) - store_340(name = "{}/color-alpha".format(name)) - store_341(name = "{}/color-convert".format(name)) - store_342(name = "{}/color-convert".format(name)) - store_343(name = "{}/color-id".format(name)) - store_344(name = "{}/color-name".format(name)) - store_345(name = "{}/color-name".format(name)) - store_346(name = "{}/color-normalize".format(name)) - store_347(name = "{}/color-parse".format(name)) - store_348(name = "{}/color-rgba".format(name)) - store_349(name = "{}/color-space".format(name)) - store_350(name = "{}/color-string".format(name)) - store_351(name = "{}/color-support".format(name)) - store_352(name = "{}/color".format(name)) - store_353(name = "{}/colorette".format(name)) - store_354(name = "{}/combined-stream".format(name)) - store_355(name = "{}/commander".format(name)) - store_356(name = "{}/commander".format(name)) - store_357(name = "{}/commander".format(name)) - store_358(name = "{}/commander".format(name)) - store_359(name = "{}/commondir".format(name)) - store_360(name = "{}/complex.js".format(name)) - store_361(name = "{}/concat-map".format(name)) - store_362(name = "{}/concat-stream".format(name)) - store_363(name = "{}/console-control-strings".format(name)) - store_364(name = "{}/convert-source-map".format(name)) - store_365(name = "{}/core-util-is".format(name)) - store_366(name = "{}/core-util-is".format(name)) - store_367(name = "{}/cosmiconfig".format(name)) - store_368(name = "{}/country-regex".format(name)) - store_369(name = "{}/cross-fetch".format(name)) - store_370(name = "{}/cross-spawn".format(name)) - store_371(name = "{}/crypt".format(name)) - store_372(name = "{}/css-font-size-keywords".format(name)) - store_373(name = "{}/css-font-stretch-keywords".format(name)) - store_374(name = "{}/css-font-style-keywords".format(name)) - store_375(name = "{}/css-font-weight-keywords".format(name)) - store_376(name = "{}/css-font".format(name)) - store_377(name = "{}/css-global-keywords".format(name)) - store_378(name = "{}/css-loader".format(name)) - store_379(name = "{}/css-system-font-keywords".format(name)) - store_380(name = "{}/css-what".format(name)) - store_381(name = "{}/csscolorparser".format(name)) - store_382(name = "{}/cssesc".format(name)) - store_383(name = "{}/csstype".format(name)) - store_384(name = "{}/d3-array".format(name)) - store_385(name = "{}/d3-collection".format(name)) - store_386(name = "{}/d3-color".format(name)) - store_387(name = "{}/d3-dispatch".format(name)) - store_388(name = "{}/d3-force".format(name)) - store_389(name = "{}/d3-format".format(name)) - store_390(name = "{}/d3-geo-projection".format(name)) - store_391(name = "{}/d3-geo".format(name)) - store_392(name = "{}/d3-hierarchy".format(name)) - store_393(name = "{}/d3-interpolate".format(name)) - store_394(name = "{}/d3-path".format(name)) - store_395(name = "{}/d3-quadtree".format(name)) - store_396(name = "{}/d3-shape".format(name)) - store_397(name = "{}/d3-time-format".format(name)) - store_398(name = "{}/d3-time".format(name)) - store_399(name = "{}/d3-timer".format(name)) - store_400(name = "{}/d".format(name)) - store_401(name = "{}/dashdash".format(name)) - store_402(name = "{}/date.js".format(name)) - store_403(name = "{}/debug".format(name)) - store_404(name = "{}/debug".format(name)) - store_405(name = "{}/debug".format(name)) - store_406(name = "{}/debug".format(name)) - store_407(name = "{}/debug".format(name)) - store_408(name = "{}/decamelize".format(name)) - store_409(name = "{}/decimal.js".format(name)) - store_410(name = "{}/decompress-response".format(name)) - store_411(name = "{}/deep-extend".format(name)) - store_412(name = "{}/deep-is".format(name)) - store_413(name = "{}/deep-object-diff".format(name)) - store_414(name = "{}/deepmerge".format(name)) - store_415(name = "{}/defer-to-connect".format(name)) - store_416(name = "{}/defined".format(name)) - store_417(name = "{}/delayed-stream".format(name)) - store_418(name = "{}/delegates".format(name)) - store_419(name = "{}/depd".format(name)) - store_420(name = "{}/depd".format(name)) - store_421(name = "{}/dequal".format(name)) - store_422(name = "{}/detect-kerning".format(name)) - store_423(name = "{}/detect-libc".format(name)) - store_424(name = "{}/detect-libc".format(name)) - store_425(name = "{}/devtools-protocol".format(name)) - store_426(name = "{}/diff".format(name)) - store_427(name = "{}/diff".format(name)) - store_428(name = "{}/draw-svg-path".format(name)) - store_429(name = "{}/dtype".format(name)) - store_430(name = "{}/dup".format(name)) - store_431(name = "{}/duplexer3".format(name)) - store_432(name = "{}/duplexer".format(name)) - store_433(name = "{}/duplexify".format(name)) - store_434(name = "{}/earcut".format(name)) - store_435(name = "{}/eastasianwidth".format(name)) - store_436(name = "{}/ecc-jsbn".format(name)) - store_437(name = "{}/electron-to-chromium".format(name)) - store_438(name = "{}/element-size".format(name)) - store_439(name = "{}/elementary-circuits-directed-graph".format(name)) - store_440(name = "{}/emoji-regex".format(name)) - store_441(name = "{}/emoji-regex".format(name)) - store_442(name = "{}/emojis-list".format(name)) - store_443(name = "{}/encoding".format(name)) - store_444(name = "{}/end-of-stream".format(name)) - store_445(name = "{}/enhanced-resolve".format(name)) - store_446(name = "{}/enhanced-resolve".format(name)) - store_447(name = "{}/env-paths".format(name)) - store_448(name = "{}/envinfo".format(name)) - store_449(name = "{}/err-code".format(name)) - store_450(name = "{}/error-ex".format(name)) - store_451(name = "{}/es-module-lexer".format(name)) - store_452(name = "{}/es5-ext".format(name)) - store_453(name = "{}/es6-iterator".format(name)) - store_454(name = "{}/es6-symbol".format(name)) - store_455(name = "{}/es6-weak-map".format(name)) - store_456(name = "{}/esbuild".format(name)) - store_457(name = "{}/esbuild".format(name)) - store_458(name = "{}/escalade".format(name)) - store_459(name = "{}/escape-html".format(name)) - store_460(name = "{}/escape-latex".format(name)) - store_461(name = "{}/escape-string-regexp".format(name)) - store_462(name = "{}/escape-string-regexp".format(name)) - store_463(name = "{}/escodegen".format(name)) - store_464(name = "{}/eslint-scope".format(name)) - store_465(name = "{}/esprima".format(name)) - store_466(name = "{}/esprima".format(name)) - store_467(name = "{}/esrecurse".format(name)) - store_468(name = "{}/estraverse".format(name)) - store_469(name = "{}/estraverse".format(name)) - store_470(name = "{}/estree-walker".format(name)) - store_471(name = "{}/estree-walker".format(name)) - store_472(name = "{}/esutils".format(name)) - store_473(name = "{}/eval".format(name)) - store_474(name = "{}/events".format(name)) - store_475(name = "{}/ext".format(name)) - store_476(name = "{}/extend".format(name)) - store_477(name = "{}/extract-zip".format(name)) - store_478(name = "{}/extsprintf".format(name)) - store_479(name = "{}/falafel".format(name)) - store_480(name = "{}/fast-decode-uri-component".format(name)) - store_481(name = "{}/fast-deep-equal".format(name)) - store_482(name = "{}/fast-isnumeric".format(name)) - store_483(name = "{}/fast-json-stable-stringify".format(name)) - store_484(name = "{}/fast-levenshtein".format(name)) - store_485(name = "{}/fastest-levenshtein".format(name)) - store_486(name = "{}/fd-slicer".format(name)) - store_487(name = "{}/file-uri-to-path".format(name)) - store_488(name = "{}/fill-range".format(name)) - store_489(name = "{}/find-up".format(name)) - store_490(name = "{}/find-up".format(name)) - store_491(name = "{}/flat".format(name)) - store_492(name = "{}/flatten-vertex-data".format(name)) - store_493(name = "{}/font-atlas".format(name)) - store_494(name = "{}/font-measure".format(name)) - store_495(name = "{}/foreground-child".format(name)) - store_496(name = "{}/foreground-child".format(name)) - store_497(name = "{}/forever-agent".format(name)) - store_498(name = "{}/form-data".format(name)) - store_499(name = "{}/form-data".format(name)) - store_500(name = "{}/fraction.js".format(name)) - store_501(name = "{}/from2".format(name)) - store_502(name = "{}/fs-constants".format(name)) - store_503(name = "{}/fs-extra".format(name)) - store_504(name = "{}/fs-extra".format(name)) - store_505(name = "{}/fs-minipass".format(name)) - store_506(name = "{}/fs-minipass".format(name)) - store_507(name = "{}/fs.realpath".format(name)) - store_508(name = "{}/fsevents".format(name)) - store_509(name = "{}/function-bind".format(name)) - store_510(name = "{}/gauge".format(name)) - store_511(name = "{}/gauge".format(name)) - store_512(name = "{}/gauge".format(name)) - store_513(name = "{}/gensync".format(name)) - store_514(name = "{}/geojson-vt".format(name)) - store_515(name = "{}/get-caller-file".format(name)) - store_516(name = "{}/get-canvas-context".format(name)) - store_517(name = "{}/get-stream".format(name)) - store_518(name = "{}/get-stream".format(name)) - store_519(name = "{}/getpass".format(name)) - store_520(name = "{}/gl-mat4".format(name)) - store_521(name = "{}/gl-matrix".format(name)) - store_522(name = "{}/gl-text".format(name)) - store_523(name = "{}/gl-util".format(name)) - store_524(name = "{}/glob-parent".format(name)) - store_525(name = "{}/glob-to-regexp".format(name)) - store_526(name = "{}/glob".format(name)) - store_527(name = "{}/glob".format(name)) - store_528(name = "{}/glob".format(name)) - store_529(name = "{}/glob".format(name)) - store_530(name = "{}/glob".format(name)) - store_531(name = "{}/globals".format(name)) - store_532(name = "{}/glsl-inject-defines".format(name)) - store_533(name = "{}/glsl-resolve".format(name)) - store_534(name = "{}/glsl-token-assignments".format(name)) - store_535(name = "{}/glsl-token-defines".format(name)) - store_536(name = "{}/glsl-token-depth".format(name)) - store_537(name = "{}/glsl-token-descope".format(name)) - store_538(name = "{}/glsl-token-inject-block".format(name)) - store_539(name = "{}/glsl-token-properties".format(name)) - store_540(name = "{}/glsl-token-scope".format(name)) - store_541(name = "{}/glsl-token-string".format(name)) - store_542(name = "{}/glsl-token-whitespace-trim".format(name)) - store_543(name = "{}/glsl-tokenizer".format(name)) - store_544(name = "{}/glslify-bundle".format(name)) - store_545(name = "{}/glslify-deps".format(name)) - store_546(name = "{}/glslify".format(name)) - store_547(name = "{}/google-protobuf".format(name)) - store_548(name = "{}/got".format(name)) - store_549(name = "{}/graceful-fs".format(name)) - store_550(name = "{}/grid-index".format(name)) - store_551(name = "{}/gzip-size".format(name)) - store_552(name = "{}/handlebars-utils".format(name)) - store_553(name = "{}/har-schema".format(name)) - store_554(name = "{}/har-validator".format(name)) - store_555(name = "{}/has-flag".format(name)) - store_556(name = "{}/has-flag".format(name)) - store_557(name = "{}/has-hover".format(name)) - store_558(name = "{}/has-passive-events".format(name)) - store_559(name = "{}/has-unicode".format(name)) - store_560(name = "{}/has".format(name)) - store_561(name = "{}/he".format(name)) - store_562(name = "{}/hello".format(name)) - store_563(name = "{}/helper-date".format(name)) - store_564(name = "{}/hot-shots".format(name)) - store_565(name = "{}/hsluv".format(name)) - store_566(name = "{}/html-escaper".format(name)) - store_567(name = "{}/http-cache-semantics".format(name)) - store_568(name = "{}/http-errors".format(name)) - store_569(name = "{}/http-proxy-agent".format(name)) - store_570(name = "{}/http-signature".format(name)) - store_571(name = "{}/https-proxy-agent".format(name)) - store_572(name = "{}/humanize-ms".format(name)) - store_573(name = "{}/iconv-lite".format(name)) - store_574(name = "{}/iconv-lite".format(name)) - store_575(name = "{}/icss-utils".format(name)) - store_576(name = "{}/ieee754".format(name)) - store_577(name = "{}/ignore-walk".format(name)) - store_578(name = "{}/import-fresh".format(name)) - store_579(name = "{}/import-local".format(name)) - store_580(name = "{}/imurmurhash".format(name)) - store_581(name = "{}/indent-string".format(name)) - store_582(name = "{}/infer-owner".format(name)) - store_583(name = "{}/inflight".format(name)) - store_584(name = "{}/inherits".format(name)) - store_585(name = "{}/ini".format(name)) - store_586(name = "{}/inline-fixtures".format(name)) - store_587(name = "{}/inline-fixtures".format(name)) - store_588(name = "{}/interpret".format(name)) - store_589(name = "{}/ip".format(name)) - store_590(name = "{}/is-arrayish".format(name)) - store_591(name = "{}/is-arrayish".format(name)) - store_592(name = "{}/is-binary-path".format(name)) - store_593(name = "{}/is-browser".format(name)) - store_594(name = "{}/is-buffer".format(name)) - store_595(name = "{}/is-core-module".format(name)) - store_596(name = "{}/is-extglob".format(name)) - store_597(name = "{}/is-finite".format(name)) - store_598(name = "{}/is-firefox".format(name)) - store_599(name = "{}/is-fullwidth-code-point".format(name)) - store_600(name = "{}/is-fullwidth-code-point".format(name)) - store_601(name = "{}/is-glob".format(name)) - store_602(name = "{}/is-iexplorer".format(name)) - store_603(name = "{}/is-lambda".format(name)) - store_604(name = "{}/is-mobile".format(name)) - store_605(name = "{}/is-module".format(name)) - store_606(name = "{}/is-number".format(name)) - store_607(name = "{}/is-number".format(name)) - store_608(name = "{}/is-obj".format(name)) - store_609(name = "{}/is-plain-obj".format(name)) - store_610(name = "{}/is-plain-obj".format(name)) - store_611(name = "{}/is-plain-object".format(name)) - store_612(name = "{}/is-reference".format(name)) - store_613(name = "{}/is-string-blank".format(name)) - store_614(name = "{}/is-svg-path".format(name)) - store_615(name = "{}/is-typedarray".format(name)) - store_616(name = "{}/is-unicode-supported".format(name)) - store_617(name = "{}/isarray".format(name)) - store_618(name = "{}/isarray".format(name)) - store_619(name = "{}/isarray".format(name)) - store_620(name = "{}/isexe".format(name)) - store_621(name = "{}/isobject".format(name)) - store_622(name = "{}/isomorphic-ws".format(name)) - store_623(name = "{}/isstream".format(name)) - store_624(name = "{}/istanbul-lib-coverage".format(name)) - store_625(name = "{}/istanbul-lib-report".format(name)) - store_626(name = "{}/istanbul-reports".format(name)) - store_627(name = "{}/jackspeak".format(name)) - store_628(name = "{}/jackspeak".format(name)) - store_629(name = "{}/jasmine-core".format(name)) - store_630(name = "{}/jasmine".format(name)) - store_631(name = "{}/javascript-natural-sort".format(name)) - store_632(name = "{}/javascript-stringify".format(name)) - store_633(name = "{}/jest-worker".format(name)) - store_634(name = "{}/jiti".format(name)) - store_635(name = "{}/jose".format(name)) - store_636(name = "{}/js-tokens".format(name)) - store_637(name = "{}/js-yaml".format(name)) - store_638(name = "{}/jsbn".format(name)) - store_639(name = "{}/jsep".format(name)) - store_640(name = "{}/jsesc".format(name)) - store_641(name = "{}/json-buffer".format(name)) - store_642(name = "{}/json-parse-even-better-errors".format(name)) - store_643(name = "{}/json-schema-traverse".format(name)) - store_644(name = "{}/json-schema-traverse".format(name)) - store_645(name = "{}/json-schema".format(name)) - store_646(name = "{}/json-stable-stringify".format(name)) - store_647(name = "{}/json-stringify-safe".format(name)) - store_648(name = "{}/json5".format(name)) - store_649(name = "{}/jsonc-parser".format(name)) - store_650(name = "{}/jsonfile".format(name)) - store_651(name = "{}/jsonfile".format(name)) - store_652(name = "{}/jsonpath-plus".format(name)) - store_653(name = "{}/jsonpath-plus".format(name)) - store_654(name = "{}/jsprim".format(name)) - store_655(name = "{}/kdbush".format(name)) - store_656(name = "{}/keyv".format(name)) - store_657(name = "{}/kind-of".format(name)) - store_658(name = "{}/kind-of".format(name)) - store_659(name = "{}/kleur".format(name)) - store_660(name = "{}/levn".format(name)) - store_661(name = "{}/lightningcss-darwin-arm64".format(name)) - store_662(name = "{}/lightningcss-darwin-x64".format(name)) - store_663(name = "{}/lightningcss-freebsd-x64".format(name)) - store_664(name = "{}/lightningcss-linux-arm-gnueabihf".format(name)) - store_665(name = "{}/lightningcss-linux-arm64-gnu".format(name)) - store_666(name = "{}/lightningcss-linux-arm64-musl".format(name)) - store_667(name = "{}/lightningcss-linux-x64-gnu".format(name)) - store_668(name = "{}/lightningcss-linux-x64-musl".format(name)) - store_669(name = "{}/lightningcss-win32-arm64-msvc".format(name)) - store_670(name = "{}/lightningcss-win32-x64-msvc".format(name)) - store_671(name = "{}/lightningcss".format(name)) - store_672(name = "{}/lines-and-columns".format(name)) - store_673(name = "{}/loader-runner".format(name)) - store_674(name = "{}/loader-utils".format(name)) - store_675(name = "{}/locate-path".format(name)) - store_676(name = "{}/locate-path".format(name)) - store_677(name = "{}/lodash.merge".format(name)) - store_678(name = "{}/lodash".format(name)) - store_679(name = "{}/log-symbols".format(name)) - store_680(name = "{}/loose-envify".format(name)) - store_681(name = "{}/lowercase-keys".format(name)) - store_682(name = "{}/lru-cache".format(name)) - store_683(name = "{}/lru-cache".format(name)) - store_684(name = "{}/lru-cache".format(name)) - store_685(name = "{}/lru-cache".format(name)) - store_686(name = "{}/magic-string".format(name)) - store_687(name = "{}/magic-string".format(name)) - store_688(name = "{}/make-dir".format(name)) - store_689(name = "{}/make-dir".format(name)) - store_690(name = "{}/make-fetch-happen".format(name)) - store_691(name = "{}/map-limit".format(name)) - store_692(name = "{}/mapbox-gl".format(name)) - store_693(name = "{}/math-log2".format(name)) - store_694(name = "{}/mathjs".format(name)) - store_695(name = "{}/md5".format(name)) - store_696(name = "{}/meaning-of-life".format(name)) - store_697(name = "{}/media-query-parser".format(name)) - store_698(name = "{}/merge-stream".format(name)) - store_699(name = "{}/mime-db".format(name)) - store_700(name = "{}/mime-types".format(name)) - store_701(name = "{}/mime".format(name)) - store_702(name = "{}/mimic-response".format(name)) - store_703(name = "{}/mimic-response".format(name)) - store_704(name = "{}/mini-css-extract-plugin".format(name)) - store_705(name = "{}/minimatch".format(name)) - store_706(name = "{}/minimatch".format(name)) - store_707(name = "{}/minimatch".format(name)) - store_708(name = "{}/minimatch".format(name)) - store_709(name = "{}/minimatch".format(name)) - store_710(name = "{}/minimatch".format(name)) - store_711(name = "{}/minimist".format(name)) - store_712(name = "{}/minimist".format(name)) - store_713(name = "{}/minipass-collect".format(name)) - store_714(name = "{}/minipass-fetch".format(name)) - store_715(name = "{}/minipass-flush".format(name)) - store_716(name = "{}/minipass-pipeline".format(name)) - store_717(name = "{}/minipass-sized".format(name)) - store_718(name = "{}/minipass".format(name)) - store_719(name = "{}/minipass".format(name)) - store_720(name = "{}/minipass".format(name)) - store_721(name = "{}/minipass".format(name)) - store_722(name = "{}/minipass".format(name)) - store_723(name = "{}/minizlib".format(name)) - store_724(name = "{}/minizlib".format(name)) - store_725(name = "{}/minizlib".format(name)) - store_726(name = "{}/mitt".format(name)) - store_727(name = "{}/mkdirp-classic".format(name)) - store_728(name = "{}/mkdirp".format(name)) - store_729(name = "{}/mkdirp".format(name)) - store_730(name = "{}/mkdirp".format(name)) - store_731(name = "{}/mlly".format(name)) - store_732(name = "{}/mobx-react-lite".format(name)) - store_733(name = "{}/mobx-react".format(name)) - store_734(name = "{}/mobx".format(name)) - store_735(name = "{}/mocha-junit-reporter".format(name)) - store_736(name = "{}/mocha-multi-reporters".format(name)) - store_737(name = "{}/mocha".format(name)) - store_738(name = "{}/moment-timezone".format(name)) - store_739(name = "{}/moment".format(name)) - store_740(name = "{}/mouse-change".format(name)) - store_741(name = "{}/mouse-event-offset".format(name)) - store_742(name = "{}/mouse-event".format(name)) - store_743(name = "{}/mouse-wheel".format(name)) - store_744(name = "{}/mri".format(name)) - store_745(name = "{}/mrmime".format(name)) - store_746(name = "{}/ms".format(name)) - store_747(name = "{}/ms".format(name)) - store_748(name = "{}/ms".format(name)) - store_749(name = "{}/ms".format(name)) - store_750(name = "{}/mumath".format(name)) - store_751(name = "{}/murmurhash-js".format(name)) - store_752(name = "{}/nan".format(name)) - store_753(name = "{}/nanoid".format(name)) - store_754(name = "{}/nanoid".format(name)) - store_755(name = "{}/nanoid".format(name)) - store_756(name = "{}/native-promise-only".format(name)) - store_757(name = "{}/needle".format(name)) - store_758(name = "{}/negotiator".format(name)) - store_759(name = "{}/neo-async".format(name)) - store_760(name = "{}/next-tick".format(name)) - store_761(name = "{}/next".format(name)) - store_762(name = "{}/node-fetch".format(name)) - store_763(name = "{}/node-fetch".format(name)) - store_764(name = "{}/node-gyp-build".format(name)) - store_765(name = "{}/node-gyp".format(name)) - store_766(name = "{}/node-gyp".format(name)) - store_767(name = "{}/node-pre-gyp".format(name)) - store_768(name = "{}/node-releases".format(name)) - store_769(name = "{}/nopt".format(name)) - store_770(name = "{}/nopt".format(name)) - store_771(name = "{}/nopt".format(name)) - store_772(name = "{}/normalize-path".format(name)) - store_773(name = "{}/normalize-svg-path".format(name)) - store_774(name = "{}/normalize-svg-path".format(name)) - store_775(name = "{}/normalize-url".format(name)) - store_776(name = "{}/npm-bundled".format(name)) - store_777(name = "{}/npm-normalize-package-bin".format(name)) - store_778(name = "{}/npm-packlist".format(name)) - store_779(name = "{}/npmlog".format(name)) - store_780(name = "{}/npmlog".format(name)) - store_781(name = "{}/npmlog".format(name)) - store_782(name = "{}/number-is-integer".format(name)) - store_783(name = "{}/number-is-nan".format(name)) - store_784(name = "{}/oauth-sign".format(name)) - store_785(name = "{}/object-assign".format(name)) - store_786(name = "{}/object-hash".format(name)) - store_787(name = "{}/oidc-token-hash".format(name)) - store_788(name = "{}/once".format(name)) - store_789(name = "{}/once".format(name)) - store_790(name = "{}/opener".format(name)) - store_791(name = "{}/openid-client".format(name)) - store_792(name = "{}/optimist".format(name)) - store_793(name = "{}/optionator".format(name)) - store_794(name = "{}/os-homedir".format(name)) - store_795(name = "{}/os-tmpdir".format(name)) - store_796(name = "{}/osenv".format(name)) - store_797(name = "{}/outdent".format(name)) - store_798(name = "{}/p-cancelable".format(name)) - store_799(name = "{}/p-event".format(name)) - store_800(name = "{}/p-finally".format(name)) - store_801(name = "{}/p-limit".format(name)) - store_802(name = "{}/p-limit".format(name)) - store_803(name = "{}/p-locate".format(name)) - store_804(name = "{}/p-locate".format(name)) - store_805(name = "{}/p-map".format(name)) - store_806(name = "{}/p-timeout".format(name)) - store_807(name = "{}/p-try".format(name)) - store_808(name = "{}/package-json-from-dist".format(name)) - store_809(name = "{}/parent-module".format(name)) - store_810(name = "{}/parenthesis".format(name)) - store_811(name = "{}/parse-json".format(name)) - store_812(name = "{}/parse-rect".format(name)) - store_813(name = "{}/parse-svg-path".format(name)) - store_814(name = "{}/parse-unit".format(name)) - store_815(name = "{}/path-exists".format(name)) - store_816(name = "{}/path-is-absolute".format(name)) - store_817(name = "{}/path-key".format(name)) - store_818(name = "{}/path-parse".format(name)) - store_819(name = "{}/path-scurry".format(name)) - store_820(name = "{}/path-scurry".format(name)) - store_821(name = "{}/path-type".format(name)) - store_822(name = "{}/pathe".format(name)) - store_823(name = "{}/pbf".format(name)) - store_824(name = "{}/pend".format(name)) - store_825(name = "{}/performance-now".format(name)) - store_826(name = "{}/pick-by-alias".format(name)) - store_827(name = "{}/picocolors".format(name)) - store_828(name = "{}/picocolors".format(name)) - store_829(name = "{}/picomatch".format(name)) - store_830(name = "{}/pify".format(name)) - store_831(name = "{}/pkg-dir".format(name)) - store_832(name = "{}/pkg-types".format(name)) - store_833(name = "{}/plotly.js".format(name)) - store_834(name = "{}/pngjs".format(name)) - store_835(name = "{}/point-in-polygon".format(name)) - store_836(name = "{}/polybooljs".format(name)) - store_837(name = "{}/postcss-modules-extract-imports".format(name)) - store_838(name = "{}/postcss-modules-local-by-default".format(name)) - store_839(name = "{}/postcss-modules-scope".format(name)) - store_840(name = "{}/postcss-modules-values".format(name)) - store_841(name = "{}/postcss-selector-parser".format(name)) - store_842(name = "{}/postcss-value-parser".format(name)) - store_843(name = "{}/postcss".format(name)) - store_844(name = "{}/postcss".format(name)) - store_845(name = "{}/postcss".format(name)) - store_846(name = "{}/potpack".format(name)) - store_847(name = "{}/prelude-ls".format(name)) - store_848(name = "{}/probe-image-size".format(name)) - store_849(name = "{}/process-nextick-args".format(name)) - store_850(name = "{}/progress".format(name)) - store_851(name = "{}/promise-inflight".format(name)) - store_852(name = "{}/promise-retry".format(name)) - store_853(name = "{}/protoc-gen-grpc".format(name)) - store_854(name = "{}/protocol-buffers-schema".format(name)) - store_855(name = "{}/proxy-from-env".format(name)) - store_856(name = "{}/psl".format(name)) - store_857(name = "{}/pump".format(name)) - store_858(name = "{}/pump".format(name)) - store_859(name = "{}/punycode".format(name)) - store_860(name = "{}/puppeteer-core".format(name)) - store_861(name = "{}/puppeteer".format(name)) - store_862(name = "{}/qs".format(name)) - store_863(name = "{}/quickselect".format(name)) - store_864(name = "{}/raf".format(name)) - store_865(name = "{}/ramda".format(name)) - store_866(name = "{}/randombytes".format(name)) - store_867(name = "{}/rc".format(name)) - store_868(name = "{}/react-dom".format(name)) - store_869(name = "{}/react".format(name)) - store_870(name = "{}/react".format(name)) - store_871(name = "{}/read-yaml-file".format(name)) - store_872(name = "{}/readable-stream".format(name)) - store_873(name = "{}/readable-stream".format(name)) - store_874(name = "{}/readable-stream".format(name)) - store_875(name = "{}/readdirp".format(name)) - store_876(name = "{}/rechoir".format(name)) - store_877(name = "{}/regenerator-runtime".format(name)) - store_878(name = "{}/regl-error2d".format(name)) - store_879(name = "{}/regl-line2d".format(name)) - store_880(name = "{}/regl-scatter2d".format(name)) - store_881(name = "{}/regl-splom".format(name)) - store_882(name = "{}/regl".format(name)) - store_883(name = "{}/request".format(name)) - store_884(name = "{}/require-directory".format(name)) - store_885(name = "{}/require-from-string".format(name)) - store_886(name = "{}/require-like".format(name)) - store_887(name = "{}/resolve-cwd".format(name)) - store_888(name = "{}/resolve-from".format(name)) - store_889(name = "{}/resolve-from".format(name)) - store_890(name = "{}/resolve-protobuf-schema".format(name)) - store_891(name = "{}/resolve".format(name)) - store_892(name = "{}/resolve".format(name)) - store_893(name = "{}/responselike".format(name)) - store_894(name = "{}/retry".format(name)) - store_895(name = "{}/rfc4648".format(name)) - store_896(name = "{}/right-now".format(name)) - store_897(name = "{}/rimraf".format(name)) - store_898(name = "{}/rimraf".format(name)) - store_899(name = "{}/rimraf".format(name)) - store_900(name = "{}/rollup".format(name)) - store_901(name = "{}/rollup".format(name)) - store_902(name = "{}/rollup".format(name)) - store_903(name = "{}/rw".format(name)) - store_904(name = "{}/sade".format(name)) - store_905(name = "{}/safe-buffer".format(name)) - store_906(name = "{}/safe-buffer".format(name)) - store_907(name = "{}/safer-buffer".format(name)) - store_908(name = "{}/sax".format(name)) - store_909(name = "{}/scheduler".format(name)) - store_910(name = "{}/schema-utils".format(name)) - store_911(name = "{}/schema-utils".format(name)) - store_912(name = "{}/seedrandom".format(name)) - store_913(name = "{}/segfault-handler".format(name)) - store_914(name = "{}/semver-first-satisfied".format(name)) - store_915(name = "{}/semver".format(name)) - store_916(name = "{}/semver".format(name)) - store_917(name = "{}/semver".format(name)) - store_918(name = "{}/semver".format(name)) - store_919(name = "{}/semver".format(name)) - store_920(name = "{}/serialize-javascript".format(name)) - store_921(name = "{}/serialize-javascript".format(name)) - store_922(name = "{}/set-blocking".format(name)) - store_923(name = "{}/setprototypeof".format(name)) - store_924(name = "{}/shallow-clone".format(name)) - store_925(name = "{}/shallow-copy".format(name)) - store_926(name = "{}/sharp".format(name)) - store_927(name = "{}/shebang-command".format(name)) - store_928(name = "{}/shebang-regex".format(name)) - store_929(name = "{}/signal-exit".format(name)) - store_930(name = "{}/signal-exit".format(name)) - store_931(name = "{}/signum".format(name)) - store_932(name = "{}/simple-swizzle".format(name)) - store_933(name = "{}/sirv".format(name)) - store_934(name = "{}/smart-buffer".format(name)) - store_935(name = "{}/smob".format(name)) - store_936(name = "{}/socks-proxy-agent".format(name)) - store_937(name = "{}/socks".format(name)) - store_938(name = "{}/source-map-js".format(name)) - store_939(name = "{}/source-map-js".format(name)) - store_940(name = "{}/source-map-support".format(name)) - store_941(name = "{}/source-map".format(name)) - store_942(name = "{}/sourcemap-codec".format(name)) - store_943(name = "{}/sshpk".format(name)) - store_944(name = "{}/ssri".format(name)) - store_945(name = "{}/stack-trace".format(name)) - store_946(name = "{}/static-eval".format(name)) - store_947(name = "{}/statuses".format(name)) - store_948(name = "{}/stream-buffers".format(name)) - store_949(name = "{}/stream-parser".format(name)) - store_950(name = "{}/stream-shift".format(name)) - store_951(name = "{}/streamsearch".format(name)) - store_952(name = "{}/string-split-by".format(name)) - store_953(name = "{}/string-width".format(name)) - store_954(name = "{}/string-width".format(name)) - store_955(name = "{}/string-width".format(name)) - store_956(name = "{}/string_decoder".format(name)) - store_957(name = "{}/string_decoder".format(name)) - store_958(name = "{}/string_decoder".format(name)) - store_959(name = "{}/strip-ansi".format(name)) - store_960(name = "{}/strip-ansi".format(name)) - store_961(name = "{}/strip-ansi".format(name)) - store_962(name = "{}/strip-bom".format(name)) - store_963(name = "{}/strip-json-comments".format(name)) - store_964(name = "{}/strip-json-comments".format(name)) - store_965(name = "{}/strongly-connected-components".format(name)) - store_966(name = "{}/styled-jsx".format(name)) - store_967(name = "{}/supercluster".format(name)) - store_968(name = "{}/superscript-text".format(name)) - store_969(name = "{}/supports-color".format(name)) - store_970(name = "{}/supports-color".format(name)) - store_971(name = "{}/supports-color".format(name)) - store_972(name = "{}/supports-preserve-symlinks-flag".format(name)) - store_973(name = "{}/svg-arc-to-cubic-bezier".format(name)) - store_974(name = "{}/svg-path-bounds".format(name)) - store_975(name = "{}/svg-path-sdf".format(name)) - store_976(name = "{}/syncpack".format(name)) - store_977(name = "{}/tailwindcss".format(name)) - store_978(name = "{}/tapable".format(name)) - store_979(name = "{}/tar-fs".format(name)) - store_980(name = "{}/tar-fs".format(name)) - store_981(name = "{}/tar-stream".format(name)) - store_982(name = "{}/tar-stream".format(name)) - store_983(name = "{}/tar".format(name)) - store_984(name = "{}/tar".format(name)) - store_985(name = "{}/tar".format(name)) - store_986(name = "{}/terser-webpack-plugin".format(name)) - store_987(name = "{}/terser".format(name)) - store_988(name = "{}/terser".format(name)) - store_989(name = "{}/test-exclude".format(name)) - store_990(name = "{}/through2".format(name)) - store_991(name = "{}/through2".format(name)) - store_992(name = "{}/through".format(name)) - store_993(name = "{}/tightrope".format(name)) - store_994(name = "{}/tiny-emitter".format(name)) - store_995(name = "{}/tinycolor2".format(name)) - store_996(name = "{}/tinyqueue".format(name)) - store_997(name = "{}/tmp".format(name)) - store_998(name = "{}/to-buffer".format(name)) - store_999(name = "{}/to-fast-properties".format(name)) - store_1000(name = "{}/to-float32".format(name)) - store_1001(name = "{}/to-px".format(name)) - store_1002(name = "{}/to-readable-stream".format(name)) - store_1003(name = "{}/to-regex-range".format(name)) - store_1004(name = "{}/toidentifier".format(name)) - store_1005(name = "{}/topojson-client".format(name)) - store_1006(name = "{}/totalist".format(name)) - store_1007(name = "{}/tough-cookie".format(name)) - store_1008(name = "{}/tr46".format(name)) - store_1009(name = "{}/tslib".format(name)) - store_1010(name = "{}/tslib".format(name)) - store_1011(name = "{}/tunnel-agent".format(name)) - store_1012(name = "{}/tweetnacl".format(name)) - store_1013(name = "{}/type-check".format(name)) - store_1014(name = "{}/type-fest".format(name)) - store_1015(name = "{}/type".format(name)) - store_1016(name = "{}/type".format(name)) - store_1017(name = "{}/typed-function".format(name)) - store_1018(name = "{}/typedarray-pool".format(name)) - store_1019(name = "{}/typedarray".format(name)) - store_1020(name = "{}/typeof-article".format(name)) - store_1021(name = "{}/typescript".format(name)) - store_1022(name = "{}/ufo".format(name)) - store_1023(name = "{}/unbzip2-stream".format(name)) - store_1024(name = "{}/undici-types".format(name)) - store_1025(name = "{}/undici-types".format(name)) - store_1026(name = "{}/unique-filename".format(name)) - store_1027(name = "{}/unique-slug".format(name)) - store_1028(name = "{}/universalify".format(name)) - store_1029(name = "{}/universalify".format(name)) - store_1030(name = "{}/unix-dgram".format(name)) - store_1031(name = "{}/unquote".format(name)) - store_1032(name = "{}/unused".format(name)) - store_1033(name = "{}/update-browserslist-db".format(name)) - store_1034(name = "{}/update-diff".format(name)) - store_1035(name = "{}/uri-js".format(name)) - store_1036(name = "{}/util-deprecate".format(name)) - store_1037(name = "{}/uuid".format(name)) - store_1038(name = "{}/uuid".format(name)) - store_1039(name = "{}/uvu".format(name)) - store_1040(name = "{}/v8-to-istanbul".format(name)) - store_1041(name = "{}/verror".format(name)) - store_1042(name = "{}/vt-pbf".format(name)) - store_1043(name = "{}/watchpack".format(name)) - store_1044(name = "{}/weak-map".format(name)) - store_1045(name = "{}/webgl-context".format(name)) - store_1046(name = "{}/webidl-conversions".format(name)) - store_1047(name = "{}/webpack-bundle-analyzer".format(name)) - store_1048(name = "{}/webpack-cli".format(name)) - store_1049(name = "{}/webpack-merge".format(name)) - store_1050(name = "{}/webpack-sources".format(name)) - store_1051(name = "{}/webpack".format(name)) - store_1052(name = "{}/whatwg-url".format(name)) - store_1053(name = "{}/which".format(name)) - store_1054(name = "{}/wide-align".format(name)) - store_1055(name = "{}/wildcard".format(name)) - store_1056(name = "{}/word-wrap".format(name)) - store_1057(name = "{}/wordwrap".format(name)) - store_1058(name = "{}/workerpool".format(name)) - store_1059(name = "{}/world-calendars".format(name)) - store_1060(name = "{}/wrap-ansi".format(name)) - store_1061(name = "{}/wrap-ansi".format(name)) - store_1062(name = "{}/wrappy".format(name)) - store_1063(name = "{}/ws".format(name)) - store_1064(name = "{}/ws".format(name)) - store_1065(name = "{}/ws".format(name)) - store_1066(name = "{}/xml".format(name)) - store_1067(name = "{}/xtend".format(name)) - store_1068(name = "{}/xtend".format(name)) - store_1069(name = "{}/y18n".format(name)) - store_1070(name = "{}/yallist".format(name)) - store_1071(name = "{}/yallist".format(name)) - store_1072(name = "{}/yallist".format(name)) - store_1073(name = "{}/yargs-parser".format(name)) - store_1074(name = "{}/yargs-parser".format(name)) - store_1075(name = "{}/yargs-parser".format(name)) - store_1076(name = "{}/yargs-unparser".format(name)) - store_1077(name = "{}/yargs".format(name)) - store_1078(name = "{}/yargs".format(name)) - store_1079(name = "{}/yauzl".format(name)) - store_1080(name = "{}/yocto-queue".format(name)) - store_1081(name = "{}/zod".format(name)) + store_155(name = "{}/@jridgewell/resolve-uri".format(name)) + store_156(name = "{}/@jridgewell/set-array".format(name)) + store_157(name = "{}/@jridgewell/source-map".format(name)) + store_158(name = "{}/@jridgewell/sourcemap-codec".format(name)) + store_159(name = "{}/@jridgewell/sourcemap-codec".format(name)) + store_160(name = "{}/@jridgewell/trace-mapping".format(name)) + store_161(name = "{}/@jsep-plugin/assignment".format(name)) + store_162(name = "{}/@jsep-plugin/regex".format(name)) + store_163(name = "{}/@kubernetes/client-node".format(name)) + store_164(name = "{}/@lukeed/ms".format(name)) + store_165(name = "{}/@mapbox/geojson-rewind".format(name)) + store_166(name = "{}/@mapbox/geojson-types".format(name)) + store_167(name = "{}/@mapbox/jsonlint-lines-primitives".format(name)) + store_168(name = "{}/@mapbox/mapbox-gl-supported".format(name)) + store_169(name = "{}/@mapbox/node-pre-gyp".format(name)) + store_170(name = "{}/@mapbox/point-geometry".format(name)) + store_171(name = "{}/@mapbox/tiny-sdf".format(name)) + store_172(name = "{}/@mapbox/unitbezier".format(name)) + store_173(name = "{}/@mapbox/vector-tile".format(name)) + store_174(name = "{}/@mapbox/whoots-js".format(name)) + store_175(name = "{}/@next/env".format(name)) + store_176(name = "{}/@next/swc-darwin-arm64".format(name)) + store_177(name = "{}/@next/swc-darwin-x64".format(name)) + store_178(name = "{}/@next/swc-linux-arm64-gnu".format(name)) + store_179(name = "{}/@next/swc-linux-arm64-musl".format(name)) + store_180(name = "{}/@next/swc-linux-x64-gnu".format(name)) + store_181(name = "{}/@next/swc-linux-x64-musl".format(name)) + store_182(name = "{}/@next/swc-win32-arm64-msvc".format(name)) + store_183(name = "{}/@next/swc-win32-x64-msvc".format(name)) + store_184(name = "{}/@npmcli/fs".format(name)) + store_185(name = "{}/@npmcli/move-file".format(name)) + store_186(name = "{}/@pkgjs/parseargs".format(name)) + store_187(name = "{}/@plotly/d3-sankey-circular".format(name)) + store_188(name = "{}/@plotly/d3-sankey".format(name)) + store_189(name = "{}/@plotly/d3".format(name)) + store_190(name = "{}/@plotly/point-cluster".format(name)) + store_191(name = "{}/@plotly/regl".format(name)) + store_192(name = "{}/@polka/url".format(name)) + store_193(name = "{}/@puppeteer/browsers".format(name)) + store_194(name = "{}/@rollup/plugin-commonjs".format(name)) + store_195(name = "{}/@rollup/plugin-commonjs".format(name)) + store_196(name = "{}/@rollup/plugin-json".format(name)) + store_197(name = "{}/@rollup/plugin-node-resolve".format(name)) + store_198(name = "{}/@rollup/plugin-typescript".format(name)) + store_199(name = "{}/@rollup/pluginutils".format(name)) + store_200(name = "{}/@rollup/pluginutils".format(name)) + store_201(name = "{}/@rollup/pluginutils".format(name)) + store_202(name = "{}/@rollup/rollup-android-arm-eabi".format(name)) + store_203(name = "{}/@rollup/rollup-android-arm64".format(name)) + store_204(name = "{}/@rollup/rollup-darwin-arm64".format(name)) + store_205(name = "{}/@rollup/rollup-darwin-x64".format(name)) + store_206(name = "{}/@rollup/rollup-freebsd-arm64".format(name)) + store_207(name = "{}/@rollup/rollup-freebsd-x64".format(name)) + store_208(name = "{}/@rollup/rollup-linux-arm-gnueabihf".format(name)) + store_209(name = "{}/@rollup/rollup-linux-arm-musleabihf".format(name)) + store_210(name = "{}/@rollup/rollup-linux-arm64-gnu".format(name)) + store_211(name = "{}/@rollup/rollup-linux-arm64-musl".format(name)) + store_212(name = "{}/@rollup/rollup-linux-loongarch64-gnu".format(name)) + store_213(name = "{}/@rollup/rollup-linux-powerpc64le-gnu".format(name)) + store_214(name = "{}/@rollup/rollup-linux-riscv64-gnu".format(name)) + store_215(name = "{}/@rollup/rollup-linux-riscv64-musl".format(name)) + store_216(name = "{}/@rollup/rollup-linux-s390x-gnu".format(name)) + store_217(name = "{}/@rollup/rollup-linux-x64-gnu".format(name)) + store_218(name = "{}/@rollup/rollup-linux-x64-musl".format(name)) + store_219(name = "{}/@rollup/rollup-win32-arm64-msvc".format(name)) + store_220(name = "{}/@rollup/rollup-win32-ia32-msvc".format(name)) + store_221(name = "{}/@rollup/rollup-win32-x64-msvc".format(name)) + store_222(name = "{}/@sindresorhus/is".format(name)) + store_223(name = "{}/@swc/counter".format(name)) + store_224(name = "{}/@swc/helpers".format(name)) + store_225(name = "{}/@szmarczak/http-timer".format(name)) + store_226(name = "{}/@tailwindcss/node".format(name)) + store_227(name = "{}/@tailwindcss/oxide-android-arm64".format(name)) + store_228(name = "{}/@tailwindcss/oxide-darwin-arm64".format(name)) + store_229(name = "{}/@tailwindcss/oxide-darwin-x64".format(name)) + store_230(name = "{}/@tailwindcss/oxide-freebsd-x64".format(name)) + store_231(name = "{}/@tailwindcss/oxide-linux-arm-gnueabihf".format(name)) + store_232(name = "{}/@tailwindcss/oxide-linux-arm64-gnu".format(name)) + store_233(name = "{}/@tailwindcss/oxide-linux-arm64-musl".format(name)) + store_234(name = "{}/@tailwindcss/oxide-linux-x64-gnu".format(name)) + store_235(name = "{}/@tailwindcss/oxide-linux-x64-musl".format(name)) + store_236(name = "{}/@tailwindcss/oxide-win32-arm64-msvc".format(name)) + store_237(name = "{}/@tailwindcss/oxide-win32-x64-msvc".format(name)) + store_238(name = "{}/@tailwindcss/oxide".format(name)) + store_239(name = "{}/@tailwindcss/postcss".format(name)) + store_240(name = "{}/@tootallnate/once".format(name)) + store_241(name = "{}/@turf/area".format(name)) + store_242(name = "{}/@turf/bbox".format(name)) + store_243(name = "{}/@turf/centroid".format(name)) + store_244(name = "{}/@turf/helpers".format(name)) + store_245(name = "{}/@turf/meta".format(name)) + store_246(name = "{}/@types/cacheable-request".format(name)) + store_247(name = "{}/@types/caseless".format(name)) + store_248(name = "{}/@types/eslint-scope".format(name)) + store_249(name = "{}/@types/eslint".format(name)) + store_250(name = "{}/@types/estree".format(name)) + store_251(name = "{}/@types/estree".format(name)) + store_252(name = "{}/@types/estree".format(name)) + store_253(name = "{}/@types/estree".format(name)) + store_254(name = "{}/@types/google-protobuf".format(name)) + store_255(name = "{}/@types/http-cache-semantics".format(name)) + store_256(name = "{}/@types/istanbul-lib-coverage".format(name)) + store_257(name = "{}/@types/js-yaml".format(name)) + store_258(name = "{}/@types/json-schema".format(name)) + store_259(name = "{}/@types/keyv".format(name)) + store_260(name = "{}/@types/node".format(name)) + store_261(name = "{}/@types/node".format(name)) + store_262(name = "{}/@types/node".format(name)) + store_263(name = "{}/@types/node".format(name)) + store_264(name = "{}/@types/request".format(name)) + store_265(name = "{}/@types/resolve".format(name)) + store_266(name = "{}/@types/responselike".format(name)) + store_267(name = "{}/@types/tough-cookie".format(name)) + store_268(name = "{}/@types/underscore".format(name)) + store_269(name = "{}/@types/ws".format(name)) + store_270(name = "{}/@types/yauzl".format(name)) + store_271(name = "{}/@vanilla-extract/babel-plugin-debug-ids".format(name)) + store_272(name = "{}/@vanilla-extract/css".format(name)) + store_273(name = "{}/@vanilla-extract/css".format(name)) + store_274(name = "{}/@vanilla-extract/integration".format(name)) + store_275(name = "{}/@vanilla-extract/private".format(name)) + store_276(name = "{}/@vanilla-extract/webpack-plugin".format(name)) + store_277(name = "{}/@webassemblyjs/ast".format(name)) + store_278(name = "{}/@webassemblyjs/floating-point-hex-parser".format(name)) + store_279(name = "{}/@webassemblyjs/helper-api-error".format(name)) + store_280(name = "{}/@webassemblyjs/helper-buffer".format(name)) + store_281(name = "{}/@webassemblyjs/helper-numbers".format(name)) + store_282(name = "{}/@webassemblyjs/helper-wasm-bytecode".format(name)) + store_283(name = "{}/@webassemblyjs/helper-wasm-section".format(name)) + store_284(name = "{}/@webassemblyjs/ieee754".format(name)) + store_285(name = "{}/@webassemblyjs/leb128".format(name)) + store_286(name = "{}/@webassemblyjs/utf8".format(name)) + store_287(name = "{}/@webassemblyjs/wasm-edit".format(name)) + store_288(name = "{}/@webassemblyjs/wasm-gen".format(name)) + store_289(name = "{}/@webassemblyjs/wasm-opt".format(name)) + store_290(name = "{}/@webassemblyjs/wasm-parser".format(name)) + store_291(name = "{}/@webassemblyjs/wast-printer".format(name)) + store_292(name = "{}/@webpack-cli/configtest".format(name)) + store_293(name = "{}/@webpack-cli/info".format(name)) + store_294(name = "{}/@webpack-cli/serve".format(name)) + store_295(name = "{}/@xtuc/ieee754".format(name)) + store_296(name = "{}/@xtuc/long".format(name)) + store_297(name = "{}/aws-sign2".format(name)) + store_298(name = "{}/aws4".format(name)) + store_299(name = "{}/balanced-match".format(name)) + store_300(name = "{}/base64-js".format(name)) + store_301(name = "{}/bcrypt-pbkdf".format(name)) + store_302(name = "{}/big.js".format(name)) + store_303(name = "{}/binary-extensions".format(name)) + store_304(name = "{}/binary-search-bounds".format(name)) + store_305(name = "{}/bindings".format(name)) + store_306(name = "{}/bit-twiddle".format(name)) + store_307(name = "{}/bitmap-sdf".format(name)) + store_308(name = "{}/bl".format(name)) + store_309(name = "{}/bl".format(name)) + store_310(name = "{}/bl".format(name)) + store_311(name = "{}/brace-expansion".format(name)) + store_312(name = "{}/brace-expansion".format(name)) + store_313(name = "{}/braces".format(name)) + store_314(name = "{}/browser-stdout".format(name)) + store_315(name = "{}/browserslist".format(name)) + store_316(name = "{}/buffer-alloc-unsafe".format(name)) + store_317(name = "{}/buffer-alloc".format(name)) + store_318(name = "{}/buffer-crc32".format(name)) + store_319(name = "{}/buffer-fill".format(name)) + store_320(name = "{}/buffer-from".format(name)) + store_321(name = "{}/buffer".format(name)) + store_322(name = "{}/bufferutil".format(name)) + store_323(name = "{}/busboy".format(name)) + store_324(name = "{}/byline".format(name)) + store_325(name = "{}/c8".format(name)) + store_326(name = "{}/cacache".format(name)) + store_327(name = "{}/cacheable-lookup".format(name)) + store_328(name = "{}/cacheable-request".format(name)) + store_329(name = "{}/callsites".format(name)) + store_330(name = "{}/camelcase".format(name)) + store_331(name = "{}/caniuse-lite".format(name)) + store_332(name = "{}/caniuse-lite".format(name)) + store_333(name = "{}/canvas-fit".format(name)) + store_334(name = "{}/caseless".format(name)) + store_335(name = "{}/chalk".format(name)) + store_336(name = "{}/chalk".format(name)) + store_337(name = "{}/chalk".format(name)) + store_338(name = "{}/chalk".format(name)) + store_339(name = "{}/charenc".format(name)) + store_340(name = "{}/chokidar".format(name)) + store_341(name = "{}/chownr".format(name)) + store_342(name = "{}/chownr".format(name)) + store_343(name = "{}/chownr".format(name)) + store_344(name = "{}/chrome-trace-event".format(name)) + store_345(name = "{}/chromium-bidi".format(name)) + store_346(name = "{}/clamp".format(name)) + store_347(name = "{}/clean-stack".format(name)) + store_348(name = "{}/client-only".format(name)) + store_349(name = "{}/cliui".format(name)) + store_350(name = "{}/cliui".format(name)) + store_351(name = "{}/clone-deep".format(name)) + store_352(name = "{}/clone-response".format(name)) + store_353(name = "{}/code-point-at".format(name)) + store_354(name = "{}/color-alpha".format(name)) + store_355(name = "{}/color-convert".format(name)) + store_356(name = "{}/color-convert".format(name)) + store_357(name = "{}/color-id".format(name)) + store_358(name = "{}/color-name".format(name)) + store_359(name = "{}/color-name".format(name)) + store_360(name = "{}/color-normalize".format(name)) + store_361(name = "{}/color-parse".format(name)) + store_362(name = "{}/color-rgba".format(name)) + store_363(name = "{}/color-space".format(name)) + store_364(name = "{}/color-string".format(name)) + store_365(name = "{}/color-support".format(name)) + store_366(name = "{}/color".format(name)) + store_367(name = "{}/colorette".format(name)) + store_368(name = "{}/combined-stream".format(name)) + store_369(name = "{}/commander".format(name)) + store_370(name = "{}/commander".format(name)) + store_371(name = "{}/commander".format(name)) + store_372(name = "{}/commander".format(name)) + store_373(name = "{}/commondir".format(name)) + store_374(name = "{}/complex.js".format(name)) + store_375(name = "{}/concat-map".format(name)) + store_376(name = "{}/concat-stream".format(name)) + store_377(name = "{}/console-control-strings".format(name)) + store_378(name = "{}/convert-source-map".format(name)) + store_379(name = "{}/core-util-is".format(name)) + store_380(name = "{}/core-util-is".format(name)) + store_381(name = "{}/cosmiconfig".format(name)) + store_382(name = "{}/country-regex".format(name)) + store_383(name = "{}/cross-fetch".format(name)) + store_384(name = "{}/cross-spawn".format(name)) + store_385(name = "{}/crypt".format(name)) + store_386(name = "{}/css-font-size-keywords".format(name)) + store_387(name = "{}/css-font-stretch-keywords".format(name)) + store_388(name = "{}/css-font-style-keywords".format(name)) + store_389(name = "{}/css-font-weight-keywords".format(name)) + store_390(name = "{}/css-font".format(name)) + store_391(name = "{}/css-global-keywords".format(name)) + store_392(name = "{}/css-loader".format(name)) + store_393(name = "{}/css-system-font-keywords".format(name)) + store_394(name = "{}/css-what".format(name)) + store_395(name = "{}/csscolorparser".format(name)) + store_396(name = "{}/cssesc".format(name)) + store_397(name = "{}/csstype".format(name)) + store_398(name = "{}/d3-array".format(name)) + store_399(name = "{}/d3-collection".format(name)) + store_400(name = "{}/d3-color".format(name)) + store_401(name = "{}/d3-dispatch".format(name)) + store_402(name = "{}/d3-force".format(name)) + store_403(name = "{}/d3-format".format(name)) + store_404(name = "{}/d3-geo-projection".format(name)) + store_405(name = "{}/d3-geo".format(name)) + store_406(name = "{}/d3-hierarchy".format(name)) + store_407(name = "{}/d3-interpolate".format(name)) + store_408(name = "{}/d3-path".format(name)) + store_409(name = "{}/d3-quadtree".format(name)) + store_410(name = "{}/d3-shape".format(name)) + store_411(name = "{}/d3-time-format".format(name)) + store_412(name = "{}/d3-time".format(name)) + store_413(name = "{}/d3-timer".format(name)) + store_414(name = "{}/d".format(name)) + store_415(name = "{}/dashdash".format(name)) + store_416(name = "{}/date.js".format(name)) + store_417(name = "{}/debug".format(name)) + store_418(name = "{}/debug".format(name)) + store_419(name = "{}/debug".format(name)) + store_420(name = "{}/debug".format(name)) + store_421(name = "{}/debug".format(name)) + store_422(name = "{}/decamelize".format(name)) + store_423(name = "{}/decimal.js".format(name)) + store_424(name = "{}/decompress-response".format(name)) + store_425(name = "{}/deep-extend".format(name)) + store_426(name = "{}/deep-is".format(name)) + store_427(name = "{}/deep-object-diff".format(name)) + store_428(name = "{}/deepmerge".format(name)) + store_429(name = "{}/defer-to-connect".format(name)) + store_430(name = "{}/defined".format(name)) + store_431(name = "{}/delayed-stream".format(name)) + store_432(name = "{}/delegates".format(name)) + store_433(name = "{}/depd".format(name)) + store_434(name = "{}/depd".format(name)) + store_435(name = "{}/dequal".format(name)) + store_436(name = "{}/detect-kerning".format(name)) + store_437(name = "{}/detect-libc".format(name)) + store_438(name = "{}/detect-libc".format(name)) + store_439(name = "{}/devtools-protocol".format(name)) + store_440(name = "{}/diff".format(name)) + store_441(name = "{}/diff".format(name)) + store_442(name = "{}/draw-svg-path".format(name)) + store_443(name = "{}/dtype".format(name)) + store_444(name = "{}/dup".format(name)) + store_445(name = "{}/duplexer3".format(name)) + store_446(name = "{}/duplexer".format(name)) + store_447(name = "{}/duplexify".format(name)) + store_448(name = "{}/earcut".format(name)) + store_449(name = "{}/eastasianwidth".format(name)) + store_450(name = "{}/ecc-jsbn".format(name)) + store_451(name = "{}/electron-to-chromium".format(name)) + store_452(name = "{}/element-size".format(name)) + store_453(name = "{}/elementary-circuits-directed-graph".format(name)) + store_454(name = "{}/emoji-regex".format(name)) + store_455(name = "{}/emoji-regex".format(name)) + store_456(name = "{}/emojis-list".format(name)) + store_457(name = "{}/encoding".format(name)) + store_458(name = "{}/end-of-stream".format(name)) + store_459(name = "{}/enhanced-resolve".format(name)) + store_460(name = "{}/enhanced-resolve".format(name)) + store_461(name = "{}/env-paths".format(name)) + store_462(name = "{}/envinfo".format(name)) + store_463(name = "{}/err-code".format(name)) + store_464(name = "{}/error-ex".format(name)) + store_465(name = "{}/es-module-lexer".format(name)) + store_466(name = "{}/es5-ext".format(name)) + store_467(name = "{}/es6-iterator".format(name)) + store_468(name = "{}/es6-symbol".format(name)) + store_469(name = "{}/es6-weak-map".format(name)) + store_470(name = "{}/esbuild".format(name)) + store_471(name = "{}/esbuild".format(name)) + store_472(name = "{}/escalade".format(name)) + store_473(name = "{}/escape-html".format(name)) + store_474(name = "{}/escape-latex".format(name)) + store_475(name = "{}/escape-string-regexp".format(name)) + store_476(name = "{}/escape-string-regexp".format(name)) + store_477(name = "{}/escodegen".format(name)) + store_478(name = "{}/eslint-scope".format(name)) + store_479(name = "{}/esprima".format(name)) + store_480(name = "{}/esprima".format(name)) + store_481(name = "{}/esrecurse".format(name)) + store_482(name = "{}/estraverse".format(name)) + store_483(name = "{}/estraverse".format(name)) + store_484(name = "{}/estree-walker".format(name)) + store_485(name = "{}/estree-walker".format(name)) + store_486(name = "{}/esutils".format(name)) + store_487(name = "{}/eval".format(name)) + store_488(name = "{}/events".format(name)) + store_489(name = "{}/ext".format(name)) + store_490(name = "{}/extend".format(name)) + store_491(name = "{}/extract-zip".format(name)) + store_492(name = "{}/extsprintf".format(name)) + store_493(name = "{}/falafel".format(name)) + store_494(name = "{}/fast-decode-uri-component".format(name)) + store_495(name = "{}/fast-deep-equal".format(name)) + store_496(name = "{}/fast-isnumeric".format(name)) + store_497(name = "{}/fast-json-stable-stringify".format(name)) + store_498(name = "{}/fast-levenshtein".format(name)) + store_499(name = "{}/fastest-levenshtein".format(name)) + store_500(name = "{}/fd-slicer".format(name)) + store_501(name = "{}/fdir".format(name)) + store_502(name = "{}/file-uri-to-path".format(name)) + store_503(name = "{}/fill-range".format(name)) + store_504(name = "{}/find-up".format(name)) + store_505(name = "{}/find-up".format(name)) + store_506(name = "{}/flat".format(name)) + store_507(name = "{}/flatten-vertex-data".format(name)) + store_508(name = "{}/font-atlas".format(name)) + store_509(name = "{}/font-measure".format(name)) + store_510(name = "{}/foreground-child".format(name)) + store_511(name = "{}/foreground-child".format(name)) + store_512(name = "{}/forever-agent".format(name)) + store_513(name = "{}/form-data".format(name)) + store_514(name = "{}/form-data".format(name)) + store_515(name = "{}/fraction.js".format(name)) + store_516(name = "{}/from2".format(name)) + store_517(name = "{}/fs-constants".format(name)) + store_518(name = "{}/fs-extra".format(name)) + store_519(name = "{}/fs-extra".format(name)) + store_520(name = "{}/fs-minipass".format(name)) + store_521(name = "{}/fs-minipass".format(name)) + store_522(name = "{}/fs.realpath".format(name)) + store_523(name = "{}/fsevents".format(name)) + store_524(name = "{}/function-bind".format(name)) + store_525(name = "{}/gauge".format(name)) + store_526(name = "{}/gauge".format(name)) + store_527(name = "{}/gauge".format(name)) + store_528(name = "{}/gensync".format(name)) + store_529(name = "{}/geojson-vt".format(name)) + store_530(name = "{}/get-caller-file".format(name)) + store_531(name = "{}/get-canvas-context".format(name)) + store_532(name = "{}/get-stream".format(name)) + store_533(name = "{}/get-stream".format(name)) + store_534(name = "{}/getpass".format(name)) + store_535(name = "{}/gl-mat4".format(name)) + store_536(name = "{}/gl-matrix".format(name)) + store_537(name = "{}/gl-text".format(name)) + store_538(name = "{}/gl-util".format(name)) + store_539(name = "{}/glob-parent".format(name)) + store_540(name = "{}/glob-to-regexp".format(name)) + store_541(name = "{}/glob".format(name)) + store_542(name = "{}/glob".format(name)) + store_543(name = "{}/glob".format(name)) + store_544(name = "{}/glob".format(name)) + store_545(name = "{}/glob".format(name)) + store_546(name = "{}/globals".format(name)) + store_547(name = "{}/glsl-inject-defines".format(name)) + store_548(name = "{}/glsl-resolve".format(name)) + store_549(name = "{}/glsl-token-assignments".format(name)) + store_550(name = "{}/glsl-token-defines".format(name)) + store_551(name = "{}/glsl-token-depth".format(name)) + store_552(name = "{}/glsl-token-descope".format(name)) + store_553(name = "{}/glsl-token-inject-block".format(name)) + store_554(name = "{}/glsl-token-properties".format(name)) + store_555(name = "{}/glsl-token-scope".format(name)) + store_556(name = "{}/glsl-token-string".format(name)) + store_557(name = "{}/glsl-token-whitespace-trim".format(name)) + store_558(name = "{}/glsl-tokenizer".format(name)) + store_559(name = "{}/glslify-bundle".format(name)) + store_560(name = "{}/glslify-deps".format(name)) + store_561(name = "{}/glslify".format(name)) + store_562(name = "{}/google-protobuf".format(name)) + store_563(name = "{}/got".format(name)) + store_564(name = "{}/graceful-fs".format(name)) + store_565(name = "{}/grid-index".format(name)) + store_566(name = "{}/gzip-size".format(name)) + store_567(name = "{}/handlebars-utils".format(name)) + store_568(name = "{}/har-schema".format(name)) + store_569(name = "{}/har-validator".format(name)) + store_570(name = "{}/has-flag".format(name)) + store_571(name = "{}/has-flag".format(name)) + store_572(name = "{}/has-hover".format(name)) + store_573(name = "{}/has-passive-events".format(name)) + store_574(name = "{}/has-unicode".format(name)) + store_575(name = "{}/has".format(name)) + store_576(name = "{}/he".format(name)) + store_577(name = "{}/hello".format(name)) + store_578(name = "{}/helper-date".format(name)) + store_579(name = "{}/hot-shots".format(name)) + store_580(name = "{}/hsluv".format(name)) + store_581(name = "{}/html-escaper".format(name)) + store_582(name = "{}/http-cache-semantics".format(name)) + store_583(name = "{}/http-errors".format(name)) + store_584(name = "{}/http-proxy-agent".format(name)) + store_585(name = "{}/http-signature".format(name)) + store_586(name = "{}/https-proxy-agent".format(name)) + store_587(name = "{}/humanize-ms".format(name)) + store_588(name = "{}/iconv-lite".format(name)) + store_589(name = "{}/iconv-lite".format(name)) + store_590(name = "{}/icss-utils".format(name)) + store_591(name = "{}/ieee754".format(name)) + store_592(name = "{}/ignore-walk".format(name)) + store_593(name = "{}/import-fresh".format(name)) + store_594(name = "{}/import-local".format(name)) + store_595(name = "{}/imurmurhash".format(name)) + store_596(name = "{}/indent-string".format(name)) + store_597(name = "{}/infer-owner".format(name)) + store_598(name = "{}/inflight".format(name)) + store_599(name = "{}/inherits".format(name)) + store_600(name = "{}/ini".format(name)) + store_601(name = "{}/inline-fixtures".format(name)) + store_602(name = "{}/inline-fixtures".format(name)) + store_603(name = "{}/interpret".format(name)) + store_604(name = "{}/ip".format(name)) + store_605(name = "{}/is-arrayish".format(name)) + store_606(name = "{}/is-arrayish".format(name)) + store_607(name = "{}/is-binary-path".format(name)) + store_608(name = "{}/is-browser".format(name)) + store_609(name = "{}/is-buffer".format(name)) + store_610(name = "{}/is-core-module".format(name)) + store_611(name = "{}/is-extglob".format(name)) + store_612(name = "{}/is-finite".format(name)) + store_613(name = "{}/is-firefox".format(name)) + store_614(name = "{}/is-fullwidth-code-point".format(name)) + store_615(name = "{}/is-fullwidth-code-point".format(name)) + store_616(name = "{}/is-glob".format(name)) + store_617(name = "{}/is-iexplorer".format(name)) + store_618(name = "{}/is-lambda".format(name)) + store_619(name = "{}/is-mobile".format(name)) + store_620(name = "{}/is-module".format(name)) + store_621(name = "{}/is-number".format(name)) + store_622(name = "{}/is-number".format(name)) + store_623(name = "{}/is-obj".format(name)) + store_624(name = "{}/is-plain-obj".format(name)) + store_625(name = "{}/is-plain-obj".format(name)) + store_626(name = "{}/is-plain-object".format(name)) + store_627(name = "{}/is-reference".format(name)) + store_628(name = "{}/is-string-blank".format(name)) + store_629(name = "{}/is-svg-path".format(name)) + store_630(name = "{}/is-typedarray".format(name)) + store_631(name = "{}/is-unicode-supported".format(name)) + store_632(name = "{}/isarray".format(name)) + store_633(name = "{}/isarray".format(name)) + store_634(name = "{}/isarray".format(name)) + store_635(name = "{}/isexe".format(name)) + store_636(name = "{}/isobject".format(name)) + store_637(name = "{}/isomorphic-ws".format(name)) + store_638(name = "{}/isstream".format(name)) + store_639(name = "{}/istanbul-lib-coverage".format(name)) + store_640(name = "{}/istanbul-lib-report".format(name)) + store_641(name = "{}/istanbul-reports".format(name)) + store_642(name = "{}/jackspeak".format(name)) + store_643(name = "{}/jackspeak".format(name)) + store_644(name = "{}/jasmine-core".format(name)) + store_645(name = "{}/jasmine".format(name)) + store_646(name = "{}/javascript-natural-sort".format(name)) + store_647(name = "{}/javascript-stringify".format(name)) + store_648(name = "{}/jest-worker".format(name)) + store_649(name = "{}/jiti".format(name)) + store_650(name = "{}/jose".format(name)) + store_651(name = "{}/js-tokens".format(name)) + store_652(name = "{}/js-yaml".format(name)) + store_653(name = "{}/jsbn".format(name)) + store_654(name = "{}/jsep".format(name)) + store_655(name = "{}/jsesc".format(name)) + store_656(name = "{}/json-buffer".format(name)) + store_657(name = "{}/json-parse-even-better-errors".format(name)) + store_658(name = "{}/json-schema-traverse".format(name)) + store_659(name = "{}/json-schema-traverse".format(name)) + store_660(name = "{}/json-schema".format(name)) + store_661(name = "{}/json-stable-stringify".format(name)) + store_662(name = "{}/json-stringify-safe".format(name)) + store_663(name = "{}/json5".format(name)) + store_664(name = "{}/jsonc-parser".format(name)) + store_665(name = "{}/jsonfile".format(name)) + store_666(name = "{}/jsonfile".format(name)) + store_667(name = "{}/jsonpath-plus".format(name)) + store_668(name = "{}/jsonpath-plus".format(name)) + store_669(name = "{}/jsprim".format(name)) + store_670(name = "{}/kdbush".format(name)) + store_671(name = "{}/keyv".format(name)) + store_672(name = "{}/kind-of".format(name)) + store_673(name = "{}/kind-of".format(name)) + store_674(name = "{}/kleur".format(name)) + store_675(name = "{}/levn".format(name)) + store_676(name = "{}/lightningcss-darwin-arm64".format(name)) + store_677(name = "{}/lightningcss-darwin-x64".format(name)) + store_678(name = "{}/lightningcss-freebsd-x64".format(name)) + store_679(name = "{}/lightningcss-linux-arm-gnueabihf".format(name)) + store_680(name = "{}/lightningcss-linux-arm64-gnu".format(name)) + store_681(name = "{}/lightningcss-linux-arm64-musl".format(name)) + store_682(name = "{}/lightningcss-linux-x64-gnu".format(name)) + store_683(name = "{}/lightningcss-linux-x64-musl".format(name)) + store_684(name = "{}/lightningcss-win32-arm64-msvc".format(name)) + store_685(name = "{}/lightningcss-win32-x64-msvc".format(name)) + store_686(name = "{}/lightningcss".format(name)) + store_687(name = "{}/lines-and-columns".format(name)) + store_688(name = "{}/loader-runner".format(name)) + store_689(name = "{}/loader-utils".format(name)) + store_690(name = "{}/locate-path".format(name)) + store_691(name = "{}/locate-path".format(name)) + store_692(name = "{}/lodash.merge".format(name)) + store_693(name = "{}/lodash".format(name)) + store_694(name = "{}/log-symbols".format(name)) + store_695(name = "{}/loose-envify".format(name)) + store_696(name = "{}/lowercase-keys".format(name)) + store_697(name = "{}/lru-cache".format(name)) + store_698(name = "{}/lru-cache".format(name)) + store_699(name = "{}/lru-cache".format(name)) + store_700(name = "{}/lru-cache".format(name)) + store_701(name = "{}/magic-string".format(name)) + store_702(name = "{}/magic-string".format(name)) + store_703(name = "{}/make-dir".format(name)) + store_704(name = "{}/make-dir".format(name)) + store_705(name = "{}/make-fetch-happen".format(name)) + store_706(name = "{}/map-limit".format(name)) + store_707(name = "{}/mapbox-gl".format(name)) + store_708(name = "{}/math-log2".format(name)) + store_709(name = "{}/mathjs".format(name)) + store_710(name = "{}/md5".format(name)) + store_711(name = "{}/meaning-of-life".format(name)) + store_712(name = "{}/media-query-parser".format(name)) + store_713(name = "{}/merge-stream".format(name)) + store_714(name = "{}/mime-db".format(name)) + store_715(name = "{}/mime-types".format(name)) + store_716(name = "{}/mime".format(name)) + store_717(name = "{}/mimic-response".format(name)) + store_718(name = "{}/mimic-response".format(name)) + store_719(name = "{}/mini-css-extract-plugin".format(name)) + store_720(name = "{}/minimatch".format(name)) + store_721(name = "{}/minimatch".format(name)) + store_722(name = "{}/minimatch".format(name)) + store_723(name = "{}/minimatch".format(name)) + store_724(name = "{}/minimatch".format(name)) + store_725(name = "{}/minimatch".format(name)) + store_726(name = "{}/minimist".format(name)) + store_727(name = "{}/minimist".format(name)) + store_728(name = "{}/minipass-collect".format(name)) + store_729(name = "{}/minipass-fetch".format(name)) + store_730(name = "{}/minipass-flush".format(name)) + store_731(name = "{}/minipass-pipeline".format(name)) + store_732(name = "{}/minipass-sized".format(name)) + store_733(name = "{}/minipass".format(name)) + store_734(name = "{}/minipass".format(name)) + store_735(name = "{}/minipass".format(name)) + store_736(name = "{}/minipass".format(name)) + store_737(name = "{}/minipass".format(name)) + store_738(name = "{}/minizlib".format(name)) + store_739(name = "{}/minizlib".format(name)) + store_740(name = "{}/minizlib".format(name)) + store_741(name = "{}/mitt".format(name)) + store_742(name = "{}/mkdirp-classic".format(name)) + store_743(name = "{}/mkdirp".format(name)) + store_744(name = "{}/mkdirp".format(name)) + store_745(name = "{}/mkdirp".format(name)) + store_746(name = "{}/mlly".format(name)) + store_747(name = "{}/mobx-react-lite".format(name)) + store_748(name = "{}/mobx-react".format(name)) + store_749(name = "{}/mobx".format(name)) + store_750(name = "{}/mocha-junit-reporter".format(name)) + store_751(name = "{}/mocha-multi-reporters".format(name)) + store_752(name = "{}/mocha".format(name)) + store_753(name = "{}/moment-timezone".format(name)) + store_754(name = "{}/moment".format(name)) + store_755(name = "{}/mouse-change".format(name)) + store_756(name = "{}/mouse-event-offset".format(name)) + store_757(name = "{}/mouse-event".format(name)) + store_758(name = "{}/mouse-wheel".format(name)) + store_759(name = "{}/mri".format(name)) + store_760(name = "{}/mrmime".format(name)) + store_761(name = "{}/ms".format(name)) + store_762(name = "{}/ms".format(name)) + store_763(name = "{}/ms".format(name)) + store_764(name = "{}/ms".format(name)) + store_765(name = "{}/mumath".format(name)) + store_766(name = "{}/murmurhash-js".format(name)) + store_767(name = "{}/nan".format(name)) + store_768(name = "{}/nanoid".format(name)) + store_769(name = "{}/nanoid".format(name)) + store_770(name = "{}/nanoid".format(name)) + store_771(name = "{}/native-promise-only".format(name)) + store_772(name = "{}/needle".format(name)) + store_773(name = "{}/negotiator".format(name)) + store_774(name = "{}/neo-async".format(name)) + store_775(name = "{}/next-tick".format(name)) + store_776(name = "{}/next".format(name)) + store_777(name = "{}/node-fetch".format(name)) + store_778(name = "{}/node-fetch".format(name)) + store_779(name = "{}/node-gyp-build".format(name)) + store_780(name = "{}/node-gyp".format(name)) + store_781(name = "{}/node-gyp".format(name)) + store_782(name = "{}/node-pre-gyp".format(name)) + store_783(name = "{}/node-releases".format(name)) + store_784(name = "{}/nopt".format(name)) + store_785(name = "{}/nopt".format(name)) + store_786(name = "{}/nopt".format(name)) + store_787(name = "{}/normalize-path".format(name)) + store_788(name = "{}/normalize-svg-path".format(name)) + store_789(name = "{}/normalize-svg-path".format(name)) + store_790(name = "{}/normalize-url".format(name)) + store_791(name = "{}/npm-bundled".format(name)) + store_792(name = "{}/npm-normalize-package-bin".format(name)) + store_793(name = "{}/npm-packlist".format(name)) + store_794(name = "{}/npmlog".format(name)) + store_795(name = "{}/npmlog".format(name)) + store_796(name = "{}/npmlog".format(name)) + store_797(name = "{}/number-is-integer".format(name)) + store_798(name = "{}/number-is-nan".format(name)) + store_799(name = "{}/oauth-sign".format(name)) + store_800(name = "{}/object-assign".format(name)) + store_801(name = "{}/object-hash".format(name)) + store_802(name = "{}/oidc-token-hash".format(name)) + store_803(name = "{}/once".format(name)) + store_804(name = "{}/once".format(name)) + store_805(name = "{}/opener".format(name)) + store_806(name = "{}/openid-client".format(name)) + store_807(name = "{}/optimist".format(name)) + store_808(name = "{}/optionator".format(name)) + store_809(name = "{}/os-homedir".format(name)) + store_810(name = "{}/os-tmpdir".format(name)) + store_811(name = "{}/osenv".format(name)) + store_812(name = "{}/outdent".format(name)) + store_813(name = "{}/p-cancelable".format(name)) + store_814(name = "{}/p-event".format(name)) + store_815(name = "{}/p-finally".format(name)) + store_816(name = "{}/p-limit".format(name)) + store_817(name = "{}/p-limit".format(name)) + store_818(name = "{}/p-locate".format(name)) + store_819(name = "{}/p-locate".format(name)) + store_820(name = "{}/p-map".format(name)) + store_821(name = "{}/p-timeout".format(name)) + store_822(name = "{}/p-try".format(name)) + store_823(name = "{}/package-json-from-dist".format(name)) + store_824(name = "{}/parent-module".format(name)) + store_825(name = "{}/parenthesis".format(name)) + store_826(name = "{}/parse-json".format(name)) + store_827(name = "{}/parse-rect".format(name)) + store_828(name = "{}/parse-svg-path".format(name)) + store_829(name = "{}/parse-unit".format(name)) + store_830(name = "{}/path-exists".format(name)) + store_831(name = "{}/path-is-absolute".format(name)) + store_832(name = "{}/path-key".format(name)) + store_833(name = "{}/path-parse".format(name)) + store_834(name = "{}/path-scurry".format(name)) + store_835(name = "{}/path-scurry".format(name)) + store_836(name = "{}/path-type".format(name)) + store_837(name = "{}/pathe".format(name)) + store_838(name = "{}/pbf".format(name)) + store_839(name = "{}/pend".format(name)) + store_840(name = "{}/performance-now".format(name)) + store_841(name = "{}/pick-by-alias".format(name)) + store_842(name = "{}/picocolors".format(name)) + store_843(name = "{}/picocolors".format(name)) + store_844(name = "{}/picomatch".format(name)) + store_845(name = "{}/picomatch".format(name)) + store_846(name = "{}/pify".format(name)) + store_847(name = "{}/pkg-dir".format(name)) + store_848(name = "{}/pkg-types".format(name)) + store_849(name = "{}/plotly.js".format(name)) + store_850(name = "{}/pngjs".format(name)) + store_851(name = "{}/point-in-polygon".format(name)) + store_852(name = "{}/polybooljs".format(name)) + store_853(name = "{}/postcss-modules-extract-imports".format(name)) + store_854(name = "{}/postcss-modules-local-by-default".format(name)) + store_855(name = "{}/postcss-modules-scope".format(name)) + store_856(name = "{}/postcss-modules-values".format(name)) + store_857(name = "{}/postcss-selector-parser".format(name)) + store_858(name = "{}/postcss-value-parser".format(name)) + store_859(name = "{}/postcss".format(name)) + store_860(name = "{}/postcss".format(name)) + store_861(name = "{}/postcss".format(name)) + store_862(name = "{}/potpack".format(name)) + store_863(name = "{}/prelude-ls".format(name)) + store_864(name = "{}/probe-image-size".format(name)) + store_865(name = "{}/process-nextick-args".format(name)) + store_866(name = "{}/progress".format(name)) + store_867(name = "{}/promise-inflight".format(name)) + store_868(name = "{}/promise-retry".format(name)) + store_869(name = "{}/protoc-gen-grpc".format(name)) + store_870(name = "{}/protocol-buffers-schema".format(name)) + store_871(name = "{}/proxy-from-env".format(name)) + store_872(name = "{}/psl".format(name)) + store_873(name = "{}/pump".format(name)) + store_874(name = "{}/pump".format(name)) + store_875(name = "{}/punycode".format(name)) + store_876(name = "{}/puppeteer-core".format(name)) + store_877(name = "{}/puppeteer".format(name)) + store_878(name = "{}/qs".format(name)) + store_879(name = "{}/quickselect".format(name)) + store_880(name = "{}/raf".format(name)) + store_881(name = "{}/ramda".format(name)) + store_882(name = "{}/randombytes".format(name)) + store_883(name = "{}/rc".format(name)) + store_884(name = "{}/react-dom".format(name)) + store_885(name = "{}/react".format(name)) + store_886(name = "{}/react".format(name)) + store_887(name = "{}/read-yaml-file".format(name)) + store_888(name = "{}/readable-stream".format(name)) + store_889(name = "{}/readable-stream".format(name)) + store_890(name = "{}/readable-stream".format(name)) + store_891(name = "{}/readdirp".format(name)) + store_892(name = "{}/rechoir".format(name)) + store_893(name = "{}/regenerator-runtime".format(name)) + store_894(name = "{}/regl-error2d".format(name)) + store_895(name = "{}/regl-line2d".format(name)) + store_896(name = "{}/regl-scatter2d".format(name)) + store_897(name = "{}/regl-splom".format(name)) + store_898(name = "{}/regl".format(name)) + store_899(name = "{}/request".format(name)) + store_900(name = "{}/require-directory".format(name)) + store_901(name = "{}/require-from-string".format(name)) + store_902(name = "{}/require-like".format(name)) + store_903(name = "{}/resolve-cwd".format(name)) + store_904(name = "{}/resolve-from".format(name)) + store_905(name = "{}/resolve-from".format(name)) + store_906(name = "{}/resolve-protobuf-schema".format(name)) + store_907(name = "{}/resolve".format(name)) + store_908(name = "{}/resolve".format(name)) + store_909(name = "{}/responselike".format(name)) + store_910(name = "{}/retry".format(name)) + store_911(name = "{}/rfc4648".format(name)) + store_912(name = "{}/right-now".format(name)) + store_913(name = "{}/rimraf".format(name)) + store_914(name = "{}/rimraf".format(name)) + store_915(name = "{}/rimraf".format(name)) + store_916(name = "{}/rollup".format(name)) + store_917(name = "{}/rollup".format(name)) + store_918(name = "{}/rw".format(name)) + store_919(name = "{}/sade".format(name)) + store_920(name = "{}/safe-buffer".format(name)) + store_921(name = "{}/safe-buffer".format(name)) + store_922(name = "{}/safer-buffer".format(name)) + store_923(name = "{}/sax".format(name)) + store_924(name = "{}/scheduler".format(name)) + store_925(name = "{}/schema-utils".format(name)) + store_926(name = "{}/schema-utils".format(name)) + store_927(name = "{}/seedrandom".format(name)) + store_928(name = "{}/segfault-handler".format(name)) + store_929(name = "{}/semver-first-satisfied".format(name)) + store_930(name = "{}/semver".format(name)) + store_931(name = "{}/semver".format(name)) + store_932(name = "{}/semver".format(name)) + store_933(name = "{}/semver".format(name)) + store_934(name = "{}/semver".format(name)) + store_935(name = "{}/serialize-javascript".format(name)) + store_936(name = "{}/serialize-javascript".format(name)) + store_937(name = "{}/set-blocking".format(name)) + store_938(name = "{}/setprototypeof".format(name)) + store_939(name = "{}/shallow-clone".format(name)) + store_940(name = "{}/shallow-copy".format(name)) + store_941(name = "{}/sharp".format(name)) + store_942(name = "{}/shebang-command".format(name)) + store_943(name = "{}/shebang-regex".format(name)) + store_944(name = "{}/signal-exit".format(name)) + store_945(name = "{}/signal-exit".format(name)) + store_946(name = "{}/signum".format(name)) + store_947(name = "{}/simple-swizzle".format(name)) + store_948(name = "{}/sirv".format(name)) + store_949(name = "{}/smart-buffer".format(name)) + store_950(name = "{}/socks-proxy-agent".format(name)) + store_951(name = "{}/socks".format(name)) + store_952(name = "{}/source-map-js".format(name)) + store_953(name = "{}/source-map-js".format(name)) + store_954(name = "{}/source-map-support".format(name)) + store_955(name = "{}/source-map".format(name)) + store_956(name = "{}/sourcemap-codec".format(name)) + store_957(name = "{}/sshpk".format(name)) + store_958(name = "{}/ssri".format(name)) + store_959(name = "{}/stack-trace".format(name)) + store_960(name = "{}/static-eval".format(name)) + store_961(name = "{}/statuses".format(name)) + store_962(name = "{}/stream-buffers".format(name)) + store_963(name = "{}/stream-parser".format(name)) + store_964(name = "{}/stream-shift".format(name)) + store_965(name = "{}/streamsearch".format(name)) + store_966(name = "{}/string-split-by".format(name)) + store_967(name = "{}/string-width".format(name)) + store_968(name = "{}/string-width".format(name)) + store_969(name = "{}/string-width".format(name)) + store_970(name = "{}/string_decoder".format(name)) + store_971(name = "{}/string_decoder".format(name)) + store_972(name = "{}/string_decoder".format(name)) + store_973(name = "{}/strip-ansi".format(name)) + store_974(name = "{}/strip-ansi".format(name)) + store_975(name = "{}/strip-ansi".format(name)) + store_976(name = "{}/strip-bom".format(name)) + store_977(name = "{}/strip-json-comments".format(name)) + store_978(name = "{}/strip-json-comments".format(name)) + store_979(name = "{}/strongly-connected-components".format(name)) + store_980(name = "{}/styled-jsx".format(name)) + store_981(name = "{}/supercluster".format(name)) + store_982(name = "{}/superscript-text".format(name)) + store_983(name = "{}/supports-color".format(name)) + store_984(name = "{}/supports-color".format(name)) + store_985(name = "{}/supports-color".format(name)) + store_986(name = "{}/supports-preserve-symlinks-flag".format(name)) + store_987(name = "{}/svg-arc-to-cubic-bezier".format(name)) + store_988(name = "{}/svg-path-bounds".format(name)) + store_989(name = "{}/svg-path-sdf".format(name)) + store_990(name = "{}/syncpack".format(name)) + store_991(name = "{}/tailwindcss".format(name)) + store_992(name = "{}/tapable".format(name)) + store_993(name = "{}/tar-fs".format(name)) + store_994(name = "{}/tar-fs".format(name)) + store_995(name = "{}/tar-stream".format(name)) + store_996(name = "{}/tar-stream".format(name)) + store_997(name = "{}/tar".format(name)) + store_998(name = "{}/tar".format(name)) + store_999(name = "{}/tar".format(name)) + store_1000(name = "{}/terser-webpack-plugin".format(name)) + store_1001(name = "{}/terser".format(name)) + store_1002(name = "{}/test-exclude".format(name)) + store_1003(name = "{}/through2".format(name)) + store_1004(name = "{}/through2".format(name)) + store_1005(name = "{}/through".format(name)) + store_1006(name = "{}/tightrope".format(name)) + store_1007(name = "{}/tiny-emitter".format(name)) + store_1008(name = "{}/tinycolor2".format(name)) + store_1009(name = "{}/tinyqueue".format(name)) + store_1010(name = "{}/tmp".format(name)) + store_1011(name = "{}/to-buffer".format(name)) + store_1012(name = "{}/to-fast-properties".format(name)) + store_1013(name = "{}/to-float32".format(name)) + store_1014(name = "{}/to-px".format(name)) + store_1015(name = "{}/to-readable-stream".format(name)) + store_1016(name = "{}/to-regex-range".format(name)) + store_1017(name = "{}/toidentifier".format(name)) + store_1018(name = "{}/topojson-client".format(name)) + store_1019(name = "{}/totalist".format(name)) + store_1020(name = "{}/tough-cookie".format(name)) + store_1021(name = "{}/tr46".format(name)) + store_1022(name = "{}/tslib".format(name)) + store_1023(name = "{}/tslib".format(name)) + store_1024(name = "{}/tunnel-agent".format(name)) + store_1025(name = "{}/tweetnacl".format(name)) + store_1026(name = "{}/type-check".format(name)) + store_1027(name = "{}/type-fest".format(name)) + store_1028(name = "{}/type".format(name)) + store_1029(name = "{}/type".format(name)) + store_1030(name = "{}/typed-function".format(name)) + store_1031(name = "{}/typedarray-pool".format(name)) + store_1032(name = "{}/typedarray".format(name)) + store_1033(name = "{}/typeof-article".format(name)) + store_1034(name = "{}/typescript".format(name)) + store_1035(name = "{}/ufo".format(name)) + store_1036(name = "{}/unbzip2-stream".format(name)) + store_1037(name = "{}/undici-types".format(name)) + store_1038(name = "{}/undici-types".format(name)) + store_1039(name = "{}/unique-filename".format(name)) + store_1040(name = "{}/unique-slug".format(name)) + store_1041(name = "{}/universalify".format(name)) + store_1042(name = "{}/universalify".format(name)) + store_1043(name = "{}/unix-dgram".format(name)) + store_1044(name = "{}/unquote".format(name)) + store_1045(name = "{}/unused".format(name)) + store_1046(name = "{}/update-browserslist-db".format(name)) + store_1047(name = "{}/update-diff".format(name)) + store_1048(name = "{}/uri-js".format(name)) + store_1049(name = "{}/util-deprecate".format(name)) + store_1050(name = "{}/uuid".format(name)) + store_1051(name = "{}/uuid".format(name)) + store_1052(name = "{}/uvu".format(name)) + store_1053(name = "{}/v8-to-istanbul".format(name)) + store_1054(name = "{}/verror".format(name)) + store_1055(name = "{}/vt-pbf".format(name)) + store_1056(name = "{}/watchpack".format(name)) + store_1057(name = "{}/weak-map".format(name)) + store_1058(name = "{}/webgl-context".format(name)) + store_1059(name = "{}/webidl-conversions".format(name)) + store_1060(name = "{}/webpack-bundle-analyzer".format(name)) + store_1061(name = "{}/webpack-cli".format(name)) + store_1062(name = "{}/webpack-merge".format(name)) + store_1063(name = "{}/webpack-sources".format(name)) + store_1064(name = "{}/webpack".format(name)) + store_1065(name = "{}/whatwg-url".format(name)) + store_1066(name = "{}/which".format(name)) + store_1067(name = "{}/wide-align".format(name)) + store_1068(name = "{}/wildcard".format(name)) + store_1069(name = "{}/word-wrap".format(name)) + store_1070(name = "{}/wordwrap".format(name)) + store_1071(name = "{}/workerpool".format(name)) + store_1072(name = "{}/world-calendars".format(name)) + store_1073(name = "{}/wrap-ansi".format(name)) + store_1074(name = "{}/wrap-ansi".format(name)) + store_1075(name = "{}/wrappy".format(name)) + store_1076(name = "{}/ws".format(name)) + store_1077(name = "{}/ws".format(name)) + store_1078(name = "{}/ws".format(name)) + store_1079(name = "{}/xml".format(name)) + store_1080(name = "{}/xtend".format(name)) + store_1081(name = "{}/xtend".format(name)) + store_1082(name = "{}/y18n".format(name)) + store_1083(name = "{}/yallist".format(name)) + store_1084(name = "{}/yallist".format(name)) + store_1085(name = "{}/yallist".format(name)) + store_1086(name = "{}/yargs-parser".format(name)) + store_1087(name = "{}/yargs-parser".format(name)) + store_1088(name = "{}/yargs-parser".format(name)) + store_1089(name = "{}/yargs-unparser".format(name)) + store_1090(name = "{}/yargs".format(name)) + store_1091(name = "{}/yargs".format(name)) + store_1092(name = "{}/yauzl".format(name)) + store_1093(name = "{}/yocto-queue".format(name)) + store_1094(name = "{}/zod".format(name)) if link: if bazel_package == "js/private/worker/src": link_1(name = "{}/abortcontroller-polyfill".format(name)) link_targets.append(":{}/abortcontroller-polyfill".format(name)) - link_198(name = "{}/@rollup/plugin-commonjs".format(name)) + link_195(name = "{}/@rollup/plugin-commonjs".format(name)) link_targets.append(":{}/@rollup/plugin-commonjs".format(name)) if "@rollup" not in scope_targets: scope_targets["@rollup"] = [link_targets[-1]] else: scope_targets["@rollup"].append(link_targets[-1]) - link_200(name = "{}/@rollup/plugin-json".format(name)) + link_196(name = "{}/@rollup/plugin-json".format(name)) link_targets.append(":{}/@rollup/plugin-json".format(name)) if "@rollup" not in scope_targets: scope_targets["@rollup"] = [link_targets[-1]] else: scope_targets["@rollup"].append(link_targets[-1]) - link_202(name = "{}/@rollup/plugin-node-resolve".format(name)) + link_197(name = "{}/@rollup/plugin-node-resolve".format(name)) link_targets.append(":{}/@rollup/plugin-node-resolve".format(name)) if "@rollup" not in scope_targets: scope_targets["@rollup"] = [link_targets[-1]] else: scope_targets["@rollup"].append(link_targets[-1]) - link_204(name = "{}/@rollup/plugin-terser".format(name)) - link_targets.append(":{}/@rollup/plugin-terser".format(name)) - if "@rollup" not in scope_targets: - scope_targets["@rollup"] = [link_targets[-1]] - else: - scope_targets["@rollup"].append(link_targets[-1]) - link_205(name = "{}/@rollup/plugin-typescript".format(name)) + link_198(name = "{}/@rollup/plugin-typescript".format(name)) link_targets.append(":{}/@rollup/plugin-typescript".format(name)) if "@rollup" not in scope_targets: scope_targets["@rollup"] = [link_targets[-1]] else: scope_targets["@rollup"].append(link_targets[-1]) - link_240(name = "{}/@types/google-protobuf".format(name)) + link_254(name = "{}/@types/google-protobuf".format(name)) link_targets.append(":{}/@types/google-protobuf".format(name)) if "@types" not in scope_targets: scope_targets["@types"] = [link_targets[-1]] else: scope_targets["@types"].append(link_targets[-1]) - link_248(name = "{}/@types/node".format(name)) + link_262(name = "{}/@types/node".format(name)) link_targets.append(":{}/@types/node".format(name)) if "@types" not in scope_targets: scope_targets["@types"] = [link_targets[-1]] else: scope_targets["@types"].append(link_targets[-1]) - link_547(name = "{}/google-protobuf".format(name)) + link_562(name = "{}/google-protobuf".format(name)) link_targets.append(":{}/google-protobuf".format(name)) - link_901(name = "{}/rollup".format(name)) + link_917(name = "{}/rollup".format(name)) link_targets.append(":{}/rollup".format(name)) - link_1009(name = "{}/tslib".format(name)) + link_1022(name = "{}/tslib".format(name)) link_targets.append(":{}/tslib".format(name)) - link_1021(name = "{}/typescript".format(name)) + link_1034(name = "{}/typescript".format(name)) link_targets.append(":{}/typescript".format(name)) elif bazel_package == "js/private/test/image": link_6(name = "{}/acorn".format(name)) @@ -2275,42 +2295,42 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): scope_targets["@gregmagolan"] = [link_targets[-1]] else: scope_targets["@gregmagolan"].append(link_targets[-1]) - link_197(name = "{}/@rollup/plugin-commonjs".format(name)) + link_194(name = "{}/@rollup/plugin-commonjs".format(name)) link_targets.append(":{}/@rollup/plugin-commonjs".format(name)) if "@rollup" not in scope_targets: scope_targets["@rollup"] = [link_targets[-1]] else: scope_targets["@rollup"].append(link_targets[-1]) - link_405(name = "{}/debug".format(name)) + link_419(name = "{}/debug".format(name)) link_targets.append(":{}/debug".format(name)) - link_696(name = "{}/meaning-of-life".format(name)) + link_711(name = "{}/meaning-of-life".format(name)) link_targets.append(":{}/meaning-of-life".format(name)) - link_733(name = "{}/mobx-react".format(name)) + link_748(name = "{}/mobx-react".format(name)) link_targets.append(":{}/mobx-react".format(name)) - link_734(name = "{}/mobx".format(name)) + link_749(name = "{}/mobx".format(name)) link_targets.append(":{}/mobx".format(name)) - link_749(name = "{}/ms".format(name)) + link_764(name = "{}/ms".format(name)) link_targets.append(":{}/ms".format(name)) - link_869(name = "{}/react".format(name)) + link_885(name = "{}/react".format(name)) link_targets.append(":{}/react".format(name)) - link_900(name = "{}/rollup".format(name)) + link_916(name = "{}/rollup".format(name)) link_targets.append(":{}/rollup".format(name)) - link_1039(name = "{}/uvu".format(name)) + link_1052(name = "{}/uvu".format(name)) link_targets.append(":{}/uvu".format(name)) elif bazel_package == "examples/npm_package/packages/pkg_a": link_7(name = "{}/acorn".format(name)) link_targets.append(":{}/acorn".format(name)) - link_1038(name = "{}/uuid".format(name)) + link_1051(name = "{}/uuid".format(name)) link_targets.append(":{}/uuid".format(name)) elif bazel_package == "examples/npm_package/packages/pkg_d": link_7(name = "{}/acorn".format(name)) link_targets.append(":{}/acorn".format(name)) - link_1038(name = "{}/uuid".format(name)) + link_1051(name = "{}/uuid".format(name)) link_targets.append(":{}/uuid".format(name)) elif bazel_package == "examples/npm_package/packages/pkg_b": link_8(name = "{}/acorn".format(name)) link_targets.append(":{}/acorn".format(name)) - link_1038(name = "{}/uuid".format(name)) + link_1051(name = "{}/uuid".format(name)) link_targets.append(":{}/uuid".format(name)) elif bazel_package == "examples/linked_lib": link_47(name = "{}/@aspect-test/e".format(name)) @@ -2327,7 +2347,7 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): scope_targets["@aspect-test"] = [link_targets[-1]] else: scope_targets["@aspect-test"].append(link_targets[-1]) - link_247(name = "{}/@types/node".format(name)) + link_261(name = "{}/@types/node".format(name)) link_targets.append(":{}/@types/node".format(name)) if "@types" not in scope_targets: scope_targets["@types"] = [link_targets[-1]] @@ -2348,7 +2368,7 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): scope_targets["@aspect-test"] = [link_targets[-1]] else: scope_targets["@aspect-test"].append(link_targets[-1]) - link_247(name = "{}/@types/node".format(name)) + link_261(name = "{}/@types/node".format(name)) link_targets.append(":{}/@types/node".format(name)) if "@types" not in scope_targets: scope_targets["@types"] = [link_targets[-1]] @@ -2374,175 +2394,175 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): scope_targets["@figma"] = [link_targets[-1]] else: scope_targets["@figma"].append(link_targets[-1]) - link_166(name = "{}/@kubernetes/client-node".format(name)) + link_163(name = "{}/@kubernetes/client-node".format(name)) link_targets.append(":{}/@kubernetes/client-node".format(name)) if "@kubernetes" not in scope_targets: scope_targets["@kubernetes"] = [link_targets[-1]] else: scope_targets["@kubernetes"].append(link_targets[-1]) - link_194(name = "{}/@plotly/regl".format(name)) + link_191(name = "{}/@plotly/regl".format(name)) link_targets.append(":{}/@plotly/regl".format(name)) if "@plotly" not in scope_targets: scope_targets["@plotly"] = [link_targets[-1]] else: scope_targets["@plotly"].append(link_targets[-1]) - link_194(name = "{}/regl".format(name)) + link_191(name = "{}/regl".format(name)) link_targets.append(":{}/regl".format(name)) - link_308(name = "{}/bufferutil".format(name)) + link_322(name = "{}/bufferutil".format(name)) link_targets.append(":{}/bufferutil".format(name)) - link_407(name = "{}/debug".format(name)) + link_421(name = "{}/debug".format(name)) link_targets.append(":{}/debug".format(name)) - link_457(name = "{}/esbuild".format(name)) + link_471(name = "{}/esbuild".format(name)) link_targets.append(":{}/esbuild".format(name)) - link_562(name = "{}/hello".format(name)) + link_577(name = "{}/hello".format(name)) link_targets.append(":{}/hello".format(name)) - link_563(name = "{}/handlebars-helpers/helper-date".format(name)) + link_578(name = "{}/handlebars-helpers/helper-date".format(name)) link_targets.append(":{}/handlebars-helpers/helper-date".format(name)) - link_564(name = "{}/hot-shots".format(name)) + link_579(name = "{}/hot-shots".format(name)) link_targets.append(":{}/hot-shots".format(name)) - link_587(name = "{}/inline-fixtures".format(name)) + link_602(name = "{}/inline-fixtures".format(name)) link_targets.append(":{}/inline-fixtures".format(name)) - link_646(name = "{}/json-stable-stringify".format(name)) + link_661(name = "{}/json-stable-stringify".format(name)) link_targets.append(":{}/json-stable-stringify".format(name)) - link_678(name = "{}/lodash".format(name)) + link_693(name = "{}/lodash".format(name)) link_targets.append(":{}/lodash".format(name)) - link_766(name = "{}/node-gyp".format(name)) + link_781(name = "{}/node-gyp".format(name)) link_targets.append(":{}/node-gyp".format(name)) - link_833(name = "{}/plotly.js".format(name)) + link_849(name = "{}/plotly.js".format(name)) link_targets.append(":{}/plotly.js".format(name)) - link_834(name = "{}/pngjs".format(name)) + link_850(name = "{}/pngjs".format(name)) link_targets.append(":{}/pngjs".format(name)) - link_853(name = "{}/protoc-gen-grpc".format(name)) + link_869(name = "{}/protoc-gen-grpc".format(name)) link_targets.append(":{}/protoc-gen-grpc".format(name)) - link_861(name = "{}/puppeteer".format(name)) + link_877(name = "{}/puppeteer".format(name)) link_targets.append(":{}/puppeteer".format(name)) - link_913(name = "{}/segfault-handler".format(name)) + link_928(name = "{}/segfault-handler".format(name)) link_targets.append(":{}/segfault-handler".format(name)) - link_914(name = "{}/semver-first-satisfied".format(name)) + link_929(name = "{}/semver-first-satisfied".format(name)) link_targets.append(":{}/semver-first-satisfied".format(name)) - link_976(name = "{}/syncpack".format(name)) + link_990(name = "{}/syncpack".format(name)) link_targets.append(":{}/syncpack".format(name)) - link_1021(name = "{}/typescript".format(name)) + link_1034(name = "{}/typescript".format(name)) link_targets.append(":{}/typescript".format(name)) - link_1032(name = "{}/unused".format(name)) - link_1047(name = "{}/webpack-bundle-analyzer".format(name)) + link_1045(name = "{}/unused".format(name)) + link_1060(name = "{}/webpack-bundle-analyzer".format(name)) link_targets.append(":{}/webpack-bundle-analyzer".format(name)) elif bazel_package == "js/private/coverage/bundle": - link_199(name = "{}/@rollup/plugin-commonjs".format(name)) + link_195(name = "{}/@rollup/plugin-commonjs".format(name)) link_targets.append(":{}/@rollup/plugin-commonjs".format(name)) if "@rollup" not in scope_targets: scope_targets["@rollup"] = [link_targets[-1]] else: scope_targets["@rollup"].append(link_targets[-1]) - link_201(name = "{}/@rollup/plugin-json".format(name)) + link_196(name = "{}/@rollup/plugin-json".format(name)) link_targets.append(":{}/@rollup/plugin-json".format(name)) if "@rollup" not in scope_targets: scope_targets["@rollup"] = [link_targets[-1]] else: scope_targets["@rollup"].append(link_targets[-1]) - link_203(name = "{}/@rollup/plugin-node-resolve".format(name)) + link_197(name = "{}/@rollup/plugin-node-resolve".format(name)) link_targets.append(":{}/@rollup/plugin-node-resolve".format(name)) if "@rollup" not in scope_targets: scope_targets["@rollup"] = [link_targets[-1]] else: scope_targets["@rollup"].append(link_targets[-1]) - link_311(name = "{}/c8".format(name)) + link_325(name = "{}/c8".format(name)) link_targets.append(":{}/c8".format(name)) - link_902(name = "{}/rollup".format(name)) + link_917(name = "{}/rollup".format(name)) link_targets.append(":{}/rollup".format(name)) elif bazel_package == "examples/nextjs": - link_226(name = "{}/@tailwindcss/postcss".format(name)) + link_239(name = "{}/@tailwindcss/postcss".format(name)) link_targets.append(":{}/@tailwindcss/postcss".format(name)) if "@tailwindcss" not in scope_targets: scope_targets["@tailwindcss"] = [link_targets[-1]] else: scope_targets["@tailwindcss"].append(link_targets[-1]) - link_761(name = "{}/next".format(name)) + link_776(name = "{}/next".format(name)) link_targets.append(":{}/next".format(name)) - link_868(name = "{}/react-dom".format(name)) + link_884(name = "{}/react-dom".format(name)) link_targets.append(":{}/react-dom".format(name)) - link_870(name = "{}/react".format(name)) + link_886(name = "{}/react".format(name)) link_targets.append(":{}/react".format(name)) - link_977(name = "{}/tailwindcss".format(name)) + link_991(name = "{}/tailwindcss".format(name)) link_targets.append(":{}/tailwindcss".format(name)) elif bazel_package == "": - link_246(name = "{}/@types/node".format(name)) + link_260(name = "{}/@types/node".format(name)) link_targets.append(":{}/@types/node".format(name)) if "@types" not in scope_targets: scope_targets["@types"] = [link_targets[-1]] else: scope_targets["@types"].append(link_targets[-1]) - link_324(name = "{}/chalk".format(name)) + link_338(name = "{}/chalk".format(name)) link_targets.append(":{}/chalk".format(name)) - link_586(name = "{}/inline-fixtures".format(name)) + link_601(name = "{}/inline-fixtures".format(name)) link_targets.append(":{}/inline-fixtures".format(name)) - link_652(name = "{}/jsonpath-plus".format(name)) + link_667(name = "{}/jsonpath-plus".format(name)) link_targets.append(":{}/jsonpath-plus".format(name)) - link_1021(name = "{}/typescript".format(name)) + link_1034(name = "{}/typescript".format(name)) link_targets.append(":{}/typescript".format(name)) elif bazel_package == "js/private/test/js_run_devserver": - link_246(name = "{}/@types/node".format(name)) + link_260(name = "{}/@types/node".format(name)) link_targets.append(":{}/@types/node".format(name)) if "@types" not in scope_targets: scope_targets["@types"] = [link_targets[-1]] else: scope_targets["@types"].append(link_targets[-1]) - link_630(name = "{}/jasmine".format(name)) + link_645(name = "{}/jasmine".format(name)) link_targets.append(":{}/jasmine".format(name)) elif bazel_package == "examples/js_lib_pkg/a": - link_248(name = "{}/@types/node".format(name)) + link_262(name = "{}/@types/node".format(name)) link_targets.append(":{}/@types/node".format(name)) if "@types" not in scope_targets: scope_targets["@types"] = [link_targets[-1]] else: scope_targets["@types"].append(link_targets[-1]) elif bazel_package == "examples/js_lib_pkg/b": - link_248(name = "{}/@types/node".format(name)) + link_262(name = "{}/@types/node".format(name)) link_targets.append(":{}/@types/node".format(name)) if "@types" not in scope_targets: scope_targets["@types"] = [link_targets[-1]] else: scope_targets["@types"].append(link_targets[-1]) elif bazel_package == "examples/webpack_cli": - link_258(name = "{}/@vanilla-extract/css".format(name)) + link_272(name = "{}/@vanilla-extract/css".format(name)) link_targets.append(":{}/@vanilla-extract/css".format(name)) if "@vanilla-extract" not in scope_targets: scope_targets["@vanilla-extract"] = [link_targets[-1]] else: scope_targets["@vanilla-extract"].append(link_targets[-1]) - link_262(name = "{}/@vanilla-extract/webpack-plugin".format(name)) + link_276(name = "{}/@vanilla-extract/webpack-plugin".format(name)) link_targets.append(":{}/@vanilla-extract/webpack-plugin".format(name)) if "@vanilla-extract" not in scope_targets: scope_targets["@vanilla-extract"] = [link_targets[-1]] else: scope_targets["@vanilla-extract"].append(link_targets[-1]) - link_378(name = "{}/css-loader".format(name)) + link_392(name = "{}/css-loader".format(name)) link_targets.append(":{}/css-loader".format(name)) - link_694(name = "{}/mathjs".format(name)) + link_709(name = "{}/mathjs".format(name)) link_targets.append(":{}/mathjs".format(name)) - link_704(name = "{}/mini-css-extract-plugin".format(name)) + link_719(name = "{}/mini-css-extract-plugin".format(name)) link_targets.append(":{}/mini-css-extract-plugin".format(name)) - link_1048(name = "{}/webpack-cli".format(name)) + link_1061(name = "{}/webpack-cli".format(name)) link_targets.append(":{}/webpack-cli".format(name)) - link_1051(name = "{}/webpack".format(name)) + link_1064(name = "{}/webpack".format(name)) link_targets.append(":{}/webpack".format(name)) elif bazel_package == "examples/npm_package/libs/lib_a": - link_323(name = "{}/chalk".format(name)) + link_337(name = "{}/chalk".format(name)) link_targets.append(":{}/chalk".format(name)) elif bazel_package == "npm/private/test/npm_package": - link_323(name = "{}/chalk".format(name)) + link_337(name = "{}/chalk".format(name)) link_targets.append(":{}/chalk".format(name)) - link_324(name = "{}/chalk-alt".format(name)) + link_338(name = "{}/chalk-alt".format(name)) link_targets.append(":{}/chalk-alt".format(name)) elif bazel_package == "examples/macro": - link_735(name = "{}/mocha-junit-reporter".format(name)) + link_750(name = "{}/mocha-junit-reporter".format(name)) link_targets.append(":{}/mocha-junit-reporter".format(name)) - link_736(name = "{}/mocha-multi-reporters".format(name)) + link_751(name = "{}/mocha-multi-reporters".format(name)) link_targets.append(":{}/mocha-multi-reporters".format(name)) - link_737(name = "{}/mocha".format(name)) + link_752(name = "{}/mocha".format(name)) link_targets.append(":{}/mocha".format(name)) elif bazel_package == "examples/stack_traces": - link_940(name = "{}/source-map-support".format(name)) + link_954(name = "{}/source-map-support".format(name)) link_targets.append(":{}/source-map-support".format(name)) if is_root: @@ -2847,7 +2867,6 @@ def npm_link_targets(name = "node_modules", package = None): link_targets.append(":{}/@rollup/plugin-commonjs".format(name)) link_targets.append(":{}/@rollup/plugin-json".format(name)) link_targets.append(":{}/@rollup/plugin-node-resolve".format(name)) - link_targets.append(":{}/@rollup/plugin-terser".format(name)) link_targets.append(":{}/@rollup/plugin-typescript".format(name)) link_targets.append(":{}/@types/google-protobuf".format(name)) link_targets.append(":{}/@types/node".format(name)) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3be5fc301..528fd5959 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -263,17 +263,17 @@ importers: version: 7.13.0 devDependencies: '@rollup/plugin-commonjs': - specifier: 23.0.7 - version: 23.0.7(rollup@3.29.5) + specifier: 28.0.3 + version: 28.0.3(rollup@4.39.0) '@rollup/plugin-json': - specifier: 5.0.2 - version: 5.0.2(rollup@3.29.5) + specifier: 6.1.0 + version: 6.1.0(rollup@4.39.0) '@rollup/plugin-node-resolve': - specifier: 15.3.0 - version: 15.3.0(rollup@3.29.5) + specifier: 16.0.1 + version: 16.0.1(rollup@4.39.0) rollup: - specifier: 3.29.5 - version: 3.29.5 + specifier: 4.39.0 + version: 4.39.0 js/private/test/image: dependencies: @@ -303,20 +303,17 @@ importers: version: 3.21.4 devDependencies: '@rollup/plugin-commonjs': - specifier: 23.0.7 - version: 23.0.7(rollup@2.79.2) + specifier: 28.0.3 + version: 28.0.3(rollup@4.39.0) '@rollup/plugin-json': - specifier: 5.0.2 - version: 5.0.2(rollup@2.79.2) + specifier: 6.1.0 + version: 6.1.0(rollup@4.39.0) '@rollup/plugin-node-resolve': - specifier: 15.3.0 - version: 15.3.0(rollup@2.79.2) - '@rollup/plugin-terser': - specifier: 0.4.4 - version: 0.4.4(rollup@2.79.2) + specifier: 16.0.1 + version: 16.0.1(rollup@4.39.0) '@rollup/plugin-typescript': - specifier: 10.0.1 - version: 10.0.1(rollup@2.79.2)(tslib@2.7.0)(typescript@4.9.5) + specifier: 12.1.2 + version: 12.1.2(rollup@4.39.0)(tslib@2.7.0)(typescript@4.9.5) '@types/google-protobuf': specifier: 3.15.12 version: 3.15.12 @@ -327,8 +324,8 @@ importers: specifier: 1.7.5 version: 1.7.5 rollup: - specifier: 2.79.2 - version: 2.79.2 + specifier: 4.39.0 + version: 4.39.0 tslib: specifier: 2.7.0 version: 2.7.0 @@ -1407,15 +1404,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/trace-mapping': 0.3.17 - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} @@ -1424,40 +1412,25 @@ packages: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - dev: true - /@jridgewell/source-map@0.3.2: resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} dependencies: '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 - /@jridgewell/source-map@0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + dev: true + /@jridgewell/trace-mapping@0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /@jsep-plugin/assignment@1.2.1(jsep@1.3.9): resolution: {integrity: sha512-gaHqbubTi29aZpVbBlECRpmdia+L5/lh2BwtIJTmtxdbecEyyX/ejAOg7eQDGNvGOUmPY7Z2Yxdy9ioyH/VJeA==} engines: {node: '>= 10.16.0'} @@ -1729,87 +1702,40 @@ packages: rollup: 2.70.2 dev: true - /@rollup/plugin-commonjs@23.0.7(rollup@2.79.2): - resolution: {integrity: sha512-hsSD5Qzyuat/swzrExGG5l7EuIlPhwTsT7KwKbSCQzIcJWjRxiimi/0tyMYY2bByitNb3i1p+6JWEDGa0NvT0Q==} - engines: {node: '>=14.0.0'} + /@rollup/plugin-commonjs@28.0.3(rollup@4.39.0): + resolution: {integrity: sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: - rollup: ^2.68.0||^3.0.0 + rollup: ^2.68.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@2.79.2) + '@rollup/pluginutils': 5.0.2(rollup@4.39.0) commondir: 1.0.1 estree-walker: 2.0.2 - glob: 8.1.0 + fdir: 6.4.3(picomatch@4.0.2) is-reference: 1.2.1 - magic-string: 0.27.0 - rollup: 2.79.2 + magic-string: 0.30.17 + picomatch: 4.0.2 + rollup: 4.39.0 dev: true - /@rollup/plugin-commonjs@23.0.7(rollup@3.29.5): - resolution: {integrity: sha512-hsSD5Qzyuat/swzrExGG5l7EuIlPhwTsT7KwKbSCQzIcJWjRxiimi/0tyMYY2bByitNb3i1p+6JWEDGa0NvT0Q==} + /@rollup/plugin-json@6.1.0(rollup@4.39.0): + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.68.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.29.5) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.1.0 - is-reference: 1.2.1 - magic-string: 0.27.0 - rollup: 3.29.5 - dev: true - - /@rollup/plugin-json@5.0.2(rollup@2.79.2): - resolution: {integrity: sha512-D1CoOT2wPvadWLhVcmpkDnesTzjhNIQRWLsc3fA49IFOP2Y84cFOOJ+nKGYedvXHKUsPeq07HR4hXpBBr+CHlA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@2.79.2) - rollup: 2.79.2 - dev: true - - /@rollup/plugin-json@5.0.2(rollup@3.29.5): - resolution: {integrity: sha512-D1CoOT2wPvadWLhVcmpkDnesTzjhNIQRWLsc3fA49IFOP2Y84cFOOJ+nKGYedvXHKUsPeq07HR4hXpBBr+CHlA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.29.5) - rollup: 3.29.5 - dev: true - - /@rollup/plugin-node-resolve@15.3.0(rollup@2.79.2): - resolution: {integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@2.79.2) - '@types/resolve': 1.20.2 - deepmerge: 4.3.0 - is-module: 1.0.0 - resolve: 1.22.1 - rollup: 2.79.2 + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + rollup: 4.39.0 dev: true - /@rollup/plugin-node-resolve@15.3.0(rollup@3.29.5): - resolution: {integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==} + /@rollup/plugin-node-resolve@16.0.1(rollup@4.39.0): + resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0||^4.0.0 @@ -1817,34 +1743,19 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.29.5) + '@rollup/pluginutils': 5.0.2(rollup@4.39.0) '@types/resolve': 1.20.2 deepmerge: 4.3.0 is-module: 1.0.0 resolve: 1.22.1 - rollup: 3.29.5 + rollup: 4.39.0 dev: true - /@rollup/plugin-terser@0.4.4(rollup@2.79.2): - resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} + /@rollup/plugin-typescript@12.1.2(rollup@4.39.0)(tslib@2.7.0)(typescript@4.9.5): + resolution: {integrity: sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - rollup: 2.79.2 - serialize-javascript: 6.0.1 - smob: 1.5.0 - terser: 5.34.1 - dev: true - - /@rollup/plugin-typescript@10.0.1(rollup@2.79.2)(tslib@2.7.0)(typescript@4.9.5): - resolution: {integrity: sha512-wBykxRLlX7EzL8BmUqMqk5zpx2onnmRMSw/l9M1sVfkJvdwfxogZQVNUM9gVMJbjRLDR5H6U0OMOrlDGmIV45A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.14.0||^3.0.0 + rollup: ^2.14.0||^3.0.0||^4.0.0 tslib: '*' typescript: '>=3.7.0' peerDependenciesMeta: @@ -1853,9 +1764,9 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@2.79.2) + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) resolve: 1.22.1 - rollup: 2.79.2 + rollup: 4.39.0 tslib: 2.7.0 typescript: 4.9.5 dev: true @@ -1872,7 +1783,7 @@ packages: rollup: 2.70.2 dev: true - /@rollup/pluginutils@5.0.2(rollup@2.79.2): + /@rollup/pluginutils@5.0.2(rollup@4.39.0): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1881,27 +1792,187 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 2.79.2 + rollup: 4.39.0 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.29.5): - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + /@rollup/pluginutils@5.1.4(rollup@4.39.0): + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.7 estree-walker: 2.0.2 - picomatch: 2.3.1 - rollup: 3.29.5 + picomatch: 4.0.2 + rollup: 4.39.0 dev: true + /@rollup/rollup-android-arm-eabi@4.39.0: + resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.39.0: + resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.39.0: + resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.39.0: + resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-freebsd-arm64@4.39.0: + resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-freebsd-x64@4.39.0: + resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.39.0: + resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.39.0: + resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.39.0: + resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.39.0: + resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-loongarch64-gnu@4.39.0: + resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.39.0: + resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.39.0: + resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-musl@4.39.0: + resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.39.0: + resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.39.0: + resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.39.0: + resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.39.0: + resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.39.0: + resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.39.0: + resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@sindresorhus/is@2.1.1: resolution: {integrity: sha512-/aPsuoj/1Dw/kzhkgz+ES6TxG0zfTMGLwuK2ZG00k/iJzYHTLCE8mVU8EPqEOp/lmxPoq1C1C9RYToRKb2KEfg==} engines: {node: '>=10'} @@ -2098,6 +2169,10 @@ packages: /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==, tarball: https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz} + /@types/estree@1.0.7: + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==, tarball: https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz} + dev: true + /@types/google-protobuf@3.15.12: resolution: {integrity: sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==, tarball: https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz} dev: true @@ -3807,6 +3882,17 @@ packages: pend: 1.2.0 dev: true + /fdir@6.4.3(picomatch@4.0.2): + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + dependencies: + picomatch: 4.0.2 + dev: true + /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} dev: true @@ -4634,7 +4720,7 @@ packages: /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': registry.npmjs.org/@types/estree@1.0.0 + '@types/estree': 1.0.7 dev: true /is-string-blank@1.0.1: @@ -5091,11 +5177,10 @@ packages: sourcemap-codec: 1.4.8 dev: true - /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} + /magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.5.0 dev: true /make-dir@2.1.0: @@ -5728,7 +5813,7 @@ packages: npmlog: 4.1.2 request: 2.88.2 rimraf: 3.0.2 - semver: 7.5.0 + semver: 7.7.1 tar: 6.1.13 which: 2.0.2 dev: true @@ -6137,6 +6222,11 @@ packages: engines: {node: '>=8.6'} dev: true + /picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + dev: true + /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -6723,19 +6813,33 @@ packages: fsevents: 2.3.2 dev: true - /rollup@2.79.2: - resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /rollup@3.29.5: - resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} + /rollup@4.39.0: + resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + dependencies: + '@types/estree': 1.0.7 optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.39.0 + '@rollup/rollup-android-arm64': 4.39.0 + '@rollup/rollup-darwin-arm64': 4.39.0 + '@rollup/rollup-darwin-x64': 4.39.0 + '@rollup/rollup-freebsd-arm64': 4.39.0 + '@rollup/rollup-freebsd-x64': 4.39.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.39.0 + '@rollup/rollup-linux-arm-musleabihf': 4.39.0 + '@rollup/rollup-linux-arm64-gnu': 4.39.0 + '@rollup/rollup-linux-arm64-musl': 4.39.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.39.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0 + '@rollup/rollup-linux-riscv64-gnu': 4.39.0 + '@rollup/rollup-linux-riscv64-musl': 4.39.0 + '@rollup/rollup-linux-s390x-gnu': 4.39.0 + '@rollup/rollup-linux-x64-gnu': 4.39.0 + '@rollup/rollup-linux-x64-musl': 4.39.0 + '@rollup/rollup-win32-arm64-msvc': 4.39.0 + '@rollup/rollup-win32-ia32-msvc': 4.39.0 + '@rollup/rollup-win32-x64-msvc': 4.39.0 fsevents: 2.3.2 dev: true @@ -6944,10 +7048,6 @@ packages: engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} dev: true - /smob@1.5.0: - resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} - dev: true - /socks-proxy-agent@7.0.0: resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} engines: {node: '>= 10'} @@ -7330,17 +7430,6 @@ packages: commander: 2.20.3 source-map-support: 0.5.21 - /terser@5.34.1: - resolution: {integrity: sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.12.1 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -8161,12 +8250,6 @@ packages: name: '@types/estree' version: 0.0.51 - registry.npmjs.org/@types/estree@1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz} - name: '@types/estree' - version: 1.0.0 - dev: true - registry.npmjs.org/@types/http-cache-semantics@4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz} name: '@types/http-cache-semantics'