@matter/tools 0.11.1 → 0.11.2-alpha.0-20241102-aa282dab8

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.
Files changed (72) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/building/builder.d.ts.map +1 -1
  3. package/dist/cjs/building/builder.js.map +1 -1
  4. package/dist/cjs/building/cli.d.ts.map +1 -1
  5. package/dist/cjs/building/cli.js +27 -5
  6. package/dist/cjs/building/cli.js.map +1 -1
  7. package/dist/cjs/building/docs.d.ts +18 -0
  8. package/dist/cjs/building/docs.d.ts.map +1 -0
  9. package/dist/cjs/building/docs.js +249 -0
  10. package/dist/cjs/building/docs.js.map +6 -0
  11. package/dist/cjs/index.d.ts +1 -1
  12. package/dist/cjs/index.d.ts.map +1 -1
  13. package/dist/cjs/index.js +1 -1
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/util/{files.d.ts → file.d.ts} +3 -1
  16. package/dist/cjs/util/file.d.ts.map +1 -0
  17. package/dist/cjs/util/{files.js → file.js} +21 -7
  18. package/dist/cjs/util/file.js.map +6 -0
  19. package/dist/cjs/util/index.d.ts +1 -1
  20. package/dist/cjs/util/index.d.ts.map +1 -1
  21. package/dist/cjs/util/index.js +1 -1
  22. package/dist/cjs/util/index.js.map +1 -1
  23. package/dist/cjs/util/package.d.ts +11 -0
  24. package/dist/cjs/util/package.d.ts.map +1 -1
  25. package/dist/cjs/util/package.js +104 -4
  26. package/dist/cjs/util/package.js.map +1 -1
  27. package/dist/cjs/util/progress.d.ts +1 -0
  28. package/dist/cjs/util/progress.d.ts.map +1 -1
  29. package/dist/cjs/util/progress.js +5 -3
  30. package/dist/cjs/util/progress.js.map +1 -1
  31. package/dist/esm/building/builder.d.ts.map +1 -1
  32. package/dist/esm/building/builder.js +1 -1
  33. package/dist/esm/building/builder.js.map +1 -1
  34. package/dist/esm/building/cli.d.ts.map +1 -1
  35. package/dist/esm/building/cli.js +28 -6
  36. package/dist/esm/building/cli.js.map +1 -1
  37. package/dist/esm/building/docs.d.ts +18 -0
  38. package/dist/esm/building/docs.d.ts.map +1 -0
  39. package/dist/esm/building/docs.js +237 -0
  40. package/dist/esm/building/docs.js.map +6 -0
  41. package/dist/esm/index.d.ts +1 -1
  42. package/dist/esm/index.d.ts.map +1 -1
  43. package/dist/esm/index.js +2 -2
  44. package/dist/esm/util/{files.d.ts → file.d.ts} +3 -1
  45. package/dist/esm/util/file.d.ts.map +1 -0
  46. package/dist/esm/util/file.js +140 -0
  47. package/dist/esm/util/file.js.map +6 -0
  48. package/dist/esm/util/index.d.ts +1 -1
  49. package/dist/esm/util/index.d.ts.map +1 -1
  50. package/dist/esm/util/index.js +2 -2
  51. package/dist/esm/util/package.d.ts +11 -0
  52. package/dist/esm/util/package.d.ts.map +1 -1
  53. package/dist/esm/util/package.js +102 -2
  54. package/dist/esm/util/package.js.map +1 -1
  55. package/dist/esm/util/progress.d.ts +1 -0
  56. package/dist/esm/util/progress.d.ts.map +1 -1
  57. package/dist/esm/util/progress.js +6 -4
  58. package/dist/esm/util/progress.js.map +1 -1
  59. package/package.json +6 -2
  60. package/src/building/builder.ts +5 -0
  61. package/src/building/cli.ts +28 -2
  62. package/src/building/docs.ts +348 -0
  63. package/src/index.ts +1 -1
  64. package/src/util/{files.ts → file.ts} +17 -3
  65. package/src/util/index.ts +1 -1
  66. package/src/util/package.ts +134 -1
  67. package/src/util/progress.ts +5 -5
  68. package/dist/cjs/util/files.d.ts.map +0 -1
  69. package/dist/cjs/util/files.js.map +0 -6
  70. package/dist/esm/util/files.d.ts.map +0 -1
  71. package/dist/esm/util/files.js +0 -126
  72. package/dist/esm/util/files.js.map +0 -6
@@ -7,7 +7,7 @@ import { existsSync, readFileSync, statSync } from "fs";
7
7
  import { readdir, readFile, stat, writeFile } from "fs/promises";
8
8
  import { dirname, join, relative, resolve } from "path";
9
9
  import { ignoreError, ignoreErrorSync } from "./errors.js";
10
- import { globSync, maybeReadJsonSync, maybeStatSync } from "./files.js";
10
+ import { globSync, isFile, maybeReadJsonSync, maybeStatSync } from "./file.js";
11
11
  import { Progress } from "./progress.js";
12
12
  import { toolsPath } from "./tools-path.cjs";
13
13
  class JsonNotFoundError extends Error {
@@ -74,6 +74,9 @@ class Package {
74
74
  get name() {
75
75
  return this.json.name;
76
76
  }
77
+ get version() {
78
+ return this.json.version;
79
+ }
77
80
  get exports() {
78
81
  return this.json.exports;
79
82
  }
@@ -136,6 +139,19 @@ class Package {
136
139
  get workspace() {
137
140
  return Package.workspaceFor(this.path);
138
141
  }
142
+ get isWorkspace() {
143
+ return Array.isArray(this.json.workspaces);
144
+ }
145
+ get root() {
146
+ try {
147
+ return this.workspace;
148
+ } catch (e) {
149
+ if (!(e instanceof JsonNotFoundError)) {
150
+ throw e;
151
+ }
152
+ }
153
+ return this;
154
+ }
139
155
  static set workingDir(wd) {
140
156
  workingDir = wd;
141
157
  }
@@ -267,6 +283,28 @@ class Package {
267
283
  };
268
284
  return this.#aliases;
269
285
  }
286
+ get modules() {
287
+ return this.listModules(false);
288
+ }
289
+ get sourceModules() {
290
+ return this.listModules(true);
291
+ }
292
+ /**
293
+ * Create a map of module name -> implementation file. If "source" is true, searches source files rather than
294
+ * transpiled files. We do this rather than finding transpilation files then mapping to source files so this works
295
+ * even if there isn't a build.
296
+ */
297
+ listModules(source, ...conditions) {
298
+ if (!conditions.length) {
299
+ conditions = [this.supportsEsm ? "import" : "require", "default"];
300
+ }
301
+ const modules = {};
302
+ const exports = this.exports;
303
+ if (typeof exports === "object" && exports !== null) {
304
+ findModules(source, new Set(conditions), modules, this.name, this.path, exports);
305
+ }
306
+ return modules;
307
+ }
270
308
  #maybeStat(path) {
271
309
  return maybeStatSync(this.resolve(path));
272
310
  }
@@ -310,10 +348,72 @@ function findExportCondition(detail, type) {
310
348
  return exp;
311
349
  }
312
350
  }
351
+ function findModules(source, conditions, target, prefix, path, exports) {
352
+ if (typeof exports === "string") {
353
+ addModuleGlobs(source, target, prefix, path, exports);
354
+ } else if (Array.isArray(exports)) {
355
+ for (const entry of exports) {
356
+ findModules(source, conditions, target, prefix, path, entry);
357
+ }
358
+ } else if (typeof exports === "object" && exports !== null) {
359
+ let selectedCondition = false;
360
+ for (const key in exports) {
361
+ if (key.startsWith(".")) {
362
+ findModules(source, conditions, target, join(prefix, key), path, exports[key]);
363
+ } else if (!selectedCondition && conditions.has(key)) {
364
+ findModules(source, conditions, target, prefix, path, exports[key]);
365
+ selectedCondition = true;
366
+ }
367
+ }
368
+ } else {
369
+ throw new Error("Malformed exports field in package.json");
370
+ }
371
+ }
372
+ function addModuleGlobs(source, target, name, base, pattern) {
373
+ let path = join(base, pattern);
374
+ if (source) {
375
+ path = path.replace(/\/dist\/(?:esm|cjs)\//, "/src/");
376
+ }
377
+ if (name.includes("*")) {
378
+ if (!name.endsWith("/*")) {
379
+ throw new Error(`Wildcard in module ${name} does not appear as final path segment`);
380
+ }
381
+ name = name.substring(0, name.length - 2);
382
+ const paths = globSync(source ? path.replace(/\.js$/, ".{ts,js,cjs,mjs}") : path);
383
+ if (!paths.length) {
384
+ throw new Error(`No match for module ${name} pattern ${pattern}`);
385
+ }
386
+ const [prefix, suffix] = path.split(/\*+/);
387
+ const prefixLength = prefix === void 0 ? 0 : prefix.length;
388
+ const suffixLength = suffix === void 0 ? 0 : suffix.length;
389
+ for (const thisPath of paths) {
390
+ const qualifier = thisPath.substring(prefixLength, thisPath.length - suffixLength);
391
+ const thisName = join(name, qualifier);
392
+ target[thisName] = thisPath;
393
+ }
394
+ } else if (path.includes("*")) {
395
+ throw new Error(`Wildcard in module path "${path}" but not in module "${name}"`);
396
+ } else {
397
+ name = name.replace(/\/(?:export|index)$/, "");
398
+ let found = false;
399
+ if (isFile(path)) {
400
+ found = true;
401
+ } else if (source && path.endsWith(".js")) {
402
+ path = path.replace(/\.js$/, ".ts");
403
+ if (isFile(path)) {
404
+ found = true;
405
+ }
406
+ }
407
+ if (!found) {
408
+ throw new Error(`Module "${name}" path "${path}" not found`);
409
+ }
410
+ target[name] = path;
411
+ }
412
+ }
313
413
  export {
314
414
  CODEGEN_PATH,
315
415
  CONFIG_PATH,
316
416
  JsonNotFoundError,
317
417
  Package
318
418
  };
319
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcGFja2FnZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjItMjAyNCBNYXR0ZXIuanMgQXV0aG9yc1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMsIHN0YXRTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyByZWFkZGlyLCByZWFkRmlsZSwgc3RhdCwgd3JpdGVGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZWxhdGl2ZSwgcmVzb2x2ZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBpZ25vcmVFcnJvciwgaWdub3JlRXJyb3JTeW5jIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgeyBnbG9iU3luYywgbWF5YmVSZWFkSnNvblN5bmMsIG1heWJlU3RhdFN5bmMgfSBmcm9tIFwiLi9maWxlcy5qc1wiO1xuaW1wb3J0IHsgUHJvZ3Jlc3MgfSBmcm9tIFwiLi9wcm9ncmVzcy5qc1wiO1xuaW1wb3J0IHsgdG9vbHNQYXRoIH0gZnJvbSBcIi4vdG9vbHMtcGF0aC5janNcIjtcblxuZXhwb3J0IGNsYXNzIEpzb25Ob3RGb3VuZEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuZXhwb3J0IGNvbnN0IENPTkZJR19QQVRIID0gYHNyYy9idWlsZC5jb25maWcudHNgO1xuZXhwb3J0IGNvbnN0IENPREVHRU5fUEFUSCA9IGBjb2RlZ2VuYDtcblxuY29uc3QgcGFja2FnZUZvclBhdGggPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBQYWNrYWdlIHwgdW5kZWZpbmVkIHwgbnVsbD47XG5cbmZ1bmN0aW9uIGZpbmRKc29uKGZpbGVuYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZyA9IFwiLlwiLCB0aXRsZT86IHN0cmluZykge1xuICAgIHBhdGggPSByZXNvbHZlKHBhdGgpO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IGpzb24gPSBpZ25vcmVFcnJvclN5bmMoW1wiRU5PRU5UXCIsIFwiRU5PVERJUlwiXSwgKCkgPT5cbiAgICAgICAgICAgIEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHJlc29sdmUocGF0aCwgZmlsZW5hbWUpKS50b1N0cmluZygpKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGpzb24pIHtcbiAgICAgICAgICAgIGlmICh0aXRsZSA9PT0gdW5kZWZpbmVkIHx8IGpzb24ubmFtZSA9PT0gdGl0bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyByb290OiBwYXRoLCBqc29uIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShwYXRoKTtcbiAgICAgICAgaWYgKHBhcmVudCA9PT0gcGF0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEpzb25Ob3RGb3VuZEVycm9yKGBDb3VsZCBub3QgbG9jYXRlICR7dGl0bGUgPz8gZmlsZW5hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcGF0aCA9IHBhcmVudDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzRGlyZWN0b3J5KHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiAhIWlnbm9yZUVycm9yU3luYyhcIkVOT0VOVFwiLCAoKSA9PiBzdGF0U3luYyhwYXRoKS5pc0RpcmVjdG9yeSgpKTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhY2thZ2Uge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBqc29uOiBQYWNrYWdlSnNvbjtcbiAgICBzdXBwb3J0c0VzbTogYm9vbGVhbjtcbiAgICBzdXBwb3J0c0NqczogYm9vbGVhbjtcbiAgICBoYXNTcmM6IGJvb2xlYW47XG4gICAgaGFzVGVzdHM6IGJvb2xlYW47XG4gICAgaGFzQ29uZmlnOiBib29sZWFuO1xuICAgIGlzTGlicmFyeTogYm9vbGVhbjtcbiAgICAjYWxpYXNlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBjb25zdHJ1Y3Rvcih7XG4gICAgICAgIHBhdGggPSBcIi5cIixcbiAgICAgICAgbmFtZSxcbiAgICB9OiB7XG4gICAgICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHsgcm9vdCwganNvbiB9ID0gZmluZEpzb24oXCJwYWNrYWdlLmpzb25cIiwgcGF0aCwgbmFtZSk7XG4gICAgICAgIHRoaXMucGF0aCA9IHJvb3Q7XG4gICAgICAgIHRoaXMuanNvbiA9IGpzb247XG5cbiAgICAgICAgY29uc3QgeyBlc20sIGNqcyB9ID0gc2VsZWN0Rm9ybWF0cyh0aGlzLmpzb24pO1xuICAgICAgICB0aGlzLnN1cHBvcnRzRXNtID0gZXNtO1xuICAgICAgICB0aGlzLnN1cHBvcnRzQ2pzID0gY2pzO1xuXG4gICAgICAgIHRoaXMuaGFzU3JjID0gaXNEaXJlY3RvcnkodGhpcy5yZXNvbHZlKFwic3JjXCIpKTtcbiAgICAgICAgdGhpcy5oYXNUZXN0cyA9IGlzRGlyZWN0b3J5KHRoaXMucmVzb2x2ZShcInRlc3RcIikpO1xuXG4gICAgICAgIGNvbnN0IHJlZnMgPSBtYXliZVJlYWRKc29uU3luYyh0aGlzLnJlc29sdmUoXCJ0c2NvbmZpZy5qc29uXCIpKT8ucmVmZXJlbmNlcyBhcyB1bmRlZmluZWQgfCB7IHBhdGg6IHN0cmluZyB9W107XG4gICAgICAgIGlmIChyZWZzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICghcmVmcy5maW5kKHJlZiA9PiB0aGlzLnJlc29sdmUocmVmLnBhdGgpID09PSB0aGlzLnJlc29sdmUoXCJzcmNcIikpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNTcmMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcmVmcy5maW5kKHJlZiA9PiB0aGlzLnJlc29sdmUocmVmLnBhdGgpID09PSB0aGlzLnJlc29sdmUoXCJ0ZXN0XCIpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzVGVzdHMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNMaWJyYXJ5ID0gISEodGhpcy5qc29uLm1haW4gfHwgdGhpcy5qc29uLm1vZHVsZSB8fCB0aGlzLmpzb24uZXhwb3J0cyk7XG5cbiAgICAgICAgdGhpcy5oYXNDb25maWcgPSB0aGlzLmhhc0ZpbGUodGhpcy5yZXNvbHZlKENPTkZJR19QQVRIKSk7XG4gICAgfVxuXG4gICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmpzb24ubmFtZTtcbiAgICB9XG5cbiAgICBnZXQgZXhwb3J0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuanNvbi5leHBvcnRzO1xuICAgIH1cblxuICAgIGdldCBoYXNDb2RlZ2VuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNEaXJlY3RvcnkoQ09ERUdFTl9QQVRIKTtcbiAgICB9XG5cbiAgICByZXNvbHZlKC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLnBhdGgsIC4uLnBhdGhzKTtcbiAgICB9XG5cbiAgICByZWxhdGl2ZShwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlbGF0aXZlKHRoaXMucGF0aCwgcGF0aCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2xvYihwYXR0ZXJuOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgICAgICAvLyBHbG9iIG9ubHkgdW5kZXJzdGFuZHMgZm9yd2FyZC1zbGFzaCBhcyBzZXBhcmF0b3IgYmVjYXVzZSByZWFzb25zXG4gICAgICAgIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcGF0dGVybiA9IHRoaXMucmVzb2x2ZShwYXR0ZXJuKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLm1hcChzID0+IHRoaXMucmVzb2x2ZShzKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDdXJyZW50IGdsb2IgaW1wbGVtZW50YXRpb24gaXNuJ3QgYWN0dWFsbHkgYXN5bmMgYXMgdGhpcyBpcyBmYXN0ZXIgYW5kIHdlIG9ubHkgd2FsayBzbWFsbCBkaXJlY3RvcnkgdHJlZXNcbiAgICAgICAgcmV0dXJuIGdsb2JTeW5jKHBhdHRlcm4pO1xuICAgIH1cblxuICAgIHN0YXJ0KHdoYXQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwcm9ncmVzcyA9IG5ldyBQcm9ncmVzcygpO1xuICAgICAgICBwcm9ncmVzcy5zdGFydHVwKHdoYXQsIHRoaXMpO1xuICAgICAgICByZXR1cm4gcHJvZ3Jlc3M7XG4gICAgfVxuXG4gICAgYXN5bmMgbGFzdE1vZGlmaWVkKC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0TW9kaWZpZWRBYnNvbHV0ZShwYXRocy5tYXAocCA9PiB0aGlzLnJlc29sdmUocCkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxhc3RNb2RpZmllZEFic29sdXRlKHBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICBsZXQgbXRpbWUgPSAwO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIHBhdGhzLm1hcChhc3luYyBwID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGlnbm9yZUVycm9yKFwiRU5PRU5UXCIsIGFzeW5jICgpID0+IGF3YWl0IHN0YXQocCkpO1xuICAgICAgICAgICAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCB0aGlzTXRpbWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aHMgPSAoYXdhaXQgcmVhZGRpcihwKSkubWFwKHAyID0+IHJlc29sdmUocCwgcDIpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpc010aW1lID0gYXdhaXQgdGhpcy5sYXN0TW9kaWZpZWRBYnNvbHV0ZShwYXRocyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc010aW1lID0gc3RhdHMubXRpbWVNcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNNdGltZSA+IG10aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIG10aW1lID0gdGhpc010aW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbXRpbWU7XG4gICAgfVxuXG4gICAgZ2V0IGRlcGVuZGVuY2llcygpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IEFycmF5PHN0cmluZz4oKTtcbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIFtcImRlcGVuZGVuY2llc1wiLCBcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCIsIFwiZGV2RGVwZW5kZW5jaWVzXCIsIFwicGVlckRlcGVuZGVuY2llc1wiXSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmpzb25bdHlwZV0gPT09IFwib2JqZWN0XCIgJiYgdGhpcy5qc29uW3R5cGVdICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gWy4uLnJlc3VsdCwgLi4uT2JqZWN0LmtleXModGhpcy5qc29uW3R5cGVdKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5uZXcgU2V0KHJlc3VsdCldO1xuICAgIH1cblxuICAgIGdldCB3b3Jrc3BhY2UoKSB7XG4gICAgICAgIHJldHVybiBQYWNrYWdlLndvcmtzcGFjZUZvcih0aGlzLnBhdGgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBzZXQgd29ya2luZ0Rpcih3ZDogc3RyaW5nKSB7XG4gICAgICAgIHdvcmtpbmdEaXIgPSB3ZDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHdvcmtzcGFjZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud29ya3NwYWNlRm9yKHdvcmtpbmdEaXIpO1xuICAgIH1cblxuICAgIHN0YXRpYyB3b3Jrc3BhY2VGb3IoY3dkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF3b3Jrc3BhY2UpIHtcbiAgICAgICAgICAgIHdvcmtzcGFjZSA9IGZpbmQoY3dkLCBwa2cgPT4gQXJyYXkuaXNBcnJheShwa2cuanNvbi53b3Jrc3BhY2VzKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdvcmtzcGFjZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHRvb2xzKCkge1xuICAgICAgICBpZiAoIXRvb2xzKSB7XG4gICAgICAgICAgICB0b29scyA9IG5ldyBQYWNrYWdlKHsgcGF0aDogdG9vbHNQYXRoIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b29scztcbiAgICB9XG5cbiAgICBzdGF0aWMgZmluZEV4cG9ydChuYW1lOiBzdHJpbmcsIHR5cGU6IFwiY2pzXCIgfCBcImVzbVwiID0gXCJlc21cIikge1xuICAgICAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2UucmVzb2x2ZUltcG9ydChuYW1lLCB0eXBlKTtcbiAgICB9XG5cbiAgICByZXNvbHZlRXhwb3J0KG5hbWU6IHN0cmluZywgdHlwZTogXCJjanNcIiB8IFwiZXNtXCIgPSBcImVzbVwiKSB7XG4gICAgICAgIGlmICghbmFtZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgICAgICAgbmFtZSA9IGAuLyR7bmFtZX1gO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4cG9ydERldGFpbCA9IHRoaXMuZXhwb3J0cz8uW25hbWVdO1xuXG4gICAgICAgIGlmIChleHBvcnREZXRhaWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cCA9IGZpbmRFeHBvcnRDb25kaXRpb24oZXhwb3J0RGV0YWlsLCB0eXBlKTtcbiAgICAgICAgICAgIGlmIChleHApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlKGV4cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmFtZSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICAgIGlmICh0eXBlID09PSBcImVzbVwiICYmIHRoaXMuanNvbi5tb2R1bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlKHRoaXMuanNvbi5tb2R1bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuanNvbi5tYWluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZSh0aGlzLmpzb24ubWFpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGV4cG9ydCAke25hbWV9IGluIHBhY2thZ2UgJHt0aGlzLm5hbWV9YCk7XG4gICAgfVxuXG4gICAgZmluZFBhY2thZ2UobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGxldCByZXNvbHZlSW4gPSB0aGlzLnBhdGg7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBpZiAoaXNEaXJlY3RvcnkocmVzb2x2ZShyZXNvbHZlSW4sIFwibm9kZV9tb2R1bGVzXCIsIG5hbWUpKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmV4dFJlc29sdmVJbiA9IGRpcm5hbWUocmVzb2x2ZUluKTtcbiAgICAgICAgICAgIGlmIChuZXh0UmVzb2x2ZUluID09PSByZXNvbHZlSW4pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIG1vZHVsZSAke25hbWV9IGZyb20gJHt0aGlzLnBhdGh9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlSW4gPSBuZXh0UmVzb2x2ZUluO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFBhY2thZ2UuZm9yUGF0aChyZXNvbHZlKHJlc29sdmVJbiwgXCJub2RlX21vZHVsZXNcIiwgbmFtZSkpO1xuICAgIH1cblxuICAgIHJlc29sdmVJbXBvcnQobmFtZTogc3RyaW5nLCB0eXBlOiBcImNqc1wiIHwgXCJlc21cIiA9IFwiZXNtXCIpIHtcbiAgICAgICAgY29uc3Qgc2VnbWVudHMgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgbGV0IHBhY2thZ2VOYW1lID0gc2VnbWVudHMuc2hpZnQoKSBhcyBzdHJpbmc7XG4gICAgICAgIGlmIChwYWNrYWdlTmFtZS5zdGFydHNXaXRoKFwiQFwiKSAmJiBzZWdtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBhY2thZ2VOYW1lID0gYCR7cGFja2FnZU5hbWV9LyR7c2VnbWVudHMuc2hpZnQoKX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGtnID0gdGhpcy5maW5kUGFja2FnZShwYWNrYWdlTmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHBrZy5yZXNvbHZlRXhwb3J0KHNlZ21lbnRzLmxlbmd0aCA/IHNlZ21lbnRzLmpvaW4oXCIvXCIpIDogXCIuXCIsIHR5cGUpO1xuICAgIH1cblxuICAgIGhhc0ZpbGUocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuI21heWJlU3RhdChwYXRoKT8uaXNGaWxlKCk7XG4gICAgfVxuXG4gICAgaGFzRGlyZWN0b3J5KHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gISF0aGlzLiNtYXliZVN0YXQocGF0aCk/LmlzRGlyZWN0b3J5KCk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZEZpbGUocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiByZWFkRmlsZSh0aGlzLnJlc29sdmUocGF0aCksIFwidXRmLThcIik7XG4gICAgfVxuXG4gICAgcmVhZEZpbGVTeW5jKHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gcmVhZEZpbGVTeW5jKHRoaXMucmVzb2x2ZShwYXRoKSwgXCJ1dGYtOFwiKTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZUZpbGUocGF0aDogc3RyaW5nLCBjb250ZW50czogdW5rbm93bikge1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUodGhpcy5yZXNvbHZlKHBhdGgpLCBgJHtjb250ZW50c31gKTtcbiAgICB9XG5cbiAgICBhc3luYyBzYXZlKCkge1xuICAgICAgICBhd2FpdCB0aGlzLndyaXRlRmlsZShqb2luKHRoaXMucGF0aCwgXCJwYWNrYWdlLmpzb25cIiksIEpTT04uc3RyaW5naWZ5KHRoaXMuanNvbiwgdW5kZWZpbmVkLCA0KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZEpzb24ocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCB0aGlzLnJlYWRGaWxlKHBhdGgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodGV4dCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICAgICAgICAgICAgICBlID0gbmV3IEVycm9yKGAke2V9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAoZSBhcyBFcnJvcikubWVzc2FnZSA9IGBFcnJvciBwYXJzaW5nIFwiJHt0aGlzLnJlc29sdmUocGF0aCl9XCI6ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YDtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZUpzb24ocGF0aDogc3RyaW5nLCB2YWx1ZToge30pIHtcbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZUZpbGUocGF0aCwgSlNPTi5zdHJpbmdpZnkodmFsdWUsIHVuZGVmaW5lZCwgNCkpO1xuICAgIH1cblxuICAgIHN0YXRpYyBtYXliZUZvclBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGZ1bmN0aW9uIGZpbmQocGF0aDogc3RyaW5nKTogUGFja2FnZSB8IG51bGwge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHBhY2thZ2VGb3JQYXRoW3BhdGhdO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0c1N5bmMoam9pbihwYXRoLCBcInBhY2thZ2UuanNvblwiKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFBhY2thZ2UoeyBwYXRoIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZpbmQoZGlybmFtZShwYXRoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhY2thZ2VGb3JQYXRoW3BhdGhdID0gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpbmQocGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdCA/PyB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgc3RhdGljIGZvclBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMubWF5YmVGb3JQYXRoKHBhdGgpO1xuICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBwYWNrYWdlLmpzb24gZm9yIFwiJHtwYXRofVwiYCk7XG4gICAgfVxuXG4gICAgZ2V0IGFsaWFzZXMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLiNhbGlhc2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiNhbGlhc2VzO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4jYWxpYXNlcyA9IHtcbiAgICAgICAgICAgIC4uLlBhY2thZ2UubWF5YmVGb3JQYXRoKGRpcm5hbWUodGhpcy5wYXRoKSk/LmFsaWFzZXMsXG4gICAgICAgICAgICAuLi50aGlzLmpzb24uaW1wb3J0cyxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy4jYWxpYXNlcztcbiAgICB9XG5cbiAgICAjbWF5YmVTdGF0KHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gbWF5YmVTdGF0U3luYyh0aGlzLnJlc29sdmUocGF0aCkpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUGFja2FnZUpzb24gPSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBpbXBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn07XG5cbmxldCB3b3JraW5nRGlyID0gXCIuXCI7XG5sZXQgd29ya3NwYWNlOiBQYWNrYWdlIHwgdW5kZWZpbmVkO1xubGV0IHRvb2xzOiBQYWNrYWdlIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBmaW5kKHN0YXJ0RGlyOiBzdHJpbmcsIHNlbGVjdG9yOiAocGtnOiBQYWNrYWdlKSA9PiBib29sZWFuKTogUGFja2FnZSB7XG4gICAgbGV0IHBrZyA9IG5ldyBQYWNrYWdlKHsgcGF0aDogc3RhcnREaXIgfSk7XG4gICAgd2hpbGUgKCFzZWxlY3Rvcihwa2cpKSB7XG4gICAgICAgIHBrZyA9IG5ldyBQYWNrYWdlKHsgcGF0aDogZGlybmFtZShwa2cucGF0aCkgfSk7XG4gICAgfVxuICAgIHJldHVybiBwa2c7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdEZvcm1hdHMoanNvbjogYW55KSB7XG4gICAgbGV0IGVzbTogYm9vbGVhbiwgY2pzOiBib29sZWFuO1xuXG4gICAgaWYgKGpzb24udHlwZSA9PT0gXCJtb2R1bGVcIikge1xuICAgICAgICBlc20gPSB0cnVlO1xuICAgICAgICBjanMgPVxuICAgICAgICAgICAgKGpzb24ubWFpbiAhPT0gdW5kZWZpbmVkICYmIGpzb24ubW9kdWxlICE9PSB1bmRlZmluZWQpIHx8XG4gICAgICAgICAgICAhIU9iamVjdC52YWx1ZXMoanNvbi5leHBvcnRzID8/IHt9KS5maW5kKChleHA6IGFueSkgPT4gZXhwLnJlcXVpcmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNqcyA9IHRydWU7XG4gICAgICAgIGVzbSA9ICEhanNvbi5tb2R1bGUgfHwgISFPYmplY3QudmFsdWVzKGpzb24uZXhwb3J0cyA/PyB7fSkuZmluZCgoZXhwOiBhbnkpID0+IGV4cC5pbXBvcnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7IGVzbSwgY2pzIH07XG59XG5cbmZ1bmN0aW9uIGZpbmRFeHBvcnRDb25kaXRpb24oZGV0YWlsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCB0eXBlOiBcImVzbVwiIHwgXCJjanNcIik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHR5cGUgPT09IFwiZXNtXCIgJiYgZGV0YWlsLmltcG9ydCkge1xuICAgICAgICBsZXQgZXhwID0gZGV0YWlsLmltcG9ydDtcbiAgICAgICAgaWYgKGV4cCAmJiB0eXBlb2YgZXhwICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBleHAgPSBmaW5kRXhwb3J0Q29uZGl0aW9uKGV4cCwgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cCkge1xuICAgICAgICAgICAgcmV0dXJuIGV4cDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBleHAgPSBkZXRhaWwucmVxdWlyZSA/PyBkZXRhaWwubm9kZSA/PyBkZXRhaWwuZGVmYXVsdDtcbiAgICBpZiAoZXhwICYmIHR5cGVvZiBleHAgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZXhwID0gZmluZEV4cG9ydENvbmRpdGlvbihleHAsIHR5cGUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXhwID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBleHA7XG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLFNBQVMsWUFBWSxjQUFjLGdCQUFnQjtBQUNuRCxTQUFTLFNBQVMsVUFBVSxNQUFNLGlCQUFpQjtBQUNuRCxTQUFTLFNBQVMsTUFBTSxVQUFVLGVBQWU7QUFDakQsU0FBUyxhQUFhLHVCQUF1QjtBQUM3QyxTQUFTLFVBQVUsbUJBQW1CLHFCQUFxQjtBQUMzRCxTQUFTLGdCQUFnQjtBQUN6QixTQUFTLGlCQUFpQjtBQUVuQixNQUFNLDBCQUEwQixNQUFNO0FBQUM7QUFFdkMsTUFBTSxjQUFjO0FBQ3BCLE1BQU0sZUFBZTtBQUU1QixNQUFNLGlCQUFpQixDQUFDO0FBRXhCLFNBQVMsU0FBUyxVQUFrQixPQUFlLEtBQUssT0FBZ0I7QUFDcEUsU0FBTyxRQUFRLElBQUk7QUFDbkIsU0FBTyxNQUFNO0FBQ1QsVUFBTSxPQUFPO0FBQUEsTUFBZ0IsQ0FBQyxVQUFVLFNBQVM7QUFBQSxNQUFHLE1BQ2hELEtBQUssTUFBTSxhQUFhLFFBQVEsTUFBTSxRQUFRLENBQUMsRUFBRSxTQUFTLENBQUM7QUFBQSxJQUMvRDtBQUNBLFFBQUksTUFBTTtBQUNOLFVBQUksVUFBVSxVQUFhLEtBQUssU0FBUyxPQUFPO0FBQzVDLGVBQU8sRUFBRSxNQUFNLE1BQU0sS0FBSztBQUFBLE1BQzlCO0FBQUEsSUFDSjtBQUNBLFVBQU0sU0FBUyxRQUFRLElBQUk7QUFDM0IsUUFBSSxXQUFXLE1BQU07QUFDakIsWUFBTSxJQUFJLGtCQUFrQixvQkFBb0IsU0FBUyxRQUFRLEVBQUU7QUFBQSxJQUN2RTtBQUNBLFdBQU87QUFBQSxFQUNYO0FBQ0o7QUFFQSxTQUFTLFlBQVksTUFB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QUFFQSxTQUFLLFdBQVc7QUFBQSxNQUNaLEdBQUcsUUFBUSxhQUFhLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRztBQUFBLE1BQzdDLEdBQUcsS0FBSyxLQUFLO0FBQUEsSUFDakI7QUFFQSxXQUFPLEtBQUs7QUFBQSxFQUNoQjtBQUFBLEVBRUEsV0FBVyxNQUFjO0FBQ3JCLFdBQU8sY0FBYyxLQUFLLFFBQVEsSUFBSSxDQUFDO0FBQUEsRUFDM0M7QUFDSjtBQVNBLElBQUksYUFBYTtBQUNqQixJQUFJO0FBQ0osSUFBSTtBQUVKLFNBQVMsS0FBSyxVQUFrQixVQUE4QztBQUMxRSxNQUFJLE1BQU0sSUFBSSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDeEMsU0FBTyxDQUFDLFNBQVMsR0FBRyxHQUFHO0FBQ25CLFVBQU0sSUFBSSxRQUFRLEVBQUUsTUFBTSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7QUFBQSxFQUNqRDtBQUNBLFNBQU87QUFDWDtBQUVBLFNBQVMsY0FBYyxNQUFXO0FBQzlCLE1BQUksS0FBYztBQUVsQixNQUFJLEtBQUssU0FBUyxVQUFVO0FBQ3hCLFVBQU07QUFDTixVQUNLLEtBQUssU0FBUyxVQUFhLEtBQUssV0FBVyxVQUM1QyxDQUFDLENBQUMsT0FBTyxPQUFPLEtBQUssV0FBVyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBYSxJQUFJLE9BQU87QUFBQSxFQUMxRSxPQUFPO0FBQ0gsVUFBTTtBQUNOLFVBQU0sQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsT0FBTyxPQUFPLEtBQUssV0FBVyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBYSxJQUFJLE1BQU07QUFBQSxFQUM1RjtBQUVBLFNBQU8sRUFBRSxLQUFLLElBQUk7QUFDdEI7QUFFQSxTQUFTLG9CQUFvQixRQUE2QixNQUF5QztBQUMvRixNQUFJLFNBQVMsU0FBUyxPQUFPLFFBQVE7QUFDakMsUUFBSUcsT0FBTSxPQUFPO0FBQ2pCLFFBQUlBLFFBQU8sT0FBT0EsU0FBUSxVQUFVO0FBQ2hDLE1BQUFBLE9BQU0sb0JBQW9CQSxNQUFLLElBQUk7QUFBQSxJQUN2QztBQUNBLFFBQUlBLE1BQUs7QUFDTCxhQUFPQTtBQUFBLElBQ1g7QUFBQSxFQUNKO0FBRUEsTUFBSSxNQUFNLE9BQU8sV0FBVyxPQUFPLFFBQVEsT0FBTztBQUNsRCxNQUFJLE9BQU8sT0FBTyxRQUFRLFVBQVU7QUFDaEMsVUFBTSxvQkFBb0IsS0FBSyxJQUFJO0FBQUEsRUFDdkM7QUFFQSxNQUFJLE9BQU8sUUFBUSxVQUFVO0FBQ3pCLFdBQU87QUFBQSxFQUNYO0FBQ0o7IiwKICAibmFtZXMiOiBbInBhdGhzIiwgImZpbmQiLCAicGF0aCIsICJyZXN1bHQiLCAiZXhwIl0KfQo=
419
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcGFja2FnZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjItMjAyNCBNYXR0ZXIuanMgQXV0aG9yc1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMsIHN0YXRTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyByZWFkZGlyLCByZWFkRmlsZSwgc3RhdCwgd3JpdGVGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZWxhdGl2ZSwgcmVzb2x2ZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBpZ25vcmVFcnJvciwgaWdub3JlRXJyb3JTeW5jIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgeyBnbG9iU3luYywgaXNGaWxlLCBtYXliZVJlYWRKc29uU3luYywgbWF5YmVTdGF0U3luYyB9IGZyb20gXCIuL2ZpbGUuanNcIjtcbmltcG9ydCB7IFByb2dyZXNzIH0gZnJvbSBcIi4vcHJvZ3Jlc3MuanNcIjtcbmltcG9ydCB7IHRvb2xzUGF0aCB9IGZyb20gXCIuL3Rvb2xzLXBhdGguY2pzXCI7XG5cbmV4cG9ydCBjbGFzcyBKc29uTm90Rm91bmRFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCBjb25zdCBDT05GSUdfUEFUSCA9IGBzcmMvYnVpbGQuY29uZmlnLnRzYDtcbmV4cG9ydCBjb25zdCBDT0RFR0VOX1BBVEggPSBgY29kZWdlbmA7XG5cbmNvbnN0IHBhY2thZ2VGb3JQYXRoID0ge30gYXMgUmVjb3JkPHN0cmluZywgUGFja2FnZSB8IHVuZGVmaW5lZCB8IG51bGw+O1xuXG5mdW5jdGlvbiBmaW5kSnNvbihmaWxlbmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcgPSBcIi5cIiwgdGl0bGU/OiBzdHJpbmcpIHtcbiAgICBwYXRoID0gcmVzb2x2ZShwYXRoKTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBjb25zdCBqc29uID0gaWdub3JlRXJyb3JTeW5jKFtcIkVOT0VOVFwiLCBcIkVOT1RESVJcIl0sICgpID0+XG4gICAgICAgICAgICBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhyZXNvbHZlKHBhdGgsIGZpbGVuYW1lKSkudG9TdHJpbmcoKSksXG4gICAgICAgICk7XG4gICAgICAgIGlmIChqc29uKSB7XG4gICAgICAgICAgICBpZiAodGl0bGUgPT09IHVuZGVmaW5lZCB8fCBqc29uLm5hbWUgPT09IHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcm9vdDogcGF0aCwganNvbiB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUocGF0aCk7XG4gICAgICAgIGlmIChwYXJlbnQgPT09IHBhdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBKc29uTm90Rm91bmRFcnJvcihgQ291bGQgbm90IGxvY2F0ZSAke3RpdGxlID8/IGZpbGVuYW1lfWApO1xuICAgICAgICB9XG4gICAgICAgIHBhdGggPSBwYXJlbnQ7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0RpcmVjdG9yeShwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gISFpZ25vcmVFcnJvclN5bmMoXCJFTk9FTlRcIiwgKCkgPT4gc3RhdFN5bmMocGF0aCkuaXNEaXJlY3RvcnkoKSk7XG59XG5cbmV4cG9ydCBjbGFzcyBQYWNrYWdlIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAganNvbjogUGFja2FnZUpzb247XG4gICAgc3VwcG9ydHNFc206IGJvb2xlYW47XG4gICAgc3VwcG9ydHNDanM6IGJvb2xlYW47XG4gICAgaGFzU3JjOiBib29sZWFuO1xuICAgIGhhc1Rlc3RzOiBib29sZWFuO1xuICAgIGhhc0NvbmZpZzogYm9vbGVhbjtcbiAgICBpc0xpYnJhcnk6IGJvb2xlYW47XG4gICAgI2FsaWFzZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgY29uc3RydWN0b3Ioe1xuICAgICAgICBwYXRoID0gXCIuXCIsXG4gICAgICAgIG5hbWUsXG4gICAgfToge1xuICAgICAgICBwYXRoPzogc3RyaW5nO1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgIH0gPSB7fSkge1xuICAgICAgICBjb25zdCB7IHJvb3QsIGpzb24gfSA9IGZpbmRKc29uKFwicGFja2FnZS5qc29uXCIsIHBhdGgsIG5hbWUpO1xuICAgICAgICB0aGlzLnBhdGggPSByb290O1xuICAgICAgICB0aGlzLmpzb24gPSBqc29uO1xuXG4gICAgICAgIGNvbnN0IHsgZXNtLCBjanMgfSA9IHNlbGVjdEZvcm1hdHModGhpcy5qc29uKTtcbiAgICAgICAgdGhpcy5zdXBwb3J0c0VzbSA9IGVzbTtcbiAgICAgICAgdGhpcy5zdXBwb3J0c0NqcyA9IGNqcztcblxuICAgICAgICB0aGlzLmhhc1NyYyA9IGlzRGlyZWN0b3J5KHRoaXMucmVzb2x2ZShcInNyY1wiKSk7XG4gICAgICAgIHRoaXMuaGFzVGVzdHMgPSBpc0RpcmVjdG9yeSh0aGlzLnJlc29sdmUoXCJ0ZXN0XCIpKTtcblxuICAgICAgICBjb25zdCByZWZzID0gbWF5YmVSZWFkSnNvblN5bmModGhpcy5yZXNvbHZlKFwidHNjb25maWcuanNvblwiKSk/LnJlZmVyZW5jZXMgYXMgdW5kZWZpbmVkIHwgeyBwYXRoOiBzdHJpbmcgfVtdO1xuICAgICAgICBpZiAocmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoIXJlZnMuZmluZChyZWYgPT4gdGhpcy5yZXNvbHZlKHJlZi5wYXRoKSA9PT0gdGhpcy5yZXNvbHZlKFwic3JjXCIpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzU3JjID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXJlZnMuZmluZChyZWYgPT4gdGhpcy5yZXNvbHZlKHJlZi5wYXRoKSA9PT0gdGhpcy5yZXNvbHZlKFwidGVzdFwiKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc1Rlc3RzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzTGlicmFyeSA9ICEhKHRoaXMuanNvbi5tYWluIHx8IHRoaXMuanNvbi5tb2R1bGUgfHwgdGhpcy5qc29uLmV4cG9ydHMpO1xuXG4gICAgICAgIHRoaXMuaGFzQ29uZmlnID0gdGhpcy5oYXNGaWxlKHRoaXMucmVzb2x2ZShDT05GSUdfUEFUSCkpO1xuICAgIH1cblxuICAgIGdldCBuYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5qc29uLm5hbWU7XG4gICAgfVxuXG4gICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmpzb24udmVyc2lvbjtcbiAgICB9XG5cbiAgICBnZXQgZXhwb3J0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuanNvbi5leHBvcnRzO1xuICAgIH1cblxuICAgIGdldCBoYXNDb2RlZ2VuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNEaXJlY3RvcnkoQ09ERUdFTl9QQVRIKTtcbiAgICB9XG5cbiAgICByZXNvbHZlKC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLnBhdGgsIC4uLnBhdGhzKTtcbiAgICB9XG5cbiAgICByZWxhdGl2ZShwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlbGF0aXZlKHRoaXMucGF0aCwgcGF0aCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2xvYihwYXR0ZXJuOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgICAgICAvLyBHbG9iIG9ubHkgdW5kZXJzdGFuZHMgZm9yd2FyZC1zbGFzaCBhcyBzZXBhcmF0b3IgYmVjYXVzZSByZWFzb25zXG4gICAgICAgIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcGF0dGVybiA9IHRoaXMucmVzb2x2ZShwYXR0ZXJuKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLm1hcChzID0+IHRoaXMucmVzb2x2ZShzKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDdXJyZW50IGdsb2IgaW1wbGVtZW50YXRpb24gaXNuJ3QgYWN0dWFsbHkgYXN5bmMgYXMgdGhpcyBpcyBmYXN0ZXIgYW5kIHdlIG9ubHkgd2FsayBzbWFsbCBkaXJlY3RvcnkgdHJlZXNcbiAgICAgICAgcmV0dXJuIGdsb2JTeW5jKHBhdHRlcm4pO1xuICAgIH1cblxuICAgIHN0YXJ0KHdoYXQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwcm9ncmVzcyA9IG5ldyBQcm9ncmVzcygpO1xuICAgICAgICBwcm9ncmVzcy5zdGFydHVwKHdoYXQsIHRoaXMpO1xuICAgICAgICByZXR1cm4gcHJvZ3Jlc3M7XG4gICAgfVxuXG4gICAgYXN5bmMgbGFzdE1vZGlmaWVkKC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0TW9kaWZpZWRBYnNvbHV0ZShwYXRocy5tYXAocCA9PiB0aGlzLnJlc29sdmUocCkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxhc3RNb2RpZmllZEFic29sdXRlKHBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICBsZXQgbXRpbWUgPSAwO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIHBhdGhzLm1hcChhc3luYyBwID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGlnbm9yZUVycm9yKFwiRU5PRU5UXCIsIGFzeW5jICgpID0+IGF3YWl0IHN0YXQocCkpO1xuICAgICAgICAgICAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCB0aGlzTXRpbWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aHMgPSAoYXdhaXQgcmVhZGRpcihwKSkubWFwKHAyID0+IHJlc29sdmUocCwgcDIpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpc010aW1lID0gYXdhaXQgdGhpcy5sYXN0TW9kaWZpZWRBYnNvbHV0ZShwYXRocyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc010aW1lID0gc3RhdHMubXRpbWVNcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNNdGltZSA+IG10aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIG10aW1lID0gdGhpc010aW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbXRpbWU7XG4gICAgfVxuXG4gICAgZ2V0IGRlcGVuZGVuY2llcygpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IEFycmF5PHN0cmluZz4oKTtcbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIFtcImRlcGVuZGVuY2llc1wiLCBcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCIsIFwiZGV2RGVwZW5kZW5jaWVzXCIsIFwicGVlckRlcGVuZGVuY2llc1wiXSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmpzb25bdHlwZV0gPT09IFwib2JqZWN0XCIgJiYgdGhpcy5qc29uW3R5cGVdICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gWy4uLnJlc3VsdCwgLi4uT2JqZWN0LmtleXModGhpcy5qc29uW3R5cGVdKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5uZXcgU2V0KHJlc3VsdCldO1xuICAgIH1cblxuICAgIGdldCB3b3Jrc3BhY2UoKSB7XG4gICAgICAgIHJldHVybiBQYWNrYWdlLndvcmtzcGFjZUZvcih0aGlzLnBhdGgpO1xuICAgIH1cblxuICAgIGdldCBpc1dvcmtzcGFjZSgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5qc29uLndvcmtzcGFjZXMpO1xuICAgIH1cblxuICAgIGdldCByb290KCk6IFBhY2thZ2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud29ya3NwYWNlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgSnNvbk5vdEZvdW5kRXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBzdGF0aWMgc2V0IHdvcmtpbmdEaXIod2Q6IHN0cmluZykge1xuICAgICAgICB3b3JraW5nRGlyID0gd2Q7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCB3b3Jrc3BhY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndvcmtzcGFjZUZvcih3b3JraW5nRGlyKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgd29ya3NwYWNlRm9yKGN3ZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghd29ya3NwYWNlKSB7XG4gICAgICAgICAgICB3b3Jrc3BhY2UgPSBmaW5kKGN3ZCwgcGtnID0+IEFycmF5LmlzQXJyYXkocGtnLmpzb24ud29ya3NwYWNlcykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3b3Jrc3BhY2U7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCB0b29scygpIHtcbiAgICAgICAgaWYgKCF0b29scykge1xuICAgICAgICAgICAgdG9vbHMgPSBuZXcgUGFja2FnZSh7IHBhdGg6IHRvb2xzUGF0aCB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9vbHM7XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbmRFeHBvcnQobmFtZTogc3RyaW5nLCB0eXBlOiBcImNqc1wiIHwgXCJlc21cIiA9IFwiZXNtXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud29ya3NwYWNlLnJlc29sdmVJbXBvcnQobmFtZSwgdHlwZSk7XG4gICAgfVxuXG4gICAgcmVzb2x2ZUV4cG9ydChuYW1lOiBzdHJpbmcsIHR5cGU6IFwiY2pzXCIgfCBcImVzbVwiID0gXCJlc21cIikge1xuICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICAgIG5hbWUgPSBgLi8ke25hbWV9YDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHBvcnREZXRhaWwgPSB0aGlzLmV4cG9ydHM/LltuYW1lXTtcblxuICAgICAgICBpZiAoZXhwb3J0RGV0YWlsKSB7XG4gICAgICAgICAgICBjb25zdCBleHAgPSBmaW5kRXhwb3J0Q29uZGl0aW9uKGV4cG9ydERldGFpbCwgdHlwZSk7XG4gICAgICAgICAgICBpZiAoZXhwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZShleHApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5hbWUgPT09IFwiLlwiKSB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJlc21cIiAmJiB0aGlzLmpzb24ubW9kdWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZSh0aGlzLmpzb24ubW9kdWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmpzb24ubWFpbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmUodGhpcy5qc29uLm1haW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBleHBvcnQgJHtuYW1lfSBpbiBwYWNrYWdlICR7dGhpcy5uYW1lfWApO1xuICAgIH1cblxuICAgIGZpbmRQYWNrYWdlKG5hbWU6IHN0cmluZykge1xuICAgICAgICBsZXQgcmVzb2x2ZUluID0gdGhpcy5wYXRoO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgaWYgKGlzRGlyZWN0b3J5KHJlc29sdmUocmVzb2x2ZUluLCBcIm5vZGVfbW9kdWxlc1wiLCBuYW1lKSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXNvbHZlSW4gPSBkaXJuYW1lKHJlc29sdmVJbik7XG4gICAgICAgICAgICBpZiAobmV4dFJlc29sdmVJbiA9PT0gcmVzb2x2ZUluKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBtb2R1bGUgJHtuYW1lfSBmcm9tICR7dGhpcy5wYXRofWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZUluID0gbmV4dFJlc29sdmVJbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQYWNrYWdlLmZvclBhdGgocmVzb2x2ZShyZXNvbHZlSW4sIFwibm9kZV9tb2R1bGVzXCIsIG5hbWUpKTtcbiAgICB9XG5cbiAgICByZXNvbHZlSW1wb3J0KG5hbWU6IHN0cmluZywgdHlwZTogXCJjanNcIiB8IFwiZXNtXCIgPSBcImVzbVwiKSB7XG4gICAgICAgIGNvbnN0IHNlZ21lbnRzID0gbmFtZS5zcGxpdChcIi9cIik7XG4gICAgICAgIGxldCBwYWNrYWdlTmFtZSA9IHNlZ21lbnRzLnNoaWZ0KCkgYXMgc3RyaW5nO1xuICAgICAgICBpZiAocGFja2FnZU5hbWUuc3RhcnRzV2l0aChcIkBcIikgJiYgc2VnbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYWNrYWdlTmFtZSA9IGAke3BhY2thZ2VOYW1lfS8ke3NlZ21lbnRzLnNoaWZ0KCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBrZyA9IHRoaXMuZmluZFBhY2thZ2UocGFja2FnZU5hbWUpO1xuXG4gICAgICAgIHJldHVybiBwa2cucmVzb2x2ZUV4cG9ydChzZWdtZW50cy5sZW5ndGggPyBzZWdtZW50cy5qb2luKFwiL1wiKSA6IFwiLlwiLCB0eXBlKTtcbiAgICB9XG5cbiAgICBoYXNGaWxlKHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gISF0aGlzLiNtYXliZVN0YXQocGF0aCk/LmlzRmlsZSgpO1xuICAgIH1cblxuICAgIGhhc0RpcmVjdG9yeShwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy4jbWF5YmVTdGF0KHBhdGgpPy5pc0RpcmVjdG9yeSgpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRGaWxlKHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gcmVhZEZpbGUodGhpcy5yZXNvbHZlKHBhdGgpLCBcInV0Zi04XCIpO1xuICAgIH1cblxuICAgIHJlYWRGaWxlU3luYyhwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRGaWxlU3luYyh0aGlzLnJlc29sdmUocGF0aCksIFwidXRmLThcIik7XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGVGaWxlKHBhdGg6IHN0cmluZywgY29udGVudHM6IHVua25vd24pIHtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlKHRoaXMucmVzb2x2ZShwYXRoKSwgYCR7Y29udGVudHN9YCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2F2ZSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZUZpbGUoam9pbih0aGlzLnBhdGgsIFwicGFja2FnZS5qc29uXCIpLCBKU09OLnN0cmluZ2lmeSh0aGlzLmpzb24sIHVuZGVmaW5lZCwgNCkpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRKc29uKHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgdGhpcy5yZWFkRmlsZShwYXRoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHRleHQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgZSA9IG5ldyBFcnJvcihgJHtlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKGUgYXMgRXJyb3IpLm1lc3NhZ2UgPSBgRXJyb3IgcGFyc2luZyBcIiR7dGhpcy5yZXNvbHZlKHBhdGgpfVwiOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWA7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGVKc29uKHBhdGg6IHN0cmluZywgdmFsdWU6IHt9KSB7XG4gICAgICAgIGF3YWl0IHRoaXMud3JpdGVGaWxlKHBhdGgsIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB1bmRlZmluZWQsIDQpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbWF5YmVGb3JQYXRoKHBhdGg6IHN0cmluZykge1xuICAgICAgICBmdW5jdGlvbiBmaW5kKHBhdGg6IHN0cmluZyk6IFBhY2thZ2UgfCBudWxsIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBwYWNrYWdlRm9yUGF0aFtwYXRoXTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChleGlzdHNTeW5jKGpvaW4ocGF0aCwgXCJwYWNrYWdlLmpzb25cIikpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBQYWNrYWdlKHsgcGF0aCB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmaW5kKGRpcm5hbWUocGF0aCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYWNrYWdlRm9yUGF0aFtwYXRoXSA9IHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBmaW5kKHBhdGgpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQgPz8gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHN0YXRpYyBmb3JQYXRoKHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLm1heWJlRm9yUGF0aChwYXRoKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcGFja2FnZS5qc29uIGZvciBcIiR7cGF0aH1cImApO1xuICAgIH1cblxuICAgIGdldCBhbGlhc2VzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy4jYWxpYXNlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy4jYWxpYXNlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI2FsaWFzZXMgPSB7XG4gICAgICAgICAgICAuLi5QYWNrYWdlLm1heWJlRm9yUGF0aChkaXJuYW1lKHRoaXMucGF0aCkpPy5hbGlhc2VzLFxuICAgICAgICAgICAgLi4udGhpcy5qc29uLmltcG9ydHMsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuI2FsaWFzZXM7XG4gICAgfVxuXG4gICAgZ2V0IG1vZHVsZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RNb2R1bGVzKGZhbHNlKTtcbiAgICB9XG5cbiAgICBnZXQgc291cmNlTW9kdWxlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdE1vZHVsZXModHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbWFwIG9mIG1vZHVsZSBuYW1lIC0+IGltcGxlbWVudGF0aW9uIGZpbGUuICBJZiBcInNvdXJjZVwiIGlzIHRydWUsIHNlYXJjaGVzIHNvdXJjZSBmaWxlcyByYXRoZXIgdGhhblxuICAgICAqIHRyYW5zcGlsZWQgZmlsZXMuICBXZSBkbyB0aGlzIHJhdGhlciB0aGFuIGZpbmRpbmcgdHJhbnNwaWxhdGlvbiBmaWxlcyB0aGVuIG1hcHBpbmcgdG8gc291cmNlIGZpbGVzIHNvIHRoaXMgd29ya3NcbiAgICAgKiBldmVuIGlmIHRoZXJlIGlzbid0IGEgYnVpbGQuXG4gICAgICovXG4gICAgbGlzdE1vZHVsZXMoc291cmNlOiBib29sZWFuLCAuLi5jb25kaXRpb25zOiBzdHJpbmdbXSkge1xuICAgICAgICBpZiAoIWNvbmRpdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25kaXRpb25zID0gW3RoaXMuc3VwcG9ydHNFc20gPyBcImltcG9ydFwiIDogXCJyZXF1aXJlXCIsIFwiZGVmYXVsdFwiXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vZHVsZXMgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgICAgIGNvbnN0IGV4cG9ydHMgPSB0aGlzLmV4cG9ydHM7XG4gICAgICAgIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIiAmJiBleHBvcnRzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBmaW5kTW9kdWxlcyhzb3VyY2UsIG5ldyBTZXQoY29uZGl0aW9ucyksIG1vZHVsZXMsIHRoaXMubmFtZSwgdGhpcy5wYXRoLCBleHBvcnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtb2R1bGVzO1xuICAgIH1cblxuICAgICNtYXliZVN0YXQocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBtYXliZVN0YXRTeW5jKHRoaXMucmVzb2x2ZShwYXRoKSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBQYWNrYWdlSnNvbiA9IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGltcG9ydHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufTtcblxubGV0IHdvcmtpbmdEaXIgPSBcIi5cIjtcbmxldCB3b3Jrc3BhY2U6IFBhY2thZ2UgfCB1bmRlZmluZWQ7XG5sZXQgdG9vbHM6IFBhY2thZ2UgfCB1bmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGZpbmQoc3RhcnREaXI6IHN0cmluZywgc2VsZWN0b3I6IChwa2c6IFBhY2thZ2UpID0+IGJvb2xlYW4pOiBQYWNrYWdlIHtcbiAgICBsZXQgcGtnID0gbmV3IFBhY2thZ2UoeyBwYXRoOiBzdGFydERpciB9KTtcbiAgICB3aGlsZSAoIXNlbGVjdG9yKHBrZykpIHtcbiAgICAgICAgcGtnID0gbmV3IFBhY2thZ2UoeyBwYXRoOiBkaXJuYW1lKHBrZy5wYXRoKSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHBrZztcbn1cblxuZnVuY3Rpb24gc2VsZWN0Rm9ybWF0cyhqc29uOiBhbnkpIHtcbiAgICBsZXQgZXNtOiBib29sZWFuLCBjanM6IGJvb2xlYW47XG5cbiAgICBpZiAoanNvbi50eXBlID09PSBcIm1vZHVsZVwiKSB7XG4gICAgICAgIGVzbSA9IHRydWU7XG4gICAgICAgIGNqcyA9XG4gICAgICAgICAgICAoanNvbi5tYWluICE9PSB1bmRlZmluZWQgJiYganNvbi5tb2R1bGUgIT09IHVuZGVmaW5lZCkgfHxcbiAgICAgICAgICAgICEhT2JqZWN0LnZhbHVlcyhqc29uLmV4cG9ydHMgPz8ge30pLmZpbmQoKGV4cDogYW55KSA9PiBleHAucmVxdWlyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY2pzID0gdHJ1ZTtcbiAgICAgICAgZXNtID0gISFqc29uLm1vZHVsZSB8fCAhIU9iamVjdC52YWx1ZXMoanNvbi5leHBvcnRzID8/IHt9KS5maW5kKChleHA6IGFueSkgPT4gZXhwLmltcG9ydCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgZXNtLCBjanMgfTtcbn1cblxuZnVuY3Rpb24gZmluZEV4cG9ydENvbmRpdGlvbihkZXRhaWw6IFJlY29yZDxzdHJpbmcsIGFueT4sIHR5cGU6IFwiZXNtXCIgfCBcImNqc1wiKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodHlwZSA9PT0gXCJlc21cIiAmJiBkZXRhaWwuaW1wb3J0KSB7XG4gICAgICAgIGxldCBleHAgPSBkZXRhaWwuaW1wb3J0O1xuICAgICAgICBpZiAoZXhwICYmIHR5cGVvZiBleHAgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGV4cCA9IGZpbmRFeHBvcnRDb25kaXRpb24oZXhwLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXhwKSB7XG4gICAgICAgICAgICByZXR1cm4gZXhwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGV4cCA9IGRldGFpbC5yZXF1aXJlID8/IGRldGFpbC5ub2RlID8/IGRldGFpbC5kZWZhdWx0O1xuICAgIGlmIChleHAgJiYgdHlwZW9mIGV4cCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICBleHAgPSBmaW5kRXhwb3J0Q29uZGl0aW9uKGV4cCwgdHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHAgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIGV4cDtcbiAgICB9XG59XG5cbnR5cGUgQ29uZGl0aW9ucyA9IHsgW25hbWU6IHN0cmluZ106IEV4cG9ydHMgfTtcblxudHlwZSBFeHBvcnRzID0gc3RyaW5nIHwgQ29uZGl0aW9ucyB8IFJlY29yZDxzdHJpbmcsIENvbmRpdGlvbnM+O1xuXG5mdW5jdGlvbiBmaW5kTW9kdWxlcyhcbiAgICBzb3VyY2U6IGJvb2xlYW4sXG4gICAgY29uZGl0aW9uczogU2V0PHN0cmluZz4sXG4gICAgdGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBleHBvcnRzOiBFeHBvcnRzLFxuKSB7XG4gICAgaWYgKHR5cGVvZiBleHBvcnRzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGFkZE1vZHVsZUdsb2JzKHNvdXJjZSwgdGFyZ2V0LCBwcmVmaXgsIHBhdGgsIGV4cG9ydHMpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShleHBvcnRzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGV4cG9ydHMpIHtcbiAgICAgICAgICAgIGZpbmRNb2R1bGVzKHNvdXJjZSwgY29uZGl0aW9ucywgdGFyZ2V0LCBwcmVmaXgsIHBhdGgsIGVudHJ5KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIgJiYgZXhwb3J0cyAhPT0gbnVsbCkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRDb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZXhwb3J0cykge1xuICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgICAgICAgICAgIGZpbmRNb2R1bGVzKHNvdXJjZSwgY29uZGl0aW9ucywgdGFyZ2V0LCBqb2luKHByZWZpeCwga2V5KSwgcGF0aCwgZXhwb3J0c1trZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXNlbGVjdGVkQ29uZGl0aW9uICYmIGNvbmRpdGlvbnMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBmaW5kTW9kdWxlcyhzb3VyY2UsIGNvbmRpdGlvbnMsIHRhcmdldCwgcHJlZml4LCBwYXRoLCBleHBvcnRzW2tleV0pO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29uZGl0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1hbGZvcm1lZCBleHBvcnRzIGZpZWxkIGluIHBhY2thZ2UuanNvblwiKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZE1vZHVsZUdsb2JzKHNvdXJjZTogYm9vbGVhbiwgdGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBuYW1lOiBzdHJpbmcsIGJhc2U6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKSB7XG4gICAgbGV0IHBhdGggPSBqb2luKGJhc2UsIHBhdHRlcm4pO1xuICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgvXFwvZGlzdFxcLyg/OmVzbXxjanMpXFwvLywgXCIvc3JjL1wiKTtcbiAgICB9XG5cbiAgICBpZiAobmFtZS5pbmNsdWRlcyhcIipcIikpIHtcbiAgICAgICAgLy8gV2lsZGNhcmRcbiAgICAgICAgaWYgKCFuYW1lLmVuZHNXaXRoKFwiLypcIikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgV2lsZGNhcmQgaW4gbW9kdWxlICR7bmFtZX0gZG9lcyBub3QgYXBwZWFyIGFzIGZpbmFsIHBhdGggc2VnbWVudGApO1xuICAgICAgICB9XG5cbiAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKDAsIG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICAgIGNvbnN0IHBhdGhzID0gZ2xvYlN5bmMoc291cmNlID8gcGF0aC5yZXBsYWNlKC9cXC5qcyQvLCBcIi57dHMsanMsY2pzLG1qc31cIikgOiBwYXRoKTtcbiAgICAgICAgaWYgKCFwYXRocy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gbWF0Y2ggZm9yIG1vZHVsZSAke25hbWV9IHBhdHRlcm4gJHtwYXR0ZXJufWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW3ByZWZpeCwgc3VmZml4XSA9IHBhdGguc3BsaXQoL1xcKisvKTtcbiAgICAgICAgY29uc3QgcHJlZml4TGVuZ3RoID0gcHJlZml4ID09PSB1bmRlZmluZWQgPyAwIDogcHJlZml4Lmxlbmd0aDtcbiAgICAgICAgY29uc3Qgc3VmZml4TGVuZ3RoID0gc3VmZml4ID09PSB1bmRlZmluZWQgPyAwIDogc3VmZml4Lmxlbmd0aDtcblxuICAgICAgICBmb3IgKGNvbnN0IHRoaXNQYXRoIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBjb25zdCBxdWFsaWZpZXIgPSB0aGlzUGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCB0aGlzUGF0aC5sZW5ndGggLSBzdWZmaXhMZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgdGhpc05hbWUgPSBqb2luKG5hbWUsIHF1YWxpZmllcik7XG4gICAgICAgICAgICB0YXJnZXRbdGhpc05hbWVdID0gdGhpc1BhdGg7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBhdGguaW5jbHVkZXMoXCIqXCIpKSB7XG4gICAgICAgIC8vIEEgd2lsZGNhcmQgcGF0aCBpcyBvbmx5IHZhbGlkIHdpdGggd2lsZGNhcmQgbmFtZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdpbGRjYXJkIGluIG1vZHVsZSBwYXRoIFwiJHtwYXRofVwiIGJ1dCBub3QgaW4gbW9kdWxlIFwiJHtuYW1lfVwiYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm8gd2lsZGNhcmQgLS0gcmVtb3ZlIGRpcmVjdG9yeVxuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC9cXC8oPzpleHBvcnR8aW5kZXgpJC8sIFwiXCIpO1xuXG4gICAgICAgIC8vIExvb2sgZm9yIHNvdXJjZSBpZiBmaWxlIGlzbid0IHByZXNlbnRcbiAgICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICAgIGlmIChpc0ZpbGUocGF0aCkpIHtcbiAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2UgJiYgcGF0aC5lbmRzV2l0aChcIi5qc1wiKSkge1xuICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgvXFwuanMkLywgXCIudHNcIik7XG4gICAgICAgICAgICBpZiAoaXNGaWxlKHBhdGgpKSB7XG4gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgXCIke25hbWV9XCIgcGF0aCBcIiR7cGF0aH1cIiBub3QgZm91bmRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldFtuYW1lXSA9IHBhdGg7XG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLFNBQVMsWUFBWSxjQUFjLGdCQUFnQjtBQUNuRCxTQUFTLFNBQVMsVUFBVSxNQUFNLGlCQUFpQjtBQUNuRCxTQUFTLFNBQVMsTUFBTSxVQUFVLGVBQWU7QUFDakQsU0FBUyxhQUFhLHVCQUF1QjtBQUM3QyxTQUFTLFVBQVUsUUFBUSxtQkFBbUIscUJBQXFCO0FBQ25FLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsaUJBQWlCO0FBRW5CLE1BQU0sMEJBQTBCLE1BQU07QUFBQztBQUV2QyxNQUFNLGNBQWM7QUFDcEIsTUFBTSxlQUFlO0FBRTVCLE1BQU0saUJBQWlCLENBQUM7QUFFeEIsU0FBUyxTQUFTLFVBQWtCLE9BQWUsS0FBSyxPQUFnQjtBQUNwRSxTQUFPLFFBQVEsSUFBSTtBQUNuQixTQUFPLE1BQU07QUFDVCxVQUFNLE9BQU87QUFBQSxNQUFnQixDQUFDLFVBQVUsU0FBUztBQUFBLE1BQUcsTUFDaEQsS0FBSyxNQUFNLGFBQWEsUUFBUSxNQUFNLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQztBQUFBLElBQy9EO0FBQ0EsUUFBSSxNQUFNO0FBQ04sVUFBSSxVQUFVLFVBQWEsS0FBSyxTQUFTLE9BQU87QUFDNUMsZUFBTyxFQUFFLE1BQU0sTUFBTSxLQUFLO0FBQUEsTUFDOUI7QUFBQSxJQUNKO0FBQ0EsVUFBTSxTQUFTLFFBQVEsSUFBSTtBQUMzQixRQUFJLFdBQVcsTUFBTTtBQUNqQixZQUFNLElBQUksa0JBQWtCLG9CQUFvQixTQUFTLFFBQVEsRUFBRTtBQUFBLElBQ3ZFO0FBQ0EsV0FBTztBQUFBLEVBQ1g7QUFDSjtBQUVBLFNBQVMsWUFBWSxN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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/package.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["paths", "find", "path", "result", "exp"]
6
6
  }
@@ -16,6 +16,7 @@ export declare class Progress {
16
16
  success(text: string): void;
17
17
  failure(text: string): void;
18
18
  info(label: string, value?: any): void;
19
+ warn(text: string): void;
19
20
  shutdown(): void;
20
21
  refresh(): void;
21
22
  run(what: string, fn: () => void | Promise<void>): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/util/progress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAuEvC,qBAAa,QAAQ;;IACjB,MAAM,kBAA2B;;IAUjC,SAAS,CAAC,IAAI,EAAE,OAAO;IAIvB,WAAW,CAAC,IAAI,EAAE,OAAO;IAIzB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO;IAI9B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO;IAcxD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAsBnC,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAO/B,QAAQ;IAQR,OAAO;IAuBD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAsBzD;AAED,yBAAiB,QAAQ,CAAC;IACtB,KAAY,MAAM;QACd,OAAO,YAAY;QACnB,OAAO,YAAY;QACnB,OAAO,YAAY;QACnB,OAAO,YAAY;KACtB;CACJ"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/util/progress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAmEvC,qBAAa,QAAQ;;IACjB,MAAM,kBAA2B;;IAUjC,SAAS,CAAC,IAAI,EAAE,OAAO;IAIvB,WAAW,CAAC,IAAI,EAAE,OAAO;IAIzB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO;IAI9B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO;IAcxD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAsBnC,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAO/B,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,QAAQ;IAQR,OAAO;IAuBD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAsBzD;AAED,yBAAiB,QAAQ,CAAC;IACtB,KAAY,MAAM;QACd,OAAO,YAAY;QACnB,OAAO,YAAY;QACnB,OAAO,YAAY;QACnB,OAAO,YAAY;KACtB;CACJ"}
@@ -28,9 +28,7 @@ const writeStatus = (() => {
28
28
  if (!payload.length) {
29
29
  return true;
30
30
  }
31
- needNewline = // Update ends in newline
32
- payload[payload.length - 1] === "\n" && // Update ends in carriage return
33
- payload[payload.length - 1] !== "\r";
31
+ needNewline = payload[payload.length - 1] !== "\n" && payload[payload.length - 1] !== "\r";
34
32
  return actualWrite.call(stream, payload, ...params);
35
33
  };
36
34
  }
@@ -123,6 +121,10 @@ class Progress {
123
121
  }
124
122
  writeStatus(` ${colors.dim("\u2023")} ${label}`);
125
123
  }
124
+ warn(text) {
125
+ stdout.write(` ${colors.yellow("Warning:")} ${text}
126
+ `);
127
+ }
126
128
  shutdown() {
127
129
  if (this.#refreshInterval) {
128
130
  clearInterval(this.#refreshInterval);
@@ -199,4 +201,4 @@ function filterAnsi(str, len) {
199
201
  export {
200
202
  Progress
201
203
  };
202
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcHJvZ3Jlc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjQgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IGNvbG9ycyBmcm9tIFwiYW5zaS1jb2xvcnNcIjtcbmltcG9ydCB7IHN0ZGVyciwgc3Rkb3V0IH0gZnJvbSBcInByb2Nlc3NcIjtcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tIFwiLi9wYWNrYWdlLmpzXCI7XG5cbmNvbnN0IENMRUFSID0gXCJcXHgxYltLXCI7XG5jb25zdCBTUElOTkVSID0gXCJcdTI1RDBcdTI1RDNcdTI1RDFcdTI1RDJcIjsgLy9cIlx1Mjg1Q1x1MjgxNFx1MjgyMlx1MjhBM1wiOyAvL1tcIlx1MjZBQlx1RkUwRVwiLCBcIlx1MjZBQVx1RkUwRVwiXTsgXCJcdTI4NDhcdTI4MTRcdTI4MjJcdTI4ODFcIjtcbmNvbnN0IFNQSU5ORVJfSU5URVJWQUwgPSAxMDA7XG5cbmZ1bmN0aW9uIHBhY2thZ2VJZGVudGl0eShwa2c6IFBhY2thZ2UpIHtcbiAgICBsZXQgaWRlbnRpdHkgPSBjb2xvcnMuYm9sZChwa2cuanNvbi5uYW1lKTtcbiAgICBpZiAocGtnLmpzb24udmVyc2lvbikge1xuICAgICAgICBpZGVudGl0eSA9IGAke2lkZW50aXR5fUAke3BrZy5qc29uLnZlcnNpb259YDtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50aXR5O1xufVxuXG4vKipcbiAqIEludGVyY2VwdCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBzdGRvdXQgc28gd2UgY2FuIGVuc3VyZSBvdXIgdXBkYXRlcyBhcHBlYXIgb24gZGlmZmVyZW50IGxpbmVzIGZyb20gb3RoZXIgb3V0cHV0LlxuICovXG5jb25zdCB3cml0ZVN0YXR1cyA9ICgoKSA9PiB7XG4gICAgbGV0IGxhc3RTdGF0dXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBsZXQgbmVlZE5ld2xpbmUgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGludGVyY2VwdChzdHJlYW06IE5vZGVKUy5Xcml0ZVN0cmVhbSkge1xuICAgICAgICBjb25zdCBhY3R1YWxXcml0ZSA9IHN0cmVhbS53cml0ZTtcbiAgICAgICAgc3RyZWFtLndyaXRlID0gKHBheWxvYWQ6IFVpbnQ4QXJyYXkgfCBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgYWN0dWFsV3JpdGUuY2FsbChzdHJlYW0sIFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgIGxhc3RTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVxdWlyZSBhIG5ld2xpbmUgZm9yIHN0YXR1cyB1cGRhdGVzIGFueSB0aW1lIHRoZSBjdXJzb3IgZG9lcyBub3QgZW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lXG4gICAgICAgICAgICBuZWVkTmV3bGluZSA9XG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGVuZHMgaW4gbmV3bGluZVxuICAgICAgICAgICAgICAgIHBheWxvYWRbcGF5bG9hZC5sZW5ndGggLSAxXSA9PT0gXCJcXG5cIiAmJlxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBlbmRzIGluIGNhcnJpYWdlIHJldHVyblxuICAgICAgICAgICAgICAgIHBheWxvYWRbcGF5bG9hZC5sZW5ndGggLSAxXSAhPT0gXCJcXHJcIjtcblxuICAgICAgICAgICAgcmV0dXJuIGFjdHVhbFdyaXRlLmNhbGwoc3RyZWFtLCBwYXlsb2FkLCAuLi5wYXJhbXMpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGludGVyY2VwdChzdGRvdXQpO1xuICAgIGludGVyY2VwdChzdGRlcnIpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHdyaXRlU3RhdHVzKHRleHQ6IHN0cmluZywgd2lsbE92ZXJ3cml0ZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBwcm9jZXNzLnN0ZG91dC5jb2x1bW5zO1xuICAgICAgICBpZiAod2lsbE92ZXJ3cml0ZSAmJiBjb2x1bW5zICE9PSB1bmRlZmluZWQgJiYgdGV4dC5sZW5ndGggPiBjb2x1bW5zIC0gMikge1xuICAgICAgICAgICAgdGV4dCA9IGZpbHRlckFuc2kodGV4dCwgY29sdW1ucyAtIDIpICsgXCJcdTIwMjZcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRleHQgKz0gd2lsbE92ZXJ3cml0ZSA/IFwiXFxyXCIgOiBcIlxcblwiO1xuICAgICAgICBpZiAodGV4dCA9PT0gbGFzdFN0YXR1cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxhc3RTdGF0dXMpIHtcbiAgICAgICAgICAgIGxhc3RTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBzdGRvdXQud3JpdGUoQ0xFQVIpO1xuICAgICAgICB9IGVsc2UgaWYgKG5lZWROZXdsaW5lICYmICF0ZXh0LnN0YXJ0c1dpdGgoXCJcXG5cIikpIHtcbiAgICAgICAgICAgIHN0ZG91dC53cml0ZShcIlxcblwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0ZG91dC53cml0ZSh0ZXh0KTtcblxuICAgICAgICBsYXN0U3RhdHVzID0gdGV4dDtcbiAgICB9O1xufSkoKTtcblxuZXhwb3J0IGNsYXNzIFByb2dyZXNzIHtcbiAgICBzdGF0dXMgPSBQcm9ncmVzcy5TdGF0dXMuU3RhcnR1cDtcbiAgICAjb25nb2luZ1RleHQ/OiBzdHJpbmc7XG4gICAgI3N0YXJ0PzogbnVtYmVyO1xuICAgICNzcGlubmVyID0gXCJcdTI5RDdcIjtcbiAgICAjcmVmcmVzaEludGVydmFsPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuICAgICNzcGlubmVyUG9zaXRpb24gPSAwO1xuICAgICNzcGlubmVyV2luZG93PzogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgZW1waGFzaXplKHRleHQ6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNvbG9ycy5ib2xkKGAke3RleHR9YCk7XG4gICAgfVxuXG4gICAgZGVlbXBoYXNpemUodGV4dDogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gY29sb3JzLmRpbShgJHt0ZXh0fWApO1xuICAgIH1cblxuICAgIHNraXAod2h5OiBzdHJpbmcsIHBrZzogUGFja2FnZSkge1xuICAgICAgICBzdGRvdXQud3JpdGUoY29sb3JzLmRpbShgU2tpcCAke3BhY2thZ2VJZGVudGl0eShwa2cpfTogJHt3aHl9XFxuXFxuYCkpO1xuICAgIH1cblxuICAgIHN0YXJ0dXAod2hhdDogc3RyaW5nLCBwa2dPck92ZXJ3cml0ZT86IFBhY2thZ2UgfCBib29sZWFuKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLnN0ZG91dC5pc1RUWSkge1xuICAgICAgICAgICAgdGhpcy4jdXBkYXRlU3Bpbm5lcigpO1xuICAgICAgICAgICAgdGhpcy4jcmVmcmVzaEludGVydmFsID0gc2V0SW50ZXJ2YWwodGhpcy5yZWZyZXNoLmJpbmQodGhpcyksIFNQSU5ORVJfSU5URVJWQUwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9ncmVzcy5TdGF0dXMuU3RhcnR1cDtcbiAgICAgICAgaWYgKHBrZ09yT3ZlcndyaXRlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHBrZ09yT3ZlcndyaXRlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgd3JpdGVTdGF0dXMod2hhdCwgcGtnT3JPdmVyd3JpdGUgPz8gdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3cml0ZVN0YXR1cyhgJHt3aGF0fSAke3BhY2thZ2VJZGVudGl0eShwa2dPck92ZXJ3cml0ZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGUodGV4dDogc3RyaW5nLCBleHRyYT86IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5PbmdvaW5nO1xuICAgICAgICBsZXQgZHVyYXRpb247XG4gICAgICAgIGlmICh0aGlzLiNzdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLiNzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgZHVyYXRpb24gPSBcIlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB0aGlzLiNkdXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBleHRyYSA9IGV4dHJhID09PSB1bmRlZmluZWQgPyBcIlwiIDogYCAke2V4dHJhfWA7XG4gICAgICAgIHRoaXMuI29uZ29pbmdUZXh0ID0gYCR7dGV4dH0gJHtkdXJhdGlvbn0ke2V4dHJhfWA7XG4gICAgICAgIHRoaXMuI3dyaXRlT25nb2luZygpO1xuICAgIH1cblxuICAgICN3cml0ZU9uZ29pbmcoKSB7XG4gICAgICAgIGlmICghdGhpcy4jb25nb2luZ1RleHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7Y29sb3JzLnllbGxvdyh0aGlzLiNzcGlubmVyKX0gJHt0aGlzLiNvbmdvaW5nVGV4dH1gLCB0cnVlKTtcbiAgICB9XG5cbiAgICBzdWNjZXNzKHRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5TdWNjZXNzO1xuICAgICAgICB3cml0ZVN0YXR1cyhgICAke2NvbG9ycy5ncmVlbihcIlx1MjcxM1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZhaWx1cmUodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLkZhaWx1cmU7XG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7Y29sb3JzLnJlZEJyaWdodChcIlx1MjcxN1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGluZm8obGFiZWw6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBsYWJlbCA9IGAke2NvbG9ycy5kaW0obGFiZWwpfSAke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtjb2xvcnMuZGltKFwiXHUyMDIzXCIpfSAke2xhYmVsfWApO1xuICAgIH1cblxuICAgIHNodXRkb3duKCkge1xuICAgICAgICBpZiAodGhpcy4jcmVmcmVzaEludGVydmFsKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuI3JlZnJlc2hJbnRlcnZhbCk7XG4gICAgICAgICAgICB0aGlzLiNyZWZyZXNoSW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdGF0dXMoXCJcIik7XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgaWYgKHRoaXMuI3VwZGF0ZVNwaW5uZXIoKSkge1xuICAgICAgICAgICAgdGhpcy4jd3JpdGVPbmdvaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjdXBkYXRlU3Bpbm5lcigpIHtcbiAgICAgICAgaWYgKCFzdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgaWYgKHRoaXMuI3NwaW5uZXJXaW5kb3cgPT09IHdpbmRvdykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI3NwaW5uZXJXaW5kb3cgPSB3aW5kb3c7XG5cbiAgICAgICAgdGhpcy4jc3Bpbm5lclBvc2l0aW9uID0gKHRoaXMuI3NwaW5uZXJQb3NpdGlvbiArIDEpICUgU1BJTk5FUi5sZW5ndGg7XG4gICAgICAgIHRoaXMuI3NwaW5uZXIgPSBTUElOTkVSW3RoaXMuI3NwaW5uZXJQb3NpdGlvbl07XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuKHdoYXQ6IHN0cmluZywgZm46ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB7XG4gICAgICAgIHRoaXMudXBkYXRlKHdoYXQpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZm4oKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHdoYXQpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3Mod2hhdCk7XG4gICAgfVxuXG4gICAgZ2V0ICNkdXJhdGlvbigpIHtcbiAgICAgICAgbGV0IG1zID0gdGhpcy4jc3RhcnQgPyBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuI3N0YXJ0IDogMDtcbiAgICAgICAgaWYgKG1zIDwgMTAwMCkge1xuICAgICAgICAgICAgbXMgPSBNYXRoLnJvdW5kKG1zIC8gMTApIC8gMTAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1zIDwgMTAwMDApIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC5yb3VuZChtcyAvIDEwMCkgLyAxMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC50cnVuYyhtcyAvIDEwMDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltLnllbGxvdyhgKCR7bXN9cylgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUHJvZ3Jlc3Mge1xuICAgIGV4cG9ydCBlbnVtIFN0YXR1cyB7XG4gICAgICAgIFN0YXJ0dXAgPSBcInN0YXJ0dXBcIixcbiAgICAgICAgT25nb2luZyA9IFwib25nb2luZ1wiLFxuICAgICAgICBTdWNjZXNzID0gXCJzdWNjZXNzXCIsXG4gICAgICAgIEZhaWx1cmUgPSBcImZhaWx1cmVcIixcbiAgICB9XG59XG5cbi8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjIzODU1My9ob3ctY2FuLWktdHJ1bmNhdGUtYS1zdHJpbmctdG8tYS1tYXhpbXVtLWxlbmd0aC13aXRob3V0LWJyZWFraW5nLWFuc2ktZXNjYXBlLWNvZFxuLy8gVE9ETyAtIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBzZWVtIGVudGlyZWx5IGNvcnJlY3QsIHN0aWxsIHNlZW1zIHRvIHRydW5jYXRlIHRvbyBtdWNoXG4vLyBDcm9wIHRoZSBsZW5ndGggb2YgbGluZXMsIEFOU0kgZXNjYXBlIGNvZGUgYXdhcmVcbi8vIEFsd2F5cyBvdXRwdXRzIGV2ZXJ5IGVzY2FwZSBjaGFyLCByZWdhcmRsZXNzIG9mIGxlbmd0aCAoc28gd2UgYWx3YXlzIGVuZCB1cCB3aXRoIGEgc2FuZSBzdGF0ZSlcbi8vIFZpc2libGUgY2hhcmFjdGVycyBhcmUgZmlsdGVyZWQgb3V0IG9uY2UgbGVuZ3RoIGlzIGV4Y2VlZGVkXG5mdW5jdGlvbiBmaWx0ZXJBbnNpKHN0cjogc3RyaW5nLCBsZW46IG51bWJlcikge1xuICAgIGlmICghbGVuIHx8IGxlbiA8IDEwKSByZXR1cm4gc3RyOyAvLyBwcm9iYWJseSBub3QgYSB2YWxpZCBjb25zb2xlIC0tIHNlbmQgYmFjayB0aGUgd2hvbGUgbGluZVxuICAgIGxldCBjb3VudCA9IDAsIC8vIG51bWJlciBvZiB2aXNpYmxlIGNoYXJzIG9uIGxpbmUgc28gZmFyXG4gICAgICAgIGVzYyA9IGZhbHNlLCAvLyBpbiBhbiBlc2NhcGUgc2VxdWVuY2VcbiAgICAgICAgbG9uZ2VzYyA9IGZhbHNlOyAvLyBpbiBhIG11bHRpLWNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2VcbiAgICBsZXQgb3V0cCA9IHRydWU7IC8vIHNob3VsZCBvdXRwdXQgdGhpcyBjaGFyYWN0ZXJcbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5zcGxpdChcIlwiKVxuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAvLyBmaWx0ZXIgY2hhcmFjdGVycy4uLlxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjID09IFwiW1wiKSBsb25nZXNjID0gdHJ1ZTsgLy8gaGF2ZSBzZWVuIGFuIGVzY2FwZSwgbm93ICdbJywgc3RhcnQgbXVsdGktY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChjID09IFwiXFx4MWJcIikgZXNjID0gdHJ1ZTsgLy8gc3RhcnQgb2YgZXNjYXBlIHNlcXVlbmNlXG5cbiAgICAgICAgICAgIG91dHAgPSBjb3VudCA8IGxlbiB8fCBlc2M7IC8vIGlmIGxlbmd0aCBleGNlZWRlZCwgZG9uJ3Qgb3V0cHV0IG5vbi1lc2NhcGUgY2hhcnNcbiAgICAgICAgICAgIGlmICghZXNjICYmICFsb25nZXNjKSBjb3VudCsrOyAvLyBpZiBub3QgaW4gZXNjYXBlLCBjb3VudCB2aXNpYmxlIGNoYXJcblxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjICE9IFwiXFx4MWJcIikgZXNjID0gZmFsc2U7IC8vIG91dCBvZiBzaW5nbGUgY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChsb25nZXNjICYmIGMgIT0gXCJbXCIgJiYgYyA+PSBcIkBcIiAmJiBjIDw9IFwiflwiKSB7XG4gICAgICAgICAgICAgICAgZXNjID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbG9uZ2VzYyA9IGZhbHNlO1xuICAgICAgICAgICAgfSAvLyBlbmQgb2YgbXVsdGktY2hhciBlc2NhcGVcblxuICAgICAgICAgICAgcmV0dXJuIG91dHA7IC8vIHJlc3VsdCBmb3IgZmlsdGVyXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXCIpOyAvLyBnbHVlIGNoYXJzIGJhY2sgaW50byBzdHJpbmdcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxPQUFPLFlBQVk7QUFDbkIsU0FBUyxRQUFRLGNBQWM7QUFHL0IsTUFBTSxRQUFRO0FBQ2QsTUFBTSxVQUFVO0FBQ2hCLE1BQU0sbUJBQW1CO0FBRXpCLFNBQVMsZ0JBQWdCLEtBQWM7QUFDbkMsTUFBSSxXQUFXLE9BQU8sS0FBSyxJQUFJLEtBQUssSUFBSTtBQUN4QyxNQUFJLElBQUksS0FBSyxTQUFTO0FBQ2xCLGVBQVcsR0FBRyxRQUFRLElBQUksSUFBSSxLQUFLLE9BQU87QUFBQSxFQUM5QztBQUNBLFNBQU87QUFDWDtBQUtBLE1BQU0sZUFBZSxNQUFNO0FBQ3ZCLE1BQUk7QUFDSixNQUFJLGNBQWM7QUFFbEIsV0FBUyxVQUFVLFFBQTRCO0FBQzNDLFVBQU0sY0FBYyxPQUFPO0FBQzNCLFdBQU8sUUFBUSxDQUFDLFlBQWlDLFdBQWtCO0FBQy9ELFVBQUksWUFBWTtBQUNaLG9CQUFZLEtBQUssUUFBUSxJQUFJO0FBQzdCLHFCQUFhO0FBQUEsTUFDakI7QUFFQSxVQUFJLENBQUMsUUFBUSxRQUFRO0FBQ2pCLGVBQU87QUFBQSxNQUNYO0FBR0E7QUFBQSxNQUVJLFFBQVEsUUFBUSxTQUFTLENBQUMsTUFBTTtBQUFBLE1BRWhDLFFBQVEsUUFBUSxTQUFTLENBQUMsTUFBTTtBQUVwQyxhQUFPLFlBQVksS0FBSyxRQUFRLFNBQVMsR0FBRyxNQUFNO0FBQUEsSUFDdEQ7QUFBQSxFQUNKO0FBRUEsWUFBVSxNQUFNO0FBQ2hCLFlBQVUsTUFBTTtBQUVoQixTQUFPLFNBQVNBLGFBQVksTUFBYyxnQkFBZ0IsT0FBTztBQUM3RCxVQUFNLFVBQVUsUUFB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
204
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcHJvZ3Jlc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjQgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IGNvbG9ycyBmcm9tIFwiYW5zaS1jb2xvcnNcIjtcbmltcG9ydCB7IHN0ZGVyciwgc3Rkb3V0IH0gZnJvbSBcInByb2Nlc3NcIjtcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tIFwiLi9wYWNrYWdlLmpzXCI7XG5cbmNvbnN0IENMRUFSID0gXCJcXHgxYltLXCI7XG5jb25zdCBTUElOTkVSID0gXCJcdTI1RDBcdTI1RDNcdTI1RDFcdTI1RDJcIjsgLy9cIlx1Mjg1Q1x1MjgxNFx1MjgyMlx1MjhBM1wiOyAvL1tcIlx1MjZBQlx1RkUwRVwiLCBcIlx1MjZBQVx1RkUwRVwiXTsgXCJcdTI4NDhcdTI4MTRcdTI4MjJcdTI4ODFcIjtcbmNvbnN0IFNQSU5ORVJfSU5URVJWQUwgPSAxMDA7XG5cbmZ1bmN0aW9uIHBhY2thZ2VJZGVudGl0eShwa2c6IFBhY2thZ2UpIHtcbiAgICBsZXQgaWRlbnRpdHkgPSBjb2xvcnMuYm9sZChwa2cuanNvbi5uYW1lKTtcbiAgICBpZiAocGtnLmpzb24udmVyc2lvbikge1xuICAgICAgICBpZGVudGl0eSA9IGAke2lkZW50aXR5fUAke3BrZy5qc29uLnZlcnNpb259YDtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50aXR5O1xufVxuXG4vKipcbiAqIEludGVyY2VwdCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBzdGRvdXQgc28gd2UgY2FuIGVuc3VyZSBvdXIgdXBkYXRlcyBhcHBlYXIgb24gZGlmZmVyZW50IGxpbmVzIGZyb20gb3RoZXIgb3V0cHV0LlxuICovXG5jb25zdCB3cml0ZVN0YXR1cyA9ICgoKSA9PiB7XG4gICAgbGV0IGxhc3RTdGF0dXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBsZXQgbmVlZE5ld2xpbmUgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGludGVyY2VwdChzdHJlYW06IE5vZGVKUy5Xcml0ZVN0cmVhbSkge1xuICAgICAgICBjb25zdCBhY3R1YWxXcml0ZSA9IHN0cmVhbS53cml0ZTtcbiAgICAgICAgc3RyZWFtLndyaXRlID0gKHBheWxvYWQ6IFVpbnQ4QXJyYXkgfCBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgYWN0dWFsV3JpdGUuY2FsbChzdHJlYW0sIFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgIGxhc3RTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVxdWlyZSBhIG5ld2xpbmUgZm9yIHN0YXR1cyB1cGRhdGVzIGFueSB0aW1lIHRoZSBjdXJzb3IgZG9lcyBub3QgZW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lXG4gICAgICAgICAgICBuZWVkTmV3bGluZSA9IHBheWxvYWRbcGF5bG9hZC5sZW5ndGggLSAxXSAhPT0gXCJcXG5cIiAmJiBwYXlsb2FkW3BheWxvYWQubGVuZ3RoIC0gMV0gIT09IFwiXFxyXCI7XG5cbiAgICAgICAgICAgIHJldHVybiBhY3R1YWxXcml0ZS5jYWxsKHN0cmVhbSwgcGF5bG9hZCwgLi4ucGFyYW1zKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbnRlcmNlcHQoc3Rkb3V0KTtcbiAgICBpbnRlcmNlcHQoc3RkZXJyKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiB3cml0ZVN0YXR1cyh0ZXh0OiBzdHJpbmcsIHdpbGxPdmVyd3JpdGUgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gcHJvY2Vzcy5zdGRvdXQuY29sdW1ucztcbiAgICAgICAgaWYgKHdpbGxPdmVyd3JpdGUgJiYgY29sdW1ucyAhPT0gdW5kZWZpbmVkICYmIHRleHQubGVuZ3RoID4gY29sdW1ucyAtIDIpIHtcbiAgICAgICAgICAgIHRleHQgPSBmaWx0ZXJBbnNpKHRleHQsIGNvbHVtbnMgLSAyKSArIFwiXHUyMDI2XCI7XG4gICAgICAgIH1cblxuICAgICAgICB0ZXh0ICs9IHdpbGxPdmVyd3JpdGUgPyBcIlxcclwiIDogXCJcXG5cIjtcbiAgICAgICAgaWYgKHRleHQgPT09IGxhc3RTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICBsYXN0U3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgc3Rkb3V0LndyaXRlKENMRUFSKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZWVkTmV3bGluZSAmJiAhdGV4dC5zdGFydHNXaXRoKFwiXFxuXCIpKSB7XG4gICAgICAgICAgICBzdGRvdXQud3JpdGUoXCJcXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBzdGRvdXQud3JpdGUodGV4dCk7XG5cbiAgICAgICAgbGFzdFN0YXR1cyA9IHRleHQ7XG4gICAgfTtcbn0pKCk7XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzcyB7XG4gICAgc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN0YXJ0dXA7XG4gICAgI29uZ29pbmdUZXh0Pzogc3RyaW5nO1xuICAgICNzdGFydD86IG51bWJlcjtcbiAgICAjc3Bpbm5lciA9IFwiXHUyOUQ3XCI7XG4gICAgI3JlZnJlc2hJbnRlcnZhbD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcbiAgICAjc3Bpbm5lclBvc2l0aW9uID0gMDtcbiAgICAjc3Bpbm5lcldpbmRvdz86IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIGVtcGhhc2l6ZSh0ZXh0OiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiBjb2xvcnMuYm9sZChgJHt0ZXh0fWApO1xuICAgIH1cblxuICAgIGRlZW1waGFzaXplKHRleHQ6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNvbG9ycy5kaW0oYCR7dGV4dH1gKTtcbiAgICB9XG5cbiAgICBza2lwKHdoeTogc3RyaW5nLCBwa2c6IFBhY2thZ2UpIHtcbiAgICAgICAgc3Rkb3V0LndyaXRlKGNvbG9ycy5kaW0oYFNraXAgJHtwYWNrYWdlSWRlbnRpdHkocGtnKX06ICR7d2h5fVxcblxcbmApKTtcbiAgICB9XG5cbiAgICBzdGFydHVwKHdoYXQ6IHN0cmluZywgcGtnT3JPdmVyd3JpdGU/OiBQYWNrYWdlIHwgYm9vbGVhbikge1xuICAgICAgICBpZiAocHJvY2Vzcy5zdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVNwaW5uZXIoKTtcbiAgICAgICAgICAgIHRoaXMuI3JlZnJlc2hJbnRlcnZhbCA9IHNldEludGVydmFsKHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpLCBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN0YXJ0dXA7XG4gICAgICAgIGlmIChwa2dPck92ZXJ3cml0ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBwa2dPck92ZXJ3cml0ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHdyaXRlU3RhdHVzKHdoYXQsIHBrZ09yT3ZlcndyaXRlID8/IHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd3JpdGVTdGF0dXMoYCR7d2hhdH0gJHtwYWNrYWdlSWRlbnRpdHkocGtnT3JPdmVyd3JpdGUpfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlKHRleHQ6IHN0cmluZywgZXh0cmE/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9ncmVzcy5TdGF0dXMuT25nb2luZztcbiAgICAgICAgbGV0IGR1cmF0aW9uO1xuICAgICAgICBpZiAodGhpcy4jc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy4jc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0gXCJcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0gdGhpcy4jZHVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgZXh0cmEgPSBleHRyYSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IGAgJHtleHRyYX1gO1xuICAgICAgICB0aGlzLiNvbmdvaW5nVGV4dCA9IGAke3RleHR9ICR7ZHVyYXRpb259JHtleHRyYX1gO1xuICAgICAgICB0aGlzLiN3cml0ZU9uZ29pbmcoKTtcbiAgICB9XG5cbiAgICAjd3JpdGVPbmdvaW5nKCkge1xuICAgICAgICBpZiAoIXRoaXMuI29uZ29pbmdUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB3cml0ZVN0YXR1cyhgICAke2NvbG9ycy55ZWxsb3codGhpcy4jc3Bpbm5lcil9ICR7dGhpcy4jb25nb2luZ1RleHR9YCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgc3VjY2Vzcyh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9ncmVzcy5TdGF0dXMuU3VjY2VzcztcbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtjb2xvcnMuZ3JlZW4oXCJcdTI3MTNcIil9ICR7dGV4dH0gJHt0aGlzLiNkdXJhdGlvbn1gKTtcbiAgICAgICAgdGhpcy4jc3RhcnQgPSB0aGlzLiNvbmdvaW5nVGV4dCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmYWlsdXJlKHRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5GYWlsdXJlO1xuICAgICAgICB3cml0ZVN0YXR1cyhgICAke2NvbG9ycy5yZWRCcmlnaHQoXCJcdTI3MTdcIil9ICR7dGV4dH0gJHt0aGlzLiNkdXJhdGlvbn1gKTtcbiAgICAgICAgdGhpcy4jc3RhcnQgPSB0aGlzLiNvbmdvaW5nVGV4dCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpbmZvKGxhYmVsOiBzdHJpbmcsIHZhbHVlPzogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgbGFiZWwgPSBgJHtjb2xvcnMuZGltKGxhYmVsKX0gJHt2YWx1ZX1gO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7Y29sb3JzLmRpbShcIlx1MjAyM1wiKX0gJHtsYWJlbH1gKTtcbiAgICB9XG5cbiAgICB3YXJuKHRleHQ6IHN0cmluZykge1xuICAgICAgICBzdGRvdXQud3JpdGUoYCAgICAke2NvbG9ycy55ZWxsb3coXCJXYXJuaW5nOlwiKX0gJHt0ZXh0fVxcbmApO1xuICAgIH1cblxuICAgIHNodXRkb3duKCkge1xuICAgICAgICBpZiAodGhpcy4jcmVmcmVzaEludGVydmFsKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuI3JlZnJlc2hJbnRlcnZhbCk7XG4gICAgICAgICAgICB0aGlzLiNyZWZyZXNoSW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdGF0dXMoXCJcIik7XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgaWYgKHRoaXMuI3VwZGF0ZVNwaW5uZXIoKSkge1xuICAgICAgICAgICAgdGhpcy4jd3JpdGVPbmdvaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjdXBkYXRlU3Bpbm5lcigpIHtcbiAgICAgICAgaWYgKCFzdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgaWYgKHRoaXMuI3NwaW5uZXJXaW5kb3cgPT09IHdpbmRvdykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI3NwaW5uZXJXaW5kb3cgPSB3aW5kb3c7XG5cbiAgICAgICAgdGhpcy4jc3Bpbm5lclBvc2l0aW9uID0gKHRoaXMuI3NwaW5uZXJQb3NpdGlvbiArIDEpICUgU1BJTk5FUi5sZW5ndGg7XG4gICAgICAgIHRoaXMuI3NwaW5uZXIgPSBTUElOTkVSW3RoaXMuI3NwaW5uZXJQb3NpdGlvbl07XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuKHdoYXQ6IHN0cmluZywgZm46ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB7XG4gICAgICAgIHRoaXMudXBkYXRlKHdoYXQpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZm4oKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHdoYXQpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3Mod2hhdCk7XG4gICAgfVxuXG4gICAgZ2V0ICNkdXJhdGlvbigpIHtcbiAgICAgICAgbGV0IG1zID0gdGhpcy4jc3RhcnQgPyBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuI3N0YXJ0IDogMDtcbiAgICAgICAgaWYgKG1zIDwgMTAwMCkge1xuICAgICAgICAgICAgbXMgPSBNYXRoLnJvdW5kKG1zIC8gMTApIC8gMTAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1zIDwgMTAwMDApIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC5yb3VuZChtcyAvIDEwMCkgLyAxMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC50cnVuYyhtcyAvIDEwMDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltLnllbGxvdyhgKCR7bXN9cylgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUHJvZ3Jlc3Mge1xuICAgIGV4cG9ydCBlbnVtIFN0YXR1cyB7XG4gICAgICAgIFN0YXJ0dXAgPSBcInN0YXJ0dXBcIixcbiAgICAgICAgT25nb2luZyA9IFwib25nb2luZ1wiLFxuICAgICAgICBTdWNjZXNzID0gXCJzdWNjZXNzXCIsXG4gICAgICAgIEZhaWx1cmUgPSBcImZhaWx1cmVcIixcbiAgICB9XG59XG5cbi8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjIzODU1My9ob3ctY2FuLWktdHJ1bmNhdGUtYS1zdHJpbmctdG8tYS1tYXhpbXVtLWxlbmd0aC13aXRob3V0LWJyZWFraW5nLWFuc2ktZXNjYXBlLWNvZFxuLy8gVE9ETyAtIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBzZWVtIGVudGlyZWx5IGNvcnJlY3QsIHN0aWxsIHNlZW1zIHRvIHRydW5jYXRlIHRvbyBtdWNoXG4vLyBDcm9wIHRoZSBsZW5ndGggb2YgbGluZXMsIEFOU0kgZXNjYXBlIGNvZGUgYXdhcmVcbi8vIEFsd2F5cyBvdXRwdXRzIGV2ZXJ5IGVzY2FwZSBjaGFyLCByZWdhcmRsZXNzIG9mIGxlbmd0aCAoc28gd2UgYWx3YXlzIGVuZCB1cCB3aXRoIGEgc2FuZSBzdGF0ZSlcbi8vIFZpc2libGUgY2hhcmFjdGVycyBhcmUgZmlsdGVyZWQgb3V0IG9uY2UgbGVuZ3RoIGlzIGV4Y2VlZGVkXG5mdW5jdGlvbiBmaWx0ZXJBbnNpKHN0cjogc3RyaW5nLCBsZW46IG51bWJlcikge1xuICAgIGlmICghbGVuIHx8IGxlbiA8IDEwKSByZXR1cm4gc3RyOyAvLyBwcm9iYWJseSBub3QgYSB2YWxpZCBjb25zb2xlIC0tIHNlbmQgYmFjayB0aGUgd2hvbGUgbGluZVxuICAgIGxldCBjb3VudCA9IDAsIC8vIG51bWJlciBvZiB2aXNpYmxlIGNoYXJzIG9uIGxpbmUgc28gZmFyXG4gICAgICAgIGVzYyA9IGZhbHNlLCAvLyBpbiBhbiBlc2NhcGUgc2VxdWVuY2VcbiAgICAgICAgbG9uZ2VzYyA9IGZhbHNlOyAvLyBpbiBhIG11bHRpLWNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2VcbiAgICBsZXQgb3V0cCA9IHRydWU7IC8vIHNob3VsZCBvdXRwdXQgdGhpcyBjaGFyYWN0ZXJcbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5zcGxpdChcIlwiKVxuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAvLyBmaWx0ZXIgY2hhcmFjdGVycy4uLlxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjID09IFwiW1wiKSBsb25nZXNjID0gdHJ1ZTsgLy8gaGF2ZSBzZWVuIGFuIGVzY2FwZSwgbm93ICdbJywgc3RhcnQgbXVsdGktY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChjID09IFwiXFx4MWJcIikgZXNjID0gdHJ1ZTsgLy8gc3RhcnQgb2YgZXNjYXBlIHNlcXVlbmNlXG5cbiAgICAgICAgICAgIG91dHAgPSBjb3VudCA8IGxlbiB8fCBlc2M7IC8vIGlmIGxlbmd0aCBleGNlZWRlZCwgZG9uJ3Qgb3V0cHV0IG5vbi1lc2NhcGUgY2hhcnNcbiAgICAgICAgICAgIGlmICghZXNjICYmICFsb25nZXNjKSBjb3VudCsrOyAvLyBpZiBub3QgaW4gZXNjYXBlLCBjb3VudCB2aXNpYmxlIGNoYXJcblxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjICE9IFwiXFx4MWJcIikgZXNjID0gZmFsc2U7IC8vIG91dCBvZiBzaW5nbGUgY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChsb25nZXNjICYmIGMgIT0gXCJbXCIgJiYgYyA+PSBcIkBcIiAmJiBjIDw9IFwiflwiKSB7XG4gICAgICAgICAgICAgICAgZXNjID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbG9uZ2VzYyA9IGZhbHNlO1xuICAgICAgICAgICAgfSAvLyBlbmQgb2YgbXVsdGktY2hhciBlc2NhcGVcblxuICAgICAgICAgICAgcmV0dXJuIG91dHA7IC8vIHJlc3VsdCBmb3IgZmlsdGVyXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXCIpOyAvLyBnbHVlIGNoYXJzIGJhY2sgaW50byBzdHJpbmdcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxPQUFPLFlBQVk7QUFDbkIsU0FBUyxRQUFRLGNBQWM7QUFHL0IsTUFBTSxRQUFRO0FBQ2QsTUFBTSxVQUFVO0FBQ2hCLE1BQU0sbUJBQW1CO0FBRXpCLFNBQVMsZ0JBQWdCLEtBQWM7QUFDbkMsTUFBSSxXQUFXLE9BQU8sS0FBSyxJQUFJLEtBQUssSUFBSTtBQUN4QyxNQUFJLElBQUksS0FBSyxTQUFTO0FBQ2xCLGVBQVcsR0FBRyxRQUFRLElBQUksSUFBSSxLQUFLLE9BQU87QUFBQSxFQUM5QztBQUNBLFNBQU87QUFDWDtBQUtBLE1BQU0sZUFBZSxNQUFNO0FBQ3ZCLE1BQUk7QUFDSixNQUFJLGNBQWM7QUFFbEIsV0FBUyxVQUFVLFFBQTRCO0FBQzNDLFVBQU0sY0FBYyxPQUFPO0FBQzNCLFdBQU8sUUFBUSxDQUFDLFlBQWlDLFdBQWtCO0FBQy9ELFVBQUksWUFBWTtBQUNaLG9CQUFZLEtBQUssUUFBUSxJQUFJO0FBQzdCLHFCQUFhO0FBQUEsTUFDakI7QUFFQSxVQUFJLENBQUMsUUFBUSxRQUFRO0FBQ2pCLGVBQU87QUFBQSxNQUNYO0FBR0Esb0JBQWMsUUFBUSxRQUFRLFNBQVMsQ0FBQyxNQUFNLFFBQVEsUUFBUSxRQUFRLFNBQVMsQ0FBQyxNQUFNO0FBRXRGLGFBQU8sWUFBWSxLQUFLLFFBQVEsU0FBUyxHQUFHLE1BQU07QUFBQSxJQUN0RDtBQUFBLEVBQ0o7QUFFQSxZQUFVLE1BQU07QUFDaEIsWUFBVSxNQUFNO0FBRWhCLFNBQU8sU0FBU0EsYUFBWSxNQUFjLGdCQUFnQixPQUFPO0FBQzdELFVBQU0sVUFBVSxRQUFRLE9BQU87QUFDL0IsUUFBSSxpQkFBaUIsWUFBWSxV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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/progress.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["writeStatus", "Progress", "Status"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/tools",
3
- "version": "0.11.1",
3
+ "version": "0.11.2-alpha.0-20241102-aa282dab8",
4
4
  "description": "Matter.js tooling",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -47,7 +47,11 @@
47
47
  "commander": "^12.1.0",
48
48
  "esbuild": "^0.24.0",
49
49
  "minimatch": "^9.0.5",
50
- "typescript": "~5.6.2"
50
+ "typescript": "~5.6.2",
51
+ "type-fest": "^4.24.0",
52
+ "typedoc": "^0.26.10",
53
+ "typedoc-material-theme": "^1.1.0",
54
+ "@microsoft/tsdoc": "^0.15.0"
51
55
  },
52
56
  "optionalDependencies": {
53
57
  "@esbuild/linux-x64": "^0.24.0"
@@ -134,6 +134,11 @@ export class Builder {
134
134
  await project.hashDeclarations(apiSha);
135
135
  });
136
136
 
137
+ // Work-in-progress alternative doc generation implementation
138
+ // await progress.run(`Extract ${progress.emphasize("api docs")}`, () =>
139
+ // emitApiDoc(project.pkg, program, progress),
140
+ // );
141
+
137
142
  info.apiSha = apiSha.digest("hex");
138
143
  } else {
139
144
  await progress.run(`Validate ${progress.emphasize("types")}`, () =>
@@ -5,7 +5,9 @@
5
5
  */
6
6
 
7
7
  import { commander } from "../util/commander.js";
8
+ import { Package } from "../util/package.js";
8
9
  import { Builder, Target } from "./builder.js";
10
+ import { buildDocs, mergeDocs } from "./docs.js";
9
11
  import { Graph } from "./graph.js";
10
12
  import { Project } from "./project.js";
11
13
  import { syncAllTsconfigs } from "./tsconfig.js";
@@ -15,6 +17,7 @@ enum Mode {
15
17
  BuildProjectWithDependencies,
16
18
  BuildWorkspace,
17
19
  DisplayGraph,
20
+ BuildDocs,
18
21
  SyncTsconfigs,
19
22
  }
20
23
 
@@ -32,7 +35,6 @@ export async function main(argv = process.argv) {
32
35
  const program = commander("matter-build", "Builds packages adhering to matter.js standards.")
33
36
  .option("-p, --prefix <path>", "specify build directory", ".")
34
37
  .option("-c, --clean", "clean before build", false)
35
- .option("-w, --workspaces", "build all workspace packages", false)
36
38
  .option("-d, --dependencies", "build dependencies", false);
37
39
 
38
40
  program
@@ -82,12 +84,20 @@ export async function main(argv = process.argv) {
82
84
  mode = Mode.SyncTsconfigs;
83
85
  });
84
86
 
87
+ program
88
+ .command("docs")
89
+ .description("build workspace documentation")
90
+ .action(() => {
91
+ mode = Mode.BuildDocs;
92
+ });
93
+
85
94
  program.action(() => {});
86
95
 
87
96
  const args = program.parse(argv).opts<Args>();
88
97
 
98
+ const pkg = new Package({ path: args.prefix });
89
99
  if (mode === Mode.BuildProject) {
90
- if (args.workspaces) {
100
+ if (pkg.isWorkspace) {
91
101
  mode = Mode.BuildWorkspace;
92
102
  } else if (args.dependencies) {
93
103
  mode = Mode.BuildProjectWithDependencies;
@@ -132,5 +142,21 @@ export async function main(argv = process.argv) {
132
142
  await syncAllTsconfigs(graph);
133
143
  }
134
144
  break;
145
+
146
+ case Mode.BuildDocs: {
147
+ const progress = pkg.start("Documenting");
148
+ if (pkg.isWorkspace) {
149
+ const graph = await Graph.load();
150
+ for (const node of graph.nodes) {
151
+ if (node.pkg.isLibrary) {
152
+ await progress.run(node.pkg.name, () => buildDocs(node.pkg, progress));
153
+ }
154
+ }
155
+ await mergeDocs(Package.workspace);
156
+ } else {
157
+ await progress.run(pkg.name, () => buildDocs(pkg, progress));
158
+ }
159
+ break;
160
+ }
135
161
  }
136
162
  }