vitest 0.2.1 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.md CHANGED
@@ -1231,6 +1231,35 @@ Repository: unjs/mlly
1231
1231
 
1232
1232
  ---------------------------------------
1233
1233
 
1234
+ ## mockdate
1235
+ License: MIT
1236
+ By: Bob Lauer
1237
+ Repository: https://github.com/boblauer/MockDate.git
1238
+
1239
+ > The MIT License (MIT)
1240
+ >
1241
+ > Copyright (c) 2014 Bob Lauer
1242
+ >
1243
+ > Permission is hereby granted, free of charge, to any person obtaining a copy
1244
+ > of this software and associated documentation files (the "Software"), to deal
1245
+ > in the Software without restriction, including without limitation the rights
1246
+ > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1247
+ > copies of the Software, and to permit persons to whom the Software is
1248
+ > furnished to do so, subject to the following conditions:
1249
+ >
1250
+ > The above copyright notice and this permission notice shall be included in all
1251
+ > copies or substantial portions of the Software.
1252
+ >
1253
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1254
+ > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1255
+ > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1256
+ > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1257
+ > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1258
+ > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1259
+ > SOFTWARE.
1260
+
1261
+ ---------------------------------------
1262
+
1234
1263
  ## natural-compare
1235
1264
  License: MIT
1236
1265
  By: Lauri Rooden
@@ -1,8 +1,12 @@
1
1
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
2
2
 
3
+ function getDefaultExportFromCjs (x) {
4
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
5
+ }
6
+
3
7
  function commonjsRequire (path) {
4
8
  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.');
5
9
  }
6
10
 
7
- export { commonjsRequire as a, commonjsGlobal as c };
8
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2NvbW1vbmpzSGVscGVycy1iZGVjNGJiZC5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OzsifQ==
11
+ export { commonjsRequire as a, commonjsGlobal as c, getDefaultExportFromCjs as g };
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2NvbW1vbmpzSGVscGVycy1jOWUzYjc2NC5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7In0=
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter } from 'events';
2
- import { c, e as ensurePackageInstalled } from './index-a2ff0e29.js';
3
- import { c as createVitest } from './create-0d7ef684.js';
2
+ import { c, e as ensurePackageInstalled } from './index-043440ae.js';
3
+ import { c as createVitest } from './create-48243480.js';
4
4
  import require$$0 from 'readline';
5
5
  import 'tty';
6
6
  import 'local-pkg';
@@ -14,14 +14,15 @@ import 'url';
14
14
  import 'os';
15
15
  import 'util';
16
16
  import 'stream';
17
- import './index-1085cee5.js';
17
+ import './client-f15310bf.js';
18
18
  import 'module';
19
19
  import 'assert';
20
+ import 'vm';
20
21
  import 'perf_hooks';
21
- import './diff-f479c2ad.js';
22
- import './source-map-f7a4da05.js';
23
- import './index-825cb54c.js';
24
- import './_commonjsHelpers-bdec4bbd.js';
22
+ import './diff-6be0541d.js';
23
+ import './source-map-1132e742.js';
24
+ import './index-61c8686f.js';
25
+ import './_commonjsHelpers-c9e3b764.js';
25
26
  import 'worker_threads';
26
27
  import 'tinypool';
27
28
  import './magic-string.es-94000aea.js';
@@ -639,7 +640,7 @@ class CAC extends EventEmitter {
639
640
 
640
641
  const cac = (name = "") => new CAC(name);
641
642
 
642
- var version = "0.2.1";
643
+ var version = "0.2.5";
643
644
 
644
645
  const keys = [
645
646
  ["a", "rerun all tests"],
@@ -649,8 +650,8 @@ const keys = [
649
650
  ];
650
651
  function printShortcutsHelp() {
651
652
  process.stdout.write(`
652
- ${c.bold("Watch Usage")}
653
- ${keys.map((i) => c.dim(" press ") + c.reset(i[0]) + c.dim(` to ${i[1]}`)).join("\n")}
653
+ ${c.bold(" Watch Usage")}
654
+ ${keys.map((i) => c.dim(" press ") + c.reset(c.bold(i[0])) + c.dim(` to ${i[1]}`)).join("\n")}
654
655
  `);
655
656
  }
656
657
  function registerConsoleShortcuts(ctx) {
@@ -674,7 +675,7 @@ function registerConsoleShortcuts(ctx) {
674
675
  }
675
676
 
676
677
  const cli = cac("vitest");
677
- cli.version(version).option("-r, --root <path>", "root path").option("-c, --config <path>", "path to config file").option("-u, --update", "update snapshot").option("-w, --watch", "watch mode").option("-t, --testNamePattern <pattern>", "run test names with the specified pattern").option("--ui", "open UI").option("--api [api]", "serve API, available options: --api.port <port>, --api.host [host] and --api.strictPort").option("--threads", "enabled threads", { default: true }).option("--silent", "silent console output from tests").option("--isolate", "isolate environment for each test file", { default: true }).option("--reporter <name>", "reporter").option("--outputFile <filename>", "write test results to a file when the --reporter=json option is also specified").option("--coverage", "use c8 for coverage").option("--run", "do not watch").option("--globals", "inject apis globally").option("--global", "deprecated, use --globals").option("--dom", "mock browser api with happy-dom").option("--environment <env>", "runner environment", { default: "node" }).option("--passWithNoTests", "pass when no tests found").help();
678
+ cli.version(version).option("-r, --root <path>", "root path").option("-c, --config <path>", "path to config file").option("-u, --update", "update snapshot").option("-w, --watch", "watch mode").option("-t, --testNamePattern <pattern>", "run test names with the specified pattern").option("--ui", "enable UI").option("--open", "open UI automatically", { default: true }).option("--api [api]", "serve API, available options: --api.port <port>, --api.host [host] and --api.strictPort").option("--threads", "enabled threads", { default: true }).option("--silent", "silent console output from tests").option("--isolate", "isolate environment for each test file", { default: true }).option("--reporter <name>", "reporter").option("--outputFile <filename>", "write test results to a file when the --reporter=json option is also specified").option("--coverage", "use c8 for coverage").option("--run", "do not watch").option("--globals", "inject apis globally").option("--global", "deprecated, use --globals").option("--dom", "mock browser api with happy-dom").option("--environment <env>", "runner environment", { default: "node" }).option("--passWithNoTests", "pass when no tests found").help();
678
679
  cli.command("run [...filters]").action(run);
679
680
  cli.command("related [...filters]").action(runRelated);
680
681
  cli.command("watch [...filters]").action(dev);
@@ -723,4 +724,4 @@ async function run(cliFilters, options) {
723
724
  await ctx.exit();
724
725
  }
725
726
  }
726
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY2FjQDYuNy4xMi9ub2RlX21vZHVsZXMvY2FjL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL25vZGUvc3RkaW4udHMiLCIuLi9zcmMvbm9kZS9jbGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuZnVuY3Rpb24gdG9BcnIoYW55KSB7XG5cdHJldHVybiBhbnkgPT0gbnVsbCA/IFtdIDogQXJyYXkuaXNBcnJheShhbnkpID8gYW55IDogW2FueV07XG59XG5cbmZ1bmN0aW9uIHRvVmFsKG91dCwga2V5LCB2YWwsIG9wdHMpIHtcblx0dmFyIHgsIG9sZD1vdXRba2V5XSwgbnh0PShcblx0XHQhIX5vcHRzLnN0cmluZy5pbmRleE9mKGtleSkgPyAodmFsID09IG51bGwgfHwgdmFsID09PSB0cnVlID8gJycgOiBTdHJpbmcodmFsKSlcblx0XHQ6IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbFxuXHRcdDogISF+b3B0cy5ib29sZWFuLmluZGV4T2Yoa2V5KSA/ICh2YWwgPT09ICdmYWxzZScgPyBmYWxzZSA6IHZhbCA9PT0gJ3RydWUnIHx8IChvdXQuXy5wdXNoKCh4ID0gK3ZhbCx4ICogMCA9PT0gMCkgPyB4IDogdmFsKSwhIXZhbCkpXG5cdFx0OiAoeCA9ICt2YWwseCAqIDAgPT09IDApID8geCA6IHZhbFxuXHQpO1xuXHRvdXRba2V5XSA9IG9sZCA9PSBudWxsID8gbnh0IDogKEFycmF5LmlzQXJyYXkob2xkKSA/IG9sZC5jb25jYXQobnh0KSA6IFtvbGQsIG54dF0pO1xufVxuXG5mdW5jdGlvbiBtcmkyIChhcmdzLCBvcHRzKSB7XG5cdGFyZ3MgPSBhcmdzIHx8IFtdO1xuXHRvcHRzID0gb3B0cyB8fCB7fTtcblxuXHR2YXIgaywgYXJyLCBhcmcsIG5hbWUsIHZhbCwgb3V0PXsgXzpbXSB9O1xuXHR2YXIgaT0wLCBqPTAsIGlkeD0wLCBsZW49YXJncy5sZW5ndGg7XG5cblx0Y29uc3QgYWxpYmkgPSBvcHRzLmFsaWFzICE9PSB2b2lkIDA7XG5cdGNvbnN0IHN0cmljdCA9IG9wdHMudW5rbm93biAhPT0gdm9pZCAwO1xuXHRjb25zdCBkZWZhdWx0cyA9IG9wdHMuZGVmYXVsdCAhPT0gdm9pZCAwO1xuXG5cdG9wdHMuYWxpYXMgPSBvcHRzLmFsaWFzIHx8IHt9O1xuXHRvcHRzLnN0cmluZyA9IHRvQXJyKG9wdHMuc3RyaW5nKTtcblx0b3B0cy5ib29sZWFuID0gdG9BcnIob3B0cy5ib29sZWFuKTtcblxuXHRpZiAoYWxpYmkpIHtcblx0XHRmb3IgKGsgaW4gb3B0cy5hbGlhcykge1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSA9IHRvQXJyKG9wdHMuYWxpYXNba10pO1xuXHRcdFx0Zm9yIChpPTA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0KG9wdHMuYWxpYXNbYXJyW2ldXSA9IGFyci5jb25jYXQoaykpLnNwbGljZShpLCAxKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRmb3IgKGk9b3B0cy5ib29sZWFuLmxlbmd0aDsgaS0tID4gMDspIHtcblx0XHRhcnIgPSBvcHRzLmFsaWFzW29wdHMuYm9vbGVhbltpXV0gfHwgW107XG5cdFx0Zm9yIChqPWFyci5sZW5ndGg7IGotLSA+IDA7KSBvcHRzLmJvb2xlYW4ucHVzaChhcnJbal0pO1xuXHR9XG5cblx0Zm9yIChpPW9wdHMuc3RyaW5nLmxlbmd0aDsgaS0tID4gMDspIHtcblx0XHRhcnIgPSBvcHRzLmFsaWFzW29wdHMuc3RyaW5nW2ldXSB8fCBbXTtcblx0XHRmb3IgKGo9YXJyLmxlbmd0aDsgai0tID4gMDspIG9wdHMuc3RyaW5nLnB1c2goYXJyW2pdKTtcblx0fVxuXG5cdGlmIChkZWZhdWx0cykge1xuXHRcdGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcblx0XHRcdG5hbWUgPSB0eXBlb2Ygb3B0cy5kZWZhdWx0W2tdO1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSA9IG9wdHMuYWxpYXNba10gfHwgW107XG5cdFx0XHRpZiAob3B0c1tuYW1lXSAhPT0gdm9pZCAwKSB7XG5cdFx0XHRcdG9wdHNbbmFtZV0ucHVzaChrKTtcblx0XHRcdFx0Zm9yIChpPTA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRvcHRzW25hbWVdLnB1c2goYXJyW2ldKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGtleXMgPSBzdHJpY3QgPyBPYmplY3Qua2V5cyhvcHRzLmFsaWFzKSA6IFtdO1xuXG5cdGZvciAoaT0wOyBpIDwgbGVuOyBpKyspIHtcblx0XHRhcmcgPSBhcmdzW2ldO1xuXG5cdFx0aWYgKGFyZyA9PT0gJy0tJykge1xuXHRcdFx0b3V0Ll8gPSBvdXQuXy5jb25jYXQoYXJncy5zbGljZSgrK2kpKTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGZvciAoaj0wOyBqIDwgYXJnLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoYXJnLmNoYXJDb2RlQXQoaikgIT09IDQ1KSBicmVhazsgLy8gXCItXCJcblx0XHR9XG5cblx0XHRpZiAoaiA9PT0gMCkge1xuXHRcdFx0b3V0Ll8ucHVzaChhcmcpO1xuXHRcdH0gZWxzZSBpZiAoYXJnLnN1YnN0cmluZyhqLCBqICsgMykgPT09ICduby0nKSB7XG5cdFx0XHRuYW1lID0gYXJnLnN1YnN0cmluZyhqICsgMyk7XG5cdFx0XHRpZiAoc3RyaWN0ICYmICF+a2V5cy5pbmRleE9mKG5hbWUpKSB7XG5cdFx0XHRcdHJldHVybiBvcHRzLnVua25vd24oYXJnKTtcblx0XHRcdH1cblx0XHRcdG91dFtuYW1lXSA9IGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKGlkeD1qKzE7IGlkeCA8IGFyZy5sZW5ndGg7IGlkeCsrKSB7XG5cdFx0XHRcdGlmIChhcmcuY2hhckNvZGVBdChpZHgpID09PSA2MSkgYnJlYWs7IC8vIFwiPVwiXG5cdFx0XHR9XG5cblx0XHRcdG5hbWUgPSBhcmcuc3Vic3RyaW5nKGosIGlkeCk7XG5cdFx0XHR2YWwgPSBhcmcuc3Vic3RyaW5nKCsraWR4KSB8fCAoaSsxID09PSBsZW4gfHwgKCcnK2FyZ3NbaSsxXSkuY2hhckNvZGVBdCgwKSA9PT0gNDUgfHwgYXJnc1srK2ldKTtcblx0XHRcdGFyciA9IChqID09PSAyID8gW25hbWVdIDogbmFtZSk7XG5cblx0XHRcdGZvciAoaWR4PTA7IGlkeCA8IGFyci5sZW5ndGg7IGlkeCsrKSB7XG5cdFx0XHRcdG5hbWUgPSBhcnJbaWR4XTtcblx0XHRcdFx0aWYgKHN0cmljdCAmJiAhfmtleXMuaW5kZXhPZihuYW1lKSkgcmV0dXJuIG9wdHMudW5rbm93bignLScucmVwZWF0KGopICsgbmFtZSk7XG5cdFx0XHRcdHRvVmFsKG91dCwgbmFtZSwgKGlkeCArIDEgPCBhcnIubGVuZ3RoKSB8fCB2YWwsIG9wdHMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmIChkZWZhdWx0cykge1xuXHRcdGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcblx0XHRcdGlmIChvdXRba10gPT09IHZvaWQgMCkge1xuXHRcdFx0XHRvdXRba10gPSBvcHRzLmRlZmF1bHRba107XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKGFsaWJpKSB7XG5cdFx0Zm9yIChrIGluIG91dCkge1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSB8fCBbXTtcblx0XHRcdHdoaWxlIChhcnIubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRvdXRbYXJyLnNoaWZ0KCldID0gb3V0W2tdO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvdXQ7XG59XG5cbmNvbnN0IHJlbW92ZUJyYWNrZXRzID0gKHYpID0+IHYucmVwbGFjZSgvWzxbXS4rLywgXCJcIikudHJpbSgpO1xuY29uc3QgZmluZEFsbEJyYWNrZXRzID0gKHYpID0+IHtcbiAgY29uc3QgQU5HTEVEX0JSQUNLRVRfUkVfR0xPQkFMID0gLzwoW14+XSspPi9nO1xuICBjb25zdCBTUVVBUkVfQlJBQ0tFVF9SRV9HTE9CQUwgPSAvXFxbKFteXFxdXSspXFxdL2c7XG4gIGNvbnN0IHJlcyA9IFtdO1xuICBjb25zdCBwYXJzZSA9IChtYXRjaCkgPT4ge1xuICAgIGxldCB2YXJpYWRpYyA9IGZhbHNlO1xuICAgIGxldCB2YWx1ZSA9IG1hdGNoWzFdO1xuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKFwiLi4uXCIpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDMpO1xuICAgICAgdmFyaWFkaWMgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcmVxdWlyZWQ6IG1hdGNoWzBdLnN0YXJ0c1dpdGgoXCI8XCIpLFxuICAgICAgdmFsdWUsXG4gICAgICB2YXJpYWRpY1xuICAgIH07XG4gIH07XG4gIGxldCBhbmdsZWRNYXRjaDtcbiAgd2hpbGUgKGFuZ2xlZE1hdGNoID0gQU5HTEVEX0JSQUNLRVRfUkVfR0xPQkFMLmV4ZWModikpIHtcbiAgICByZXMucHVzaChwYXJzZShhbmdsZWRNYXRjaCkpO1xuICB9XG4gIGxldCBzcXVhcmVNYXRjaDtcbiAgd2hpbGUgKHNxdWFyZU1hdGNoID0gU1FVQVJFX0JSQUNLRVRfUkVfR0xPQkFMLmV4ZWModikpIHtcbiAgICByZXMucHVzaChwYXJzZShzcXVhcmVNYXRjaCkpO1xuICB9XG4gIHJldHVybiByZXM7XG59O1xuY29uc3QgZ2V0TXJpT3B0aW9ucyA9IChvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHthbGlhczoge30sIGJvb2xlYW46IFtdfTtcbiAgZm9yIChjb25zdCBbaW5kZXgsIG9wdGlvbl0gb2Ygb3B0aW9ucy5lbnRyaWVzKCkpIHtcbiAgICBpZiAob3B0aW9uLm5hbWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlc3VsdC5hbGlhc1tvcHRpb24ubmFtZXNbMF1dID0gb3B0aW9uLm5hbWVzLnNsaWNlKDEpO1xuICAgIH1cbiAgICBpZiAob3B0aW9uLmlzQm9vbGVhbikge1xuICAgICAgaWYgKG9wdGlvbi5uZWdhdGVkKSB7XG4gICAgICAgIGNvbnN0IGhhc1N0cmluZ1R5cGVPcHRpb24gPSBvcHRpb25zLnNvbWUoKG8sIGkpID0+IHtcbiAgICAgICAgICByZXR1cm4gaSAhPT0gaW5kZXggJiYgby5uYW1lcy5zb21lKChuYW1lKSA9PiBvcHRpb24ubmFtZXMuaW5jbHVkZXMobmFtZSkpICYmIHR5cGVvZiBvLnJlcXVpcmVkID09PSBcImJvb2xlYW5cIjtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghaGFzU3RyaW5nVHlwZU9wdGlvbikge1xuICAgICAgICAgIHJlc3VsdC5ib29sZWFuLnB1c2gob3B0aW9uLm5hbWVzWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LmJvb2xlYW4ucHVzaChvcHRpb24ubmFtZXNbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbmNvbnN0IGZpbmRMb25nZXN0ID0gKGFycikgPT4ge1xuICByZXR1cm4gYXJyLnNvcnQoKGEsIGIpID0+IHtcbiAgICByZXR1cm4gYS5sZW5ndGggPiBiLmxlbmd0aCA/IC0xIDogMTtcbiAgfSlbMF07XG59O1xuY29uc3QgcGFkUmlnaHQgPSAoc3RyLCBsZW5ndGgpID0+IHtcbiAgcmV0dXJuIHN0ci5sZW5ndGggPj0gbGVuZ3RoID8gc3RyIDogYCR7c3RyfSR7XCIgXCIucmVwZWF0KGxlbmd0aCAtIHN0ci5sZW5ndGgpfWA7XG59O1xuY29uc3QgY2FtZWxjYXNlID0gKGlucHV0KSA9PiB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKC8oW2Etel0pLShbYS16XSkvZywgKF8sIHAxLCBwMikgPT4ge1xuICAgIHJldHVybiBwMSArIHAyLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xufTtcbmNvbnN0IHNldERvdFByb3AgPSAob2JqLCBrZXlzLCB2YWwpID0+IHtcbiAgbGV0IGkgPSAwO1xuICBsZXQgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIGxldCB0ID0gb2JqO1xuICBsZXQgeDtcbiAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHggPSB0W2tleXNbaV1dO1xuICAgIHQgPSB0W2tleXNbaV1dID0gaSA9PT0gbGVuZ3RoIC0gMSA/IHZhbCA6IHggIT0gbnVsbCA/IHggOiAhIX5rZXlzW2kgKyAxXS5pbmRleE9mKFwiLlwiKSB8fCAhKCtrZXlzW2kgKyAxXSA+IC0xKSA/IHt9IDogW107XG4gIH1cbn07XG5jb25zdCBzZXRCeVR5cGUgPSAob2JqLCB0cmFuc2Zvcm1zKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRyYW5zZm9ybXMpKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gdHJhbnNmb3Jtc1trZXldO1xuICAgIGlmICh0cmFuc2Zvcm0uc2hvdWxkVHJhbnNmb3JtKSB7XG4gICAgICBvYmpba2V5XSA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbChbXSwgb2JqW2tleV0pO1xuICAgICAgaWYgKHR5cGVvZiB0cmFuc2Zvcm0udHJhbnNmb3JtRnVuY3Rpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmpba2V5XSA9IG9ialtrZXldLm1hcCh0cmFuc2Zvcm0udHJhbnNmb3JtRnVuY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbmNvbnN0IGdldEZpbGVOYW1lID0gKGlucHV0KSA9PiB7XG4gIGNvbnN0IG0gPSAvKFteXFxcXFxcL10rKSQvLmV4ZWMoaW5wdXQpO1xuICByZXR1cm4gbSA/IG1bMV0gOiBcIlwiO1xufTtcbmNvbnN0IGNhbWVsY2FzZU9wdGlvbk5hbWUgPSAobmFtZSkgPT4ge1xuICByZXR1cm4gbmFtZS5zcGxpdChcIi5cIikubWFwKCh2LCBpKSA9PiB7XG4gICAgcmV0dXJuIGkgPT09IDAgPyBjYW1lbGNhc2UodikgOiB2O1xuICB9KS5qb2luKFwiLlwiKTtcbn07XG5jbGFzcyBDQUNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICBpZiAodHlwZW9mIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YWNrID0gbmV3IEVycm9yKG1lc3NhZ2UpLnN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBPcHRpb24ge1xuICBjb25zdHJ1Y3RvcihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKSB7XG4gICAgdGhpcy5yYXdOYW1lID0gcmF3TmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBjb25maWcpO1xuICAgIHJhd05hbWUgPSByYXdOYW1lLnJlcGxhY2UoL1xcLlxcKi9nLCBcIlwiKTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLm5hbWVzID0gcmVtb3ZlQnJhY2tldHMocmF3TmFtZSkuc3BsaXQoXCIsXCIpLm1hcCgodikgPT4ge1xuICAgICAgbGV0IG5hbWUgPSB2LnRyaW0oKS5yZXBsYWNlKC9eLXsxLDJ9LywgXCJcIik7XG4gICAgICBpZiAobmFtZS5zdGFydHNXaXRoKFwibm8tXCIpKSB7XG4gICAgICAgIHRoaXMubmVnYXRlZCA9IHRydWU7XG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoL15uby0vLCBcIlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYW1lbGNhc2VPcHRpb25OYW1lKG5hbWUpO1xuICAgIH0pLnNvcnQoKGEsIGIpID0+IGEubGVuZ3RoID4gYi5sZW5ndGggPyAxIDogLTEpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZXNbdGhpcy5uYW1lcy5sZW5ndGggLSAxXTtcbiAgICBpZiAodGhpcy5uZWdhdGVkICYmIHRoaXMuY29uZmlnLmRlZmF1bHQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5jb25maWcuZGVmYXVsdCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChyYXdOYW1lLmluY2x1ZGVzKFwiPFwiKSkge1xuICAgICAgdGhpcy5yZXF1aXJlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChyYXdOYW1lLmluY2x1ZGVzKFwiW1wiKSkge1xuICAgICAgdGhpcy5yZXF1aXJlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQm9vbGVhbiA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHByb2Nlc3NBcmdzID0gcHJvY2Vzcy5hcmd2O1xuY29uc3QgcGxhdGZvcm1JbmZvID0gYCR7cHJvY2Vzcy5wbGF0Zm9ybX0tJHtwcm9jZXNzLmFyY2h9IG5vZGUtJHtwcm9jZXNzLnZlcnNpb259YDtcblxuY2xhc3MgQ29tbWFuZCB7XG4gIGNvbnN0cnVjdG9yKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcgPSB7fSwgY2xpKSB7XG4gICAgdGhpcy5yYXdOYW1lID0gcmF3TmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5jbGkgPSBjbGk7XG4gICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgdGhpcy5hbGlhc05hbWVzID0gW107XG4gICAgdGhpcy5uYW1lID0gcmVtb3ZlQnJhY2tldHMocmF3TmFtZSk7XG4gICAgdGhpcy5hcmdzID0gZmluZEFsbEJyYWNrZXRzKHJhd05hbWUpO1xuICAgIHRoaXMuZXhhbXBsZXMgPSBbXTtcbiAgfVxuICB1c2FnZSh0ZXh0KSB7XG4gICAgdGhpcy51c2FnZVRleHQgPSB0ZXh0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGFsbG93VW5rbm93bk9wdGlvbnMoKSB7XG4gICAgdGhpcy5jb25maWcuYWxsb3dVbmtub3duT3B0aW9ucyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlKCkge1xuICAgIHRoaXMuY29uZmlnLmlnbm9yZU9wdGlvbkRlZmF1bHRWYWx1ZSA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdmVyc2lvbih2ZXJzaW9uLCBjdXN0b21GbGFncyA9IFwiLXYsIC0tdmVyc2lvblwiKSB7XG4gICAgdGhpcy52ZXJzaW9uTnVtYmVyID0gdmVyc2lvbjtcbiAgICB0aGlzLm9wdGlvbihjdXN0b21GbGFncywgXCJEaXNwbGF5IHZlcnNpb24gbnVtYmVyXCIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGV4YW1wbGUoZXhhbXBsZSkge1xuICAgIHRoaXMuZXhhbXBsZXMucHVzaChleGFtcGxlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBvcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZykge1xuICAgIGNvbnN0IG9wdGlvbiA9IG5ldyBPcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZyk7XG4gICAgdGhpcy5vcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBhbGlhcyhuYW1lKSB7XG4gICAgdGhpcy5hbGlhc05hbWVzLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgYWN0aW9uKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5jb21tYW5kQWN0aW9uID0gY2FsbGJhY2s7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgaXNNYXRjaGVkKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSBuYW1lIHx8IHRoaXMuYWxpYXNOYW1lcy5pbmNsdWRlcyhuYW1lKTtcbiAgfVxuICBnZXQgaXNEZWZhdWx0Q29tbWFuZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSBcIlwiIHx8IHRoaXMuYWxpYXNOYW1lcy5pbmNsdWRlcyhcIiFcIik7XG4gIH1cbiAgZ2V0IGlzR2xvYmFsQ29tbWFuZCgpIHtcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEdsb2JhbENvbW1hbmQ7XG4gIH1cbiAgaGFzT3B0aW9uKG5hbWUpIHtcbiAgICBuYW1lID0gbmFtZS5zcGxpdChcIi5cIilbMF07XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maW5kKChvcHRpb24pID0+IHtcbiAgICAgIHJldHVybiBvcHRpb24ubmFtZXMuaW5jbHVkZXMobmFtZSk7XG4gICAgfSk7XG4gIH1cbiAgb3V0cHV0SGVscCgpIHtcbiAgICBjb25zdCB7bmFtZSwgY29tbWFuZHN9ID0gdGhpcy5jbGk7XG4gICAgY29uc3Qge1xuICAgICAgdmVyc2lvbk51bWJlcixcbiAgICAgIG9wdGlvbnM6IGdsb2JhbE9wdGlvbnMsXG4gICAgICBoZWxwQ2FsbGJhY2tcbiAgICB9ID0gdGhpcy5jbGkuZ2xvYmFsQ29tbWFuZDtcbiAgICBsZXQgc2VjdGlvbnMgPSBbXG4gICAgICB7XG4gICAgICAgIGJvZHk6IGAke25hbWV9JHt2ZXJzaW9uTnVtYmVyID8gYC8ke3ZlcnNpb25OdW1iZXJ9YCA6IFwiXCJ9YFxuICAgICAgfVxuICAgIF07XG4gICAgc2VjdGlvbnMucHVzaCh7XG4gICAgICB0aXRsZTogXCJVc2FnZVwiLFxuICAgICAgYm9keTogYCAgJCAke25hbWV9ICR7dGhpcy51c2FnZVRleHQgfHwgdGhpcy5yYXdOYW1lfWBcbiAgICB9KTtcbiAgICBjb25zdCBzaG93Q29tbWFuZHMgPSAodGhpcy5pc0dsb2JhbENvbW1hbmQgfHwgdGhpcy5pc0RlZmF1bHRDb21tYW5kKSAmJiBjb21tYW5kcy5sZW5ndGggPiAwO1xuICAgIGlmIChzaG93Q29tbWFuZHMpIHtcbiAgICAgIGNvbnN0IGxvbmdlc3RDb21tYW5kTmFtZSA9IGZpbmRMb25nZXN0KGNvbW1hbmRzLm1hcCgoY29tbWFuZCkgPT4gY29tbWFuZC5yYXdOYW1lKSk7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiQ29tbWFuZHNcIixcbiAgICAgICAgYm9keTogY29tbWFuZHMubWFwKChjb21tYW5kKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAgICR7cGFkUmlnaHQoY29tbWFuZC5yYXdOYW1lLCBsb25nZXN0Q29tbWFuZE5hbWUubGVuZ3RoKX0gICR7Y29tbWFuZC5kZXNjcmlwdGlvbn1gO1xuICAgICAgICB9KS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICAgIHNlY3Rpb25zLnB1c2goe1xuICAgICAgICB0aXRsZTogYEZvciBtb3JlIGluZm8sIHJ1biBhbnkgY29tbWFuZCB3aXRoIHRoZSBcXGAtLWhlbHBcXGAgZmxhZ2AsXG4gICAgICAgIGJvZHk6IGNvbW1hbmRzLm1hcCgoY29tbWFuZCkgPT4gYCAgJCAke25hbWV9JHtjb21tYW5kLm5hbWUgPT09IFwiXCIgPyBcIlwiIDogYCAke2NvbW1hbmQubmFtZX1gfSAtLWhlbHBgKS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLmlzR2xvYmFsQ29tbWFuZCA/IGdsb2JhbE9wdGlvbnMgOiBbLi4udGhpcy5vcHRpb25zLCAuLi5nbG9iYWxPcHRpb25zIHx8IFtdXTtcbiAgICBpZiAoIXRoaXMuaXNHbG9iYWxDb21tYW5kICYmICF0aGlzLmlzRGVmYXVsdENvbW1hbmQpIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24ubmFtZSAhPT0gXCJ2ZXJzaW9uXCIpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsb25nZXN0T3B0aW9uTmFtZSA9IGZpbmRMb25nZXN0KG9wdGlvbnMubWFwKChvcHRpb24pID0+IG9wdGlvbi5yYXdOYW1lKSk7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiT3B0aW9uc1wiLFxuICAgICAgICBib2R5OiBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAgICR7cGFkUmlnaHQob3B0aW9uLnJhd05hbWUsIGxvbmdlc3RPcHRpb25OYW1lLmxlbmd0aCl9ICAke29wdGlvbi5kZXNjcmlwdGlvbn0gJHtvcHRpb24uY29uZmlnLmRlZmF1bHQgPT09IHZvaWQgMCA/IFwiXCIgOiBgKGRlZmF1bHQ6ICR7b3B0aW9uLmNvbmZpZy5kZWZhdWx0fSlgfWA7XG4gICAgICAgIH0pLmpvaW4oXCJcXG5cIilcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5leGFtcGxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiRXhhbXBsZXNcIixcbiAgICAgICAgYm9keTogdGhpcy5leGFtcGxlcy5tYXAoKGV4YW1wbGUpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGV4YW1wbGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIGV4YW1wbGUobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBleGFtcGxlO1xuICAgICAgICB9KS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGhlbHBDYWxsYmFjaykge1xuICAgICAgc2VjdGlvbnMgPSBoZWxwQ2FsbGJhY2soc2VjdGlvbnMpIHx8IHNlY3Rpb25zO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhzZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcbiAgICAgIHJldHVybiBzZWN0aW9uLnRpdGxlID8gYCR7c2VjdGlvbi50aXRsZX06XG4ke3NlY3Rpb24uYm9keX1gIDogc2VjdGlvbi5ib2R5O1xuICAgIH0pLmpvaW4oXCJcXG5cXG5cIikpO1xuICB9XG4gIG91dHB1dFZlcnNpb24oKSB7XG4gICAgY29uc3Qge25hbWV9ID0gdGhpcy5jbGk7XG4gICAgY29uc3Qge3ZlcnNpb25OdW1iZXJ9ID0gdGhpcy5jbGkuZ2xvYmFsQ29tbWFuZDtcbiAgICBpZiAodmVyc2lvbk51bWJlcikge1xuICAgICAgY29uc29sZS5sb2coYCR7bmFtZX0vJHt2ZXJzaW9uTnVtYmVyfSAke3BsYXRmb3JtSW5mb31gKTtcbiAgICB9XG4gIH1cbiAgY2hlY2tSZXF1aXJlZEFyZ3MoKSB7XG4gICAgY29uc3QgbWluaW1hbEFyZ3NDb3VudCA9IHRoaXMuYXJncy5maWx0ZXIoKGFyZykgPT4gYXJnLnJlcXVpcmVkKS5sZW5ndGg7XG4gICAgaWYgKHRoaXMuY2xpLmFyZ3MubGVuZ3RoIDwgbWluaW1hbEFyZ3NDb3VudCkge1xuICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBtaXNzaW5nIHJlcXVpcmVkIGFyZ3MgZm9yIGNvbW1hbmQgXFxgJHt0aGlzLnJhd05hbWV9XFxgYCk7XG4gICAgfVxuICB9XG4gIGNoZWNrVW5rbm93bk9wdGlvbnMoKSB7XG4gICAgY29uc3Qge29wdGlvbnMsIGdsb2JhbENvbW1hbmR9ID0gdGhpcy5jbGk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5hbGxvd1Vua25vd25PcHRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKG5hbWUgIT09IFwiLS1cIiAmJiAhdGhpcy5oYXNPcHRpb24obmFtZSkgJiYgIWdsb2JhbENvbW1hbmQuaGFzT3B0aW9uKG5hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBVbmtub3duIG9wdGlvbiBcXGAke25hbWUubGVuZ3RoID4gMSA/IGAtLSR7bmFtZX1gIDogYC0ke25hbWV9YH1cXGBgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjaGVja09wdGlvblZhbHVlKCkge1xuICAgIGNvbnN0IHtvcHRpb25zOiBwYXJzZWRPcHRpb25zLCBnbG9iYWxDb21tYW5kfSA9IHRoaXMuY2xpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBbLi4uZ2xvYmFsQ29tbWFuZC5vcHRpb25zLCAuLi50aGlzLm9wdGlvbnNdO1xuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VkT3B0aW9uc1tvcHRpb24ubmFtZS5zcGxpdChcIi5cIilbMF1dO1xuICAgICAgaWYgKG9wdGlvbi5yZXF1aXJlZCkge1xuICAgICAgICBjb25zdCBoYXNOZWdhdGVkID0gb3B0aW9ucy5zb21lKChvKSA9PiBvLm5lZ2F0ZWQgJiYgby5uYW1lcy5pbmNsdWRlcyhvcHRpb24ubmFtZSkpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlICYmICFoYXNOZWdhdGVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBvcHRpb24gXFxgJHtvcHRpb24ucmF3TmFtZX1cXGAgdmFsdWUgaXMgbWlzc2luZ2ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jbGFzcyBHbG9iYWxDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gIGNvbnN0cnVjdG9yKGNsaSkge1xuICAgIHN1cGVyKFwiQEBnbG9iYWxAQFwiLCBcIlwiLCB7fSwgY2xpKTtcbiAgfVxufVxuXG52YXIgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuY2xhc3MgQ0FDIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IobmFtZSA9IFwiXCIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5jb21tYW5kcyA9IFtdO1xuICAgIHRoaXMucmF3QXJncyA9IFtdO1xuICAgIHRoaXMuYXJncyA9IFtdO1xuICAgIHRoaXMub3B0aW9ucyA9IHt9O1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZCA9IG5ldyBHbG9iYWxDb21tYW5kKHRoaXMpO1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC51c2FnZShcIjxjb21tYW5kPiBbb3B0aW9uc11cIik7XG4gIH1cbiAgdXNhZ2UodGV4dCkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC51c2FnZSh0ZXh0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBjb21tYW5kKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcpIHtcbiAgICBjb25zdCBjb21tYW5kID0gbmV3IENvbW1hbmQocmF3TmFtZSwgZGVzY3JpcHRpb24gfHwgXCJcIiwgY29uZmlnLCB0aGlzKTtcbiAgICBjb21tYW5kLmdsb2JhbENvbW1hbmQgPSB0aGlzLmdsb2JhbENvbW1hbmQ7XG4gICAgdGhpcy5jb21tYW5kcy5wdXNoKGNvbW1hbmQpO1xuICAgIHJldHVybiBjb21tYW5kO1xuICB9XG4gIG9wdGlvbihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBoZWxwKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbihcIi1oLCAtLWhlbHBcIiwgXCJEaXNwbGF5IHRoaXMgbWVzc2FnZVwiKTtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQuaGVscENhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgdGhpcy5zaG93SGVscE9uRXhpdCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdmVyc2lvbih2ZXJzaW9uLCBjdXN0b21GbGFncyA9IFwiLXYsIC0tdmVyc2lvblwiKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLnZlcnNpb24odmVyc2lvbiwgY3VzdG9tRmxhZ3MpO1xuICAgIHRoaXMuc2hvd1ZlcnNpb25PbkV4aXQgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGV4YW1wbGUoZXhhbXBsZSkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5leGFtcGxlKGV4YW1wbGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIG91dHB1dEhlbHAoKSB7XG4gICAgaWYgKHRoaXMubWF0Y2hlZENvbW1hbmQpIHtcbiAgICAgIHRoaXMubWF0Y2hlZENvbW1hbmQub3V0cHV0SGVscCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdsb2JhbENvbW1hbmQub3V0cHV0SGVscCgpO1xuICAgIH1cbiAgfVxuICBvdXRwdXRWZXJzaW9uKCkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5vdXRwdXRWZXJzaW9uKCk7XG4gIH1cbiAgc2V0UGFyc2VkSW5mbyh7YXJncywgb3B0aW9uc30sIG1hdGNoZWRDb21tYW5kLCBtYXRjaGVkQ29tbWFuZE5hbWUpIHtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgaWYgKG1hdGNoZWRDb21tYW5kKSB7XG4gICAgICB0aGlzLm1hdGNoZWRDb21tYW5kID0gbWF0Y2hlZENvbW1hbmQ7XG4gICAgfVxuICAgIGlmIChtYXRjaGVkQ29tbWFuZE5hbWUpIHtcbiAgICAgIHRoaXMubWF0Y2hlZENvbW1hbmROYW1lID0gbWF0Y2hlZENvbW1hbmROYW1lO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB1bnNldE1hdGNoZWRDb21tYW5kKCkge1xuICAgIHRoaXMubWF0Y2hlZENvbW1hbmQgPSB2b2lkIDA7XG4gICAgdGhpcy5tYXRjaGVkQ29tbWFuZE5hbWUgPSB2b2lkIDA7XG4gIH1cbiAgcGFyc2UoYXJndiA9IHByb2Nlc3NBcmdzLCB7XG4gICAgcnVuID0gdHJ1ZVxuICB9ID0ge30pIHtcbiAgICB0aGlzLnJhd0FyZ3MgPSBhcmd2O1xuICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICB0aGlzLm5hbWUgPSBhcmd2WzFdID8gZ2V0RmlsZU5hbWUoYXJndlsxXSkgOiBcImNsaVwiO1xuICAgIH1cbiAgICBsZXQgc2hvdWxkUGFyc2UgPSB0cnVlO1xuICAgIGZvciAoY29uc3QgY29tbWFuZCBvZiB0aGlzLmNvbW1hbmRzKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLm1yaShhcmd2LnNsaWNlKDIpLCBjb21tYW5kKTtcbiAgICAgIGNvbnN0IGNvbW1hbmROYW1lID0gcGFyc2VkLmFyZ3NbMF07XG4gICAgICBpZiAoY29tbWFuZC5pc01hdGNoZWQoY29tbWFuZE5hbWUpKSB7XG4gICAgICAgIHNob3VsZFBhcnNlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHBhcnNlZEluZm8gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcGFyc2VkKSwge1xuICAgICAgICAgIGFyZ3M6IHBhcnNlZC5hcmdzLnNsaWNlKDEpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkSW5mbywgY29tbWFuZCwgY29tbWFuZE5hbWUpO1xuICAgICAgICB0aGlzLmVtaXQoYGNvbW1hbmQ6JHtjb21tYW5kTmFtZX1gLCBjb21tYW5kKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNob3VsZFBhcnNlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgdGhpcy5jb21tYW5kcykge1xuICAgICAgICBpZiAoY29tbWFuZC5uYW1lID09PSBcIlwiKSB7XG4gICAgICAgICAgc2hvdWxkUGFyc2UgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLm1yaShhcmd2LnNsaWNlKDIpLCBjb21tYW5kKTtcbiAgICAgICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkLCBjb21tYW5kKTtcbiAgICAgICAgICB0aGlzLmVtaXQoYGNvbW1hbmQ6IWAsIGNvbW1hbmQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzaG91bGRQYXJzZSkge1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5tcmkoYXJndi5zbGljZSgyKSk7XG4gICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5oZWxwICYmIHRoaXMuc2hvd0hlbHBPbkV4aXQpIHtcbiAgICAgIHRoaXMub3V0cHV0SGVscCgpO1xuICAgICAgcnVuID0gZmFsc2U7XG4gICAgICB0aGlzLnVuc2V0TWF0Y2hlZENvbW1hbmQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJzaW9uICYmIHRoaXMuc2hvd1ZlcnNpb25PbkV4aXQgJiYgdGhpcy5tYXRjaGVkQ29tbWFuZE5hbWUgPT0gbnVsbCkge1xuICAgICAgdGhpcy5vdXRwdXRWZXJzaW9uKCk7XG4gICAgICBydW4gPSBmYWxzZTtcbiAgICAgIHRoaXMudW5zZXRNYXRjaGVkQ29tbWFuZCgpO1xuICAgIH1cbiAgICBjb25zdCBwYXJzZWRBcmd2ID0ge2FyZ3M6IHRoaXMuYXJncywgb3B0aW9uczogdGhpcy5vcHRpb25zfTtcbiAgICBpZiAocnVuKSB7XG4gICAgICB0aGlzLnJ1bk1hdGNoZWRDb21tYW5kKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5tYXRjaGVkQ29tbWFuZCAmJiB0aGlzLmFyZ3NbMF0pIHtcbiAgICAgIHRoaXMuZW1pdChcImNvbW1hbmQ6KlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZEFyZ3Y7XG4gIH1cbiAgbXJpKGFyZ3YsIGNvbW1hbmQpIHtcbiAgICBjb25zdCBjbGlPcHRpb25zID0gW1xuICAgICAgLi4udGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbnMsXG4gICAgICAuLi5jb21tYW5kID8gY29tbWFuZC5vcHRpb25zIDogW11cbiAgICBdO1xuICAgIGNvbnN0IG1yaU9wdGlvbnMgPSBnZXRNcmlPcHRpb25zKGNsaU9wdGlvbnMpO1xuICAgIGxldCBhcmdzQWZ0ZXJEb3VibGVEYXNoZXMgPSBbXTtcbiAgICBjb25zdCBkb3VibGVEYXNoZXNJbmRleCA9IGFyZ3YuaW5kZXhPZihcIi0tXCIpO1xuICAgIGlmIChkb3VibGVEYXNoZXNJbmRleCA+IC0xKSB7XG4gICAgICBhcmdzQWZ0ZXJEb3VibGVEYXNoZXMgPSBhcmd2LnNsaWNlKGRvdWJsZURhc2hlc0luZGV4ICsgMSk7XG4gICAgICBhcmd2ID0gYXJndi5zbGljZSgwLCBkb3VibGVEYXNoZXNJbmRleCk7XG4gICAgfVxuICAgIGxldCBwYXJzZWQgPSBtcmkyKGFyZ3YsIG1yaU9wdGlvbnMpO1xuICAgIHBhcnNlZCA9IE9iamVjdC5rZXlzKHBhcnNlZCkucmVkdWNlKChyZXMsIG5hbWUpID0+IHtcbiAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzKSwge1xuICAgICAgICBbY2FtZWxjYXNlT3B0aW9uTmFtZShuYW1lKV06IHBhcnNlZFtuYW1lXVxuICAgICAgfSk7XG4gICAgfSwge186IFtdfSk7XG4gICAgY29uc3QgYXJncyA9IHBhcnNlZC5fO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBcIi0tXCI6IGFyZ3NBZnRlckRvdWJsZURhc2hlc1xuICAgIH07XG4gICAgY29uc3QgaWdub3JlRGVmYXVsdCA9IGNvbW1hbmQgJiYgY29tbWFuZC5jb25maWcuaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlID8gY29tbWFuZC5jb25maWcuaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlIDogdGhpcy5nbG9iYWxDb21tYW5kLmNvbmZpZy5pZ25vcmVPcHRpb25EZWZhdWx0VmFsdWU7XG4gICAgbGV0IHRyYW5zZm9ybXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGZvciAoY29uc3QgY2xpT3B0aW9uIG9mIGNsaU9wdGlvbnMpIHtcbiAgICAgIGlmICghaWdub3JlRGVmYXVsdCAmJiBjbGlPcHRpb24uY29uZmlnLmRlZmF1bHQgIT09IHZvaWQgMCkge1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgY2xpT3B0aW9uLm5hbWVzKSB7XG4gICAgICAgICAgb3B0aW9uc1tuYW1lXSA9IGNsaU9wdGlvbi5jb25maWcuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2xpT3B0aW9uLmNvbmZpZy50eXBlKSkge1xuICAgICAgICBpZiAodHJhbnNmb3Jtc1tjbGlPcHRpb24ubmFtZV0gPT09IHZvaWQgMCkge1xuICAgICAgICAgIHRyYW5zZm9ybXNbY2xpT3B0aW9uLm5hbWVdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICB0cmFuc2Zvcm1zW2NsaU9wdGlvbi5uYW1lXVtcInNob3VsZFRyYW5zZm9ybVwiXSA9IHRydWU7XG4gICAgICAgICAgdHJhbnNmb3Jtc1tjbGlPcHRpb24ubmFtZV1bXCJ0cmFuc2Zvcm1GdW5jdGlvblwiXSA9IGNsaU9wdGlvbi5jb25maWcudHlwZVswXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJzZWQpKSB7XG4gICAgICBpZiAoa2V5ICE9PSBcIl9cIikge1xuICAgICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgICAgc2V0RG90UHJvcChvcHRpb25zLCBrZXlzLCBwYXJzZWRba2V5XSk7XG4gICAgICAgIHNldEJ5VHlwZShvcHRpb25zLCB0cmFuc2Zvcm1zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3MsXG4gICAgICBvcHRpb25zXG4gICAgfTtcbiAgfVxuICBydW5NYXRjaGVkQ29tbWFuZCgpIHtcbiAgICBjb25zdCB7YXJncywgb3B0aW9ucywgbWF0Y2hlZENvbW1hbmQ6IGNvbW1hbmR9ID0gdGhpcztcbiAgICBpZiAoIWNvbW1hbmQgfHwgIWNvbW1hbmQuY29tbWFuZEFjdGlvbilcbiAgICAgIHJldHVybjtcbiAgICBjb21tYW5kLmNoZWNrVW5rbm93bk9wdGlvbnMoKTtcbiAgICBjb21tYW5kLmNoZWNrT3B0aW9uVmFsdWUoKTtcbiAgICBjb21tYW5kLmNoZWNrUmVxdWlyZWRBcmdzKCk7XG4gICAgY29uc3QgYWN0aW9uQXJncyA9IFtdO1xuICAgIGNvbW1hbmQuYXJncy5mb3JFYWNoKChhcmcsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoYXJnLnZhcmlhZGljKSB7XG4gICAgICAgIGFjdGlvbkFyZ3MucHVzaChhcmdzLnNsaWNlKGluZGV4KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY3Rpb25BcmdzLnB1c2goYXJnc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGFjdGlvbkFyZ3MucHVzaChvcHRpb25zKTtcbiAgICByZXR1cm4gY29tbWFuZC5jb21tYW5kQWN0aW9uLmFwcGx5KHRoaXMsIGFjdGlvbkFyZ3MpO1xuICB9XG59XG5cbmNvbnN0IGNhYyA9IChuYW1lID0gXCJcIikgPT4gbmV3IENBQyhuYW1lKTtcblxuZXhwb3J0IGRlZmF1bHQgY2FjO1xuZXhwb3J0IHsgQ0FDLCBDb21tYW5kLCBjYWMgfTtcbiIsImltcG9ydCByZWFkbGluZSBmcm9tICdyZWFkbGluZSdcbmltcG9ydCBjIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgdHlwZSB7IFZpdGVzdCB9IGZyb20gJy4vY29yZSdcblxuY29uc3Qga2V5cyA9IFtcbiAgWydhJywgJ3JlcnVuIGFsbCB0ZXN0cyddLFxuICBbJ2YnLCAncmVydW4gb25seSBmYWlsZWQgdGVzdHMnXSxcbiAgWyd1JywgJ3VwZGF0ZSBzbmFwc2hvdCddLFxuICBbJ3EnLCAncXVpdCddLFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRTaG9ydGN1dHNIZWxwKCkge1xuICBwcm9jZXNzLnN0ZG91dC53cml0ZShcbiAgICBgXG4ke2MuYm9sZCgnV2F0Y2ggVXNhZ2UnKX1cbiR7a2V5cy5tYXAoaSA9PiBjLmRpbSgnICBwcmVzcyAnKSArIGMucmVzZXQoaVswXSkgKyBjLmRpbShgIHRvICR7aVsxXX1gKSkuam9pbignXFxuJyl9XG5gLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckNvbnNvbGVTaG9ydGN1dHMoY3R4OiBWaXRlc3QpIHtcbiAgcmVhZGxpbmUuZW1pdEtleXByZXNzRXZlbnRzKHByb2Nlc3Muc3RkaW4pXG4gIHByb2Nlc3Muc3RkaW4uc2V0UmF3TW9kZSh0cnVlKVxuICBwcm9jZXNzLnN0ZGluLm9uKCdrZXlwcmVzcycsIChzdHI6IHN0cmluZywga2V5OiBhbnkpID0+IHtcbiAgICAvLyBjdHJsLWMgb3IgZXNjXG4gICAgaWYgKHN0ciA9PT0gJ1xceDAzJyB8fCBzdHIgPT09ICdcXHgxQicgfHwgKGtleSAmJiBrZXkuY3RybCAmJiBrZXkubmFtZSA9PT0gJ2MnKSlcbiAgICAgIHJldHVybiBjdHguZXhpdCh0cnVlKVxuXG4gICAgLy8gaXMgcnVubmluZywgaWdub3JlIGtleXByZXNzXG4gICAgaWYgKGN0eC5ydW5uaW5nUHJvbWlzZSlcbiAgICAgIHJldHVyblxuXG4gICAgY29uc3QgbmFtZSA9IGtleT8ubmFtZVxuXG4gICAgLy8gaGVscFxuICAgIGlmIChuYW1lID09PSAnaCcpXG4gICAgICByZXR1cm4gcHJpbnRTaG9ydGN1dHNIZWxwKClcbiAgICAvLyB1cGRhdGUgc25hcHNob3RcbiAgICBpZiAobmFtZSA9PT0gJ3UnKVxuICAgICAgcmV0dXJuIGN0eC51cGRhdGVTbmFwc2hvdCgpXG4gICAgLy8gcmVydW4gYWxsIHRlc3RzXG4gICAgaWYgKG5hbWUgPT09ICdhJyB8fCBuYW1lID09PSAncmV0dXJuJylcbiAgICAgIHJldHVybiBjdHgucmVydW5GaWxlcyh1bmRlZmluZWQsICdyZXJ1biBhbGwnKVxuICAgIC8vIHF1aXRcbiAgICBpZiAobmFtZSA9PT0gJ3EnKVxuICAgICAgcmV0dXJuIGN0eC5leGl0KHRydWUpXG5cbiAgICAvLyBUT0RPOiBhZGQgbW9yZSBjb21tYW5kc1xuICB9KVxufVxuIiwiaW1wb3J0IGNhYyBmcm9tICdjYWMnXG5pbXBvcnQgdHlwZSB7IFVzZXJDb25maWcgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nXG5pbXBvcnQgeyBlbnN1cmVQYWNrYWdlSW5zdGFsbGVkIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBjcmVhdGVWaXRlc3QgfSBmcm9tICcuL2NyZWF0ZSdcbmltcG9ydCB7IHJlZ2lzdGVyQ29uc29sZVNob3J0Y3V0cyB9IGZyb20gJy4vc3RkaW4nXG5cbmNvbnN0IGNsaSA9IGNhYygndml0ZXN0JylcblxuY2xpXG4gIC52ZXJzaW9uKHZlcnNpb24pXG4gIC5vcHRpb24oJy1yLCAtLXJvb3QgPHBhdGg+JywgJ3Jvb3QgcGF0aCcpXG4gIC5vcHRpb24oJy1jLCAtLWNvbmZpZyA8cGF0aD4nLCAncGF0aCB0byBjb25maWcgZmlsZScpXG4gIC5vcHRpb24oJy11LCAtLXVwZGF0ZScsICd1cGRhdGUgc25hcHNob3QnKVxuICAub3B0aW9uKCctdywgLS13YXRjaCcsICd3YXRjaCBtb2RlJylcbiAgLm9wdGlvbignLXQsIC0tdGVzdE5hbWVQYXR0ZXJuIDxwYXR0ZXJuPicsICdydW4gdGVzdCBuYW1lcyB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0dGVybicpXG4gIC5vcHRpb24oJy0tdWknLCAnb3BlbiBVSScpXG4gIC5vcHRpb24oJy0tYXBpIFthcGldJywgJ3NlcnZlIEFQSSwgYXZhaWxhYmxlIG9wdGlvbnM6IC0tYXBpLnBvcnQgPHBvcnQ+LCAtLWFwaS5ob3N0IFtob3N0XSBhbmQgLS1hcGkuc3RyaWN0UG9ydCcpXG4gIC5vcHRpb24oJy0tdGhyZWFkcycsICdlbmFibGVkIHRocmVhZHMnLCB7IGRlZmF1bHQ6IHRydWUgfSlcbiAgLm9wdGlvbignLS1zaWxlbnQnLCAnc2lsZW50IGNvbnNvbGUgb3V0cHV0IGZyb20gdGVzdHMnKVxuICAub3B0aW9uKCctLWlzb2xhdGUnLCAnaXNvbGF0ZSBlbnZpcm9ubWVudCBmb3IgZWFjaCB0ZXN0IGZpbGUnLCB7IGRlZmF1bHQ6IHRydWUgfSlcbiAgLm9wdGlvbignLS1yZXBvcnRlciA8bmFtZT4nLCAncmVwb3J0ZXInKVxuICAub3B0aW9uKCctLW91dHB1dEZpbGUgPGZpbGVuYW1lPicsICd3cml0ZSB0ZXN0IHJlc3VsdHMgdG8gYSBmaWxlIHdoZW4gdGhlIC0tcmVwb3J0ZXI9anNvbiBvcHRpb24gaXMgYWxzbyBzcGVjaWZpZWQnKVxuICAub3B0aW9uKCctLWNvdmVyYWdlJywgJ3VzZSBjOCBmb3IgY292ZXJhZ2UnKVxuICAub3B0aW9uKCctLXJ1bicsICdkbyBub3Qgd2F0Y2gnKVxuICAub3B0aW9uKCctLWdsb2JhbHMnLCAnaW5qZWN0IGFwaXMgZ2xvYmFsbHknKVxuICAub3B0aW9uKCctLWdsb2JhbCcsICdkZXByZWNhdGVkLCB1c2UgLS1nbG9iYWxzJylcbiAgLm9wdGlvbignLS1kb20nLCAnbW9jayBicm93c2VyIGFwaSB3aXRoIGhhcHB5LWRvbScpXG4gIC5vcHRpb24oJy0tZW52aXJvbm1lbnQgPGVudj4nLCAncnVubmVyIGVudmlyb25tZW50JywgeyBkZWZhdWx0OiAnbm9kZScgfSlcbiAgLm9wdGlvbignLS1wYXNzV2l0aE5vVGVzdHMnLCAncGFzcyB3aGVuIG5vIHRlc3RzIGZvdW5kJylcbiAgLmhlbHAoKVxuXG5jbGlcbiAgLmNvbW1hbmQoJ3J1biBbLi4uZmlsdGVyc10nKVxuICAuYWN0aW9uKHJ1bilcblxuY2xpXG4gIC5jb21tYW5kKCdyZWxhdGVkIFsuLi5maWx0ZXJzXScpXG4gIC5hY3Rpb24ocnVuUmVsYXRlZClcblxuY2xpXG4gIC5jb21tYW5kKCd3YXRjaCBbLi4uZmlsdGVyc10nKVxuICAuYWN0aW9uKGRldilcblxuY2xpXG4gIC5jb21tYW5kKCdkZXYgWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihkZXYpXG5cbmNsaVxuICAuY29tbWFuZCgnWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihkZXYpXG5cbmNsaS5wYXJzZSgpXG5cbmFzeW5jIGZ1bmN0aW9uIHJ1blJlbGF0ZWQocmVsYXRlZEZpbGVzOiBzdHJpbmdbXSB8IHN0cmluZywgYXJndjogVXNlckNvbmZpZykge1xuICBhcmd2LnJlbGF0ZWQgPSByZWxhdGVkRmlsZXNcbiAgYXJndi5wYXNzV2l0aE5vVGVzdHMgPz89IHRydWVcbiAgYXdhaXQgZGV2KFtdLCBhcmd2KVxufVxuXG5hc3luYyBmdW5jdGlvbiBkZXYoY2xpRmlsdGVyczogc3RyaW5nW10sIGFyZ3Y6IFVzZXJDb25maWcpIHtcbiAgaWYgKGFyZ3Yud2F0Y2ggPT0gbnVsbClcbiAgICBhcmd2LndhdGNoID0gIXByb2Nlc3MuZW52LkNJICYmICFhcmd2LnJ1blxuICBhd2FpdCBydW4oY2xpRmlsdGVycywgYXJndilcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuKGNsaUZpbHRlcnM6IHN0cmluZ1tdLCBvcHRpb25zOiBVc2VyQ29uZmlnKSB7XG4gIHByb2Nlc3MuZW52LlZJVEVTVCA9ICd0cnVlJ1xuICBwcm9jZXNzLmVudi5OT0RFX0VOViA9ICd0ZXN0J1xuXG4gIGlmICghYXdhaXQgZW5zdXJlUGFja2FnZUluc3RhbGxlZCgndml0ZScpKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb3ZlcmFnZSA9PT0gJ2Jvb2xlYW4nKVxuICAgIG9wdGlvbnMuY292ZXJhZ2UgPSB7IGVuYWJsZWQ6IG9wdGlvbnMuY292ZXJhZ2UgfVxuXG4gIGNvbnN0IGN0eCA9IGF3YWl0IGNyZWF0ZVZpdGVzdChvcHRpb25zKVxuXG4gIGlmIChjdHguY29uZmlnLmNvdmVyYWdlLmVuYWJsZWQpIHtcbiAgICBpZiAoIWF3YWl0IGVuc3VyZVBhY2thZ2VJbnN0YWxsZWQoJ2M4JykpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuXG4gIGlmIChjdHguY29uZmlnLmVudmlyb25tZW50ICYmIGN0eC5jb25maWcuZW52aXJvbm1lbnQgIT09ICdub2RlJykge1xuICAgIGlmICghYXdhaXQgZW5zdXJlUGFja2FnZUluc3RhbGxlZChjdHguY29uZmlnLmVudmlyb25tZW50KSlcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG5cbiAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkgJiYgY3R4LmNvbmZpZy53YXRjaClcbiAgICByZWdpc3RlckNvbnNvbGVTaG9ydGN1dHMoY3R4KVxuXG4gIHByb2Nlc3MuY2hkaXIoY3R4LmNvbmZpZy5yb290KVxuXG4gIGN0eC5vblNlcnZlclJlc3RhcnRlZCgoKSA9PiB7XG4gICAgLy8gVE9ETzogcmUtY29uc2lkZXIgaG93IHRvIHJlLXJ1biB0aGUgdGVzdHMgdGhlIHNlcnZlciBzbWFydGx5XG4gICAgY3R4LnN0YXJ0KGNsaUZpbHRlcnMpXG4gIH0pXG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBjdHguc3RhcnQoY2xpRmlsdGVycylcbiAgfVxuICBjYXRjaCAoZSkge1xuICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxXG4gICAgdGhyb3cgZVxuICB9XG4gIGZpbmFsbHkge1xuICAgIGlmICghY3R4LmNvbmZpZy53YXRjaClcbiAgICAgIGF3YWl0IGN0eC5leGl0KClcbiAgfVxufVxuIl0sIm5hbWVzIjpbInJlYWRsaW5lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ3BCLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFDRDtBQUNBLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtBQUNwQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRztBQUN6QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUMvRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFNBQVMsR0FBRyxHQUFHO0FBQ2xDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxLQUFLLE9BQU8sR0FBRyxLQUFLLEdBQUcsR0FBRyxLQUFLLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNwSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHO0FBQ3BDLEVBQUUsQ0FBQztBQUNILENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLENBQUM7QUFDRDtBQUNBLFNBQVMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDM0IsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNuQixDQUFDLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ25CO0FBQ0EsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN0QztBQUNBLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztBQUNyQyxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDeEMsQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0FBQy9CLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BDO0FBQ0EsQ0FBQyxJQUFJLEtBQUssRUFBRTtBQUNaLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtBQUN4QixHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RELElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUc7QUFDdkMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFDLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FB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QUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixJQUFJO0FBQ0osR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLEdBQUcsTUFBTTtBQUNULEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUMxQyxJQUFJLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTTtBQUMxQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNoQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkcsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ25DO0FBQ0EsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDeEMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLElBQUksSUFBSSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdB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
727
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY2FjQDYuNy4xMi9ub2RlX21vZHVsZXMvY2FjL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL25vZGUvc3RkaW4udHMiLCIuLi9zcmMvbm9kZS9jbGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuZnVuY3Rpb24gdG9BcnIoYW55KSB7XG5cdHJldHVybiBhbnkgPT0gbnVsbCA/IFtdIDogQXJyYXkuaXNBcnJheShhbnkpID8gYW55IDogW2FueV07XG59XG5cbmZ1bmN0aW9uIHRvVmFsKG91dCwga2V5LCB2YWwsIG9wdHMpIHtcblx0dmFyIHgsIG9sZD1vdXRba2V5XSwgbnh0PShcblx0XHQhIX5vcHRzLnN0cmluZy5pbmRleE9mKGtleSkgPyAodmFsID09IG51bGwgfHwgdmFsID09PSB0cnVlID8gJycgOiBTdHJpbmcodmFsKSlcblx0XHQ6IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbFxuXHRcdDogISF+b3B0cy5ib29sZWFuLmluZGV4T2Yoa2V5KSA/ICh2YWwgPT09ICdmYWxzZScgPyBmYWxzZSA6IHZhbCA9PT0gJ3RydWUnIHx8IChvdXQuXy5wdXNoKCh4ID0gK3ZhbCx4ICogMCA9PT0gMCkgPyB4IDogdmFsKSwhIXZhbCkpXG5cdFx0OiAoeCA9ICt2YWwseCAqIDAgPT09IDApID8geCA6IHZhbFxuXHQpO1xuXHRvdXRba2V5XSA9IG9sZCA9PSBudWxsID8gbnh0IDogKEFycmF5LmlzQXJyYXkob2xkKSA/IG9sZC5jb25jYXQobnh0KSA6IFtvbGQsIG54dF0pO1xufVxuXG5mdW5jdGlvbiBtcmkyIChhcmdzLCBvcHRzKSB7XG5cdGFyZ3MgPSBhcmdzIHx8IFtdO1xuXHRvcHRzID0gb3B0cyB8fCB7fTtcblxuXHR2YXIgaywgYXJyLCBhcmcsIG5hbWUsIHZhbCwgb3V0PXsgXzpbXSB9O1xuXHR2YXIgaT0wLCBqPTAsIGlkeD0wLCBsZW49YXJncy5sZW5ndGg7XG5cblx0Y29uc3QgYWxpYmkgPSBvcHRzLmFsaWFzICE9PSB2b2lkIDA7XG5cdGNvbnN0IHN0cmljdCA9IG9wdHMudW5rbm93biAhPT0gdm9pZCAwO1xuXHRjb25zdCBkZWZhdWx0cyA9IG9wdHMuZGVmYXVsdCAhPT0gdm9pZCAwO1xuXG5cdG9wdHMuYWxpYXMgPSBvcHRzLmFsaWFzIHx8IHt9O1xuXHRvcHRzLnN0cmluZyA9IHRvQXJyKG9wdHMuc3RyaW5nKTtcblx0b3B0cy5ib29sZWFuID0gdG9BcnIob3B0cy5ib29sZWFuKTtcblxuXHRpZiAoYWxpYmkpIHtcblx0XHRmb3IgKGsgaW4gb3B0cy5hbGlhcykge1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSA9IHRvQXJyKG9wdHMuYWxpYXNba10pO1xuXHRcdFx0Zm9yIChpPTA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0KG9wdHMuYWxpYXNbYXJyW2ldXSA9IGFyci5jb25jYXQoaykpLnNwbGljZShpLCAxKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRmb3IgKGk9b3B0cy5ib29sZWFuLmxlbmd0aDsgaS0tID4gMDspIHtcblx0XHRhcnIgPSBvcHRzLmFsaWFzW29wdHMuYm9vbGVhbltpXV0gfHwgW107XG5cdFx0Zm9yIChqPWFyci5sZW5ndGg7IGotLSA+IDA7KSBvcHRzLmJvb2xlYW4ucHVzaChhcnJbal0pO1xuXHR9XG5cblx0Zm9yIChpPW9wdHMuc3RyaW5nLmxlbmd0aDsgaS0tID4gMDspIHtcblx0XHRhcnIgPSBvcHRzLmFsaWFzW29wdHMuc3RyaW5nW2ldXSB8fCBbXTtcblx0XHRmb3IgKGo9YXJyLmxlbmd0aDsgai0tID4gMDspIG9wdHMuc3RyaW5nLnB1c2goYXJyW2pdKTtcblx0fVxuXG5cdGlmIChkZWZhdWx0cykge1xuXHRcdGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcblx0XHRcdG5hbWUgPSB0eXBlb2Ygb3B0cy5kZWZhdWx0W2tdO1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSA9IG9wdHMuYWxpYXNba10gfHwgW107XG5cdFx0XHRpZiAob3B0c1tuYW1lXSAhPT0gdm9pZCAwKSB7XG5cdFx0XHRcdG9wdHNbbmFtZV0ucHVzaChrKTtcblx0XHRcdFx0Zm9yIChpPTA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRvcHRzW25hbWVdLnB1c2goYXJyW2ldKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGtleXMgPSBzdHJpY3QgPyBPYmplY3Qua2V5cyhvcHRzLmFsaWFzKSA6IFtdO1xuXG5cdGZvciAoaT0wOyBpIDwgbGVuOyBpKyspIHtcblx0XHRhcmcgPSBhcmdzW2ldO1xuXG5cdFx0aWYgKGFyZyA9PT0gJy0tJykge1xuXHRcdFx0b3V0Ll8gPSBvdXQuXy5jb25jYXQoYXJncy5zbGljZSgrK2kpKTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGZvciAoaj0wOyBqIDwgYXJnLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoYXJnLmNoYXJDb2RlQXQoaikgIT09IDQ1KSBicmVhazsgLy8gXCItXCJcblx0XHR9XG5cblx0XHRpZiAoaiA9PT0gMCkge1xuXHRcdFx0b3V0Ll8ucHVzaChhcmcpO1xuXHRcdH0gZWxzZSBpZiAoYXJnLnN1YnN0cmluZyhqLCBqICsgMykgPT09ICduby0nKSB7XG5cdFx0XHRuYW1lID0gYXJnLnN1YnN0cmluZyhqICsgMyk7XG5cdFx0XHRpZiAoc3RyaWN0ICYmICF+a2V5cy5pbmRleE9mKG5hbWUpKSB7XG5cdFx0XHRcdHJldHVybiBvcHRzLnVua25vd24oYXJnKTtcblx0XHRcdH1cblx0XHRcdG91dFtuYW1lXSA9IGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKGlkeD1qKzE7IGlkeCA8IGFyZy5sZW5ndGg7IGlkeCsrKSB7XG5cdFx0XHRcdGlmIChhcmcuY2hhckNvZGVBdChpZHgpID09PSA2MSkgYnJlYWs7IC8vIFwiPVwiXG5cdFx0XHR9XG5cblx0XHRcdG5hbWUgPSBhcmcuc3Vic3RyaW5nKGosIGlkeCk7XG5cdFx0XHR2YWwgPSBhcmcuc3Vic3RyaW5nKCsraWR4KSB8fCAoaSsxID09PSBsZW4gfHwgKCcnK2FyZ3NbaSsxXSkuY2hhckNvZGVBdCgwKSA9PT0gNDUgfHwgYXJnc1srK2ldKTtcblx0XHRcdGFyciA9IChqID09PSAyID8gW25hbWVdIDogbmFtZSk7XG5cblx0XHRcdGZvciAoaWR4PTA7IGlkeCA8IGFyci5sZW5ndGg7IGlkeCsrKSB7XG5cdFx0XHRcdG5hbWUgPSBhcnJbaWR4XTtcblx0XHRcdFx0aWYgKHN0cmljdCAmJiAhfmtleXMuaW5kZXhPZihuYW1lKSkgcmV0dXJuIG9wdHMudW5rbm93bignLScucmVwZWF0KGopICsgbmFtZSk7XG5cdFx0XHRcdHRvVmFsKG91dCwgbmFtZSwgKGlkeCArIDEgPCBhcnIubGVuZ3RoKSB8fCB2YWwsIG9wdHMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmIChkZWZhdWx0cykge1xuXHRcdGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcblx0XHRcdGlmIChvdXRba10gPT09IHZvaWQgMCkge1xuXHRcdFx0XHRvdXRba10gPSBvcHRzLmRlZmF1bHRba107XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKGFsaWJpKSB7XG5cdFx0Zm9yIChrIGluIG91dCkge1xuXHRcdFx0YXJyID0gb3B0cy5hbGlhc1trXSB8fCBbXTtcblx0XHRcdHdoaWxlIChhcnIubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRvdXRbYXJyLnNoaWZ0KCldID0gb3V0W2tdO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvdXQ7XG59XG5cbmNvbnN0IHJlbW92ZUJyYWNrZXRzID0gKHYpID0+IHYucmVwbGFjZSgvWzxbXS4rLywgXCJcIikudHJpbSgpO1xuY29uc3QgZmluZEFsbEJyYWNrZXRzID0gKHYpID0+IHtcbiAgY29uc3QgQU5HTEVEX0JSQUNLRVRfUkVfR0xPQkFMID0gLzwoW14+XSspPi9nO1xuICBjb25zdCBTUVVBUkVfQlJBQ0tFVF9SRV9HTE9CQUwgPSAvXFxbKFteXFxdXSspXFxdL2c7XG4gIGNvbnN0IHJlcyA9IFtdO1xuICBjb25zdCBwYXJzZSA9IChtYXRjaCkgPT4ge1xuICAgIGxldCB2YXJpYWRpYyA9IGZhbHNlO1xuICAgIGxldCB2YWx1ZSA9IG1hdGNoWzFdO1xuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKFwiLi4uXCIpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDMpO1xuICAgICAgdmFyaWFkaWMgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcmVxdWlyZWQ6IG1hdGNoWzBdLnN0YXJ0c1dpdGgoXCI8XCIpLFxuICAgICAgdmFsdWUsXG4gICAgICB2YXJpYWRpY1xuICAgIH07XG4gIH07XG4gIGxldCBhbmdsZWRNYXRjaDtcbiAgd2hpbGUgKGFuZ2xlZE1hdGNoID0gQU5HTEVEX0JSQUNLRVRfUkVfR0xPQkFMLmV4ZWModikpIHtcbiAgICByZXMucHVzaChwYXJzZShhbmdsZWRNYXRjaCkpO1xuICB9XG4gIGxldCBzcXVhcmVNYXRjaDtcbiAgd2hpbGUgKHNxdWFyZU1hdGNoID0gU1FVQVJFX0JSQUNLRVRfUkVfR0xPQkFMLmV4ZWModikpIHtcbiAgICByZXMucHVzaChwYXJzZShzcXVhcmVNYXRjaCkpO1xuICB9XG4gIHJldHVybiByZXM7XG59O1xuY29uc3QgZ2V0TXJpT3B0aW9ucyA9IChvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHthbGlhczoge30sIGJvb2xlYW46IFtdfTtcbiAgZm9yIChjb25zdCBbaW5kZXgsIG9wdGlvbl0gb2Ygb3B0aW9ucy5lbnRyaWVzKCkpIHtcbiAgICBpZiAob3B0aW9uLm5hbWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlc3VsdC5hbGlhc1tvcHRpb24ubmFtZXNbMF1dID0gb3B0aW9uLm5hbWVzLnNsaWNlKDEpO1xuICAgIH1cbiAgICBpZiAob3B0aW9uLmlzQm9vbGVhbikge1xuICAgICAgaWYgKG9wdGlvbi5uZWdhdGVkKSB7XG4gICAgICAgIGNvbnN0IGhhc1N0cmluZ1R5cGVPcHRpb24gPSBvcHRpb25zLnNvbWUoKG8sIGkpID0+IHtcbiAgICAgICAgICByZXR1cm4gaSAhPT0gaW5kZXggJiYgby5uYW1lcy5zb21lKChuYW1lKSA9PiBvcHRpb24ubmFtZXMuaW5jbHVkZXMobmFtZSkpICYmIHR5cGVvZiBvLnJlcXVpcmVkID09PSBcImJvb2xlYW5cIjtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghaGFzU3RyaW5nVHlwZU9wdGlvbikge1xuICAgICAgICAgIHJlc3VsdC5ib29sZWFuLnB1c2gob3B0aW9uLm5hbWVzWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LmJvb2xlYW4ucHVzaChvcHRpb24ubmFtZXNbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbmNvbnN0IGZpbmRMb25nZXN0ID0gKGFycikgPT4ge1xuICByZXR1cm4gYXJyLnNvcnQoKGEsIGIpID0+IHtcbiAgICByZXR1cm4gYS5sZW5ndGggPiBiLmxlbmd0aCA/IC0xIDogMTtcbiAgfSlbMF07XG59O1xuY29uc3QgcGFkUmlnaHQgPSAoc3RyLCBsZW5ndGgpID0+IHtcbiAgcmV0dXJuIHN0ci5sZW5ndGggPj0gbGVuZ3RoID8gc3RyIDogYCR7c3RyfSR7XCIgXCIucmVwZWF0KGxlbmd0aCAtIHN0ci5sZW5ndGgpfWA7XG59O1xuY29uc3QgY2FtZWxjYXNlID0gKGlucHV0KSA9PiB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKC8oW2Etel0pLShbYS16XSkvZywgKF8sIHAxLCBwMikgPT4ge1xuICAgIHJldHVybiBwMSArIHAyLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xufTtcbmNvbnN0IHNldERvdFByb3AgPSAob2JqLCBrZXlzLCB2YWwpID0+IHtcbiAgbGV0IGkgPSAwO1xuICBsZXQgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIGxldCB0ID0gb2JqO1xuICBsZXQgeDtcbiAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHggPSB0W2tleXNbaV1dO1xuICAgIHQgPSB0W2tleXNbaV1dID0gaSA9PT0gbGVuZ3RoIC0gMSA/IHZhbCA6IHggIT0gbnVsbCA/IHggOiAhIX5rZXlzW2kgKyAxXS5pbmRleE9mKFwiLlwiKSB8fCAhKCtrZXlzW2kgKyAxXSA+IC0xKSA/IHt9IDogW107XG4gIH1cbn07XG5jb25zdCBzZXRCeVR5cGUgPSAob2JqLCB0cmFuc2Zvcm1zKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRyYW5zZm9ybXMpKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gdHJhbnNmb3Jtc1trZXldO1xuICAgIGlmICh0cmFuc2Zvcm0uc2hvdWxkVHJhbnNmb3JtKSB7XG4gICAgICBvYmpba2V5XSA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbChbXSwgb2JqW2tleV0pO1xuICAgICAgaWYgKHR5cGVvZiB0cmFuc2Zvcm0udHJhbnNmb3JtRnVuY3Rpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmpba2V5XSA9IG9ialtrZXldLm1hcCh0cmFuc2Zvcm0udHJhbnNmb3JtRnVuY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbmNvbnN0IGdldEZpbGVOYW1lID0gKGlucHV0KSA9PiB7XG4gIGNvbnN0IG0gPSAvKFteXFxcXFxcL10rKSQvLmV4ZWMoaW5wdXQpO1xuICByZXR1cm4gbSA/IG1bMV0gOiBcIlwiO1xufTtcbmNvbnN0IGNhbWVsY2FzZU9wdGlvbk5hbWUgPSAobmFtZSkgPT4ge1xuICByZXR1cm4gbmFtZS5zcGxpdChcIi5cIikubWFwKCh2LCBpKSA9PiB7XG4gICAgcmV0dXJuIGkgPT09IDAgPyBjYW1lbGNhc2UodikgOiB2O1xuICB9KS5qb2luKFwiLlwiKTtcbn07XG5jbGFzcyBDQUNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICBpZiAodHlwZW9mIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YWNrID0gbmV3IEVycm9yKG1lc3NhZ2UpLnN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBPcHRpb24ge1xuICBjb25zdHJ1Y3RvcihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKSB7XG4gICAgdGhpcy5yYXdOYW1lID0gcmF3TmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBjb25maWcpO1xuICAgIHJhd05hbWUgPSByYXdOYW1lLnJlcGxhY2UoL1xcLlxcKi9nLCBcIlwiKTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLm5hbWVzID0gcmVtb3ZlQnJhY2tldHMocmF3TmFtZSkuc3BsaXQoXCIsXCIpLm1hcCgodikgPT4ge1xuICAgICAgbGV0IG5hbWUgPSB2LnRyaW0oKS5yZXBsYWNlKC9eLXsxLDJ9LywgXCJcIik7XG4gICAgICBpZiAobmFtZS5zdGFydHNXaXRoKFwibm8tXCIpKSB7XG4gICAgICAgIHRoaXMubmVnYXRlZCA9IHRydWU7XG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoL15uby0vLCBcIlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYW1lbGNhc2VPcHRpb25OYW1lKG5hbWUpO1xuICAgIH0pLnNvcnQoKGEsIGIpID0+IGEubGVuZ3RoID4gYi5sZW5ndGggPyAxIDogLTEpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZXNbdGhpcy5uYW1lcy5sZW5ndGggLSAxXTtcbiAgICBpZiAodGhpcy5uZWdhdGVkICYmIHRoaXMuY29uZmlnLmRlZmF1bHQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5jb25maWcuZGVmYXVsdCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChyYXdOYW1lLmluY2x1ZGVzKFwiPFwiKSkge1xuICAgICAgdGhpcy5yZXF1aXJlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChyYXdOYW1lLmluY2x1ZGVzKFwiW1wiKSkge1xuICAgICAgdGhpcy5yZXF1aXJlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQm9vbGVhbiA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHByb2Nlc3NBcmdzID0gcHJvY2Vzcy5hcmd2O1xuY29uc3QgcGxhdGZvcm1JbmZvID0gYCR7cHJvY2Vzcy5wbGF0Zm9ybX0tJHtwcm9jZXNzLmFyY2h9IG5vZGUtJHtwcm9jZXNzLnZlcnNpb259YDtcblxuY2xhc3MgQ29tbWFuZCB7XG4gIGNvbnN0cnVjdG9yKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcgPSB7fSwgY2xpKSB7XG4gICAgdGhpcy5yYXdOYW1lID0gcmF3TmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5jbGkgPSBjbGk7XG4gICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgdGhpcy5hbGlhc05hbWVzID0gW107XG4gICAgdGhpcy5uYW1lID0gcmVtb3ZlQnJhY2tldHMocmF3TmFtZSk7XG4gICAgdGhpcy5hcmdzID0gZmluZEFsbEJyYWNrZXRzKHJhd05hbWUpO1xuICAgIHRoaXMuZXhhbXBsZXMgPSBbXTtcbiAgfVxuICB1c2FnZSh0ZXh0KSB7XG4gICAgdGhpcy51c2FnZVRleHQgPSB0ZXh0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGFsbG93VW5rbm93bk9wdGlvbnMoKSB7XG4gICAgdGhpcy5jb25maWcuYWxsb3dVbmtub3duT3B0aW9ucyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlKCkge1xuICAgIHRoaXMuY29uZmlnLmlnbm9yZU9wdGlvbkRlZmF1bHRWYWx1ZSA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdmVyc2lvbih2ZXJzaW9uLCBjdXN0b21GbGFncyA9IFwiLXYsIC0tdmVyc2lvblwiKSB7XG4gICAgdGhpcy52ZXJzaW9uTnVtYmVyID0gdmVyc2lvbjtcbiAgICB0aGlzLm9wdGlvbihjdXN0b21GbGFncywgXCJEaXNwbGF5IHZlcnNpb24gbnVtYmVyXCIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGV4YW1wbGUoZXhhbXBsZSkge1xuICAgIHRoaXMuZXhhbXBsZXMucHVzaChleGFtcGxlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBvcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZykge1xuICAgIGNvbnN0IG9wdGlvbiA9IG5ldyBPcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZyk7XG4gICAgdGhpcy5vcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBhbGlhcyhuYW1lKSB7XG4gICAgdGhpcy5hbGlhc05hbWVzLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgYWN0aW9uKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5jb21tYW5kQWN0aW9uID0gY2FsbGJhY2s7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgaXNNYXRjaGVkKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSBuYW1lIHx8IHRoaXMuYWxpYXNOYW1lcy5pbmNsdWRlcyhuYW1lKTtcbiAgfVxuICBnZXQgaXNEZWZhdWx0Q29tbWFuZCgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSBcIlwiIHx8IHRoaXMuYWxpYXNOYW1lcy5pbmNsdWRlcyhcIiFcIik7XG4gIH1cbiAgZ2V0IGlzR2xvYmFsQ29tbWFuZCgpIHtcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEdsb2JhbENvbW1hbmQ7XG4gIH1cbiAgaGFzT3B0aW9uKG5hbWUpIHtcbiAgICBuYW1lID0gbmFtZS5zcGxpdChcIi5cIilbMF07XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maW5kKChvcHRpb24pID0+IHtcbiAgICAgIHJldHVybiBvcHRpb24ubmFtZXMuaW5jbHVkZXMobmFtZSk7XG4gICAgfSk7XG4gIH1cbiAgb3V0cHV0SGVscCgpIHtcbiAgICBjb25zdCB7bmFtZSwgY29tbWFuZHN9ID0gdGhpcy5jbGk7XG4gICAgY29uc3Qge1xuICAgICAgdmVyc2lvbk51bWJlcixcbiAgICAgIG9wdGlvbnM6IGdsb2JhbE9wdGlvbnMsXG4gICAgICBoZWxwQ2FsbGJhY2tcbiAgICB9ID0gdGhpcy5jbGkuZ2xvYmFsQ29tbWFuZDtcbiAgICBsZXQgc2VjdGlvbnMgPSBbXG4gICAgICB7XG4gICAgICAgIGJvZHk6IGAke25hbWV9JHt2ZXJzaW9uTnVtYmVyID8gYC8ke3ZlcnNpb25OdW1iZXJ9YCA6IFwiXCJ9YFxuICAgICAgfVxuICAgIF07XG4gICAgc2VjdGlvbnMucHVzaCh7XG4gICAgICB0aXRsZTogXCJVc2FnZVwiLFxuICAgICAgYm9keTogYCAgJCAke25hbWV9ICR7dGhpcy51c2FnZVRleHQgfHwgdGhpcy5yYXdOYW1lfWBcbiAgICB9KTtcbiAgICBjb25zdCBzaG93Q29tbWFuZHMgPSAodGhpcy5pc0dsb2JhbENvbW1hbmQgfHwgdGhpcy5pc0RlZmF1bHRDb21tYW5kKSAmJiBjb21tYW5kcy5sZW5ndGggPiAwO1xuICAgIGlmIChzaG93Q29tbWFuZHMpIHtcbiAgICAgIGNvbnN0IGxvbmdlc3RDb21tYW5kTmFtZSA9IGZpbmRMb25nZXN0KGNvbW1hbmRzLm1hcCgoY29tbWFuZCkgPT4gY29tbWFuZC5yYXdOYW1lKSk7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiQ29tbWFuZHNcIixcbiAgICAgICAgYm9keTogY29tbWFuZHMubWFwKChjb21tYW5kKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAgICR7cGFkUmlnaHQoY29tbWFuZC5yYXdOYW1lLCBsb25nZXN0Q29tbWFuZE5hbWUubGVuZ3RoKX0gICR7Y29tbWFuZC5kZXNjcmlwdGlvbn1gO1xuICAgICAgICB9KS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICAgIHNlY3Rpb25zLnB1c2goe1xuICAgICAgICB0aXRsZTogYEZvciBtb3JlIGluZm8sIHJ1biBhbnkgY29tbWFuZCB3aXRoIHRoZSBcXGAtLWhlbHBcXGAgZmxhZ2AsXG4gICAgICAgIGJvZHk6IGNvbW1hbmRzLm1hcCgoY29tbWFuZCkgPT4gYCAgJCAke25hbWV9JHtjb21tYW5kLm5hbWUgPT09IFwiXCIgPyBcIlwiIDogYCAke2NvbW1hbmQubmFtZX1gfSAtLWhlbHBgKS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLmlzR2xvYmFsQ29tbWFuZCA/IGdsb2JhbE9wdGlvbnMgOiBbLi4udGhpcy5vcHRpb25zLCAuLi5nbG9iYWxPcHRpb25zIHx8IFtdXTtcbiAgICBpZiAoIXRoaXMuaXNHbG9iYWxDb21tYW5kICYmICF0aGlzLmlzRGVmYXVsdENvbW1hbmQpIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24ubmFtZSAhPT0gXCJ2ZXJzaW9uXCIpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsb25nZXN0T3B0aW9uTmFtZSA9IGZpbmRMb25nZXN0KG9wdGlvbnMubWFwKChvcHRpb24pID0+IG9wdGlvbi5yYXdOYW1lKSk7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiT3B0aW9uc1wiLFxuICAgICAgICBib2R5OiBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAgICR7cGFkUmlnaHQob3B0aW9uLnJhd05hbWUsIGxvbmdlc3RPcHRpb25OYW1lLmxlbmd0aCl9ICAke29wdGlvbi5kZXNjcmlwdGlvbn0gJHtvcHRpb24uY29uZmlnLmRlZmF1bHQgPT09IHZvaWQgMCA/IFwiXCIgOiBgKGRlZmF1bHQ6ICR7b3B0aW9uLmNvbmZpZy5kZWZhdWx0fSlgfWA7XG4gICAgICAgIH0pLmpvaW4oXCJcXG5cIilcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5leGFtcGxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IFwiRXhhbXBsZXNcIixcbiAgICAgICAgYm9keTogdGhpcy5leGFtcGxlcy5tYXAoKGV4YW1wbGUpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGV4YW1wbGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIGV4YW1wbGUobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBleGFtcGxlO1xuICAgICAgICB9KS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGhlbHBDYWxsYmFjaykge1xuICAgICAgc2VjdGlvbnMgPSBoZWxwQ2FsbGJhY2soc2VjdGlvbnMpIHx8IHNlY3Rpb25zO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhzZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcbiAgICAgIHJldHVybiBzZWN0aW9uLnRpdGxlID8gYCR7c2VjdGlvbi50aXRsZX06XG4ke3NlY3Rpb24uYm9keX1gIDogc2VjdGlvbi5ib2R5O1xuICAgIH0pLmpvaW4oXCJcXG5cXG5cIikpO1xuICB9XG4gIG91dHB1dFZlcnNpb24oKSB7XG4gICAgY29uc3Qge25hbWV9ID0gdGhpcy5jbGk7XG4gICAgY29uc3Qge3ZlcnNpb25OdW1iZXJ9ID0gdGhpcy5jbGkuZ2xvYmFsQ29tbWFuZDtcbiAgICBpZiAodmVyc2lvbk51bWJlcikge1xuICAgICAgY29uc29sZS5sb2coYCR7bmFtZX0vJHt2ZXJzaW9uTnVtYmVyfSAke3BsYXRmb3JtSW5mb31gKTtcbiAgICB9XG4gIH1cbiAgY2hlY2tSZXF1aXJlZEFyZ3MoKSB7XG4gICAgY29uc3QgbWluaW1hbEFyZ3NDb3VudCA9IHRoaXMuYXJncy5maWx0ZXIoKGFyZykgPT4gYXJnLnJlcXVpcmVkKS5sZW5ndGg7XG4gICAgaWYgKHRoaXMuY2xpLmFyZ3MubGVuZ3RoIDwgbWluaW1hbEFyZ3NDb3VudCkge1xuICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBtaXNzaW5nIHJlcXVpcmVkIGFyZ3MgZm9yIGNvbW1hbmQgXFxgJHt0aGlzLnJhd05hbWV9XFxgYCk7XG4gICAgfVxuICB9XG4gIGNoZWNrVW5rbm93bk9wdGlvbnMoKSB7XG4gICAgY29uc3Qge29wdGlvbnMsIGdsb2JhbENvbW1hbmR9ID0gdGhpcy5jbGk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5hbGxvd1Vua25vd25PcHRpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKG5hbWUgIT09IFwiLS1cIiAmJiAhdGhpcy5oYXNPcHRpb24obmFtZSkgJiYgIWdsb2JhbENvbW1hbmQuaGFzT3B0aW9uKG5hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBVbmtub3duIG9wdGlvbiBcXGAke25hbWUubGVuZ3RoID4gMSA/IGAtLSR7bmFtZX1gIDogYC0ke25hbWV9YH1cXGBgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjaGVja09wdGlvblZhbHVlKCkge1xuICAgIGNvbnN0IHtvcHRpb25zOiBwYXJzZWRPcHRpb25zLCBnbG9iYWxDb21tYW5kfSA9IHRoaXMuY2xpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBbLi4uZ2xvYmFsQ29tbWFuZC5vcHRpb25zLCAuLi50aGlzLm9wdGlvbnNdO1xuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VkT3B0aW9uc1tvcHRpb24ubmFtZS5zcGxpdChcIi5cIilbMF1dO1xuICAgICAgaWYgKG9wdGlvbi5yZXF1aXJlZCkge1xuICAgICAgICBjb25zdCBoYXNOZWdhdGVkID0gb3B0aW9ucy5zb21lKChvKSA9PiBvLm5lZ2F0ZWQgJiYgby5uYW1lcy5pbmNsdWRlcyhvcHRpb24ubmFtZSkpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlICYmICFoYXNOZWdhdGVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENBQ0Vycm9yKGBvcHRpb24gXFxgJHtvcHRpb24ucmF3TmFtZX1cXGAgdmFsdWUgaXMgbWlzc2luZ2ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jbGFzcyBHbG9iYWxDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gIGNvbnN0cnVjdG9yKGNsaSkge1xuICAgIHN1cGVyKFwiQEBnbG9iYWxAQFwiLCBcIlwiLCB7fSwgY2xpKTtcbiAgfVxufVxuXG52YXIgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuY2xhc3MgQ0FDIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IobmFtZSA9IFwiXCIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5jb21tYW5kcyA9IFtdO1xuICAgIHRoaXMucmF3QXJncyA9IFtdO1xuICAgIHRoaXMuYXJncyA9IFtdO1xuICAgIHRoaXMub3B0aW9ucyA9IHt9O1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZCA9IG5ldyBHbG9iYWxDb21tYW5kKHRoaXMpO1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC51c2FnZShcIjxjb21tYW5kPiBbb3B0aW9uc11cIik7XG4gIH1cbiAgdXNhZ2UodGV4dCkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC51c2FnZSh0ZXh0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBjb21tYW5kKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcpIHtcbiAgICBjb25zdCBjb21tYW5kID0gbmV3IENvbW1hbmQocmF3TmFtZSwgZGVzY3JpcHRpb24gfHwgXCJcIiwgY29uZmlnLCB0aGlzKTtcbiAgICBjb21tYW5kLmdsb2JhbENvbW1hbmQgPSB0aGlzLmdsb2JhbENvbW1hbmQ7XG4gICAgdGhpcy5jb21tYW5kcy5wdXNoKGNvbW1hbmQpO1xuICAgIHJldHVybiBjb21tYW5kO1xuICB9XG4gIG9wdGlvbihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBoZWxwKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbihcIi1oLCAtLWhlbHBcIiwgXCJEaXNwbGF5IHRoaXMgbWVzc2FnZVwiKTtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQuaGVscENhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgdGhpcy5zaG93SGVscE9uRXhpdCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdmVyc2lvbih2ZXJzaW9uLCBjdXN0b21GbGFncyA9IFwiLXYsIC0tdmVyc2lvblwiKSB7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLnZlcnNpb24odmVyc2lvbiwgY3VzdG9tRmxhZ3MpO1xuICAgIHRoaXMuc2hvd1ZlcnNpb25PbkV4aXQgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGV4YW1wbGUoZXhhbXBsZSkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5leGFtcGxlKGV4YW1wbGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIG91dHB1dEhlbHAoKSB7XG4gICAgaWYgKHRoaXMubWF0Y2hlZENvbW1hbmQpIHtcbiAgICAgIHRoaXMubWF0Y2hlZENvbW1hbmQub3V0cHV0SGVscCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdsb2JhbENvbW1hbmQub3V0cHV0SGVscCgpO1xuICAgIH1cbiAgfVxuICBvdXRwdXRWZXJzaW9uKCkge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5vdXRwdXRWZXJzaW9uKCk7XG4gIH1cbiAgc2V0UGFyc2VkSW5mbyh7YXJncywgb3B0aW9uc30sIG1hdGNoZWRDb21tYW5kLCBtYXRjaGVkQ29tbWFuZE5hbWUpIHtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgaWYgKG1hdGNoZWRDb21tYW5kKSB7XG4gICAgICB0aGlzLm1hdGNoZWRDb21tYW5kID0gbWF0Y2hlZENvbW1hbmQ7XG4gICAgfVxuICAgIGlmIChtYXRjaGVkQ29tbWFuZE5hbWUpIHtcbiAgICAgIHRoaXMubWF0Y2hlZENvbW1hbmROYW1lID0gbWF0Y2hlZENvbW1hbmROYW1lO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB1bnNldE1hdGNoZWRDb21tYW5kKCkge1xuICAgIHRoaXMubWF0Y2hlZENvbW1hbmQgPSB2b2lkIDA7XG4gICAgdGhpcy5tYXRjaGVkQ29tbWFuZE5hbWUgPSB2b2lkIDA7XG4gIH1cbiAgcGFyc2UoYXJndiA9IHByb2Nlc3NBcmdzLCB7XG4gICAgcnVuID0gdHJ1ZVxuICB9ID0ge30pIHtcbiAgICB0aGlzLnJhd0FyZ3MgPSBhcmd2O1xuICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICB0aGlzLm5hbWUgPSBhcmd2WzFdID8gZ2V0RmlsZU5hbWUoYXJndlsxXSkgOiBcImNsaVwiO1xuICAgIH1cbiAgICBsZXQgc2hvdWxkUGFyc2UgPSB0cnVlO1xuICAgIGZvciAoY29uc3QgY29tbWFuZCBvZiB0aGlzLmNvbW1hbmRzKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLm1yaShhcmd2LnNsaWNlKDIpLCBjb21tYW5kKTtcbiAgICAgIGNvbnN0IGNvbW1hbmROYW1lID0gcGFyc2VkLmFyZ3NbMF07XG4gICAgICBpZiAoY29tbWFuZC5pc01hdGNoZWQoY29tbWFuZE5hbWUpKSB7XG4gICAgICAgIHNob3VsZFBhcnNlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHBhcnNlZEluZm8gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcGFyc2VkKSwge1xuICAgICAgICAgIGFyZ3M6IHBhcnNlZC5hcmdzLnNsaWNlKDEpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkSW5mbywgY29tbWFuZCwgY29tbWFuZE5hbWUpO1xuICAgICAgICB0aGlzLmVtaXQoYGNvbW1hbmQ6JHtjb21tYW5kTmFtZX1gLCBjb21tYW5kKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNob3VsZFBhcnNlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgdGhpcy5jb21tYW5kcykge1xuICAgICAgICBpZiAoY29tbWFuZC5uYW1lID09PSBcIlwiKSB7XG4gICAgICAgICAgc2hvdWxkUGFyc2UgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLm1yaShhcmd2LnNsaWNlKDIpLCBjb21tYW5kKTtcbiAgICAgICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkLCBjb21tYW5kKTtcbiAgICAgICAgICB0aGlzLmVtaXQoYGNvbW1hbmQ6IWAsIGNvbW1hbmQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzaG91bGRQYXJzZSkge1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5tcmkoYXJndi5zbGljZSgyKSk7XG4gICAgICB0aGlzLnNldFBhcnNlZEluZm8ocGFyc2VkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5oZWxwICYmIHRoaXMuc2hvd0hlbHBPbkV4aXQpIHtcbiAgICAgIHRoaXMub3V0cHV0SGVscCgpO1xuICAgICAgcnVuID0gZmFsc2U7XG4gICAgICB0aGlzLnVuc2V0TWF0Y2hlZENvbW1hbmQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJzaW9uICYmIHRoaXMuc2hvd1ZlcnNpb25PbkV4aXQgJiYgdGhpcy5tYXRjaGVkQ29tbWFuZE5hbWUgPT0gbnVsbCkge1xuICAgICAgdGhpcy5vdXRwdXRWZXJzaW9uKCk7XG4gICAgICBydW4gPSBmYWxzZTtcbiAgICAgIHRoaXMudW5zZXRNYXRjaGVkQ29tbWFuZCgpO1xuICAgIH1cbiAgICBjb25zdCBwYXJzZWRBcmd2ID0ge2FyZ3M6IHRoaXMuYXJncywgb3B0aW9uczogdGhpcy5vcHRpb25zfTtcbiAgICBpZiAocnVuKSB7XG4gICAgICB0aGlzLnJ1bk1hdGNoZWRDb21tYW5kKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5tYXRjaGVkQ29tbWFuZCAmJiB0aGlzLmFyZ3NbMF0pIHtcbiAgICAgIHRoaXMuZW1pdChcImNvbW1hbmQ6KlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZEFyZ3Y7XG4gIH1cbiAgbXJpKGFyZ3YsIGNvbW1hbmQpIHtcbiAgICBjb25zdCBjbGlPcHRpb25zID0gW1xuICAgICAgLi4udGhpcy5nbG9iYWxDb21tYW5kLm9wdGlvbnMsXG4gICAgICAuLi5jb21tYW5kID8gY29tbWFuZC5vcHRpb25zIDogW11cbiAgICBdO1xuICAgIGNvbnN0IG1yaU9wdGlvbnMgPSBnZXRNcmlPcHRpb25zKGNsaU9wdGlvbnMpO1xuICAgIGxldCBhcmdzQWZ0ZXJEb3VibGVEYXNoZXMgPSBbXTtcbiAgICBjb25zdCBkb3VibGVEYXNoZXNJbmRleCA9IGFyZ3YuaW5kZXhPZihcIi0tXCIpO1xuICAgIGlmIChkb3VibGVEYXNoZXNJbmRleCA+IC0xKSB7XG4gICAgICBhcmdzQWZ0ZXJEb3VibGVEYXNoZXMgPSBhcmd2LnNsaWNlKGRvdWJsZURhc2hlc0luZGV4ICsgMSk7XG4gICAgICBhcmd2ID0gYXJndi5zbGljZSgwLCBkb3VibGVEYXNoZXNJbmRleCk7XG4gICAgfVxuICAgIGxldCBwYXJzZWQgPSBtcmkyKGFyZ3YsIG1yaU9wdGlvbnMpO1xuICAgIHBhcnNlZCA9IE9iamVjdC5rZXlzKHBhcnNlZCkucmVkdWNlKChyZXMsIG5hbWUpID0+IHtcbiAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzKSwge1xuICAgICAgICBbY2FtZWxjYXNlT3B0aW9uTmFtZShuYW1lKV06IHBhcnNlZFtuYW1lXVxuICAgICAgfSk7XG4gICAgfSwge186IFtdfSk7XG4gICAgY29uc3QgYXJncyA9IHBhcnNlZC5fO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBcIi0tXCI6IGFyZ3NBZnRlckRvdWJsZURhc2hlc1xuICAgIH07XG4gICAgY29uc3QgaWdub3JlRGVmYXVsdCA9IGNvbW1hbmQgJiYgY29tbWFuZC5jb25maWcuaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlID8gY29tbWFuZC5jb25maWcuaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlIDogdGhpcy5nbG9iYWxDb21tYW5kLmNvbmZpZy5pZ25vcmVPcHRpb25EZWZhdWx0VmFsdWU7XG4gICAgbGV0IHRyYW5zZm9ybXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGZvciAoY29uc3QgY2xpT3B0aW9uIG9mIGNsaU9wdGlvbnMpIHtcbiAgICAgIGlmICghaWdub3JlRGVmYXVsdCAmJiBjbGlPcHRpb24uY29uZmlnLmRlZmF1bHQgIT09IHZvaWQgMCkge1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgY2xpT3B0aW9uLm5hbWVzKSB7XG4gICAgICAgICAgb3B0aW9uc1tuYW1lXSA9IGNsaU9wdGlvbi5jb25maWcuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2xpT3B0aW9uLmNvbmZpZy50eXBlKSkge1xuICAgICAgICBpZiAodHJhbnNmb3Jtc1tjbGlPcHRpb24ubmFtZV0gPT09IHZvaWQgMCkge1xuICAgICAgICAgIHRyYW5zZm9ybXNbY2xpT3B0aW9uLm5hbWVdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICB0cmFuc2Zvcm1zW2NsaU9wdGlvbi5uYW1lXVtcInNob3VsZFRyYW5zZm9ybVwiXSA9IHRydWU7XG4gICAgICAgICAgdHJhbnNmb3Jtc1tjbGlPcHRpb24ubmFtZV1bXCJ0cmFuc2Zvcm1GdW5jdGlvblwiXSA9IGNsaU9wdGlvbi5jb25maWcudHlwZVswXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJzZWQpKSB7XG4gICAgICBpZiAoa2V5ICE9PSBcIl9cIikge1xuICAgICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgICAgc2V0RG90UHJvcChvcHRpb25zLCBrZXlzLCBwYXJzZWRba2V5XSk7XG4gICAgICAgIHNldEJ5VHlwZShvcHRpb25zLCB0cmFuc2Zvcm1zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3MsXG4gICAgICBvcHRpb25zXG4gICAgfTtcbiAgfVxuICBydW5NYXRjaGVkQ29tbWFuZCgpIHtcbiAgICBjb25zdCB7YXJncywgb3B0aW9ucywgbWF0Y2hlZENvbW1hbmQ6IGNvbW1hbmR9ID0gdGhpcztcbiAgICBpZiAoIWNvbW1hbmQgfHwgIWNvbW1hbmQuY29tbWFuZEFjdGlvbilcbiAgICAgIHJldHVybjtcbiAgICBjb21tYW5kLmNoZWNrVW5rbm93bk9wdGlvbnMoKTtcbiAgICBjb21tYW5kLmNoZWNrT3B0aW9uVmFsdWUoKTtcbiAgICBjb21tYW5kLmNoZWNrUmVxdWlyZWRBcmdzKCk7XG4gICAgY29uc3QgYWN0aW9uQXJncyA9IFtdO1xuICAgIGNvbW1hbmQuYXJncy5mb3JFYWNoKChhcmcsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoYXJnLnZhcmlhZGljKSB7XG4gICAgICAgIGFjdGlvbkFyZ3MucHVzaChhcmdzLnNsaWNlKGluZGV4KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY3Rpb25BcmdzLnB1c2goYXJnc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGFjdGlvbkFyZ3MucHVzaChvcHRpb25zKTtcbiAgICByZXR1cm4gY29tbWFuZC5jb21tYW5kQWN0aW9uLmFwcGx5KHRoaXMsIGFjdGlvbkFyZ3MpO1xuICB9XG59XG5cbmNvbnN0IGNhYyA9IChuYW1lID0gXCJcIikgPT4gbmV3IENBQyhuYW1lKTtcblxuZXhwb3J0IGRlZmF1bHQgY2FjO1xuZXhwb3J0IHsgQ0FDLCBDb21tYW5kLCBjYWMgfTtcbiIsImltcG9ydCByZWFkbGluZSBmcm9tICdyZWFkbGluZSdcbmltcG9ydCBjIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgdHlwZSB7IFZpdGVzdCB9IGZyb20gJy4vY29yZSdcblxuY29uc3Qga2V5cyA9IFtcbiAgWydhJywgJ3JlcnVuIGFsbCB0ZXN0cyddLFxuICBbJ2YnLCAncmVydW4gb25seSBmYWlsZWQgdGVzdHMnXSxcbiAgWyd1JywgJ3VwZGF0ZSBzbmFwc2hvdCddLFxuICBbJ3EnLCAncXVpdCddLFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRTaG9ydGN1dHNIZWxwKCkge1xuICBwcm9jZXNzLnN0ZG91dC53cml0ZShcbiAgICBgXG4ke2MuYm9sZCgnICBXYXRjaCBVc2FnZScpfVxuJHtrZXlzLm1hcChpID0+IGMuZGltKCcgIHByZXNzICcpICsgYy5yZXNldChjLmJvbGQoaVswXSkpICsgYy5kaW0oYCB0byAke2lbMV19YCkpLmpvaW4oJ1xcbicpfVxuYCxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDb25zb2xlU2hvcnRjdXRzKGN0eDogVml0ZXN0KSB7XG4gIHJlYWRsaW5lLmVtaXRLZXlwcmVzc0V2ZW50cyhwcm9jZXNzLnN0ZGluKVxuICBwcm9jZXNzLnN0ZGluLnNldFJhd01vZGUodHJ1ZSlcbiAgcHJvY2Vzcy5zdGRpbi5vbigna2V5cHJlc3MnLCAoc3RyOiBzdHJpbmcsIGtleTogYW55KSA9PiB7XG4gICAgLy8gY3RybC1jIG9yIGVzY1xuICAgIGlmIChzdHIgPT09ICdcXHgwMycgfHwgc3RyID09PSAnXFx4MUInIHx8IChrZXkgJiYga2V5LmN0cmwgJiYga2V5Lm5hbWUgPT09ICdjJykpXG4gICAgICByZXR1cm4gY3R4LmV4aXQodHJ1ZSlcblxuICAgIC8vIGlzIHJ1bm5pbmcsIGlnbm9yZSBrZXlwcmVzc1xuICAgIGlmIChjdHgucnVubmluZ1Byb21pc2UpXG4gICAgICByZXR1cm5cblxuICAgIGNvbnN0IG5hbWUgPSBrZXk/Lm5hbWVcblxuICAgIC8vIGhlbHBcbiAgICBpZiAobmFtZSA9PT0gJ2gnKVxuICAgICAgcmV0dXJuIHByaW50U2hvcnRjdXRzSGVscCgpXG4gICAgLy8gdXBkYXRlIHNuYXBzaG90XG4gICAgaWYgKG5hbWUgPT09ICd1JylcbiAgICAgIHJldHVybiBjdHgudXBkYXRlU25hcHNob3QoKVxuICAgIC8vIHJlcnVuIGFsbCB0ZXN0c1xuICAgIGlmIChuYW1lID09PSAnYScgfHwgbmFtZSA9PT0gJ3JldHVybicpXG4gICAgICByZXR1cm4gY3R4LnJlcnVuRmlsZXModW5kZWZpbmVkLCAncmVydW4gYWxsJylcbiAgICAvLyBxdWl0XG4gICAgaWYgKG5hbWUgPT09ICdxJylcbiAgICAgIHJldHVybiBjdHguZXhpdCh0cnVlKVxuXG4gICAgLy8gVE9ETzogYWRkIG1vcmUgY29tbWFuZHNcbiAgfSlcbn1cbiIsImltcG9ydCBjYWMgZnJvbSAnY2FjJ1xuaW1wb3J0IHR5cGUgeyBVc2VyQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJ1xuaW1wb3J0IHsgZW5zdXJlUGFja2FnZUluc3RhbGxlZCB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlVml0ZXN0IH0gZnJvbSAnLi9jcmVhdGUnXG5pbXBvcnQgeyByZWdpc3RlckNvbnNvbGVTaG9ydGN1dHMgfSBmcm9tICcuL3N0ZGluJ1xuXG5jb25zdCBjbGkgPSBjYWMoJ3ZpdGVzdCcpXG5cbmNsaVxuICAudmVyc2lvbih2ZXJzaW9uKVxuICAub3B0aW9uKCctciwgLS1yb290IDxwYXRoPicsICdyb290IHBhdGgnKVxuICAub3B0aW9uKCctYywgLS1jb25maWcgPHBhdGg+JywgJ3BhdGggdG8gY29uZmlnIGZpbGUnKVxuICAub3B0aW9uKCctdSwgLS11cGRhdGUnLCAndXBkYXRlIHNuYXBzaG90JylcbiAgLm9wdGlvbignLXcsIC0td2F0Y2gnLCAnd2F0Y2ggbW9kZScpXG4gIC5vcHRpb24oJy10LCAtLXRlc3ROYW1lUGF0dGVybiA8cGF0dGVybj4nLCAncnVuIHRlc3QgbmFtZXMgd2l0aCB0aGUgc3BlY2lmaWVkIHBhdHRlcm4nKVxuICAub3B0aW9uKCctLXVpJywgJ2VuYWJsZSBVSScpXG4gIC5vcHRpb24oJy0tb3BlbicsICdvcGVuIFVJIGF1dG9tYXRpY2FsbHknLCB7IGRlZmF1bHQ6IHRydWUgfSlcbiAgLm9wdGlvbignLS1hcGkgW2FwaV0nLCAnc2VydmUgQVBJLCBhdmFpbGFibGUgb3B0aW9uczogLS1hcGkucG9ydCA8cG9ydD4sIC0tYXBpLmhvc3QgW2hvc3RdIGFuZCAtLWFwaS5zdHJpY3RQb3J0JylcbiAgLm9wdGlvbignLS10aHJlYWRzJywgJ2VuYWJsZWQgdGhyZWFkcycsIHsgZGVmYXVsdDogdHJ1ZSB9KVxuICAub3B0aW9uKCctLXNpbGVudCcsICdzaWxlbnQgY29uc29sZSBvdXRwdXQgZnJvbSB0ZXN0cycpXG4gIC5vcHRpb24oJy0taXNvbGF0ZScsICdpc29sYXRlIGVudmlyb25tZW50IGZvciBlYWNoIHRlc3QgZmlsZScsIHsgZGVmYXVsdDogdHJ1ZSB9KVxuICAub3B0aW9uKCctLXJlcG9ydGVyIDxuYW1lPicsICdyZXBvcnRlcicpXG4gIC5vcHRpb24oJy0tb3V0cHV0RmlsZSA8ZmlsZW5hbWU+JywgJ3dyaXRlIHRlc3QgcmVzdWx0cyB0byBhIGZpbGUgd2hlbiB0aGUgLS1yZXBvcnRlcj1qc29uIG9wdGlvbiBpcyBhbHNvIHNwZWNpZmllZCcpXG4gIC5vcHRpb24oJy0tY292ZXJhZ2UnLCAndXNlIGM4IGZvciBjb3ZlcmFnZScpXG4gIC5vcHRpb24oJy0tcnVuJywgJ2RvIG5vdCB3YXRjaCcpXG4gIC5vcHRpb24oJy0tZ2xvYmFscycsICdpbmplY3QgYXBpcyBnbG9iYWxseScpXG4gIC5vcHRpb24oJy0tZ2xvYmFsJywgJ2RlcHJlY2F0ZWQsIHVzZSAtLWdsb2JhbHMnKVxuICAub3B0aW9uKCctLWRvbScsICdtb2NrIGJyb3dzZXIgYXBpIHdpdGggaGFwcHktZG9tJylcbiAgLm9wdGlvbignLS1lbnZpcm9ubWVudCA8ZW52PicsICdydW5uZXIgZW52aXJvbm1lbnQnLCB7IGRlZmF1bHQ6ICdub2RlJyB9KVxuICAub3B0aW9uKCctLXBhc3NXaXRoTm9UZXN0cycsICdwYXNzIHdoZW4gbm8gdGVzdHMgZm91bmQnKVxuICAuaGVscCgpXG5cbmNsaVxuICAuY29tbWFuZCgncnVuIFsuLi5maWx0ZXJzXScpXG4gIC5hY3Rpb24ocnVuKVxuXG5jbGlcbiAgLmNvbW1hbmQoJ3JlbGF0ZWQgWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihydW5SZWxhdGVkKVxuXG5jbGlcbiAgLmNvbW1hbmQoJ3dhdGNoIFsuLi5maWx0ZXJzXScpXG4gIC5hY3Rpb24oZGV2KVxuXG5jbGlcbiAgLmNvbW1hbmQoJ2RldiBbLi4uZmlsdGVyc10nKVxuICAuYWN0aW9uKGRldilcblxuY2xpXG4gIC5jb21tYW5kKCdbLi4uZmlsdGVyc10nKVxuICAuYWN0aW9uKGRldilcblxuY2xpLnBhcnNlKClcblxuYXN5bmMgZnVuY3Rpb24gcnVuUmVsYXRlZChyZWxhdGVkRmlsZXM6IHN0cmluZ1tdIHwgc3RyaW5nLCBhcmd2OiBVc2VyQ29uZmlnKSB7XG4gIGFyZ3YucmVsYXRlZCA9IHJlbGF0ZWRGaWxlc1xuICBhcmd2LnBhc3NXaXRoTm9UZXN0cyA/Pz0gdHJ1ZVxuICBhd2FpdCBkZXYoW10sIGFyZ3YpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRldihjbGlGaWx0ZXJzOiBzdHJpbmdbXSwgYXJndjogVXNlckNvbmZpZykge1xuICBpZiAoYXJndi53YXRjaCA9PSBudWxsKVxuICAgIGFyZ3Yud2F0Y2ggPSAhcHJvY2Vzcy5lbnYuQ0kgJiYgIWFyZ3YucnVuXG4gIGF3YWl0IHJ1bihjbGlGaWx0ZXJzLCBhcmd2KVxufVxuXG5hc3luYyBmdW5jdGlvbiBydW4oY2xpRmlsdGVyczogc3RyaW5nW10sIG9wdGlvbnM6IFVzZXJDb25maWcpIHtcbiAgcHJvY2Vzcy5lbnYuVklURVNUID0gJ3RydWUnXG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WID0gJ3Rlc3QnXG5cbiAgaWYgKCFhd2FpdCBlbnN1cmVQYWNrYWdlSW5zdGFsbGVkKCd2aXRlJykpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmNvdmVyYWdlID09PSAnYm9vbGVhbicpXG4gICAgb3B0aW9ucy5jb3ZlcmFnZSA9IHsgZW5hYmxlZDogb3B0aW9ucy5jb3ZlcmFnZSB9XG5cbiAgY29uc3QgY3R4ID0gYXdhaXQgY3JlYXRlVml0ZXN0KG9wdGlvbnMpXG5cbiAgaWYgKGN0eC5jb25maWcuY292ZXJhZ2UuZW5hYmxlZCkge1xuICAgIGlmICghYXdhaXQgZW5zdXJlUGFja2FnZUluc3RhbGxlZCgnYzgnKSlcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG5cbiAgaWYgKGN0eC5jb25maWcuZW52aXJvbm1lbnQgJiYgY3R4LmNvbmZpZy5lbnZpcm9ubWVudCAhPT0gJ25vZGUnKSB7XG4gICAgaWYgKCFhd2FpdCBlbnN1cmVQYWNrYWdlSW5zdGFsbGVkKGN0eC5jb25maWcuZW52aXJvbm1lbnQpKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cblxuICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSAmJiBjdHguY29uZmlnLndhdGNoKVxuICAgIHJlZ2lzdGVyQ29uc29sZVNob3J0Y3V0cyhjdHgpXG5cbiAgcHJvY2Vzcy5jaGRpcihjdHguY29uZmlnLnJvb3QpXG5cbiAgY3R4Lm9uU2VydmVyUmVzdGFydGVkKCgpID0+IHtcbiAgICAvLyBUT0RPOiByZS1jb25zaWRlciBob3cgdG8gcmUtcnVuIHRoZSB0ZXN0cyB0aGUgc2VydmVyIHNtYXJ0bHlcbiAgICBjdHguc3RhcnQoY2xpRmlsdGVycylcbiAgfSlcblxuICB0cnkge1xuICAgIGF3YWl0IGN0eC5zdGFydChjbGlGaWx0ZXJzKVxuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDFcbiAgICB0aHJvdyBlXG4gIH1cbiAgZmluYWxseSB7XG4gICAgaWYgKCFjdHguY29uZmlnLndhdGNoKVxuICAgICAgYXdhaXQgY3R4LmV4aXQoKVxuICB9XG59XG4iXSwibmFtZXMiOlsicmVhZGxpbmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ3BCLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFDRDtBQUNBLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtBQUNwQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRztBQUN6QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUMvRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFNBQVMsR0FBRyxHQUFHO0FBQ2xDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxLQUFLLE9BQU8sR0FBRyxLQUFLLEdBQUcsR0FBRyxLQUFLLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNwSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHO0FBQ3BDLEVBQUUsQ0FBQztBQUNILENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLENBQUM7QUFDRDtBQUNBLFNBQVMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDM0IsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNuQixDQUFDLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ25CO0FBQ0EsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN0QztBQUNBLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztBQUNyQyxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxP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