@matter/tools 0.12.0 → 0.12.1-alpha.0-20250125-51ff4dbed
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/dist/cjs/building/builder.d.ts +1 -1
- package/dist/cjs/building/builder.js +1 -1
- package/dist/cjs/building/cli.d.ts +1 -1
- package/dist/cjs/building/cli.js +1 -1
- package/dist/cjs/building/docs.d.ts +1 -1
- package/dist/cjs/building/docs.js +1 -1
- package/dist/cjs/building/error.d.ts +1 -1
- package/dist/cjs/building/error.js +1 -1
- package/dist/cjs/building/graph.d.ts +1 -1
- package/dist/cjs/building/graph.js +1 -1
- package/dist/cjs/building/project.d.ts +1 -1
- package/dist/cjs/building/project.js +1 -1
- package/dist/cjs/building/tsconfig.d.ts +1 -1
- package/dist/cjs/building/tsconfig.js +1 -5
- package/dist/cjs/building/tsconfig.js.map +1 -1
- package/dist/cjs/building/typescript/context.d.ts +1 -1
- package/dist/cjs/building/typescript/context.js +2 -2
- package/dist/cjs/building/typescript/context.js.map +1 -1
- package/dist/cjs/building/typescript/incremental-compiler.d.ts +1 -1
- package/dist/cjs/building/typescript/incremental-compiler.js +1 -1
- package/dist/cjs/building/typescript/solution-builder.d.ts +1 -1
- package/dist/cjs/building/typescript/solution-builder.js +1 -1
- package/dist/cjs/building/typescript.d.ts +1 -1
- package/dist/cjs/building/typescript.js +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/running/cli.d.ts +1 -1
- package/dist/cjs/running/cli.js +1 -1
- package/dist/cjs/running/ensure-compiled.d.ts +1 -1
- package/dist/cjs/running/ensure-compiled.js +1 -1
- package/dist/cjs/running/execute.d.ts +1 -1
- package/dist/cjs/running/execute.js +1 -1
- package/dist/cjs/util/bootstrap.mjs +1 -1
- package/dist/cjs/util/commander.d.ts +1 -1
- package/dist/cjs/util/commander.js +1 -1
- package/dist/cjs/util/errors.d.ts +1 -1
- package/dist/cjs/util/errors.js +1 -1
- package/dist/cjs/util/file.d.ts +1 -1
- package/dist/cjs/util/file.js +1 -1
- package/dist/cjs/util/glob.d.ts +1 -1
- package/dist/cjs/util/glob.js +1 -1
- package/dist/cjs/util/index.d.ts +1 -1
- package/dist/cjs/util/index.js +1 -1
- package/dist/cjs/util/package.d.ts +1 -1
- package/dist/cjs/util/package.js +1 -1
- package/dist/cjs/util/progress.d.ts +1 -1
- package/dist/cjs/util/progress.js +1 -1
- package/dist/cjs/util/tools-path.cjs +1 -1
- package/dist/cjs/util/tools-path.d.cts +1 -1
- package/dist/cjs/versioning/cli.d.ts +1 -1
- package/dist/cjs/versioning/cli.js +1 -1
- package/dist/cjs/versioning/versioner.d.ts +1 -1
- package/dist/cjs/versioning/versioner.js +1 -1
- package/dist/esm/building/builder.d.ts +1 -1
- package/dist/esm/building/builder.js +2 -2
- package/dist/esm/building/cli.d.ts +1 -1
- package/dist/esm/building/cli.js +2 -2
- package/dist/esm/building/docs.d.ts +1 -1
- package/dist/esm/building/docs.js +2 -2
- package/dist/esm/building/error.d.ts +1 -1
- package/dist/esm/building/error.js +2 -2
- package/dist/esm/building/graph.d.ts +1 -1
- package/dist/esm/building/graph.js +2 -2
- package/dist/esm/building/project.d.ts +1 -1
- package/dist/esm/building/project.js +2 -2
- package/dist/esm/building/tsconfig.d.ts +1 -1
- package/dist/esm/building/tsconfig.js +2 -6
- package/dist/esm/building/tsconfig.js.map +1 -1
- package/dist/esm/building/typescript/context.d.ts +1 -1
- package/dist/esm/building/typescript/context.js +3 -3
- package/dist/esm/building/typescript/context.js.map +1 -1
- package/dist/esm/building/typescript/incremental-compiler.d.ts +1 -1
- package/dist/esm/building/typescript/incremental-compiler.js +2 -2
- package/dist/esm/building/typescript/solution-builder.d.ts +1 -1
- package/dist/esm/building/typescript/solution-builder.js +2 -2
- package/dist/esm/building/typescript.d.ts +1 -1
- package/dist/esm/building/typescript.js +2 -2
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/running/cli.d.ts +1 -1
- package/dist/esm/running/cli.js +2 -2
- package/dist/esm/running/ensure-compiled.d.ts +1 -1
- package/dist/esm/running/ensure-compiled.js +2 -2
- package/dist/esm/running/execute.d.ts +1 -1
- package/dist/esm/running/execute.js +2 -2
- package/dist/esm/util/bootstrap.mjs +1 -1
- package/dist/esm/util/commander.d.ts +1 -1
- package/dist/esm/util/commander.js +2 -2
- package/dist/esm/util/errors.d.ts +1 -1
- package/dist/esm/util/errors.js +2 -2
- package/dist/esm/util/file.d.ts +1 -1
- package/dist/esm/util/file.js +2 -2
- package/dist/esm/util/glob.d.ts +1 -1
- package/dist/esm/util/glob.js +2 -2
- package/dist/esm/util/index.d.ts +1 -1
- package/dist/esm/util/index.js +2 -2
- package/dist/esm/util/package.d.ts +1 -1
- package/dist/esm/util/package.js +2 -2
- package/dist/esm/util/progress.d.ts +1 -1
- package/dist/esm/util/progress.js +2 -2
- package/dist/esm/util/tools-path.cjs +1 -1
- package/dist/esm/util/tools-path.d.cts +1 -1
- package/dist/esm/versioning/cli.d.ts +1 -1
- package/dist/esm/versioning/cli.js +2 -2
- package/dist/esm/versioning/versioner.d.ts +1 -1
- package/dist/esm/versioning/versioner.js +2 -2
- package/package.json +1 -1
- package/src/building/builder.ts +1 -1
- package/src/building/cli.ts +1 -1
- package/src/building/docs.ts +1 -1
- package/src/building/error.ts +1 -1
- package/src/building/graph.ts +1 -1
- package/src/building/project.ts +1 -1
- package/src/building/tsconfig.ts +1 -7
- package/src/building/typescript/context.ts +2 -2
- package/src/building/typescript/incremental-compiler.ts +1 -1
- package/src/building/typescript/solution-builder.ts +1 -1
- package/src/building/typescript.ts +2 -2
- package/src/index.ts +1 -1
- package/src/running/cli.ts +1 -1
- package/src/running/ensure-compiled.ts +1 -1
- package/src/running/execute.ts +1 -1
- package/src/util/bootstrap.mjs +1 -1
- package/src/util/commander.ts +1 -1
- package/src/util/errors.ts +1 -1
- package/src/util/file.ts +1 -1
- package/src/util/glob.ts +1 -1
- package/src/util/index.ts +1 -1
- package/src/util/package.ts +1 -1
- package/src/util/progress.ts +1 -1
- package/src/util/tools-path.cjs +1 -1
- package/src/util/tools-path.d.cts +1 -1
- package/src/versioning/cli.ts +1 -1
- package/src/versioning/versioner.ts +1 -1
package/dist/esm/util/package.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright 2022-
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { existsSync, readFileSync, statSync } from "fs";
|
|
@@ -417,4 +417,4 @@ export {
|
|
|
417
417
|
JsonNotFoundError,
|
|
418
418
|
Package
|
|
419
419
|
};
|
|
420
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcGFja2FnZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjItMjAyNCBNYXR0ZXIuanMgQXV0aG9yc1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMsIHN0YXRTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyByZWFkZGlyLCByZWFkRmlsZSwgc3RhdCwgd3JpdGVGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZWxhdGl2ZSwgcmVzb2x2ZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBpZ25vcmVFcnJvciwgaWdub3JlRXJyb3JTeW5jIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgeyBpc0ZpbGUsIG1heWJlUmVhZEpzb25TeW5jLCBtYXliZVN0YXRTeW5jIH0gZnJvbSBcIi4vZmlsZS5qc1wiO1xuaW1wb3J0IHsgZ2xvYlN5bmMgfSBmcm9tIFwiLi9nbG9iLmpzXCI7XG5pbXBvcnQgeyBQcm9ncmVzcyB9IGZyb20gXCIuL3Byb2dyZXNzLmpzXCI7XG5pbXBvcnQgeyB0b29sc1BhdGggfSBmcm9tIFwiLi90b29scy1wYXRoLmNqc1wiO1xuXG5leHBvcnQgY2xhc3MgSnNvbk5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG5leHBvcnQgY29uc3QgQ09ORklHX1BBVEggPSBgc3JjL2J1aWxkLmNvbmZpZy50c2A7XG5leHBvcnQgY29uc3QgQ09ERUdFTl9QQVRIID0gYGNvZGVnZW5gO1xuXG5jb25zdCBwYWNrYWdlRm9yUGF0aCA9IHt9IGFzIFJlY29yZDxzdHJpbmcsIFBhY2thZ2UgfCB1bmRlZmluZWQgfCBudWxsPjtcblxuZnVuY3Rpb24gZmluZEpzb24oZmlsZW5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nID0gXCIuXCIsIHRpdGxlPzogc3RyaW5nKSB7XG4gICAgcGF0aCA9IHJlc29sdmUocGF0aCk7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgY29uc3QganNvbiA9IGlnbm9yZUVycm9yU3luYyhbXCJFTk9FTlRcIiwgXCJFTk9URElSXCJdLCAoKSA9PlxuICAgICAgICAgICAgSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocmVzb2x2ZShwYXRoLCBmaWxlbmFtZSkpLnRvU3RyaW5nKCkpLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChqc29uKSB7XG4gICAgICAgICAgICBpZiAodGl0bGUgPT09IHVuZGVmaW5lZCB8fCBqc29uLm5hbWUgPT09IHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcm9vdDogcGF0aCwganNvbiB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUocGF0aCk7XG4gICAgICAgIGlmIChwYXJlbnQgPT09IHBhdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBKc29uTm90Rm91bmRFcnJvcihgQ291bGQgbm90IGxvY2F0ZSAke3RpdGxlID8/IGZpbGVuYW1lfWApO1xuICAgICAgICB9XG4gICAgICAgIHBhdGggPSBwYXJlbnQ7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0RpcmVjdG9yeShwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gISFpZ25vcmVFcnJvclN5bmMoXCJFTk9FTlRcIiwgKCkgPT4gc3RhdFN5bmMocGF0aCkuaXNEaXJlY3RvcnkoKSk7XG59XG5cbmV4cG9ydCBjbGFzcyBQYWNrYWdlIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAganNvbjogUGFja2FnZUpzb247XG4gICAgc3VwcG9ydHNFc206IGJvb2xlYW47XG4gICAgc3VwcG9ydHNDanM6IGJvb2xlYW47XG4gICAgaGFzU3JjOiBib29sZWFuO1xuICAgIGhhc1Rlc3RzOiBib29sZWFuO1xuICAgIGhhc0NvbmZpZzogYm9vbGVhbjtcbiAgICBpc0xpYnJhcnk6IGJvb2xlYW47XG4gICAgI2FsaWFzZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgY29uc3RydWN0b3Ioe1xuICAgICAgICBwYXRoID0gXCIuXCIsXG4gICAgICAgIG5hbWUsXG4gICAgfToge1xuICAgICAgICBwYXRoPzogc3RyaW5nO1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgIH0gPSB7fSkge1xuICAgICAgICBjb25zdCB7IHJvb3QsIGpzb24gfSA9IGZpbmRKc29uKFwicGFja2FnZS5qc29uXCIsIHBhdGgsIG5hbWUpO1xuICAgICAgICB0aGlzLnBhdGggPSByb290O1xuICAgICAgICB0aGlzLmpzb24gPSBqc29uO1xuXG4gICAgICAgIGNvbnN0IHsgZXNtLCBjanMgfSA9IHNlbGVjdEZvcm1hdHModGhpcy5qc29uKTtcbiAgICAgICAgdGhpcy5zdXBwb3J0c0VzbSA9IGVzbTtcbiAgICAgICAgdGhpcy5zdXBwb3J0c0NqcyA9IGNqcztcblxuICAgICAgICB0aGlzLmhhc1NyYyA9IGlzRGlyZWN0b3J5KHRoaXMucmVzb2x2ZShcInNyY1wiKSk7XG4gICAgICAgIHRoaXMuaGFzVGVzdHMgPSBpc0RpcmVjdG9yeSh0aGlzLnJlc29sdmUoXCJ0ZXN0XCIpKTtcblxuICAgICAgICBjb25zdCByZWZzID0gbWF5YmVSZWFkSnNvblN5bmModGhpcy5yZXNvbHZlKFwidHNjb25maWcuanNvblwiKSk/LnJlZmVyZW5jZXMgYXMgdW5kZWZpbmVkIHwgeyBwYXRoOiBzdHJpbmcgfVtdO1xuICAgICAgICBpZiAocmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoIXJlZnMuZmluZChyZWYgPT4gdGhpcy5yZXNvbHZlKHJlZi5wYXRoKSA9PT0gdGhpcy5yZXNvbHZlKFwic3JjXCIpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzU3JjID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXJlZnMuZmluZChyZWYgPT4gdGhpcy5yZXNvbHZlKHJlZi5wYXRoKSA9PT0gdGhpcy5yZXNvbHZlKFwidGVzdFwiKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc1Rlc3RzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzTGlicmFyeSA9ICEhKHRoaXMuanNvbi5tYWluIHx8IHRoaXMuanNvbi5tb2R1bGUgfHwgdGhpcy5qc29uLmV4cG9ydHMpO1xuXG4gICAgICAgIHRoaXMuaGFzQ29uZmlnID0gdGhpcy5oYXNGaWxlKHRoaXMucmVzb2x2ZShDT05GSUdfUEFUSCkpO1xuICAgIH1cblxuICAgIGdldCBuYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5qc29uLm5hbWU7XG4gICAgfVxuXG4gICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmpzb24udmVyc2lvbjtcbiAgICB9XG5cbiAgICBnZXQgZXhwb3J0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuanNvbi5leHBvcnRzO1xuICAgIH1cblxuICAgIGdldCBoYXNDb2RlZ2VuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNEaXJlY3RvcnkoQ09ERUdFTl9QQVRIKTtcbiAgICB9XG5cbiAgICByZXNvbHZlKC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLnBhdGgsIC4uLnBhdGhzKTtcbiAgICB9XG5cbiAgICByZWxhdGl2ZShwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlbGF0aXZlKHRoaXMucGF0aCwgcGF0aCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2xvYihwYXR0ZXJuOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgICAgICAvLyBHbG9iIG9ubHkgdW5kZXJzdGFuZHMgZm9yd2FyZC1zbGFzaCBhcyBzZXBhcmF0b3IgYmVjYXVzZSByZWFzb25zXG4gICAgICAgIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcGF0dGVybiA9IHRoaXMucmVzb2x2ZShwYXR0ZXJuKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLm1hcChzID0+IHRoaXMucmVzb2x2ZShzKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDdXJyZW50IGdsb2IgaW1wbGVtZW50YXRpb24gaXNuJ3QgYWN0dWFsbHkgYXN5bmMgYXMgdGhpcyBpcyBmYXN0ZXIgYW5kIHdlIG9ubHkgd2FsayBzbWFsbCBkaXJlY3RvcnkgdHJlZXNcbiAgICAgICAgcmV0dXJuIGdsb2JTeW5jKHBhdHRlcm4pO1xuICAgIH1cblxuICAgIHN0YXJ0KHdoYXQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwcm9ncmVzcyA9IG5ldyBQcm9ncmVzcygpO1xuICAgICAgICBwcm9ncmVzcy5zdGFydHVwKHdoYXQsIHRoaXMpO1xuICAgICAgICByZXR1cm4gcHJvZ3Jlc3M7XG4gICAgfVxuXG4gICAgYXN5bmMgbGFzdE1vZGlmaWVkKC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0TW9kaWZpZWRBYnNvbHV0ZShwYXRocy5tYXAocCA9PiB0aGlzLnJlc29sdmUocCkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxhc3RNb2RpZmllZEFic29sdXRlKHBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICBsZXQgbXRpbWUgPSAwO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIHBhdGhzLm1hcChhc3luYyBwID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGlnbm9yZUVycm9yKFwiRU5PRU5UXCIsIGFzeW5jICgpID0+IGF3YWl0IHN0YXQocCkpO1xuICAgICAgICAgICAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCB0aGlzTXRpbWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aHMgPSAoYXdhaXQgcmVhZGRpcihwKSkubWFwKHAyID0+IHJlc29sdmUocCwgcDIpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpc010aW1lID0gYXdhaXQgdGhpcy5sYXN0TW9kaWZpZWRBYnNvbHV0ZShwYXRocyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc010aW1lID0gc3RhdHMubXRpbWVNcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNNdGltZSA+IG10aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIG10aW1lID0gdGhpc010aW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbXRpbWU7XG4gICAgfVxuXG4gICAgZ2V0IGRlcGVuZGVuY2llcygpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IEFycmF5PHN0cmluZz4oKTtcbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIFtcImRlcGVuZGVuY2llc1wiLCBcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCIsIFwiZGV2RGVwZW5kZW5jaWVzXCIsIFwicGVlckRlcGVuZGVuY2llc1wiXSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmpzb25bdHlwZV0gPT09IFwib2JqZWN0XCIgJiYgdGhpcy5qc29uW3R5cGVdICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gWy4uLnJlc3VsdCwgLi4uT2JqZWN0LmtleXModGhpcy5qc29uW3R5cGVdKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5uZXcgU2V0KHJlc3VsdCldO1xuICAgIH1cblxuICAgIGdldCB3b3Jrc3BhY2UoKSB7XG4gICAgICAgIHJldHVybiBQYWNrYWdlLndvcmtzcGFjZUZvcih0aGlzLnBhdGgpO1xuICAgIH1cblxuICAgIGdldCBpc1dvcmtzcGFjZSgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5qc29uLndvcmtzcGFjZXMpO1xuICAgIH1cblxuICAgIGdldCByb290KCk6IFBhY2thZ2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud29ya3NwYWNlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgSnNvbk5vdEZvdW5kRXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBzdGF0aWMgc2V0IHdvcmtpbmdEaXIod2Q6IHN0cmluZykge1xuICAgICAgICB3b3JraW5nRGlyID0gd2Q7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCB3b3Jrc3BhY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndvcmtzcGFjZUZvcih3b3JraW5nRGlyKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgd29ya3NwYWNlRm9yKGN3ZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghd29ya3NwYWNlKSB7XG4gICAgICAgICAgICB3b3Jrc3BhY2UgPSBmaW5kKGN3ZCwgcGtnID0+IEFycmF5LmlzQXJyYXkocGtnLmpzb24ud29ya3NwYWNlcykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3b3Jrc3BhY2U7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCB0b29scygpIHtcbiAgICAgICAgaWYgKCF0b29scykge1xuICAgICAgICAgICAgdG9vbHMgPSBuZXcgUGFja2FnZSh7IHBhdGg6IHRvb2xzUGF0aCB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9vbHM7XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbmRFeHBvcnQobmFtZTogc3RyaW5nLCB0eXBlOiBcImNqc1wiIHwgXCJlc21cIiA9IFwiZXNtXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud29ya3NwYWNlLnJlc29sdmVJbXBvcnQobmFtZSwgdHlwZSk7XG4gICAgfVxuXG4gICAgcmVzb2x2ZUV4cG9ydChuYW1lOiBzdHJpbmcsIHR5cGU6IFwiY2pzXCIgfCBcImVzbVwiID0gXCJlc21cIikge1xuICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICAgIG5hbWUgPSBgLi8ke25hbWV9YDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHBvcnREZXRhaWwgPSB0aGlzLmV4cG9ydHM/LltuYW1lXTtcblxuICAgICAgICBpZiAoZXhwb3J0RGV0YWlsKSB7XG4gICAgICAgICAgICBjb25zdCBleHAgPSBmaW5kRXhwb3J0Q29uZGl0aW9uKGV4cG9ydERldGFpbCwgdHlwZSk7XG4gICAgICAgICAgICBpZiAoZXhwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZShleHApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5hbWUgPT09IFwiLlwiKSB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJlc21cIiAmJiB0aGlzLmpzb24ubW9kdWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZSh0aGlzLmpzb24ubW9kdWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmpzb24ubWFpbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmUodGhpcy5qc29uLm1haW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBleHBvcnQgJHtuYW1lfSBpbiBwYWNrYWdlICR7dGhpcy5uYW1lfWApO1xuICAgIH1cblxuICAgIGZpbmRQYWNrYWdlKG5hbWU6IHN0cmluZykge1xuICAgICAgICBsZXQgcmVzb2x2ZUluID0gdGhpcy5wYXRoO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgaWYgKGlzRGlyZWN0b3J5KHJlc29sdmUocmVzb2x2ZUluLCBcIm5vZGVfbW9kdWxlc1wiLCBuYW1lKSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXNvbHZlSW4gPSBkaXJuYW1lKHJlc29sdmVJbik7XG4gICAgICAgICAgICBpZiAobmV4dFJlc29sdmVJbiA9PT0gcmVzb2x2ZUluKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBtb2R1bGUgJHtuYW1lfSBmcm9tICR7dGhpcy5wYXRofWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZUluID0gbmV4dFJlc29sdmVJbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQYWNrYWdlLmZvclBhdGgocmVzb2x2ZShyZXNvbHZlSW4sIFwibm9kZV9tb2R1bGVzXCIsIG5hbWUpKTtcbiAgICB9XG5cbiAgICByZXNvbHZlSW1wb3J0KG5hbWU6IHN0cmluZywgdHlwZTogXCJjanNcIiB8IFwiZXNtXCIgPSBcImVzbVwiKSB7XG4gICAgICAgIGNvbnN0IHNlZ21lbnRzID0gbmFtZS5zcGxpdChcIi9cIik7XG4gICAgICAgIGxldCBwYWNrYWdlTmFtZSA9IHNlZ21lbnRzLnNoaWZ0KCkgYXMgc3RyaW5nO1xuICAgICAgICBpZiAocGFja2FnZU5hbWUuc3RhcnRzV2l0aChcIkBcIikgJiYgc2VnbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYWNrYWdlTmFtZSA9IGAke3BhY2thZ2VOYW1lfS8ke3NlZ21lbnRzLnNoaWZ0KCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBrZyA9IHRoaXMuZmluZFBhY2thZ2UocGFja2FnZU5hbWUpO1xuXG4gICAgICAgIHJldHVybiBwa2cucmVzb2x2ZUV4cG9ydChzZWdtZW50cy5sZW5ndGggPyBzZWdtZW50cy5qb2luKFwiL1wiKSA6IFwiLlwiLCB0eXBlKTtcbiAgICB9XG5cbiAgICBoYXNGaWxlKHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gISF0aGlzLiNtYXliZVN0YXQocGF0aCk/LmlzRmlsZSgpO1xuICAgIH1cblxuICAgIGhhc0RpcmVjdG9yeShwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy4jbWF5YmVTdGF0KHBhdGgpPy5pc0RpcmVjdG9yeSgpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRGaWxlKHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gcmVhZEZpbGUodGhpcy5yZXNvbHZlKHBhdGgpLCBcInV0Zi04XCIpO1xuICAgIH1cblxuICAgIHJlYWRGaWxlU3luYyhwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRGaWxlU3luYyh0aGlzLnJlc29sdmUocGF0aCksIFwidXRmLThcIik7XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGVGaWxlKHBhdGg6IHN0cmluZywgY29udGVudHM6IHVua25vd24pIHtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlKHRoaXMucmVzb2x2ZShwYXRoKSwgYCR7Y29udGVudHN9YCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2F2ZSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZUZpbGUoam9pbih0aGlzLnBhdGgsIFwicGFja2FnZS5qc29uXCIpLCBKU09OLnN0cmluZ2lmeSh0aGlzLmpzb24sIHVuZGVmaW5lZCwgNCkpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRKc29uKHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgdGhpcy5yZWFkRmlsZShwYXRoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHRleHQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgZSA9IG5ldyBFcnJvcihgJHtlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKGUgYXMgRXJyb3IpLm1lc3NhZ2UgPSBgRXJyb3IgcGFyc2luZyBcIiR7dGhpcy5yZXNvbHZlKHBhdGgpfVwiOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWA7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGVKc29uKHBhdGg6IHN0cmluZywgdmFsdWU6IHt9KSB7XG4gICAgICAgIGF3YWl0IHRoaXMud3JpdGVGaWxlKHBhdGgsIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB1bmRlZmluZWQsIDQpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbWF5YmVGb3JQYXRoKHBhdGg6IHN0cmluZykge1xuICAgICAgICBmdW5jdGlvbiBmaW5kKHBhdGg6IHN0cmluZyk6IFBhY2thZ2UgfCBudWxsIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBwYWNrYWdlRm9yUGF0aFtwYXRoXTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChleGlzdHNTeW5jKGpvaW4ocGF0aCwgXCJwYWNrYWdlLmpzb25cIikpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBQYWNrYWdlKHsgcGF0aCB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmaW5kKGRpcm5hbWUocGF0aCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYWNrYWdlRm9yUGF0aFtwYXRoXSA9IHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBmaW5kKHBhdGgpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQgPz8gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHN0YXRpYyBmb3JQYXRoKHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLm1heWJlRm9yUGF0aChwYXRoKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcGFja2FnZS5qc29uIGZvciBcIiR7cGF0aH1cImApO1xuICAgIH1cblxuICAgIGdldCBhbGlhc2VzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy4jYWxpYXNlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy4jYWxpYXNlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI2FsaWFzZXMgPSB7XG4gICAgICAgICAgICAuLi5QYWNrYWdlLm1heWJlRm9yUGF0aChkaXJuYW1lKHRoaXMucGF0aCkpPy5hbGlhc2VzLFxuICAgICAgICAgICAgLi4udGhpcy5qc29uLmltcG9ydHMsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuI2FsaWFzZXM7XG4gICAgfVxuXG4gICAgZ2V0IG1vZHVsZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RNb2R1bGVzKGZhbHNlKTtcbiAgICB9XG5cbiAgICBnZXQgc291cmNlTW9kdWxlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdE1vZHVsZXModHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbWFwIG9mIG1vZHVsZSBuYW1lIC0+IGltcGxlbWVudGF0aW9uIGZpbGUuICBJZiBcInNvdXJjZVwiIGlzIHRydWUsIHNlYXJjaGVzIHNvdXJjZSBmaWxlcyByYXRoZXIgdGhhblxuICAgICAqIHRyYW5zcGlsZWQgZmlsZXMuICBXZSBkbyB0aGlzIHJhdGhlciB0aGFuIGZpbmRpbmcgdHJhbnNwaWxhdGlvbiBmaWxlcyB0aGVuIG1hcHBpbmcgdG8gc291cmNlIGZpbGVzIHNvIHRoaXMgd29ya3NcbiAgICAgKiBldmVuIGlmIHRoZXJlIGlzbid0IGEgYnVpbGQuXG4gICAgICovXG4gICAgbGlzdE1vZHVsZXMoc291cmNlOiBib29sZWFuLCAuLi5jb25kaXRpb25zOiBzdHJpbmdbXSkge1xuICAgICAgICBpZiAoIWNvbmRpdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25kaXRpb25zID0gW3RoaXMuc3VwcG9ydHNFc20gPyBcImltcG9ydFwiIDogXCJyZXF1aXJlXCIsIFwiZGVmYXVsdFwiXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vZHVsZXMgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgICAgIGNvbnN0IGV4cG9ydHMgPSB0aGlzLmV4cG9ydHM7XG4gICAgICAgIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIiAmJiBleHBvcnRzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBmaW5kTW9kdWxlcyhzb3VyY2UsIG5ldyBTZXQoY29uZGl0aW9ucyksIG1vZHVsZXMsIHRoaXMubmFtZSwgdGhpcy5wYXRoLCBleHBvcnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtb2R1bGVzO1xuICAgIH1cblxuICAgICNtYXliZVN0YXQocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBtYXliZVN0YXRTeW5jKHRoaXMucmVzb2x2ZShwYXRoKSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBQYWNrYWdlSnNvbiA9IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGltcG9ydHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgbWF0dGVyPzoge1xuICAgICAgICB0ZXN0PzogYm9vbGVhbjtcbiAgICB9O1xuICAgIHNjcmlwdHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn07XG5cbmxldCB3b3JraW5nRGlyID0gXCIuXCI7XG5sZXQgd29ya3NwYWNlOiBQYWNrYWdlIHwgdW5kZWZpbmVkO1xubGV0IHRvb2xzOiBQYWNrYWdlIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBmaW5kKHN0YXJ0RGlyOiBzdHJpbmcsIHNlbGVjdG9yOiAocGtnOiBQYWNrYWdlKSA9PiBib29sZWFuKTogUGFja2FnZSB7XG4gICAgbGV0IHBrZyA9IG5ldyBQYWNrYWdlKHsgcGF0aDogc3RhcnREaXIgfSk7XG4gICAgd2hpbGUgKCFzZWxlY3Rvcihwa2cpKSB7XG4gICAgICAgIHBrZyA9IG5ldyBQYWNrYWdlKHsgcGF0aDogZGlybmFtZShwa2cucGF0aCkgfSk7XG4gICAgfVxuICAgIHJldHVybiBwa2c7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdEZvcm1hdHMoanNvbjogYW55KSB7XG4gICAgbGV0IGVzbTogYm9vbGVhbiwgY2pzOiBib29sZWFuO1xuXG4gICAgaWYgKGpzb24udHlwZSA9PT0gXCJtb2R1bGVcIikge1xuICAgICAgICBlc20gPSB0cnVlO1xuICAgICAgICBjanMgPVxuICAgICAgICAgICAgKGpzb24ubWFpbiAhPT0gdW5kZWZpbmVkICYmIGpzb24ubW9kdWxlICE9PSB1bmRlZmluZWQpIHx8XG4gICAgICAgICAgICAhIU9iamVjdC52YWx1ZXMoanNvbi5leHBvcnRzID8/IHt9KS5maW5kKChleHA6IGFueSkgPT4gZXhwLnJlcXVpcmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNqcyA9IHRydWU7XG4gICAgICAgIGVzbSA9ICEhanNvbi5tb2R1bGUgfHwgISFPYmplY3QudmFsdWVzKGpzb24uZXhwb3J0cyA/PyB7fSkuZmluZCgoZXhwOiBhbnkpID0+IGV4cC5pbXBvcnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7IGVzbSwgY2pzIH07XG59XG5cbmZ1bmN0aW9uIGZpbmRFeHBvcnRDb25kaXRpb24oZGV0YWlsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCB0eXBlOiBcImVzbVwiIHwgXCJjanNcIik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHR5cGUgPT09IFwiZXNtXCIgJiYgZGV0YWlsLmltcG9ydCkge1xuICAgICAgICBsZXQgZXhwID0gZGV0YWlsLmltcG9ydDtcbiAgICAgICAgaWYgKGV4cCAmJiB0eXBlb2YgZXhwICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBleHAgPSBmaW5kRXhwb3J0Q29uZGl0aW9uKGV4cCwgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cCkge1xuICAgICAgICAgICAgcmV0dXJuIGV4cDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBleHAgPSBkZXRhaWwucmVxdWlyZSA/PyBkZXRhaWwubm9kZSA/PyBkZXRhaWwuZGVmYXVsdDtcbiAgICBpZiAoZXhwICYmIHR5cGVvZiBleHAgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZXhwID0gZmluZEV4cG9ydENvbmRpdGlvbihleHAsIHR5cGUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXhwID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBleHA7XG4gICAgfVxufVxuXG50eXBlIENvbmRpdGlvbnMgPSB7IFtuYW1lOiBzdHJpbmddOiBFeHBvcnRzIH07XG5cbnR5cGUgRXhwb3J0cyA9IHN0cmluZyB8IENvbmRpdGlvbnMgfCBSZWNvcmQ8c3RyaW5nLCBDb25kaXRpb25zPjtcblxuZnVuY3Rpb24gZmluZE1vZHVsZXMoXG4gICAgc291cmNlOiBib29sZWFuLFxuICAgIGNvbmRpdGlvbnM6IFNldDxzdHJpbmc+LFxuICAgIHRhcmdldDogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBwcmVmaXg6IHN0cmluZyxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZXhwb3J0czogRXhwb3J0cyxcbikge1xuICAgIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBhZGRNb2R1bGVHbG9icyhzb3VyY2UsIHRhcmdldCwgcHJlZml4LCBwYXRoLCBleHBvcnRzKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZXhwb3J0cykpIHtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBleHBvcnRzKSB7XG4gICAgICAgICAgICBmaW5kTW9kdWxlcyhzb3VyY2UsIGNvbmRpdGlvbnMsIHRhcmdldCwgcHJlZml4LCBwYXRoLCBlbnRyeSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiICYmIGV4cG9ydHMgIT09IG51bGwpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkQ29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGV4cG9ydHMpIHtcbiAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICAgICAgICBmaW5kTW9kdWxlcyhzb3VyY2UsIGNvbmRpdGlvbnMsIHRhcmdldCwgam9pbihwcmVmaXgsIGtleSksIHBhdGgsIGV4cG9ydHNba2V5XSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzZWxlY3RlZENvbmRpdGlvbiAmJiBjb25kaXRpb25zLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgZmluZE1vZHVsZXMoc291cmNlLCBjb25kaXRpb25zLCB0YXJnZXQsIHByZWZpeCwgcGF0aCwgZXhwb3J0c1trZXldKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNYWxmb3JtZWQgZXhwb3J0cyBmaWVsZCBpbiBwYWNrYWdlLmpzb25cIik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhZGRNb2R1bGVHbG9icyhzb3VyY2U6IGJvb2xlYW4sIHRhcmdldDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgbmFtZTogc3RyaW5nLCBiYXNlOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZykge1xuICAgIGxldCBwYXRoID0gam9pbihiYXNlLCBwYXR0ZXJuKTtcbiAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoL1xcL2Rpc3RcXC8oPzplc218Y2pzKVxcLy8sIFwiL3NyYy9cIik7XG4gICAgfVxuXG4gICAgaWYgKG5hbWUuaW5jbHVkZXMoXCIqXCIpKSB7XG4gICAgICAgIC8vIFdpbGRjYXJkXG4gICAgICAgIGlmICghbmFtZS5lbmRzV2l0aChcIi8qXCIpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdpbGRjYXJkIGluIG1vZHVsZSAke25hbWV9IGRvZXMgbm90IGFwcGVhciBhcyBmaW5hbCBwYXRoIHNlZ21lbnRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCAtIDIpO1xuICAgICAgICBjb25zdCBwYXRocyA9IGdsb2JTeW5jKHNvdXJjZSA/IHBhdGgucmVwbGFjZSgvXFwuanMkLywgXCIue3RzLGpzLGNqcyxtanN9XCIpIDogcGF0aCk7XG4gICAgICAgIGlmICghcGF0aHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIG1hdGNoIGZvciBtb2R1bGUgJHtuYW1lfSBwYXR0ZXJuICR7cGF0dGVybn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFtwcmVmaXgsIHN1ZmZpeF0gPSBwYXRoLnNwbGl0KC9cXCorLyk7XG4gICAgICAgIGNvbnN0IHByZWZpeExlbmd0aCA9IHByZWZpeCA9PT0gdW5kZWZpbmVkID8gMCA6IHByZWZpeC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHN1ZmZpeExlbmd0aCA9IHN1ZmZpeCA9PT0gdW5kZWZpbmVkID8gMCA6IHN1ZmZpeC5sZW5ndGg7XG5cbiAgICAgICAgZm9yIChjb25zdCB0aGlzUGF0aCBvZiBwYXRocykge1xuICAgICAgICAgICAgY29uc3QgcXVhbGlmaWVyID0gdGhpc1BhdGguc3Vic3RyaW5nKHByZWZpeExlbmd0aCwgdGhpc1BhdGgubGVuZ3RoIC0gc3VmZml4TGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IHRoaXNOYW1lID0gam9pbihuYW1lLCBxdWFsaWZpZXIpO1xuICAgICAgICAgICAgdGFyZ2V0W3RoaXNOYW1lXSA9IHRoaXNQYXRoO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChwYXRoLmluY2x1ZGVzKFwiKlwiKSkge1xuICAgICAgICAvLyBBIHdpbGRjYXJkIHBhdGggaXMgb25seSB2YWxpZCB3aXRoIHdpbGRjYXJkIG5hbWVcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaWxkY2FyZCBpbiBtb2R1bGUgcGF0aCBcIiR7cGF0aH1cIiBidXQgbm90IGluIG1vZHVsZSBcIiR7bmFtZX1cImApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vIHdpbGRjYXJkIC0tIHJlbW92ZSBkaXJlY3RvcnlcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvXFwvKD86ZXhwb3J0fGluZGV4KSQvLCBcIlwiKTtcblxuICAgICAgICAvLyBMb29rIGZvciBzb3VyY2UgaWYgZmlsZSBpc24ndCBwcmVzZW50XG4gICAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgICBpZiAoaXNGaWxlKHBhdGgpKSB7XG4gICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoc291cmNlICYmIHBhdGguZW5kc1dpdGgoXCIuanNcIikpIHtcbiAgICAgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoL1xcLmpzJC8sIFwiLnRzXCIpO1xuICAgICAgICAgICAgaWYgKGlzRmlsZShwYXRoKSkge1xuICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTW9kdWxlIFwiJHtuYW1lfVwiIHBhdGggXCIke3BhdGh9XCIgbm90IGZvdW5kYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXRbbmFtZV0gPSBwYXRoO1xuICAgIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxTQUFTLFlBQVksY0FBYyxnQkFBZ0I7QUFDbkQsU0FBUyxTQUFTLFVBQVUsTUFBTSxpQkFBaUI7QUFDbkQsU0FBUyxTQUFTLE1BQU0sVUFBVSxlQUFlO0FBQ2pELFNBQVMsYUFBYSx1QkFBdUI7QUFDN0MsU0FBUyxRQUFRLG1CQUFtQixxQkFBcUI7QUFDekQsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxpQkFBaUI7QUFFbkIsTUFBTSwwQkFBMEIsTUFBTTtBQUFDO0FBRXZDLE1BQU0sY0FBYztBQUNwQixNQUFNLGVBQWU7QUFFNUIsTUFBTSxpQkFBaUIsQ0FBQztBQUV4QixTQUFTLFNBQVMsVUFBa0IsT0FBZSxLQUFLLE9BQWdCO0FBQ3BFLFNBQU8sUUFBUSxJQUFJO0FBQ25CLFNBQU8sTUFBTTtBQUNULFVBQU0sT0FBTztBQUFBLE1BQWdCLENBQUMsVUFBVSxTQUFTO0FBQUEsTUFBRyxNQUNoRCxLQUFLLE1BQU0sYUFBYSxRQUFRLE1BQU0sUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDO0FBQUEsSUFDL0Q7QUFFQSxRQUFJLE1BQU07QUFDTixVQUFJLFVBQVUsVUFBYSxLQUFLLFNBQVMsT0FBTztBQUM1QyxlQUFPLEVBQUUsTUFBTSxNQUFNLEtBQUs7QUFBQSxNQUM5QjtBQUFBLElBQ0o7QUFDQSxVQUFN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
|
|
420
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcGFja2FnZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjItMjAyNSBNYXR0ZXIuanMgQXV0aG9yc1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMsIHN0YXRTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyByZWFkZGlyLCByZWFkRmlsZSwgc3RhdCwgd3JpdGVGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZWxhdGl2ZSwgcmVzb2x2ZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBpZ25vcmVFcnJvciwgaWdub3JlRXJyb3JTeW5jIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgeyBpc0ZpbGUsIG1heWJlUmVhZEpzb25TeW5jLCBtYXliZVN0YXRTeW5jIH0gZnJvbSBcIi4vZmlsZS5qc1wiO1xuaW1wb3J0IHsgZ2xvYlN5bmMgfSBmcm9tIFwiLi9nbG9iLmpzXCI7XG5pbXBvcnQgeyBQcm9ncmVzcyB9IGZyb20gXCIuL3Byb2dyZXNzLmpzXCI7XG5pbXBvcnQgeyB0b29sc1BhdGggfSBmcm9tIFwiLi90b29scy1wYXRoLmNqc1wiO1xuXG5leHBvcnQgY2xhc3MgSnNvbk5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG5leHBvcnQgY29uc3QgQ09ORklHX1BBVEggPSBgc3JjL2J1aWxkLmNvbmZpZy50c2A7XG5leHBvcnQgY29uc3QgQ09ERUdFTl9QQVRIID0gYGNvZGVnZW5gO1xuXG5jb25zdCBwYWNrYWdlRm9yUGF0aCA9IHt9IGFzIFJlY29yZDxzdHJpbmcsIFBhY2thZ2UgfCB1bmRlZmluZWQgfCBudWxsPjtcblxuZnVuY3Rpb24gZmluZEpzb24oZmlsZW5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nID0gXCIuXCIsIHRpdGxlPzogc3RyaW5nKSB7XG4gICAgcGF0aCA9IHJlc29sdmUocGF0aCk7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgY29uc3QganNvbiA9IGlnbm9yZUVycm9yU3luYyhbXCJFTk9FTlRcIiwgXCJFTk9URElSXCJdLCAoKSA9PlxuICAgICAgICAgICAgSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocmVzb2x2ZShwYXRoLCBmaWxlbmFtZSkpLnRvU3RyaW5nKCkpLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChqc29uKSB7XG4gICAgICAgICAgICBpZiAodGl0bGUgPT09IHVuZGVmaW5lZCB8fCBqc29uLm5hbWUgPT09IHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcm9vdDogcGF0aCwganNvbiB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUocGF0aCk7XG4gICAgICAgIGlmIChwYXJlbnQgPT09IHBhdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBKc29uTm90Rm91bmRFcnJvcihgQ291bGQgbm90IGxvY2F0ZSAke3RpdGxlID8/IGZpbGVuYW1lfWApO1xuICAgICAgICB9XG4gICAgICAgIHBhdGggPSBwYXJlbnQ7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0RpcmVjdG9yeShwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gISFpZ25vcmVFcnJvclN5bmMoXCJFTk9FTlRcIiwgKCkgPT4gc3RhdFN5bmMocGF0aCkuaXNEaXJlY3RvcnkoKSk7XG59XG5cbmV4cG9ydCBjbGFzcyBQYWNrYWdlIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAganNvbjogUGFja2FnZUpzb247XG4gICAgc3VwcG9ydHNFc206IGJvb2xlYW47XG4gICAgc3VwcG9ydHNDanM6IGJvb2xlYW47XG4gICAgaGFzU3JjOiBib29sZWFuO1xuICAgIGhhc1Rlc3RzOiBib29sZWFuO1xuICAgIGhhc0NvbmZpZzogYm9vbGVhbjtcbiAgICBpc0xpYnJhcnk6IGJvb2xlYW47XG4gICAgI2FsaWFzZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgY29uc3RydWN0b3Ioe1xuICAgICAgICBwYXRoID0gXCIuXCIsXG4gICAgICAgIG5hbWUsXG4gICAgfToge1xuICAgICAgICBwYXRoPzogc3RyaW5nO1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgIH0gPSB7fSkge1xuICAgICAgICBjb25zdCB7IHJvb3QsIGpzb24gfSA9IGZpbmRKc29uKFwicGFja2FnZS5qc29uXCIsIHBhdGgsIG5hbWUpO1xuICAgICAgICB0aGlzLnBhdGggPSByb290O1xuICAgICAgICB0aGlzLmpzb24gPSBqc29uO1xuXG4gICAgICAgIGNvbnN0IHsgZXNtLCBjanMgfSA9IHNlbGVjdEZvcm1hdHModGhpcy5qc29uKTtcbiAgICAgICAgdGhpcy5zdXBwb3J0c0VzbSA9IGVzbTtcbiAgICAgICAgdGhpcy5zdXBwb3J0c0NqcyA9IGNqcztcblxuICAgICAgICB0aGlzLmhhc1NyYyA9IGlzRGlyZWN0b3J5KHRoaXMucmVzb2x2ZShcInNyY1wiKSk7XG4gICAgICAgIHRoaXMuaGFzVGVzdHMgPSBpc0RpcmVjdG9yeSh0aGlzLnJlc29sdmUoXCJ0ZXN0XCIpKTtcblxuICAgICAgICBjb25zdCByZWZzID0gbWF5YmVSZWFkSnNvblN5bmModGhpcy5yZXNvbHZlKFwidHNjb25maWcuanNvblwiKSk/LnJlZmVyZW5jZXMgYXMgdW5kZWZpbmVkIHwgeyBwYXRoOiBzdHJpbmcgfVtdO1xuICAgICAgICBpZiAocmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoIXJlZnMuZmluZChyZWYgPT4gdGhpcy5yZXNvbHZlKHJlZi5wYXRoKSA9PT0gdGhpcy5yZXNvbHZlKFwic3JjXCIpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzU3JjID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXJlZnMuZmluZChyZWYgPT4gdGhpcy5yZXNvbHZlKHJlZi5wYXRoKSA9PT0gdGhpcy5yZXNvbHZlKFwidGVzdFwiKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc1Rlc3RzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzTGlicmFyeSA9ICEhKHRoaXMuanNvbi5tYWluIHx8IHRoaXMuanNvbi5tb2R1bGUgfHwgdGhpcy5qc29uLmV4cG9ydHMpO1xuXG4gICAgICAgIHRoaXMuaGFzQ29uZmlnID0gdGhpcy5oYXNGaWxlKHRoaXMucmVzb2x2ZShDT05GSUdfUEFUSCkpO1xuICAgIH1cblxuICAgIGdldCBuYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5qc29uLm5hbWU7XG4gICAgfVxuXG4gICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmpzb24udmVyc2lvbjtcbiAgICB9XG5cbiAgICBnZXQgZXhwb3J0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuanNvbi5leHBvcnRzO1xuICAgIH1cblxuICAgIGdldCBoYXNDb2RlZ2VuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNEaXJlY3RvcnkoQ09ERUdFTl9QQVRIKTtcbiAgICB9XG5cbiAgICByZXNvbHZlKC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLnBhdGgsIC4uLnBhdGhzKTtcbiAgICB9XG5cbiAgICByZWxhdGl2ZShwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlbGF0aXZlKHRoaXMucGF0aCwgcGF0aCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2xvYihwYXR0ZXJuOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgICAgICAvLyBHbG9iIG9ubHkgdW5kZXJzdGFuZHMgZm9yd2FyZC1zbGFzaCBhcyBzZXBhcmF0b3IgYmVjYXVzZSByZWFzb25zXG4gICAgICAgIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcGF0dGVybiA9IHRoaXMucmVzb2x2ZShwYXR0ZXJuKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLm1hcChzID0+IHRoaXMucmVzb2x2ZShzKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDdXJyZW50IGdsb2IgaW1wbGVtZW50YXRpb24gaXNuJ3QgYWN0dWFsbHkgYXN5bmMgYXMgdGhpcyBpcyBmYXN0ZXIgYW5kIHdlIG9ubHkgd2FsayBzbWFsbCBkaXJlY3RvcnkgdHJlZXNcbiAgICAgICAgcmV0dXJuIGdsb2JTeW5jKHBhdHRlcm4pO1xuICAgIH1cblxuICAgIHN0YXJ0KHdoYXQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwcm9ncmVzcyA9IG5ldyBQcm9ncmVzcygpO1xuICAgICAgICBwcm9ncmVzcy5zdGFydHVwKHdoYXQsIHRoaXMpO1xuICAgICAgICByZXR1cm4gcHJvZ3Jlc3M7XG4gICAgfVxuXG4gICAgYXN5bmMgbGFzdE1vZGlmaWVkKC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0TW9kaWZpZWRBYnNvbHV0ZShwYXRocy5tYXAocCA9PiB0aGlzLnJlc29sdmUocCkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxhc3RNb2RpZmllZEFic29sdXRlKHBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICBsZXQgbXRpbWUgPSAwO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIHBhdGhzLm1hcChhc3luYyBwID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGlnbm9yZUVycm9yKFwiRU5PRU5UXCIsIGFzeW5jICgpID0+IGF3YWl0IHN0YXQocCkpO1xuICAgICAgICAgICAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCB0aGlzTXRpbWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aHMgPSAoYXdhaXQgcmVhZGRpcihwKSkubWFwKHAyID0+IHJlc29sdmUocCwgcDIpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpc010aW1lID0gYXdhaXQgdGhpcy5sYXN0TW9kaWZpZWRBYnNvbHV0ZShwYXRocyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc010aW1lID0gc3RhdHMubXRpbWVNcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNNdGltZSA+IG10aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIG10aW1lID0gdGhpc010aW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbXRpbWU7XG4gICAgfVxuXG4gICAgZ2V0IGRlcGVuZGVuY2llcygpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IEFycmF5PHN0cmluZz4oKTtcbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIFtcImRlcGVuZGVuY2llc1wiLCBcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCIsIFwiZGV2RGVwZW5kZW5jaWVzXCIsIFwicGVlckRlcGVuZGVuY2llc1wiXSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmpzb25bdHlwZV0gPT09IFwib2JqZWN0XCIgJiYgdGhpcy5qc29uW3R5cGVdICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gWy4uLnJlc3VsdCwgLi4uT2JqZWN0LmtleXModGhpcy5qc29uW3R5cGVdKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5uZXcgU2V0KHJlc3VsdCldO1xuICAgIH1cblxuICAgIGdldCB3b3Jrc3BhY2UoKSB7XG4gICAgICAgIHJldHVybiBQYWNrYWdlLndvcmtzcGFjZUZvcih0aGlzLnBhdGgpO1xuICAgIH1cblxuICAgIGdldCBpc1dvcmtzcGFjZSgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5qc29uLndvcmtzcGFjZXMpO1xuICAgIH1cblxuICAgIGdldCByb290KCk6IFBhY2thZ2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud29ya3NwYWNlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgSnNvbk5vdEZvdW5kRXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBzdGF0aWMgc2V0IHdvcmtpbmdEaXIod2Q6IHN0cmluZykge1xuICAgICAgICB3b3JraW5nRGlyID0gd2Q7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCB3b3Jrc3BhY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndvcmtzcGFjZUZvcih3b3JraW5nRGlyKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgd29ya3NwYWNlRm9yKGN3ZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghd29ya3NwYWNlKSB7XG4gICAgICAgICAgICB3b3Jrc3BhY2UgPSBmaW5kKGN3ZCwgcGtnID0+IEFycmF5LmlzQXJyYXkocGtnLmpzb24ud29ya3NwYWNlcykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3b3Jrc3BhY2U7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCB0b29scygpIHtcbiAgICAgICAgaWYgKCF0b29scykge1xuICAgICAgICAgICAgdG9vbHMgPSBuZXcgUGFja2FnZSh7IHBhdGg6IHRvb2xzUGF0aCB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9vbHM7XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbmRFeHBvcnQobmFtZTogc3RyaW5nLCB0eXBlOiBcImNqc1wiIHwgXCJlc21cIiA9IFwiZXNtXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud29ya3NwYWNlLnJlc29sdmVJbXBvcnQobmFtZSwgdHlwZSk7XG4gICAgfVxuXG4gICAgcmVzb2x2ZUV4cG9ydChuYW1lOiBzdHJpbmcsIHR5cGU6IFwiY2pzXCIgfCBcImVzbVwiID0gXCJlc21cIikge1xuICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICAgIG5hbWUgPSBgLi8ke25hbWV9YDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHBvcnREZXRhaWwgPSB0aGlzLmV4cG9ydHM/LltuYW1lXTtcblxuICAgICAgICBpZiAoZXhwb3J0RGV0YWlsKSB7XG4gICAgICAgICAgICBjb25zdCBleHAgPSBmaW5kRXhwb3J0Q29uZGl0aW9uKGV4cG9ydERldGFpbCwgdHlwZSk7XG4gICAgICAgICAgICBpZiAoZXhwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZShleHApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5hbWUgPT09IFwiLlwiKSB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJlc21cIiAmJiB0aGlzLmpzb24ubW9kdWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZSh0aGlzLmpzb24ubW9kdWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmpzb24ubWFpbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmUodGhpcy5qc29uLm1haW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBleHBvcnQgJHtuYW1lfSBpbiBwYWNrYWdlICR7dGhpcy5uYW1lfWApO1xuICAgIH1cblxuICAgIGZpbmRQYWNrYWdlKG5hbWU6IHN0cmluZykge1xuICAgICAgICBsZXQgcmVzb2x2ZUluID0gdGhpcy5wYXRoO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgaWYgKGlzRGlyZWN0b3J5KHJlc29sdmUocmVzb2x2ZUluLCBcIm5vZGVfbW9kdWxlc1wiLCBuYW1lKSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXNvbHZlSW4gPSBkaXJuYW1lKHJlc29sdmVJbik7XG4gICAgICAgICAgICBpZiAobmV4dFJlc29sdmVJbiA9PT0gcmVzb2x2ZUluKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBtb2R1bGUgJHtuYW1lfSBmcm9tICR7dGhpcy5wYXRofWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZUluID0gbmV4dFJlc29sdmVJbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQYWNrYWdlLmZvclBhdGgocmVzb2x2ZShyZXNvbHZlSW4sIFwibm9kZV9tb2R1bGVzXCIsIG5hbWUpKTtcbiAgICB9XG5cbiAgICByZXNvbHZlSW1wb3J0KG5hbWU6IHN0cmluZywgdHlwZTogXCJjanNcIiB8IFwiZXNtXCIgPSBcImVzbVwiKSB7XG4gICAgICAgIGNvbnN0IHNlZ21lbnRzID0gbmFtZS5zcGxpdChcIi9cIik7XG4gICAgICAgIGxldCBwYWNrYWdlTmFtZSA9IHNlZ21lbnRzLnNoaWZ0KCkgYXMgc3RyaW5nO1xuICAgICAgICBpZiAocGFja2FnZU5hbWUuc3RhcnRzV2l0aChcIkBcIikgJiYgc2VnbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYWNrYWdlTmFtZSA9IGAke3BhY2thZ2VOYW1lfS8ke3NlZ21lbnRzLnNoaWZ0KCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBrZyA9IHRoaXMuZmluZFBhY2thZ2UocGFja2FnZU5hbWUpO1xuXG4gICAgICAgIHJldHVybiBwa2cucmVzb2x2ZUV4cG9ydChzZWdtZW50cy5sZW5ndGggPyBzZWdtZW50cy5qb2luKFwiL1wiKSA6IFwiLlwiLCB0eXBlKTtcbiAgICB9XG5cbiAgICBoYXNGaWxlKHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gISF0aGlzLiNtYXliZVN0YXQocGF0aCk/LmlzRmlsZSgpO1xuICAgIH1cblxuICAgIGhhc0RpcmVjdG9yeShwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy4jbWF5YmVTdGF0KHBhdGgpPy5pc0RpcmVjdG9yeSgpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRGaWxlKHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gcmVhZEZpbGUodGhpcy5yZXNvbHZlKHBhdGgpLCBcInV0Zi04XCIpO1xuICAgIH1cblxuICAgIHJlYWRGaWxlU3luYyhwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRGaWxlU3luYyh0aGlzLnJlc29sdmUocGF0aCksIFwidXRmLThcIik7XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGVGaWxlKHBhdGg6IHN0cmluZywgY29udGVudHM6IHVua25vd24pIHtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlKHRoaXMucmVzb2x2ZShwYXRoKSwgYCR7Y29udGVudHN9YCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2F2ZSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZUZpbGUoam9pbih0aGlzLnBhdGgsIFwicGFja2FnZS5qc29uXCIpLCBKU09OLnN0cmluZ2lmeSh0aGlzLmpzb24sIHVuZGVmaW5lZCwgNCkpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRKc29uKHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgdGhpcy5yZWFkRmlsZShwYXRoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHRleHQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgZSA9IG5ldyBFcnJvcihgJHtlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKGUgYXMgRXJyb3IpLm1lc3NhZ2UgPSBgRXJyb3IgcGFyc2luZyBcIiR7dGhpcy5yZXNvbHZlKHBhdGgpfVwiOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWA7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGVKc29uKHBhdGg6IHN0cmluZywgdmFsdWU6IHt9KSB7XG4gICAgICAgIGF3YWl0IHRoaXMud3JpdGVGaWxlKHBhdGgsIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB1bmRlZmluZWQsIDQpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbWF5YmVGb3JQYXRoKHBhdGg6IHN0cmluZykge1xuICAgICAgICBmdW5jdGlvbiBmaW5kKHBhdGg6IHN0cmluZyk6IFBhY2thZ2UgfCBudWxsIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBwYWNrYWdlRm9yUGF0aFtwYXRoXTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChleGlzdHNTeW5jKGpvaW4ocGF0aCwgXCJwYWNrYWdlLmpzb25cIikpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBQYWNrYWdlKHsgcGF0aCB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmaW5kKGRpcm5hbWUocGF0aCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYWNrYWdlRm9yUGF0aFtwYXRoXSA9IHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBmaW5kKHBhdGgpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQgPz8gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHN0YXRpYyBmb3JQYXRoKHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLm1heWJlRm9yUGF0aChwYXRoKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcGFja2FnZS5qc29uIGZvciBcIiR7cGF0aH1cImApO1xuICAgIH1cblxuICAgIGdldCBhbGlhc2VzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy4jYWxpYXNlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy4jYWxpYXNlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI2FsaWFzZXMgPSB7XG4gICAgICAgICAgICAuLi5QYWNrYWdlLm1heWJlRm9yUGF0aChkaXJuYW1lKHRoaXMucGF0aCkpPy5hbGlhc2VzLFxuICAgICAgICAgICAgLi4udGhpcy5qc29uLmltcG9ydHMsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuI2FsaWFzZXM7XG4gICAgfVxuXG4gICAgZ2V0IG1vZHVsZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RNb2R1bGVzKGZhbHNlKTtcbiAgICB9XG5cbiAgICBnZXQgc291cmNlTW9kdWxlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdE1vZHVsZXModHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbWFwIG9mIG1vZHVsZSBuYW1lIC0+IGltcGxlbWVudGF0aW9uIGZpbGUuICBJZiBcInNvdXJjZVwiIGlzIHRydWUsIHNlYXJjaGVzIHNvdXJjZSBmaWxlcyByYXRoZXIgdGhhblxuICAgICAqIHRyYW5zcGlsZWQgZmlsZXMuICBXZSBkbyB0aGlzIHJhdGhlciB0aGFuIGZpbmRpbmcgdHJhbnNwaWxhdGlvbiBmaWxlcyB0aGVuIG1hcHBpbmcgdG8gc291cmNlIGZpbGVzIHNvIHRoaXMgd29ya3NcbiAgICAgKiBldmVuIGlmIHRoZXJlIGlzbid0IGEgYnVpbGQuXG4gICAgICovXG4gICAgbGlzdE1vZHVsZXMoc291cmNlOiBib29sZWFuLCAuLi5jb25kaXRpb25zOiBzdHJpbmdbXSkge1xuICAgICAgICBpZiAoIWNvbmRpdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25kaXRpb25zID0gW3RoaXMuc3VwcG9ydHNFc20gPyBcImltcG9ydFwiIDogXCJyZXF1aXJlXCIsIFwiZGVmYXVsdFwiXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vZHVsZXMgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgICAgIGNvbnN0IGV4cG9ydHMgPSB0aGlzLmV4cG9ydHM7XG4gICAgICAgIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIiAmJiBleHBvcnRzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBmaW5kTW9kdWxlcyhzb3VyY2UsIG5ldyBTZXQoY29uZGl0aW9ucyksIG1vZHVsZXMsIHRoaXMubmFtZSwgdGhpcy5wYXRoLCBleHBvcnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtb2R1bGVzO1xuICAgIH1cblxuICAgICNtYXliZVN0YXQocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBtYXliZVN0YXRTeW5jKHRoaXMucmVzb2x2ZShwYXRoKSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBQYWNrYWdlSnNvbiA9IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGltcG9ydHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgbWF0dGVyPzoge1xuICAgICAgICB0ZXN0PzogYm9vbGVhbjtcbiAgICB9O1xuICAgIHNjcmlwdHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn07XG5cbmxldCB3b3JraW5nRGlyID0gXCIuXCI7XG5sZXQgd29ya3NwYWNlOiBQYWNrYWdlIHwgdW5kZWZpbmVkO1xubGV0IHRvb2xzOiBQYWNrYWdlIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBmaW5kKHN0YXJ0RGlyOiBzdHJpbmcsIHNlbGVjdG9yOiAocGtnOiBQYWNrYWdlKSA9PiBib29sZWFuKTogUGFja2FnZSB7XG4gICAgbGV0IHBrZyA9IG5ldyBQYWNrYWdlKHsgcGF0aDogc3RhcnREaXIgfSk7XG4gICAgd2hpbGUgKCFzZWxlY3Rvcihwa2cpKSB7XG4gICAgICAgIHBrZyA9IG5ldyBQYWNrYWdlKHsgcGF0aDogZGlybmFtZShwa2cucGF0aCkgfSk7XG4gICAgfVxuICAgIHJldHVybiBwa2c7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdEZvcm1hdHMoanNvbjogYW55KSB7XG4gICAgbGV0IGVzbTogYm9vbGVhbiwgY2pzOiBib29sZWFuO1xuXG4gICAgaWYgKGpzb24udHlwZSA9PT0gXCJtb2R1bGVcIikge1xuICAgICAgICBlc20gPSB0cnVlO1xuICAgICAgICBjanMgPVxuICAgICAgICAgICAgKGpzb24ubWFpbiAhPT0gdW5kZWZpbmVkICYmIGpzb24ubW9kdWxlICE9PSB1bmRlZmluZWQpIHx8XG4gICAgICAgICAgICAhIU9iamVjdC52YWx1ZXMoanNvbi5leHBvcnRzID8/IHt9KS5maW5kKChleHA6IGFueSkgPT4gZXhwLnJlcXVpcmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNqcyA9IHRydWU7XG4gICAgICAgIGVzbSA9ICEhanNvbi5tb2R1bGUgfHwgISFPYmplY3QudmFsdWVzKGpzb24uZXhwb3J0cyA/PyB7fSkuZmluZCgoZXhwOiBhbnkpID0+IGV4cC5pbXBvcnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7IGVzbSwgY2pzIH07XG59XG5cbmZ1bmN0aW9uIGZpbmRFeHBvcnRDb25kaXRpb24oZGV0YWlsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCB0eXBlOiBcImVzbVwiIHwgXCJjanNcIik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHR5cGUgPT09IFwiZXNtXCIgJiYgZGV0YWlsLmltcG9ydCkge1xuICAgICAgICBsZXQgZXhwID0gZGV0YWlsLmltcG9ydDtcbiAgICAgICAgaWYgKGV4cCAmJiB0eXBlb2YgZXhwICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBleHAgPSBmaW5kRXhwb3J0Q29uZGl0aW9uKGV4cCwgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cCkge1xuICAgICAgICAgICAgcmV0dXJuIGV4cDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBleHAgPSBkZXRhaWwucmVxdWlyZSA/PyBkZXRhaWwubm9kZSA/PyBkZXRhaWwuZGVmYXVsdDtcbiAgICBpZiAoZXhwICYmIHR5cGVvZiBleHAgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZXhwID0gZmluZEV4cG9ydENvbmRpdGlvbihleHAsIHR5cGUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXhwID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBleHA7XG4gICAgfVxufVxuXG50eXBlIENvbmRpdGlvbnMgPSB7IFtuYW1lOiBzdHJpbmddOiBFeHBvcnRzIH07XG5cbnR5cGUgRXhwb3J0cyA9IHN0cmluZyB8IENvbmRpdGlvbnMgfCBSZWNvcmQ8c3RyaW5nLCBDb25kaXRpb25zPjtcblxuZnVuY3Rpb24gZmluZE1vZHVsZXMoXG4gICAgc291cmNlOiBib29sZWFuLFxuICAgIGNvbmRpdGlvbnM6IFNldDxzdHJpbmc+LFxuICAgIHRhcmdldDogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBwcmVmaXg6IHN0cmluZyxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZXhwb3J0czogRXhwb3J0cyxcbikge1xuICAgIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBhZGRNb2R1bGVHbG9icyhzb3VyY2UsIHRhcmdldCwgcHJlZml4LCBwYXRoLCBleHBvcnRzKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZXhwb3J0cykpIHtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBleHBvcnRzKSB7XG4gICAgICAgICAgICBmaW5kTW9kdWxlcyhzb3VyY2UsIGNvbmRpdGlvbnMsIHRhcmdldCwgcHJlZml4LCBwYXRoLCBlbnRyeSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiICYmIGV4cG9ydHMgIT09IG51bGwpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkQ29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGV4cG9ydHMpIHtcbiAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICAgICAgICBmaW5kTW9kdWxlcyhzb3VyY2UsIGNvbmRpdGlvbnMsIHRhcmdldCwgam9pbihwcmVmaXgsIGtleSksIHBhdGgsIGV4cG9ydHNba2V5XSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzZWxlY3RlZENvbmRpdGlvbiAmJiBjb25kaXRpb25zLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgZmluZE1vZHVsZXMoc291cmNlLCBjb25kaXRpb25zLCB0YXJnZXQsIHByZWZpeCwgcGF0aCwgZXhwb3J0c1trZXldKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNYWxmb3JtZWQgZXhwb3J0cyBmaWVsZCBpbiBwYWNrYWdlLmpzb25cIik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhZGRNb2R1bGVHbG9icyhzb3VyY2U6IGJvb2xlYW4sIHRhcmdldDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgbmFtZTogc3RyaW5nLCBiYXNlOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZykge1xuICAgIGxldCBwYXRoID0gam9pbihiYXNlLCBwYXR0ZXJuKTtcbiAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoL1xcL2Rpc3RcXC8oPzplc218Y2pzKVxcLy8sIFwiL3NyYy9cIik7XG4gICAgfVxuXG4gICAgaWYgKG5hbWUuaW5jbHVkZXMoXCIqXCIpKSB7XG4gICAgICAgIC8vIFdpbGRjYXJkXG4gICAgICAgIGlmICghbmFtZS5lbmRzV2l0aChcIi8qXCIpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdpbGRjYXJkIGluIG1vZHVsZSAke25hbWV9IGRvZXMgbm90IGFwcGVhciBhcyBmaW5hbCBwYXRoIHNlZ21lbnRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCAtIDIpO1xuICAgICAgICBjb25zdCBwYXRocyA9IGdsb2JTeW5jKHNvdXJjZSA/IHBhdGgucmVwbGFjZSgvXFwuanMkLywgXCIue3RzLGpzLGNqcyxtanN9XCIpIDogcGF0aCk7XG4gICAgICAgIGlmICghcGF0aHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIG1hdGNoIGZvciBtb2R1bGUgJHtuYW1lfSBwYXR0ZXJuICR7cGF0dGVybn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFtwcmVmaXgsIHN1ZmZpeF0gPSBwYXRoLnNwbGl0KC9cXCorLyk7XG4gICAgICAgIGNvbnN0IHByZWZpeExlbmd0aCA9IHByZWZpeCA9PT0gdW5kZWZpbmVkID8gMCA6IHByZWZpeC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHN1ZmZpeExlbmd0aCA9IHN1ZmZpeCA9PT0gdW5kZWZpbmVkID8gMCA6IHN1ZmZpeC5sZW5ndGg7XG5cbiAgICAgICAgZm9yIChjb25zdCB0aGlzUGF0aCBvZiBwYXRocykge1xuICAgICAgICAgICAgY29uc3QgcXVhbGlmaWVyID0gdGhpc1BhdGguc3Vic3RyaW5nKHByZWZpeExlbmd0aCwgdGhpc1BhdGgubGVuZ3RoIC0gc3VmZml4TGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IHRoaXNOYW1lID0gam9pbihuYW1lLCBxdWFsaWZpZXIpO1xuICAgICAgICAgICAgdGFyZ2V0W3RoaXNOYW1lXSA9IHRoaXNQYXRoO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChwYXRoLmluY2x1ZGVzKFwiKlwiKSkge1xuICAgICAgICAvLyBBIHdpbGRjYXJkIHBhdGggaXMgb25seSB2YWxpZCB3aXRoIHdpbGRjYXJkIG5hbWVcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaWxkY2FyZCBpbiBtb2R1bGUgcGF0aCBcIiR7cGF0aH1cIiBidXQgbm90IGluIG1vZHVsZSBcIiR7bmFtZX1cImApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vIHdpbGRjYXJkIC0tIHJlbW92ZSBkaXJlY3RvcnlcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvXFwvKD86ZXhwb3J0fGluZGV4KSQvLCBcIlwiKTtcblxuICAgICAgICAvLyBMb29rIGZvciBzb3VyY2UgaWYgZmlsZSBpc24ndCBwcmVzZW50XG4gICAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgICBpZiAoaXNGaWxlKHBhdGgpKSB7XG4gICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoc291cmNlICYmIHBhdGguZW5kc1dpdGgoXCIuanNcIikpIHtcbiAgICAgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoL1xcLmpzJC8sIFwiLnRzXCIpO1xuICAgICAgICAgICAgaWYgKGlzRmlsZShwYXRoKSkge1xuICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTW9kdWxlIFwiJHtuYW1lfVwiIHBhdGggXCIke3BhdGh9XCIgbm90IGZvdW5kYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXRbbmFtZV0gPSBwYXRoO1xuICAgIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxTQUFTLFlBQVksY0FBYyxnQkFBZ0I7QUFDbkQsU0FBUyxTQUFTLFVBQVUsTUFBTSxpQkFBaUI7QUFDbkQsU0FBUyxTQUFTLE1BQU0sVUFBVSxlQUFlO0FBQ2pELFNBQVMsYUFBYSx1QkFBdUI7QUFDN0MsU0FBUyxRQUFRLG1CQUFtQixxQkFBcUI7QUFDekQsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxpQkFBaUI7QUFFbkIsTUFBTSwwQkFBMEIsTUFBTTtBQUFDO0FBRXZDLE1BQU0sY0FBYztBQUNwQixNQUFNLGVBQWU7QUFFNUIsTUFBTSxpQkFBaUIsQ0FBQztBQUV4QixTQUFTLFNBQVMsVUFBa0IsT0FBZSxLQUFLLE9BQWdCO0FBQ3BFLFNBQU8sUUFBUSxJQUFJO0FBQ25CLFNBQU8sTUFBTTtBQUNULFVBQU0sT0FBTztBQUFBLE1BQWdCLENBQUMsVUFBVSxTQUFTO0FBQUEsTUFBRyxNQUNoRCxLQUFLLE1BQU0sYUFBYSxRQUFRLE1BQU0sUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDO0FBQUEsSUFDL0Q7QUFFQSxRQUFJLE1BQU07QUFDTixVQUFJLFVBQVUsVUFBYSxLQUFLLFNBQVMsT0FBTztBQUM1QyxlQUFPLEVBQUUsTUFBTSxNQUFNLEtBQUs7QUFBQSxNQUM5QjtBQUFBLElBQ0o7QUFDQSxVQUFN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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright 2022-
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import colors from "ansi-colors";
|
|
@@ -213,4 +213,4 @@ function filterAnsi(str, len) {
|
|
|
213
213
|
export {
|
|
214
214
|
Progress
|
|
215
215
|
};
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcHJvZ3Jlc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjQgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IGNvbG9ycyBmcm9tIFwiYW5zaS1jb2xvcnNcIjtcbmltcG9ydCB7IHN0ZGVyciwgc3Rkb3V0IH0gZnJvbSBcInByb2Nlc3NcIjtcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tIFwiLi9wYWNrYWdlLmpzXCI7XG5cbmNvbnN0IENMRUFSID0gXCJcXHgxYltLXCI7XG5jb25zdCBTUElOTkVSID0gXCJcdTI1RDBcdTI1RDNcdTI1RDFcdTI1RDJcIjsgLy9cIlx1Mjg1Q1x1MjgxNFx1MjgyMlx1MjhBM1wiOyAvL1tcIlx1MjZBQlx1RkUwRVwiLCBcIlx1MjZBQVx1RkUwRVwiXTsgXCJcdTI4NDhcdTI4MTRcdTI4MjJcdTI4ODFcIjtcbmNvbnN0IFNQSU5ORVJfSU5URVJWQUwgPSAxMDA7XG5cbmZ1bmN0aW9uIHBhY2thZ2VJZGVudGl0eShwa2c6IFBhY2thZ2UpIHtcbiAgICBsZXQgaWRlbnRpdHkgPSBjb2xvcnMuYm9sZChwa2cuanNvbi5uYW1lKTtcbiAgICBpZiAocGtnLmpzb24udmVyc2lvbikge1xuICAgICAgICBpZGVudGl0eSA9IGAke2lkZW50aXR5fUAke3BrZy5qc29uLnZlcnNpb259YDtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50aXR5O1xufVxuXG4vKipcbiAqIEludGVyY2VwdCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBzdGRvdXQgc28gd2UgY2FuIGVuc3VyZSBvdXIgdXBkYXRlcyBhcHBlYXIgb24gZGlmZmVyZW50IGxpbmVzIGZyb20gb3RoZXIgb3V0cHV0LlxuICovXG5jb25zdCB3cml0ZVN0YXR1cyA9ICgoKSA9PiB7XG4gICAgbGV0IGxhc3RTdGF0dXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBsZXQgbmVlZE5ld2xpbmUgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGludGVyY2VwdChzdHJlYW06IE5vZGVKUy5Xcml0ZVN0cmVhbSkge1xuICAgICAgICBjb25zdCBhY3R1YWxXcml0ZSA9IHN0cmVhbS53cml0ZTtcbiAgICAgICAgc3RyZWFtLndyaXRlID0gKHBheWxvYWQ6IFVpbnQ4QXJyYXkgfCBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgYWN0dWFsV3JpdGUuY2FsbChzdHJlYW0sIFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgIGxhc3RTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVxdWlyZSBhIG5ld2xpbmUgZm9yIHN0YXR1cyB1cGRhdGVzIGFueSB0aW1lIHRoZSBjdXJzb3IgZG9lcyBub3QgZW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lXG4gICAgICAgICAgICBuZWVkTmV3bGluZSA9IHBheWxvYWRbcGF5bG9hZC5sZW5ndGggLSAxXSAhPT0gXCJcXG5cIiAmJiBwYXlsb2FkW3BheWxvYWQubGVuZ3RoIC0gMV0gIT09IFwiXFxyXCI7XG5cbiAgICAgICAgICAgIHJldHVybiBhY3R1YWxXcml0ZS5jYWxsKHN0cmVhbSwgcGF5bG9hZCwgLi4ucGFyYW1zKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbnRlcmNlcHQoc3Rkb3V0KTtcbiAgICBpbnRlcmNlcHQoc3RkZXJyKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiB3cml0ZVN0YXR1cyh0ZXh0OiBzdHJpbmcsIHdpbGxPdmVyd3JpdGUgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gcHJvY2Vzcy5zdGRvdXQuY29sdW1ucztcbiAgICAgICAgaWYgKHdpbGxPdmVyd3JpdGUgJiYgY29sdW1ucyAhPT0gdW5kZWZpbmVkICYmIHRleHQubGVuZ3RoID4gY29sdW1ucyAtIDIpIHtcbiAgICAgICAgICAgIHRleHQgPSBmaWx0ZXJBbnNpKHRleHQsIGNvbHVtbnMgLSAyKSArIFwiXHUyMDI2XCI7XG4gICAgICAgIH1cblxuICAgICAgICB0ZXh0ICs9IHdpbGxPdmVyd3JpdGUgPyBcIlxcclwiIDogXCJcXG5cIjtcbiAgICAgICAgaWYgKHRleHQgPT09IGxhc3RTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICBsYXN0U3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgc3Rkb3V0LndyaXRlKENMRUFSKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZWVkTmV3bGluZSAmJiAhdGV4dC5zdGFydHNXaXRoKFwiXFxuXCIpKSB7XG4gICAgICAgICAgICBzdGRvdXQud3JpdGUoXCJcXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBzdGRvdXQud3JpdGUodGV4dCk7XG5cbiAgICAgICAgbGFzdFN0YXR1cyA9IHRleHQ7XG4gICAgfTtcbn0pKCk7XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzcyB7XG4gICAgc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN0YXJ0dXA7XG4gICAgI29uZ29pbmdUZXh0Pzogc3RyaW5nO1xuICAgICNzdGFydD86IG51bWJlcjtcbiAgICAjc3Bpbm5lciA9IFwiXHUyOUQ3XCI7XG4gICAgI3JlZnJlc2hJbnRlcnZhbD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcbiAgICAjc3Bpbm5lclBvc2l0aW9uID0gMDtcbiAgICAjc3Bpbm5lcldpbmRvdz86IG51bWJlcjtcbiAgICAjc3VidGFza3MgPSBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBlbXBoYXNpemUodGV4dDogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gY29sb3JzLmJvbGQoYCR7dGV4dH1gKTtcbiAgICB9XG5cbiAgICBkZWVtcGhhc2l6ZSh0ZXh0OiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltKGAke3RleHR9YCk7XG4gICAgfVxuXG4gICAgc2tpcCh3aHk6IHN0cmluZywgcGtnOiBQYWNrYWdlKSB7XG4gICAgICAgIHN0ZG91dC53cml0ZShjb2xvcnMuZGltKGBTa2lwICR7cGFja2FnZUlkZW50aXR5KHBrZyl9OiAke3doeX1cXG5cXG5gKSk7XG4gICAgfVxuXG4gICAgc3RhcnR1cCh3aGF0OiBzdHJpbmcsIHBrZ09yT3ZlcndyaXRlPzogUGFja2FnZSB8IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHByb2Nlc3Muc3Rkb3V0LmlzVFRZKSB7XG4gICAgICAgICAgICB0aGlzLiN1cGRhdGVTcGlubmVyKCk7XG4gICAgICAgICAgICB0aGlzLiNyZWZyZXNoSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0aGlzLnJlZnJlc2guYmluZCh0aGlzKSwgU1BJTk5FUl9JTlRFUlZBTCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5TdGFydHVwO1xuICAgICAgICBpZiAocGtnT3JPdmVyd3JpdGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgcGtnT3JPdmVyd3JpdGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICB3cml0ZVN0YXR1cyh3aGF0LCBwa2dPck92ZXJ3cml0ZSA/PyB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdyaXRlU3RhdHVzKGAke3doYXR9ICR7cGFja2FnZUlkZW50aXR5KHBrZ09yT3ZlcndyaXRlKX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZSh0ZXh0OiBzdHJpbmcsIGV4dHJhPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLk9uZ29pbmc7XG4gICAgICAgIGxldCBkdXJhdGlvbjtcbiAgICAgICAgaWYgKHRoaXMuI3N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI3N0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IFwiXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHRoaXMuI2R1cmF0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGV4dHJhID0gZXh0cmEgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBgICR7ZXh0cmF9YDtcbiAgICAgICAgdGhpcy4jb25nb2luZ1RleHQgPSBgJHt0ZXh0fSAke2R1cmF0aW9ufSR7ZXh0cmF9YDtcbiAgICAgICAgdGhpcy4jd3JpdGVPbmdvaW5nKCk7XG4gICAgfVxuXG4gICAgI3dyaXRlT25nb2luZygpIHtcbiAgICAgICAgaWYgKCF0aGlzLiNvbmdvaW5nVGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VidGFzayA9IHRoaXMuI3N1YnRhc2tzLmxlbmd0aFxuICAgICAgICAgICAgPyBjb2xvcnMuZGltKGAgKCR7Y29sb3JzLmRpbSh0aGlzLiNzdWJ0YXNrc1t0aGlzLiNzdWJ0YXNrcy5sZW5ndGggLSAxXSl9KWApXG4gICAgICAgICAgICA6IFwiXCI7XG5cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtjb2xvcnMueWVsbG93KHRoaXMuI3NwaW5uZXIpfSAke3RoaXMuI29uZ29pbmdUZXh0fSR7c3VidGFza31gLCB0cnVlKTtcbiAgICB9XG5cbiAgICBzdWNjZXNzKHRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5TdWNjZXNzO1xuICAgICAgICB3cml0ZVN0YXR1cyhgICAke2NvbG9ycy5ncmVlbihcIlx1MjcxM1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZhaWx1cmUodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLkZhaWx1cmU7XG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7Y29sb3JzLnJlZEJyaWdodChcIlx1MjcxN1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGluZm8obGFiZWw6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBsYWJlbCA9IGAke2NvbG9ycy5kaW0obGFiZWwpfSAke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtjb2xvcnMuZGltKFwiXHUyMDIzXCIpfSAke2xhYmVsfWApO1xuICAgIH1cblxuICAgIHdhcm4odGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHN0ZG91dC53cml0ZShgICAgICR7Y29sb3JzLnllbGxvdyhcIldhcm5pbmc6XCIpfSAke3RleHR9XFxuYCk7XG4gICAgfVxuXG4gICAgc2h1dGRvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLiNyZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy4jcmVmcmVzaEludGVydmFsKTtcbiAgICAgICAgICAgIHRoaXMuI3JlZnJlc2hJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZVN0YXR1cyhcIlwiKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICBpZiAodGhpcy4jdXBkYXRlU3Bpbm5lcigpKSB7XG4gICAgICAgICAgICB0aGlzLiN3cml0ZU9uZ29pbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHN1YnRhc2sodGV4dDogc3RyaW5nLCBmbjogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgICAgICB0aGlzLiNzdWJ0YXNrcy5wdXNoKHRleHQpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmbigpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy4jc3VidGFza3MucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjdXBkYXRlU3Bpbm5lcigpIHtcbiAgICAgICAgaWYgKCFzdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgaWYgKHRoaXMuI3NwaW5uZXJXaW5kb3cgPT09IHdpbmRvdykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI3NwaW5uZXJXaW5kb3cgPSB3aW5kb3c7XG5cbiAgICAgICAgdGhpcy4jc3Bpbm5lclBvc2l0aW9uID0gKHRoaXMuI3NwaW5uZXJQb3NpdGlvbiArIDEpICUgU1BJTk5FUi5sZW5ndGg7XG4gICAgICAgIHRoaXMuI3NwaW5uZXIgPSBTUElOTkVSW3RoaXMuI3NwaW5uZXJQb3NpdGlvbl07XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuPFQ+KHdoYXQ6IHN0cmluZywgZm46ICgpID0+IFQgfCBQcm9taXNlPFQ+KSB7XG4gICAgICAgIHRoaXMudXBkYXRlKHdoYXQpO1xuICAgICAgICBsZXQgcmVzdWx0OiBUO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgZm4oKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHdoYXQpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3Mod2hhdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0ICNkdXJhdGlvbigpIHtcbiAgICAgICAgbGV0IG1zID0gdGhpcy4jc3RhcnQgPyBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuI3N0YXJ0IDogMDtcbiAgICAgICAgaWYgKG1zIDwgMTAwMCkge1xuICAgICAgICAgICAgbXMgPSBNYXRoLnJvdW5kKG1zIC8gMTApIC8gMTAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1zIDwgMTAwMDApIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC5yb3VuZChtcyAvIDEwMCkgLyAxMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC50cnVuYyhtcyAvIDEwMDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltLnllbGxvdyhgKCR7bXN9cylgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUHJvZ3Jlc3Mge1xuICAgIGV4cG9ydCBlbnVtIFN0YXR1cyB7XG4gICAgICAgIFN0YXJ0dXAgPSBcInN0YXJ0dXBcIixcbiAgICAgICAgT25nb2luZyA9IFwib25nb2luZ1wiLFxuICAgICAgICBTdWNjZXNzID0gXCJzdWNjZXNzXCIsXG4gICAgICAgIEZhaWx1cmUgPSBcImZhaWx1cmVcIixcbiAgICB9XG59XG5cbi8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjIzODU1My9ob3ctY2FuLWktdHJ1bmNhdGUtYS1zdHJpbmctdG8tYS1tYXhpbXVtLWxlbmd0aC13aXRob3V0LWJyZWFraW5nLWFuc2ktZXNjYXBlLWNvZFxuLy8gVE9ETyAtIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBzZWVtIGVudGlyZWx5IGNvcnJlY3QsIHN0aWxsIHNlZW1zIHRvIHRydW5jYXRlIHRvbyBtdWNoXG4vLyBDcm9wIHRoZSBsZW5ndGggb2YgbGluZXMsIEFOU0kgZXNjYXBlIGNvZGUgYXdhcmVcbi8vIEFsd2F5cyBvdXRwdXRzIGV2ZXJ5IGVzY2FwZSBjaGFyLCByZWdhcmRsZXNzIG9mIGxlbmd0aCAoc28gd2UgYWx3YXlzIGVuZCB1cCB3aXRoIGEgc2FuZSBzdGF0ZSlcbi8vIFZpc2libGUgY2hhcmFjdGVycyBhcmUgZmlsdGVyZWQgb3V0IG9uY2UgbGVuZ3RoIGlzIGV4Y2VlZGVkXG5mdW5jdGlvbiBmaWx0ZXJBbnNpKHN0cjogc3RyaW5nLCBsZW46IG51bWJlcikge1xuICAgIGlmICghbGVuIHx8IGxlbiA8IDEwKSByZXR1cm4gc3RyOyAvLyBwcm9iYWJseSBub3QgYSB2YWxpZCBjb25zb2xlIC0tIHNlbmQgYmFjayB0aGUgd2hvbGUgbGluZVxuICAgIGxldCBjb3VudCA9IDAsIC8vIG51bWJlciBvZiB2aXNpYmxlIGNoYXJzIG9uIGxpbmUgc28gZmFyXG4gICAgICAgIGVzYyA9IGZhbHNlLCAvLyBpbiBhbiBlc2NhcGUgc2VxdWVuY2VcbiAgICAgICAgbG9uZ2VzYyA9IGZhbHNlOyAvLyBpbiBhIG11bHRpLWNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2VcbiAgICBsZXQgb3V0cCA9IHRydWU7IC8vIHNob3VsZCBvdXRwdXQgdGhpcyBjaGFyYWN0ZXJcbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5zcGxpdChcIlwiKVxuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAvLyBmaWx0ZXIgY2hhcmFjdGVycy4uLlxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjID09IFwiW1wiKSBsb25nZXNjID0gdHJ1ZTsgLy8gaGF2ZSBzZWVuIGFuIGVzY2FwZSwgbm93ICdbJywgc3RhcnQgbXVsdGktY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChjID09IFwiXFx4MWJcIikgZXNjID0gdHJ1ZTsgLy8gc3RhcnQgb2YgZXNjYXBlIHNlcXVlbmNlXG5cbiAgICAgICAgICAgIG91dHAgPSBjb3VudCA8IGxlbiB8fCBlc2M7IC8vIGlmIGxlbmd0aCBleGNlZWRlZCwgZG9uJ3Qgb3V0cHV0IG5vbi1lc2NhcGUgY2hhcnNcbiAgICAgICAgICAgIGlmICghZXNjICYmICFsb25nZXNjKSBjb3VudCsrOyAvLyBpZiBub3QgaW4gZXNjYXBlLCBjb3VudCB2aXNpYmxlIGNoYXJcblxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjICE9IFwiXFx4MWJcIikgZXNjID0gZmFsc2U7IC8vIG91dCBvZiBzaW5nbGUgY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChsb25nZXNjICYmIGMgIT0gXCJbXCIgJiYgYyA+PSBcIkBcIiAmJiBjIDw9IFwiflwiKSB7XG4gICAgICAgICAgICAgICAgZXNjID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbG9uZ2VzYyA9IGZhbHNlO1xuICAgICAgICAgICAgfSAvLyBlbmQgb2YgbXVsdGktY2hhciBlc2NhcGVcblxuICAgICAgICAgICAgcmV0dXJuIG91dHA7IC8vIHJlc3VsdCBmb3IgZmlsdGVyXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXCIpOyAvLyBnbHVlIGNoYXJzIGJhY2sgaW50byBzdHJpbmdcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxPQUFPLFlBQVk7QUFDbkIsU0FBUyxRQUFRLGNBQWM7QUFHL0IsTUFBTSxRQUFRO0FBQ2QsTUFBTSxVQUFVO0FBQ2hCLE1BQU0sbUJBQW1CO0FBRXpCLFNBQVMsZ0JBQWdCLEtBQWM7QUFDbkMsTUFBSSxXQUFXLE9BQU8sS0FBSyxJQUFJLEtBQUssSUFBSTtBQUN4QyxNQUFJLElBQUksS0FBSyxTQUFTO0FBQ2xCLGVBQVcsR0FBRyxRQUFRLElBQUksSUFBSSxLQUFLLE9BQU87QUFBQSxFQUM5QztBQUNBLFNBQU87QUFDWDtBQUtBLE1BQU0s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
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcHJvZ3Jlc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjUgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IGNvbG9ycyBmcm9tIFwiYW5zaS1jb2xvcnNcIjtcbmltcG9ydCB7IHN0ZGVyciwgc3Rkb3V0IH0gZnJvbSBcInByb2Nlc3NcIjtcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tIFwiLi9wYWNrYWdlLmpzXCI7XG5cbmNvbnN0IENMRUFSID0gXCJcXHgxYltLXCI7XG5jb25zdCBTUElOTkVSID0gXCJcdTI1RDBcdTI1RDNcdTI1RDFcdTI1RDJcIjsgLy9cIlx1Mjg1Q1x1MjgxNFx1MjgyMlx1MjhBM1wiOyAvL1tcIlx1MjZBQlx1RkUwRVwiLCBcIlx1MjZBQVx1RkUwRVwiXTsgXCJcdTI4NDhcdTI4MTRcdTI4MjJcdTI4ODFcIjtcbmNvbnN0IFNQSU5ORVJfSU5URVJWQUwgPSAxMDA7XG5cbmZ1bmN0aW9uIHBhY2thZ2VJZGVudGl0eShwa2c6IFBhY2thZ2UpIHtcbiAgICBsZXQgaWRlbnRpdHkgPSBjb2xvcnMuYm9sZChwa2cuanNvbi5uYW1lKTtcbiAgICBpZiAocGtnLmpzb24udmVyc2lvbikge1xuICAgICAgICBpZGVudGl0eSA9IGAke2lkZW50aXR5fUAke3BrZy5qc29uLnZlcnNpb259YDtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50aXR5O1xufVxuXG4vKipcbiAqIEludGVyY2VwdCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBzdGRvdXQgc28gd2UgY2FuIGVuc3VyZSBvdXIgdXBkYXRlcyBhcHBlYXIgb24gZGlmZmVyZW50IGxpbmVzIGZyb20gb3RoZXIgb3V0cHV0LlxuICovXG5jb25zdCB3cml0ZVN0YXR1cyA9ICgoKSA9PiB7XG4gICAgbGV0IGxhc3RTdGF0dXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBsZXQgbmVlZE5ld2xpbmUgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGludGVyY2VwdChzdHJlYW06IE5vZGVKUy5Xcml0ZVN0cmVhbSkge1xuICAgICAgICBjb25zdCBhY3R1YWxXcml0ZSA9IHN0cmVhbS53cml0ZTtcbiAgICAgICAgc3RyZWFtLndyaXRlID0gKHBheWxvYWQ6IFVpbnQ4QXJyYXkgfCBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgYWN0dWFsV3JpdGUuY2FsbChzdHJlYW0sIFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgIGxhc3RTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVxdWlyZSBhIG5ld2xpbmUgZm9yIHN0YXR1cyB1cGRhdGVzIGFueSB0aW1lIHRoZSBjdXJzb3IgZG9lcyBub3QgZW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lXG4gICAgICAgICAgICBuZWVkTmV3bGluZSA9IHBheWxvYWRbcGF5bG9hZC5sZW5ndGggLSAxXSAhPT0gXCJcXG5cIiAmJiBwYXlsb2FkW3BheWxvYWQubGVuZ3RoIC0gMV0gIT09IFwiXFxyXCI7XG5cbiAgICAgICAgICAgIHJldHVybiBhY3R1YWxXcml0ZS5jYWxsKHN0cmVhbSwgcGF5bG9hZCwgLi4ucGFyYW1zKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbnRlcmNlcHQoc3Rkb3V0KTtcbiAgICBpbnRlcmNlcHQoc3RkZXJyKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiB3cml0ZVN0YXR1cyh0ZXh0OiBzdHJpbmcsIHdpbGxPdmVyd3JpdGUgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gcHJvY2Vzcy5zdGRvdXQuY29sdW1ucztcbiAgICAgICAgaWYgKHdpbGxPdmVyd3JpdGUgJiYgY29sdW1ucyAhPT0gdW5kZWZpbmVkICYmIHRleHQubGVuZ3RoID4gY29sdW1ucyAtIDIpIHtcbiAgICAgICAgICAgIHRleHQgPSBmaWx0ZXJBbnNpKHRleHQsIGNvbHVtbnMgLSAyKSArIFwiXHUyMDI2XCI7XG4gICAgICAgIH1cblxuICAgICAgICB0ZXh0ICs9IHdpbGxPdmVyd3JpdGUgPyBcIlxcclwiIDogXCJcXG5cIjtcbiAgICAgICAgaWYgKHRleHQgPT09IGxhc3RTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICBsYXN0U3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgc3Rkb3V0LndyaXRlKENMRUFSKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZWVkTmV3bGluZSAmJiAhdGV4dC5zdGFydHNXaXRoKFwiXFxuXCIpKSB7XG4gICAgICAgICAgICBzdGRvdXQud3JpdGUoXCJcXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBzdGRvdXQud3JpdGUodGV4dCk7XG5cbiAgICAgICAgbGFzdFN0YXR1cyA9IHRleHQ7XG4gICAgfTtcbn0pKCk7XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzcyB7XG4gICAgc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN0YXJ0dXA7XG4gICAgI29uZ29pbmdUZXh0Pzogc3RyaW5nO1xuICAgICNzdGFydD86IG51bWJlcjtcbiAgICAjc3Bpbm5lciA9IFwiXHUyOUQ3XCI7XG4gICAgI3JlZnJlc2hJbnRlcnZhbD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcbiAgICAjc3Bpbm5lclBvc2l0aW9uID0gMDtcbiAgICAjc3Bpbm5lcldpbmRvdz86IG51bWJlcjtcbiAgICAjc3VidGFza3MgPSBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBlbXBoYXNpemUodGV4dDogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gY29sb3JzLmJvbGQoYCR7dGV4dH1gKTtcbiAgICB9XG5cbiAgICBkZWVtcGhhc2l6ZSh0ZXh0OiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltKGAke3RleHR9YCk7XG4gICAgfVxuXG4gICAgc2tpcCh3aHk6IHN0cmluZywgcGtnOiBQYWNrYWdlKSB7XG4gICAgICAgIHN0ZG91dC53cml0ZShjb2xvcnMuZGltKGBTa2lwICR7cGFja2FnZUlkZW50aXR5KHBrZyl9OiAke3doeX1cXG5cXG5gKSk7XG4gICAgfVxuXG4gICAgc3RhcnR1cCh3aGF0OiBzdHJpbmcsIHBrZ09yT3ZlcndyaXRlPzogUGFja2FnZSB8IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHByb2Nlc3Muc3Rkb3V0LmlzVFRZKSB7XG4gICAgICAgICAgICB0aGlzLiN1cGRhdGVTcGlubmVyKCk7XG4gICAgICAgICAgICB0aGlzLiNyZWZyZXNoSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0aGlzLnJlZnJlc2guYmluZCh0aGlzKSwgU1BJTk5FUl9JTlRFUlZBTCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5TdGFydHVwO1xuICAgICAgICBpZiAocGtnT3JPdmVyd3JpdGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgcGtnT3JPdmVyd3JpdGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICB3cml0ZVN0YXR1cyh3aGF0LCBwa2dPck92ZXJ3cml0ZSA/PyB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdyaXRlU3RhdHVzKGAke3doYXR9ICR7cGFja2FnZUlkZW50aXR5KHBrZ09yT3ZlcndyaXRlKX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZSh0ZXh0OiBzdHJpbmcsIGV4dHJhPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLk9uZ29pbmc7XG4gICAgICAgIGxldCBkdXJhdGlvbjtcbiAgICAgICAgaWYgKHRoaXMuI3N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI3N0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IFwiXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHRoaXMuI2R1cmF0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGV4dHJhID0gZXh0cmEgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBgICR7ZXh0cmF9YDtcbiAgICAgICAgdGhpcy4jb25nb2luZ1RleHQgPSBgJHt0ZXh0fSAke2R1cmF0aW9ufSR7ZXh0cmF9YDtcbiAgICAgICAgdGhpcy4jd3JpdGVPbmdvaW5nKCk7XG4gICAgfVxuXG4gICAgI3dyaXRlT25nb2luZygpIHtcbiAgICAgICAgaWYgKCF0aGlzLiNvbmdvaW5nVGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VidGFzayA9IHRoaXMuI3N1YnRhc2tzLmxlbmd0aFxuICAgICAgICAgICAgPyBjb2xvcnMuZGltKGAgKCR7Y29sb3JzLmRpbSh0aGlzLiNzdWJ0YXNrc1t0aGlzLiNzdWJ0YXNrcy5sZW5ndGggLSAxXSl9KWApXG4gICAgICAgICAgICA6IFwiXCI7XG5cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtjb2xvcnMueWVsbG93KHRoaXMuI3NwaW5uZXIpfSAke3RoaXMuI29uZ29pbmdUZXh0fSR7c3VidGFza31gLCB0cnVlKTtcbiAgICB9XG5cbiAgICBzdWNjZXNzKHRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5TdWNjZXNzO1xuICAgICAgICB3cml0ZVN0YXR1cyhgICAke2NvbG9ycy5ncmVlbihcIlx1MjcxM1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZhaWx1cmUodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLkZhaWx1cmU7XG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7Y29sb3JzLnJlZEJyaWdodChcIlx1MjcxN1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGluZm8obGFiZWw6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBsYWJlbCA9IGAke2NvbG9ycy5kaW0obGFiZWwpfSAke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtjb2xvcnMuZGltKFwiXHUyMDIzXCIpfSAke2xhYmVsfWApO1xuICAgIH1cblxuICAgIHdhcm4odGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHN0ZG91dC53cml0ZShgICAgICR7Y29sb3JzLnllbGxvdyhcIldhcm5pbmc6XCIpfSAke3RleHR9XFxuYCk7XG4gICAgfVxuXG4gICAgc2h1dGRvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLiNyZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy4jcmVmcmVzaEludGVydmFsKTtcbiAgICAgICAgICAgIHRoaXMuI3JlZnJlc2hJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZVN0YXR1cyhcIlwiKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICBpZiAodGhpcy4jdXBkYXRlU3Bpbm5lcigpKSB7XG4gICAgICAgICAgICB0aGlzLiN3cml0ZU9uZ29pbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHN1YnRhc2sodGV4dDogc3RyaW5nLCBmbjogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgICAgICB0aGlzLiNzdWJ0YXNrcy5wdXNoKHRleHQpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmbigpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy4jc3VidGFza3MucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjdXBkYXRlU3Bpbm5lcigpIHtcbiAgICAgICAgaWYgKCFzdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgaWYgKHRoaXMuI3NwaW5uZXJXaW5kb3cgPT09IHdpbmRvdykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI3NwaW5uZXJXaW5kb3cgPSB3aW5kb3c7XG5cbiAgICAgICAgdGhpcy4jc3Bpbm5lclBvc2l0aW9uID0gKHRoaXMuI3NwaW5uZXJQb3NpdGlvbiArIDEpICUgU1BJTk5FUi5sZW5ndGg7XG4gICAgICAgIHRoaXMuI3NwaW5uZXIgPSBTUElOTkVSW3RoaXMuI3NwaW5uZXJQb3NpdGlvbl07XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuPFQ+KHdoYXQ6IHN0cmluZywgZm46ICgpID0+IFQgfCBQcm9taXNlPFQ+KSB7XG4gICAgICAgIHRoaXMudXBkYXRlKHdoYXQpO1xuICAgICAgICBsZXQgcmVzdWx0OiBUO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgZm4oKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHdoYXQpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3Mod2hhdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0ICNkdXJhdGlvbigpIHtcbiAgICAgICAgbGV0IG1zID0gdGhpcy4jc3RhcnQgPyBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuI3N0YXJ0IDogMDtcbiAgICAgICAgaWYgKG1zIDwgMTAwMCkge1xuICAgICAgICAgICAgbXMgPSBNYXRoLnJvdW5kKG1zIC8gMTApIC8gMTAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1zIDwgMTAwMDApIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC5yb3VuZChtcyAvIDEwMCkgLyAxMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC50cnVuYyhtcyAvIDEwMDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltLnllbGxvdyhgKCR7bXN9cylgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUHJvZ3Jlc3Mge1xuICAgIGV4cG9ydCBlbnVtIFN0YXR1cyB7XG4gICAgICAgIFN0YXJ0dXAgPSBcInN0YXJ0dXBcIixcbiAgICAgICAgT25nb2luZyA9IFwib25nb2luZ1wiLFxuICAgICAgICBTdWNjZXNzID0gXCJzdWNjZXNzXCIsXG4gICAgICAgIEZhaWx1cmUgPSBcImZhaWx1cmVcIixcbiAgICB9XG59XG5cbi8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjIzODU1My9ob3ctY2FuLWktdHJ1bmNhdGUtYS1zdHJpbmctdG8tYS1tYXhpbXVtLWxlbmd0aC13aXRob3V0LWJyZWFraW5nLWFuc2ktZXNjYXBlLWNvZFxuLy8gVE9ETyAtIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBzZWVtIGVudGlyZWx5IGNvcnJlY3QsIHN0aWxsIHNlZW1zIHRvIHRydW5jYXRlIHRvbyBtdWNoXG4vLyBDcm9wIHRoZSBsZW5ndGggb2YgbGluZXMsIEFOU0kgZXNjYXBlIGNvZGUgYXdhcmVcbi8vIEFsd2F5cyBvdXRwdXRzIGV2ZXJ5IGVzY2FwZSBjaGFyLCByZWdhcmRsZXNzIG9mIGxlbmd0aCAoc28gd2UgYWx3YXlzIGVuZCB1cCB3aXRoIGEgc2FuZSBzdGF0ZSlcbi8vIFZpc2libGUgY2hhcmFjdGVycyBhcmUgZmlsdGVyZWQgb3V0IG9uY2UgbGVuZ3RoIGlzIGV4Y2VlZGVkXG5mdW5jdGlvbiBmaWx0ZXJBbnNpKHN0cjogc3RyaW5nLCBsZW46IG51bWJlcikge1xuICAgIGlmICghbGVuIHx8IGxlbiA8IDEwKSByZXR1cm4gc3RyOyAvLyBwcm9iYWJseSBub3QgYSB2YWxpZCBjb25zb2xlIC0tIHNlbmQgYmFjayB0aGUgd2hvbGUgbGluZVxuICAgIGxldCBjb3VudCA9IDAsIC8vIG51bWJlciBvZiB2aXNpYmxlIGNoYXJzIG9uIGxpbmUgc28gZmFyXG4gICAgICAgIGVzYyA9IGZhbHNlLCAvLyBpbiBhbiBlc2NhcGUgc2VxdWVuY2VcbiAgICAgICAgbG9uZ2VzYyA9IGZhbHNlOyAvLyBpbiBhIG11bHRpLWNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2VcbiAgICBsZXQgb3V0cCA9IHRydWU7IC8vIHNob3VsZCBvdXRwdXQgdGhpcyBjaGFyYWN0ZXJcbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5zcGxpdChcIlwiKVxuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAvLyBmaWx0ZXIgY2hhcmFjdGVycy4uLlxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjID09IFwiW1wiKSBsb25nZXNjID0gdHJ1ZTsgLy8gaGF2ZSBzZWVuIGFuIGVzY2FwZSwgbm93ICdbJywgc3RhcnQgbXVsdGktY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChjID09IFwiXFx4MWJcIikgZXNjID0gdHJ1ZTsgLy8gc3RhcnQgb2YgZXNjYXBlIHNlcXVlbmNlXG5cbiAgICAgICAgICAgIG91dHAgPSBjb3VudCA8IGxlbiB8fCBlc2M7IC8vIGlmIGxlbmd0aCBleGNlZWRlZCwgZG9uJ3Qgb3V0cHV0IG5vbi1lc2NhcGUgY2hhcnNcbiAgICAgICAgICAgIGlmICghZXNjICYmICFsb25nZXNjKSBjb3VudCsrOyAvLyBpZiBub3QgaW4gZXNjYXBlLCBjb3VudCB2aXNpYmxlIGNoYXJcblxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjICE9IFwiXFx4MWJcIikgZXNjID0gZmFsc2U7IC8vIG91dCBvZiBzaW5nbGUgY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChsb25nZXNjICYmIGMgIT0gXCJbXCIgJiYgYyA+PSBcIkBcIiAmJiBjIDw9IFwiflwiKSB7XG4gICAgICAgICAgICAgICAgZXNjID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbG9uZ2VzYyA9IGZhbHNlO1xuICAgICAgICAgICAgfSAvLyBlbmQgb2YgbXVsdGktY2hhciBlc2NhcGVcblxuICAgICAgICAgICAgcmV0dXJuIG91dHA7IC8vIHJlc3VsdCBmb3IgZmlsdGVyXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXCIpOyAvLyBnbHVlIGNoYXJzIGJhY2sgaW50byBzdHJpbmdcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxPQUFPLFlBQVk7QUFDbkIsU0FBUyxRQUFRLGNBQWM7QUFHL0IsTUFBTSxRQUFRO0FBQ2QsTUFBTSxVQUFVO0FBQ2hCLE1BQU0sbUJBQW1CO0FBRXpCLFNBQVMsZ0JBQWdCLEtBQWM7QUFDbkMsTUFBSSxXQUFXLE9BQU8sS0FBSyxJQUFJLEtBQUssSUFBSTtBQUN4QyxNQUFJLElBQUksS0FBSyxTQUFTO0FBQ2xCLGVBQVcsR0FBRyxRQUFRLElBQUksSUFBSSxLQUFLLE9BQU87QUFBQSxFQUM5QztBQUNBLFNBQU87QUFDWDtBQUtBLE1BQU0s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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright 2022-
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { commander } from "../util/commander.js";
|
|
@@ -30,4 +30,4 @@ async function main(argv = process.argv) {
|
|
|
30
30
|
export {
|
|
31
31
|
main
|
|
32
32
|
};
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZlcnNpb25pbmcvY2xpLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMi0yMDI1IE1hdHRlci5qcyBBdXRob3JzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7IGNvbW1hbmRlciB9IGZyb20gXCIuLi91dGlsL2NvbW1hbmRlci5qc1wiO1xuaW1wb3J0IHsgUGFja2FnZSB9IGZyb20gXCIuLi91dGlsL3BhY2thZ2UuanNcIjtcbmltcG9ydCB7IFByb2dyZXNzIH0gZnJvbSBcIi4uL3V0aWwvcHJvZ3Jlc3MuanNcIjtcbmltcG9ydCB7IFZlcnNpb25lciB9IGZyb20gXCIuL3ZlcnNpb25lci5qc1wiO1xuXG5pbnRlcmZhY2UgQXJncyB7XG4gICAgdmVyc2lvbj86IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgc2V0PzogYm9vbGVhbjtcbiAgICBhcHBseT86IGJvb2xlYW47XG4gICAgdGFnPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1haW4oYXJndiA9IHByb2Nlc3MuYXJndikge1xuICAgIGNvbnN0IHByb2dyYW0gPSBjb21tYW5kZXIoXCJtYXR0ZXItdmVyc2lvblwiLCBcIk1hbmlwdWxhdGUgbW9ub3JlcG8gcGFja2FnZSB2ZXJzaW9ucy5cIilcbiAgICAgICAgLmFyZ3VtZW50KFwiW3ZlcnNpb25dXCIpXG4gICAgICAgIC5vcHRpb24oXCItcCwgLS1wcmVmaXggPHByZWZpeD5cIiwgXCJzcGVjaWZ5IG1vbm9yZXBvIGRpcmVjdG9yeVwiKVxuICAgICAgICAub3B0aW9uKFwiLXMsIC0tc2V0XCIsIFwic2V0cyB0aGUgcmVsZWFzZSB2ZXJzaW9uXCIpXG4gICAgICAgIC5vcHRpb24oXCItYSwgLS1hcHBseVwiLCBcInNldHMgcGFja2FnZSB2ZXJzaW9ucyB0byB0aGUgcmVsZWFzZSB2ZXJzaW9uXCIpXG4gICAgICAgIC5vcHRpb24oXCItdCwgLS10YWdcIiwgXCJhZGRzIGdpdCB0YWcgZm9yIHJlbGVhc2UgdmVyc2lvblwiKVxuICAgICAgICAucGFyc2UoYXJndik7XG5cbiAgICBjb25zdCBhcmdzID0gcHJvZ3JhbS5vcHRzPEFyZ3M+KCk7XG4gICAgYXJncy52ZXJzaW9uID0gcHJvZ3JhbS5hcmdzWzBdO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IGFyZ3MudmVyc2lvbjtcbiAgICBjb25zdCBwa2cgPSBuZXcgUGFja2FnZSh7IHBhdGg6IGFyZ3MucHJlZml4IH0pO1xuICAgIGNvbnN0IHZlcnNpb25lciA9IG5ldyBWZXJzaW9uZXIocGtnLCB2ZXJzaW9uKTtcblxuICAgIGNvbnN0IHByb2dyZXNzID0gbmV3IFByb2dyZXNzKCk7XG5cbiAgICBwcm9ncmVzcy5zdGFydHVwKGBSZWxlYXNlICR7dmVyc2lvbmVyLnZlcnNpb259YCwgdmVyc2lvbmVyLnBrZyk7XG4gICAgaWYgKGFyZ3Muc2V0KSB7XG4gICAgICAgIGF3YWl0IHByb2dyZXNzLnJ1bihgU2V0IHZlcnNpb24gdG8gJHtwcm9ncmVzcy5lbXBoYXNpemUodmVyc2lvbmVyLnZlcnNpb24pfWAsICgpID0+IHZlcnNpb25lci5zZXQoKSk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MuYXBwbHkpIHtcbiAgICAgICAgYXdhaXQgdmVyc2lvbmVyLmFwcGx5KHByb2dyZXNzKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy50YWcpIHtcbiAgICAgICAgYXdhaXQgcHJvZ3Jlc3MucnVuKGBUYWdnaW5nIHZlcnNpb24gJHtwcm9ncmVzcy5lbXBoYXNpemUodmVyc2lvbmVyLnZlcnNpb24pfWAsICgpID0+IHZlcnNpb25lci50YWcoKSk7XG4gICAgfVxuXG4gICAgcHJvZ3Jlc3Muc2h1dGRvd24oKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxTQUFTLGlCQUFpQjtBQUMxQixTQUFTLGVBQWU7QUFDeEIsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxpQkFBaUI7QUFVMUIsZUFBc0IsS0FBSyxPQUFPLFFBQVEsTUFBTTtBQUM1QyxRQUFNLFVBQVUsVUFBVSxrQkFBa0IsdUNBQXVDLEVBQzlFLFNBQVMsV0FBVyxFQUNwQixPQUFPLHlCQUF5Qiw0QkFBNEIsRUFDNUQsT0FBTyxhQUFhLDBCQUEwQixFQUM5QyxPQUFPLGVBQWUsOENBQThDLEVBQ3BFLE9BQU8sYUFBYSxrQ0FBa0MsRUFDdEQsTUFBTSxJQUFJO0FBRWYsUUFBTSxPQUFPLFFBQVEsS0FBVztBQUNoQyxPQUFLLFVBQVUsUUFBUSxLQUFLLENBQUM7QUFFN0IsUUFBTSxVQUFVLEtBQUs7QUFDckIsUUFBTSxNQUFNLElBQUksUUFBUSxFQUFFLE1BQU0sS0FBSyxPQUFPLENBQUM7QUFDN0MsUUFBTSxZQUFZLElBQUksVUFBVSxLQUFLLE9BQU87QUFFNUMsUUFBTSxXQUFXLElBQUksU0FBUztBQUU5QixXQUFTLFFBQVEsV0FBVyxVQUFVLE9BQU8sSUFBSSxVQUFVLEdBQUc7QUFDOUQsTUFBSSxLQUFLLEtBQUs7QUFDVixVQUFNLFNBQVMsSUFBSSxrQkFBa0IsU0FBUyxVQUFVLFVBQVUsT0FBTyxDQUFDLElBQUksTUFBTSxVQUFVLElBQUksQ0FBQztBQUFBLEVBQ3ZHO0FBRUEsTUFBSSxLQUFLLE9BQU87QUFDWixVQUFNLFVBQVUsTUFBTSxRQUFRO0FBQUEsRUFDbEM7QUFFQSxNQUFJLEtBQUssS0FBSztBQUNWLFVBQU0sU0FBUyxJQUFJLG1CQUFtQixTQUFTLFVBQVUsVUFBVSxPQUFPLENBQUMsSUFBSSxNQUFNLFVBQVUsSUFBSSxDQUFDO0FBQUEsRUFDeEc7QUFFQSxXQUFTLFNBQVM7QUFDdEI7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright 2022-
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import colors from "ansi-colors";
|
|
@@ -112,4 +112,4 @@ class Versioner {
|
|
|
112
112
|
export {
|
|
113
113
|
Versioner
|
|
114
114
|
};
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZlcnNpb25pbmcvdmVyc2lvbmVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMi0yMDI1IE1hdHRlci5qcyBBdXRob3JzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCBjb2xvcnMgZnJvbSBcImFuc2ktY29sb3JzXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGNwLCB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IEdyYXBoIH0gZnJvbSBcIi4uL2J1aWxkaW5nL2dyYXBoLmpzXCI7XG5pbXBvcnQgeyBleGVjdXRlIH0gZnJvbSBcIi4uL3J1bm5pbmcvZXhlY3V0ZS5qc1wiO1xuaW1wb3J0IHsgUGFja2FnZSB9IGZyb20gXCIuLi91dGlsL3BhY2thZ2UuanNcIjtcbmltcG9ydCB7IFByb2dyZXNzIH0gZnJvbSBcIi4uL3V0aWwvcHJvZ3Jlc3MuanNcIjtcblxuY29uc3QgVkVSU0lPTl9GSUxFID0gXCJ2ZXJzaW9uLnR4dFwiO1xuXG5leHBvcnQgY2xhc3MgVmVyc2lvbmVyIHtcbiAgICAjcGtnOiBQYWNrYWdlO1xuICAgICN2ZXJzaW9uPzogc3RyaW5nO1xuICAgICNtZW1iZXJzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBnZXQgcGtnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jcGtnO1xuICAgIH1cblxuICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jdmVyc2lvbjtcbiAgICB9XG5cbiAgICBnZXQgYXBwbGllZFZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNwa2cuanNvbi52ZXJzaW9uO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHBrZzogUGFja2FnZSwgdmVyc2lvbj86IHN0cmluZykge1xuICAgICAgICB0aGlzLiNwa2cgPSBwa2cud29ya3NwYWNlO1xuXG4gICAgICAgIGlmICh2ZXJzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZlcnNpb24gPSB0aGlzLiNyZWFkVmVyc2lvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlcnNpb24gJiYgIXZlcnNpb24ubWF0Y2goL14oPzpcXGQrXFwuXFxkK1xcLlxcZCsoPzotW2EtejAtOS4tXSspP3xbYS16XSspJC8pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFZlcnNpb24gJHt2ZXJzaW9ufSBpcyBpbnZhbGlkIChtdXN0IGJlIHNlbWFudGljIG9yIHNpbmdsZSBsb3dlcmNhc2Ugd29yZClgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIH1cblxuICAgIGFzeW5jIHNldCgpIHtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlKHRoaXMuI3ZlcnNpb25GaWxlLCB0aGlzLiNkZWZpbml0ZVZlcnNpb24pO1xuICAgIH1cblxuICAgIGFzeW5jIGFwcGx5KHByb2dyZXNzPzogUHJvZ3Jlc3MpIHtcbiAgICAgICAgY29uc3QgZ3JhcGggPSBhd2FpdCBHcmFwaC5sb2FkKHRoaXMuI3BrZyk7XG4gICAgICAgIHRoaXMuI21lbWJlcnMgPSBuZXcgU2V0KGdyYXBoLm5vZGVzLm1hcChub2RlID0+IG5vZGUucGtnLm5hbWUpKTtcblxuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgZ3JhcGgubm9kZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHdoYXQgPSBgQXBwbHkgJHtjb2xvcnMuYm9sZCh0aGlzLiNkZWZpbml0ZVZlcnNpb24pfSB0byAke2NvbG9ycy5ib2xkKG5vZGUucGtnLm5hbWUpfWA7XG4gICAgICAgICAgICBwcm9ncmVzcz8udXBkYXRlKHdoYXQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuI2FwcGx5T25lKG5vZGUucGtnKSkge1xuICAgICAgICAgICAgICAgIHByb2dyZXNzPy5zdWNjZXNzKHdoYXQpO1xuICAgICAgICAgICAgICAgIGF3YWl0IG5vZGUucGtnLnNhdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3M/LnN1Y2Nlc3MoYCR7d2hhdH0gKG5vIGNoYW5nZSlgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IGNwKHRoaXMuI3BrZy5yZXNvbHZlKFwiTElDRU5TRVwiKSwgbm9kZS5wa2cucmVzb2x2ZShcIkxJQ0VOU0VcIikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgdGFnKCkge1xuICAgICAgICBhd2FpdCBleGVjdXRlKFwiZ2l0XCIsIFtcInRhZ1wiLCBcIi1mXCIsIGB2JHt0aGlzLiNkZWZpbml0ZVZlcnNpb259YF0pO1xuICAgIH1cblxuICAgIGdldCAjZGVmaW5pdGVWZXJzaW9uKCkge1xuICAgICAgICBpZiAodGhpcy4jdmVyc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHZlcnNpb24gc3VwcGxpZWQgYW5kICR7dGhpcy4jdmVyc2lvbkZpbGV9IGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuI3ZlcnNpb247XG4gICAgfVxuXG4gICAgZ2V0ICN2ZXJzaW9uRmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3BrZy5yZXNvbHZlKFZFUlNJT05fRklMRSk7XG4gICAgfVxuXG4gICAgI3JlYWRWZXJzaW9uKCkge1xuICAgICAgICBjb25zdCB2ZXJzaW9uRmlsZSA9IHRoaXMuI3ZlcnNpb25GaWxlO1xuICAgICAgICBpZiAoIWV4aXN0c1N5bmModmVyc2lvbkZpbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHJlYWRGaWxlU3luYyh2ZXJzaW9uRmlsZSkudG9TdHJpbmcoKS50cmltKCk7XG4gICAgICAgIGlmICh2ZXJzaW9uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWZXJzaW9uIGZpbGUgJHt2ZXJzaW9uRmlsZX0gaXMgZW1wdHlgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgIH1cblxuICAgICNhcHBseU9uZShwa2c6IFBhY2thZ2UpIHtcbiAgICAgICAgY29uc3QganNvbiA9IHBrZy5qc29uO1xuICAgICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChqc29uLnZlcnNpb24gIT09IHRoaXMuI2RlZmluaXRlVmVyc2lvbikge1xuICAgICAgICAgICAganNvbi52ZXJzaW9uID0gdGhpcy4jZGVmaW5pdGVWZXJzaW9uO1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBqc29uKSB7XG4gICAgICAgICAgICBpZiAoa2V5ICE9PSBcImRlcGVuZGVuY2llc1wiICYmICFrZXkuZW5kc1dpdGgoXCJEZXBlbmRlbmNpZXNcIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGVwcyA9IGpzb25ba2V5XTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGVwcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy4jYXBwbHlUb0RlcHMoZGVwcykpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaGFuZ2VkO1xuICAgIH1cblxuICAgICNhcHBseVRvRGVwcyhkZXBzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLiNkZWZpbml0ZVZlcnNpb247XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRlcHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiNtZW1iZXJzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRlcHNba2V5XSA9PT0gdmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVwc1trZXldID0gdGhpcy4jZGVmaW5pdGVWZXJzaW9uO1xuICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGFuZ2VkO1xuICAgIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxPQUFPLFlBQVk7QUFDbkIsU0FBUyxZQUFZLG9CQUFvQjtBQUN6QyxTQUFTLElBQUksaUJBQWlCO0FBQzlCLFNBQVMsYUFBYTtBQUN0QixTQUFTLGVBQWU7QUFJeEIsTUFBTSxlQUFlO0FBRWQsTUFBTSxVQUFVO0FBQUEsRUFDbkI7QUFBQSxFQUNBO0FBQUEsRUFDQSxXQUFXLG9CQUFJLElBQVk7QUFBQSxFQUUzQixJQUFJLE1BQU07QUFDTixXQUFPLEtBQUs7QUFBQSxFQUNoQjtBQUFBLEVBRUEsSUFBSSxVQUFVO0FBQ1YsV0FBTyxLQUFLO0FBQUEsRUFDaEI7QUFBQSxFQUVBLElBQUksaUJBQWlCO0FBQ2pCLFdBQU8sS0FBSyxLQUFLLEtBQUs7QUFBQSxFQUMxQjtBQUFBLEVBRUEsWUFBWSxLQUFjLFNBQWtCO0FBQ3hDLFNBQUssT0FBTyxJQUFJO0FBRWhCLFFBQUksWUFBWSxRQUFXO0FBQ3ZCLGdCQUFVLEtBQUssYUFBYTtBQUFBLElBQ2hDO0FBRUEsUUFBSSxXQUFXLENBQUMsUUFBUSxN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
|
package/package.json
CHANGED
package/src/building/builder.ts
CHANGED
package/src/building/cli.ts
CHANGED
package/src/building/docs.ts
CHANGED
package/src/building/error.ts
CHANGED
package/src/building/graph.ts
CHANGED
package/src/building/project.ts
CHANGED
package/src/building/tsconfig.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright 2022-
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -50,12 +50,6 @@ async function syncSubproject(node: Graph.Node, path: string, ...extraRefs: stri
|
|
|
50
50
|
|
|
51
51
|
const tsconfig = await node.pkg.readJson(tsconfigPath);
|
|
52
52
|
|
|
53
|
-
let refs = tsconfig.refs as undefined | { path: string }[];
|
|
54
|
-
|
|
55
|
-
if (refs === undefined) {
|
|
56
|
-
refs = [];
|
|
57
|
-
}
|
|
58
|
-
|
|
59
53
|
const deps = node.dependencies
|
|
60
54
|
.filter(dep => dep.pkg.isLibrary)
|
|
61
55
|
.map(dep => dep.pkg.resolve("src"))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright 2022-
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -41,7 +41,7 @@ export namespace TypescriptContext {
|
|
|
41
41
|
// command line. Use the "light blue" ANSI escape code as an injection point for an additional newline
|
|
42
42
|
//
|
|
43
43
|
// eslint-disable-next-line no-control-regex
|
|
44
|
-
formatted = formatted.replace(/\u001b\[96m/
|
|
44
|
+
formatted = formatted.replace(/\u001b\[96m/g, "\n\u001b[96m");
|
|
45
45
|
|
|
46
46
|
throw new BuildError(formatted);
|
|
47
47
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright 2022-
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { TypescriptContext } from "./typescript/context.js";
|
|
7
|
+
import { type TypescriptContext } from "./typescript/context.js";
|
|
8
8
|
import { createSolutionBuilderContext } from "./typescript/solution-builder.js";
|
|
9
9
|
|
|
10
10
|
/**
|
package/src/index.ts
CHANGED
package/src/running/cli.ts
CHANGED
package/src/running/execute.ts
CHANGED
package/src/util/bootstrap.mjs
CHANGED
package/src/util/commander.ts
CHANGED
package/src/util/errors.ts
CHANGED
package/src/util/file.ts
CHANGED