diff --git a/__tests__/no-base.test.ts b/__tests__/no-base.test.ts index 530f9d6..a7d83df 100644 --- a/__tests__/no-base.test.ts +++ b/__tests__/no-base.test.ts @@ -2,7 +2,7 @@ import { execSync } from "node:child_process"; import path from "node:path"; import { compare } from "../src/compare"; import { report } from "../src/report"; -import type { Options } from "../src/types"; +import type { Input } from "../src/types"; import { createDummyBaseAnalysis, getExampleDirectories, @@ -14,7 +14,7 @@ describe("examples w/o base analysis", () => { const fixturesPath = path.join(__dirname, "__fixtures__", "examples"); for (const example of getExampleDirectories(fixturesPath)) { describe(`example ${example.name}`, () => { - const input: Options = { + const input: Input = { analyzerDirectory: ".analyzer", percentExtraAttention: 20, includeExtensions: [".js", ".mjs", ".cjs"], diff --git a/__tests__/with-base.test.ts b/__tests__/with-base.test.ts index 99c4f7c..baf7a3c 100644 --- a/__tests__/with-base.test.ts +++ b/__tests__/with-base.test.ts @@ -2,7 +2,7 @@ import { execSync } from "node:child_process"; import path from "node:path"; import { run } from "../src/index"; -import type { Options } from "../src/types"; +import type { Input } from "../src/types"; import { getExampleDirectories, readAnalysisComment, @@ -23,7 +23,7 @@ describe("examples w/ base analysis", () => { ? ["out/meta1.json", "out/meta2.json"] : ["out/meta.json"]; - const input: Options = { + const input: Input = { analyzerDirectory: ".analyzer", percentExtraAttention: 20, includeExtensions: [".js", ".mjs", ".cjs"], diff --git a/dist/index.mjs b/dist/index.mjs index 23ca4a8..8879c92 100644 --- a/dist/index.mjs +++ b/dist/index.mjs @@ -16,7 +16,7 @@ function loadMetaFile(path3) { function loadAnalysisJson(path3) { return loadJsonFile(path3); } -function getInput(name) { +function getSingleInput(name) { const val = process.env[`INPUT_${name.toUpperCase()}`] || ""; return val.trim(); } @@ -364,36 +364,36 @@ function getAllPageSizes(input) { } // src/index.ts -function getOptions() { - const rawMetafiles = getInput("metafiles"); +function getInput() { + const rawMetafiles = getSingleInput("metafiles"); if (!rawMetafiles) { throw new Error("metafiles is not specified"); } - const name = getInput("name"); + const name = getSingleInput("name"); if (!name) { throw new Error("name is not specified"); } return { percentExtraAttention: Number.parseInt( - getInput("percent_extra_attention") || "20", + getSingleInput("percent_extra_attention") || "20", 10 ), showDetails: ["true", "True", "TRUE"].includes( - getInput("show_details") || "true" + getSingleInput("show_details") || "true" ), topNLargestPaths: Number.parseInt( - getInput("top_n_largest_paths") || "20", + getSingleInput("top_n_largest_paths") || "20", 10 ), - includeExtensions: (getInput("include_extensions") || ".js,.mjs,.cjs").split(","), + includeExtensions: (getSingleInput("include_extensions") || ".js,.mjs,.cjs").split(","), name, - analyzerDirectory: getInput("analyze_directory") || ".analyzer", + analyzerDirectory: getSingleInput("analyze_directory") || ".analyzer", metafiles: rawMetafiles.split(",") }; } -function run(options = getOptions()) { - report(options); - compare(options); +function run(input = getInput()) { + report(input); + compare(input); } if (import.meta.url === pathToFileURL(process.argv[1]).href) { run(); @@ -401,4 +401,4 @@ if (import.meta.url === pathToFileURL(process.argv[1]).href) { export { run }; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9jb21wYXJlLnRzIiwgIi4uL3NyYy91dGlscy50cyIsICIuLi9zcmMvcmVwb3J0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBjb21wYXJlIH0gZnJvbSBcIi4vY29tcGFyZVwiO1xuaW1wb3J0IHsgcmVwb3J0IH0gZnJvbSBcIi4vcmVwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5mdW5jdGlvbiBnZXRPcHRpb25zKCk6IE9wdGlvbnMge1xuXHRjb25zdCByYXdNZXRhZmlsZXMgPSBnZXRJbnB1dChcIm1ldGFmaWxlc1wiKTtcblx0aWYgKCFyYXdNZXRhZmlsZXMpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJtZXRhZmlsZXMgaXMgbm90IHNwZWNpZmllZFwiKTtcblx0fVxuXHRjb25zdCBuYW1lID0gZ2V0SW5wdXQoXCJuYW1lXCIpO1xuXHRpZiAoIW5hbWUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJuYW1lIGlzIG5vdCBzcGVjaWZpZWRcIik7XG5cdH1cblx0cmV0dXJuIHtcblx0XHRwZXJjZW50RXh0cmFBdHRlbnRpb246IE51bWJlci5wYXJzZUludChcblx0XHRcdGdldElucHV0KFwicGVyY2VudF9leHRyYV9hdHRlbnRpb25cIikgfHwgXCIyMFwiLFxuXHRcdFx0MTAsXG5cdFx0KSxcblx0XHRzaG93RGV0YWlsczogW1widHJ1ZVwiLCBcIlRydWVcIiwgXCJUUlVFXCJdLmluY2x1ZGVzKFxuXHRcdFx0Z2V0SW5wdXQoXCJzaG93X2RldGFpbHNcIikgfHwgXCJ0cnVlXCIsXG5cdFx0KSxcblx0XHR0b3BOTGFyZ2VzdFBhdGhzOiBOdW1iZXIucGFyc2VJbnQoXG5cdFx0XHRnZXRJbnB1dChcInRvcF9uX2xhcmdlc3RfcGF0aHNcIikgfHwgXCIyMFwiLFxuXHRcdFx0MTAsXG5cdFx0KSxcblx0XHRpbmNsdWRlRXh0ZW5zaW9uczogKFxuXHRcdFx0Z2V0SW5wdXQoXCJpbmNsdWRlX2V4dGVuc2lvbnNcIikgfHwgXCIuanMsLm1qcywuY2pzXCJcblx0XHQpLnNwbGl0KFwiLFwiKSxcblx0XHRuYW1lLFxuXHRcdGFuYWx5emVyRGlyZWN0b3J5OiBnZXRJbnB1dChcImFuYWx5emVfZGlyZWN0b3J5XCIpIHx8IFwiLmFuYWx5emVyXCIsXG5cdFx0bWV0YWZpbGVzOiByYXdNZXRhZmlsZXMuc3BsaXQoXCIsXCIpLFxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuKG9wdGlvbnM6IE9wdGlvbnMgPSBnZXRPcHRpb25zKCkpOiB2b2lkIHtcblx0cmVwb3J0KG9wdGlvbnMpO1xuXHRjb21wYXJlKG9wdGlvbnMpO1xufVxuXG5pZiAoaW1wb3J0Lm1ldGEudXJsID09PSBwYXRoVG9GaWxlVVJMKHByb2Nlc3MuYXJndlsxXSkuaHJlZikge1xuXHRydW4oKTtcbn1cbiIsICJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGFyZVJlc3VsdCwgT3B0aW9ucywgUmVwb3J0LCBUcmVlTWFwTm9kZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBsb2FkQW5hbHlzaXNKc29uLCBsb2FkTWV0YUZpbGUgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZShpbnB1dDogT3B0aW9ucyk6IHZvaWQge1xuXHRsZXQgaGFzQW55Q2hhbmdlID0gZmFsc2U7XG5cdGxldCBvdXRwdXQgPSBgIyMgXHVEODNEXHVEQ0U2IGVzYnVpbGQgQnVuZGxlIEFuYWx5c2lzIGZvciAke2lucHV0Lm5hbWV9XG5cblRoaXMgYW5hbHlzaXMgd2FzIGdlbmVyYXRlZCBieSBbZXNidWlsZC1idW5kbGUtYW5hbHl6ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9leG9lZ28vZXNidWlsZC1idW5kbGUtYW5hbHl6ZXIpLiBcdUQ4M0VcdUREMTZcbmA7XG5cblx0Y29uc3QgY3VycmVudCA9IGxvYWRBbmFseXNpc0pzb24oXG5cdFx0cGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGlucHV0LmFuYWx5emVyRGlyZWN0b3J5LCBcImJ1bmRsZV9hbmFseXNpcy5qc29uXCIpLFxuXHQpO1xuXHRjb25zdCBiYXNlID0gbG9hZEJhc2VBbmFseXNpc0pzb24oaW5wdXQpO1xuXG5cdGNvbnN0IGZpbGVUcmVlID0gYnVpbGRGaWxlVHJlZShpbnB1dCk7XG5cblx0Y29uc3QgYWxsT3V0RmlsZXM6IHN0cmluZ1tdID0gW1xuXHRcdC4uLm5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKGN1cnJlbnQpLCAuLi5PYmplY3Qua2V5cyhiYXNlKV0pLFxuXHRdLnNvcnQoKTtcblxuXHRjb25zdCBjb21wYXJpc29uOiBBcnJheTxDb21wYXJlUmVzdWx0PiA9IGFsbE91dEZpbGVzLm1hcCgob3V0ZmlsZSkgPT4ge1xuXHRcdGNvbnN0IGN1cnJlbnRTdGF0cyA9IGN1cnJlbnRbb3V0ZmlsZV07XG5cdFx0Y29uc3QgYmFzZVN0YXRzID0gYmFzZVtvdXRmaWxlXTtcblxuXHRcdGlmICghY3VycmVudFN0YXRzKSB7XG5cdFx0XHRoYXNBbnlDaGFuZ2UgPSB0cnVlO1xuXHRcdFx0cmV0dXJuIHsgLi4uYmFzZVN0YXRzLCBkaWZmOiAtMSwgcmVtYXJrOiBcImRlbGV0ZWRcIiwgdHJlZTogdW5kZWZpbmVkIH07XG5cdFx0fVxuXG5cdFx0Y29uc3QgdHJlZSA9IGZpbGVUcmVlLmdldChcblx0XHRcdHRyZWVLZXkoY3VycmVudFN0YXRzLm1ldGFmaWxlLCBjdXJyZW50U3RhdHMub3V0ZmlsZSksXG5cdFx0KTtcblx0XHRpZiAoIWJhc2VTdGF0cykge1xuXHRcdFx0aGFzQW55Q2hhbmdlID0gdHJ1ZTtcblx0XHRcdHJldHVybiB7IC4uLmN1cnJlbnRTdGF0cywgZGlmZjogLTEsIHJlbWFyazogXCJhZGRlZFwiLCB0cmVlIH07XG5cdFx0fVxuXG5cdFx0Y29uc3QgZGlmZiA9IGN1cnJlbnRTdGF0cy5ieXRlcyAtIGJhc2VTdGF0cy5ieXRlcztcblx0XHRpZiAoZGlmZiAhPT0gMCkge1xuXHRcdFx0aGFzQW55Q2hhbmdlID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLmN1cnJlbnRTdGF0cyxcblx0XHRcdGRpZmYsXG5cdFx0XHR0cmVlLFxuXHRcdFx0cmVtYXJrOiBNYXRoLnNpZ24oZGlmZikgPyBcImluY3JlYXNlZFwiIDogXCJkZWNyZWFzZWRcIixcblx0XHR9O1xuXHR9KTtcblxuXHRpZiAoaGFzQW55Q2hhbmdlKSB7XG5cdFx0b3V0cHV0ICs9IG1hcmtkb3duVGFibGUoY29tcGFyaXNvbiwgaW5wdXQucGVyY2VudEV4dHJhQXR0ZW50aW9uKTtcblx0XHRvdXRwdXQgKz0gZmlsZVNpemVUYWJsZShjb21wYXJpc29uLCBpbnB1dC50b3BOTGFyZ2VzdFBhdGhzKTtcblx0XHRvdXRwdXQgKz0gZGV0YWlsKGlucHV0KTtcblx0fSBlbHNlIHtcblx0XHRvdXRwdXQgKz0gXCJUaGlzIFBSIGludHJvZHVjZWQgbm8gY2hhbmdlcyB0byB0aGUgZXNidWlsZCBidW5kbGUhIFx1RDgzRFx1REU0Q1wiO1xuXHR9XG5cblx0Ly8gd2UgYWRkIHRoaXMgdGFnIHNvIHRoYXQgb3VyIGFjdGlvbiBjYW4gYmUgYWJsZSB0byBlYXNpbHkgYW5kXG5cdC8vIGNvbnNpc3RlbnRseSBmaW5kIHRoZSByaWdodCBjb21tZW50IHRvIGVkaXQgYXMgbW9yZSBjb21taXRzIGFyZSBwdXNoZWQuXG5cdG91dHB1dCArPSBgPCEtLSBfX0VTQlVJTERfQlVORExFXyR7aW5wdXQubmFtZX0gLS0+YDtcblxuXHR3cml0ZUNvbW1lbnQoaW5wdXQsIG91dHB1dCk7XG59XG5cbmZ1bmN0aW9uIHRyZWVLZXkobWV0YWZpbGU6IHN0cmluZywgb3V0ZmlsZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIGAke21ldGFmaWxlfSAtPiAke291dGZpbGV9YDtcbn1cblxuLy8gV3JpdGUgdGhlIG91dHB1dCB0byBhIGZpbGUgd2hpY2ggaXMgbGF0ZXIgcmVhZCBpblxuLy8gYXMgY29tbWVudCBjb250ZW50cyBieSB0aGUgYWN0aW9ucyB3b3JrZmxvdy5cbmZ1bmN0aW9uIHdyaXRlQ29tbWVudChpbnB1dDogT3B0aW9ucywgb3V0cHV0OiBzdHJpbmcpOiB2b2lkIHtcblx0ZnMubWtkaXJTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBpbnB1dC5hbmFseXplckRpcmVjdG9yeSksIHtcblx0XHRyZWN1cnNpdmU6IHRydWUsXG5cdH0pO1xuXHRmcy53cml0ZUZpbGVTeW5jKFxuXHRcdHBhdGguam9pbihcblx0XHRcdHByb2Nlc3MuY3dkKCksXG5cdFx0XHRpbnB1dC5hbmFseXplckRpcmVjdG9yeSxcblx0XHRcdFwiYnVuZGxlX2FuYWx5c2lzX2NvbW1lbnQudHh0XCIsXG5cdFx0KSxcblx0XHRvdXRwdXQudHJpbSgpLFxuXHQpO1xufVxuXG5mdW5jdGlvbiBkZXRhaWwoaW5wdXQ6IE9wdGlvbnMpOiBzdHJpbmcge1xuXHRpZiAoIWlucHV0LnNob3dEZXRhaWxzKSB7XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cblx0cmV0dXJuIGBcXG48ZGV0YWlscz5cbjxzdW1tYXJ5PkRldGFpbHM8L3N1bW1hcnk+XG48cD5OZXh0IHRvIHRoZSBzaXplIGlzIGhvdyBtdWNoIHRoZSBzaXplIGhhcyBpbmNyZWFzZWQgb3IgZGVjcmVhc2VkIGNvbXBhcmVkIHdpdGggdGhlIGJhc2UgYnJhbmNoIG9mIHRoaXMgUFIuPC9wPlxuPHVsPlxuPGxpPlx1MjAzQ1x1RkUwRjogU2l6ZSBpbmNyZWFzZWQgYnkgJHtpbnB1dC5wZXJjZW50RXh0cmFBdHRlbnRpb259JSBvciBtb3JlLiBTcGVjaWFsIGF0dGVudGlvbiBzaG91bGQgYmUgZ2l2ZW4gdG8gdGhpcy48L2xpPlxuPGxpPlx1MjZBMFx1RkUwRjogU2l6ZSBpbmNyZWFzZWQgaW4gYWNjZXB0YWJsZSByYW5nZSAobG93ZXIgdGhhbiAke2lucHV0LnBlcmNlbnRFeHRyYUF0dGVudGlvbn0lKS48L2xpPlxuPGxpPlx1MjcwNTogTm8gY2hhbmdlIG9yIGV2ZW4gZG93bnNpemVkLjwvbGk+XG48bGk+XHVEODNEXHVEREQxXHVGRTBGOiBUaGUgb3V0IGZpbGUgaXMgZGVsZXRlZDogbm90IGZvdW5kIGluIGJhc2UgYnJhbmNoLjwvbGk+XG48bGk+XHVEODNDXHVERDk1OiBUaGUgb3V0IGZpbGUgaXMgbmV3bHkgZm91bmQ6IHdpbGwgYmUgYWRkZWQgdG8gYmFzZSBicmFuY2guPC9saT5cbjwvdWw+XG48L2RldGFpbHM+XFxuYDtcbn1cblxuZnVuY3Rpb24gbG9hZEJhc2VBbmFseXNpc0pzb24oaW5wdXQ6IE9wdGlvbnMpOiBSZXBvcnQge1xuXHR0cnkge1xuXHRcdHJldHVybiBsb2FkQW5hbHlzaXNKc29uKFxuXHRcdFx0cGF0aC5qb2luKFxuXHRcdFx0XHRwcm9jZXNzLmN3ZCgpLFxuXHRcdFx0XHRpbnB1dC5hbmFseXplckRpcmVjdG9yeSxcblx0XHRcdFx0XCJiYXNlL2J1bmRsZS9idW5kbGVfYW5hbHlzaXMuanNvblwiLFxuXHRcdFx0KSxcblx0XHQpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gRW1wdHkgaWYgbm8gYmFzZSBhbmFseXNpcyBmb3VuZC5cblx0XHQvLyBUaGlzIGlzIGEgY2FzZSB3aGVuIGFuYWx5emVyIGlzIGZpcnN0IHNldCB1cCBvciBhbGwgYXJ0aWZhY3RzIGFyZSBleHBpcmVkLlxuXHRcdHJldHVybiB7fTtcblx0fVxufVxuXG5mdW5jdGlvbiBidWlsZEZpbGVUcmVlKGlucHV0OiBPcHRpb25zKSB7XG5cdGZ1bmN0aW9uIGJ1aWxkUm9vdChcblx0XHRpbnB1dDogUmVjb3JkPHN0cmluZywgeyBieXRlc0luT3V0cHV0OiBudW1iZXIgfT4sXG5cdCk6IFRyZWVNYXBOb2RlIHtcblx0XHRjb25zdCByb290OiBUcmVlTWFwTm9kZSA9IHsgbmFtZTogXCJcIiwgcGF0aDogXCJcIiwgdmFsdWU6IDAsIGNoaWxkcmVuOiBbXSB9O1xuXHRcdGZvciAoY29uc3QgW2ZpbGVQYXRoLCB7IGJ5dGVzSW5PdXRwdXQgfV0gb2YgT2JqZWN0LmVudHJpZXMoaW5wdXQpKSB7XG5cdFx0XHRjb25zdCBkaXJlY3RvcmllcyA9IGZpbGVQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRcdGJ1aWxkTm9kZShyb290LCBkaXJlY3RvcmllcywgYnl0ZXNJbk91dHB1dCk7XG5cdFx0fVxuXHRcdHJldHVybiByb290O1xuXHR9XG5cblx0ZnVuY3Rpb24gYnVpbGROb2RlKFxuXHRcdG5vZGU6IFRyZWVNYXBOb2RlLFxuXHRcdHBhdGhzOiBBcnJheTxzdHJpbmc+LFxuXHRcdHZhbHVlOiBudW1iZXIsXG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IGZpcnN0ID0gcGF0aHMuc2hpZnQoKTtcblx0XHRpZiAoZmlyc3QgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Ly8gbGVhZiBub2RlIChmaWxlKVxuXHRcdFx0bm9kZS52YWx1ZSArPSB2YWx1ZTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bGV0IGNoaWxkID0gbm9kZS5jaGlsZHJlbi5maW5kKChjaGlsZCkgPT4gY2hpbGQubmFtZSA9PT0gZmlyc3QpO1xuXHRcdGlmICghY2hpbGQpIHtcblx0XHRcdGNoaWxkID0ge1xuXHRcdFx0XHRuYW1lOiBmaXJzdCxcblx0XHRcdFx0cGF0aDogYCR7bm9kZS5wYXRofS8ke2ZpcnN0fWAucmVwbGFjZSgvXlxcLy8sIFwiXCIpLFxuXHRcdFx0XHR2YWx1ZTogMCxcblx0XHRcdFx0Y2hpbGRyZW46IFtdLFxuXHRcdFx0fTtcblx0XHRcdG5vZGUuY2hpbGRyZW4ucHVzaChjaGlsZCk7XG5cdFx0fVxuXHRcdG5vZGUudmFsdWUgKz0gdmFsdWU7XG5cdFx0YnVpbGROb2RlKGNoaWxkLCBwYXRocywgdmFsdWUpO1xuXHR9XG5cblx0Y29uc3QgdHJlZXMgPSBuZXcgTWFwPHN0cmluZywgVHJlZU1hcE5vZGU+KCk7XG5cdGlmIChpbnB1dC50b3BOTGFyZ2VzdFBhdGhzIDw9IDApIHtcblx0XHQvLyBTa2lwIGJ1aWxkaW5nIHRyZWUgaWYgd2UgZG9uJ3QgbmVlZCBpdC5cblx0XHRyZXR1cm4gdHJlZXM7XG5cdH1cblx0Zm9yIChjb25zdCBtZXRhZmlsZSBvZiBpbnB1dC5tZXRhZmlsZXMpIHtcblx0XHRjb25zdCBtZXRhZmlsZUpzb24gPSBsb2FkTWV0YUZpbGUocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIG1ldGFmaWxlKSk7XG5cdFx0Zm9yIChjb25zdCBbb3V0ZmlsZSwgYnVpbGRNZXRhXSBvZiBPYmplY3QuZW50cmllcyhtZXRhZmlsZUpzb24ub3V0cHV0cykpIHtcblx0XHRcdGNvbnN0IHRyZWUgPSBidWlsZFJvb3QoYnVpbGRNZXRhLmlucHV0cyk7XG5cdFx0XHR0cmVlcy5zZXQodHJlZUtleShtZXRhZmlsZSwgb3V0ZmlsZSksIHRyZWUpO1xuXG5cdFx0XHRmcy53cml0ZUZpbGVTeW5jKFxuXHRcdFx0XHRwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgaW5wdXQuYW5hbHl6ZXJEaXJlY3RvcnksIFwidHJlZS5qc29uXCIpLFxuXHRcdFx0XHRKU09OLnN0cmluZ2lmeSh0cmVlLCBudWxsLCAyKSxcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0cmVlcztcbn1cblxuY29uc3Qgc3BhY2VyID0gXCJcdTAwQTBcIjtcbmZ1bmN0aW9uIGZpbGVzaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuXHRjb25zdCBzaWduID0gYnl0ZXMgPCAwID8gXCItXCIgOiBcIlwiO1xuXHRjb25zdCBuID0gTWF0aC5hYnMoYnl0ZXMpO1xuXHRpZiAobiA8IDEwMDApIHtcblx0XHRyZXR1cm4gYCR7c2lnbn0ke259JHtzcGFjZXJ9QmA7XG5cdH1cblx0aWYgKG4gPCAxMDAwICogMTAwMCkge1xuXHRcdHJldHVybiBgJHtzaWdufSR7KG4gLyAxMDAwKS50b0ZpeGVkKDIpfSR7c3BhY2VyfUtCYDtcblx0fVxuXHRpZiAobiA8IDEwMDAgKiAxMDAwICogMTAwMCkge1xuXHRcdHJldHVybiBgJHtzaWdufSR7KG4gLyAxMDAwIC8gMTAwMCkudG9GaXhlZCgyKX0ke3NwYWNlcn1NQmA7XG5cdH1cblx0aWYgKG4gPCAxMDAwICogMTAwMCAqIDEwMDAgKiAxMDAwKSB7XG5cdFx0cmV0dXJuIGAke3NpZ259JHsobiAvIDEwMDAgLyAxMDAwIC8gMTAwMCkudG9GaXhlZCgyKX0ke3NwYWNlcn1HQmA7XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwiVG9vIGxhcmdlIGZpbGUgc2l6ZSEhIEFyZSB5b3Ugc3VyZT9cIik7XG59XG5cbmZ1bmN0aW9uIG1hcmtkb3duVGFibGUoXG5cdGRhdGE6IEFycmF5PENvbXBhcmVSZXN1bHQ+LFxuXHRyZWRUaHJlc2hvbGQ6IG51bWJlcixcbik6IHN0cmluZyB7XG5cdGNvbnN0IHJvd3MgPSBkYXRhXG5cdFx0Lm1hcCgoZCkgPT4ge1xuXHRcdFx0cmV0dXJuIGAke2QubWV0YWZpbGV9IHwgJHtkLm91dGZpbGV9IHwgJHtyZW5kZXJTaXplKGQpfSB8ICR7cmVuZGVyTm90ZShcblx0XHRcdFx0ZCxcblx0XHRcdFx0cmVkVGhyZXNob2xkLFxuXHRcdFx0KX1cXG5gO1xuXHRcdH0pXG5cdFx0LmpvaW4oXCJcIik7XG5cblx0cmV0dXJuIGBcbk1ldGEgRmlsZSB8IE91dCBGaWxlICB8IFNpemUgKHJhdykgfCBOb3RlIFxuLS0tLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tOnwtLS0tLS1cbiR7cm93c31gO1xufVxuXG4vKipcbiAqIEZpbmQgdGhlIHRvcCBOIGxhcmdlc3Qgbm9kZXMgaW4gcm9vdCB0cmVlLlxuICogRGlnIG5vZGVzIHVudGlsIHRoZSBkZXB0aCBvZiAzLlxuICovXG5mdW5jdGlvbiBmaW5kTGFyZ2VEaXJlY3Rvcmllcyhyb290OiBUcmVlTWFwTm9kZSwgTjogbnVtYmVyKSB7XG5cdGNvbnN0IG5vZGVzOiBUcmVlTWFwTm9kZVtdID0gW107XG5cdGNvbnN0IHF1ZXVlOiBBcnJheTx7IG5vZGU6IFRyZWVNYXBOb2RlOyBkZXB0aDogbnVtYmVyIH0+ID0gW1xuXHRcdHsgbm9kZTogcm9vdCwgZGVwdGg6IDAgfSxcblx0XTtcblx0d2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDApIHtcblx0XHRjb25zdCBzaGlmdCA9IHF1ZXVlLnNoaWZ0KCk7XG5cdFx0aWYgKCFzaGlmdCkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNvbnN0IHsgbm9kZSwgZGVwdGggfSA9IHNoaWZ0O1xuXHRcdGlmIChkZXB0aCA9PT0gMykge1xuXHRcdFx0bm9kZXMucHVzaChub2RlKTtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcblx0XHRcdG5vZGVzLnB1c2gobm9kZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBub2RlLmNoaWxkcmVuKSB7XG5cdFx0XHRcdHF1ZXVlLnB1c2goeyBub2RlOiBpdGVtLCBkZXB0aDogZGVwdGggKyAxIH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRjb25zdCBsYXJnZU5vZGVzID0gbm9kZXMuc29ydCgoYSwgYikgPT4gYi52YWx1ZSAtIGEudmFsdWUpLnNsaWNlKDAsIE4pO1xuXHRyZXR1cm4ge1xuXHRcdGxhcmdlTm9kZXMsXG5cdFx0aGFzT3RoZXI6IG5vZGVzLmxlbmd0aCA+IE4sXG5cdH07XG59XG5cbmZ1bmN0aW9uIGZpeGVkUGVyY2VudChuOiBudW1iZXIsIGQ6IG51bWJlcik6IG51bWJlciB7XG5cdHJldHVybiBOdW1iZXIucGFyc2VGbG9hdCgoKG4gLyBkKSAqIDEwMCkudG9GaXhlZCgxKSk7XG59XG5cbmZ1bmN0aW9uIGZpbGVTaXplVGFibGUoXG5cdGRhdGE6IEFycmF5PENvbXBhcmVSZXN1bHQ+LFxuXHR0b3BOTGFyZ2VzdFBhdGhzOiBudW1iZXIsXG4pOiBzdHJpbmcge1xuXHRpZiAoZGF0YS5sZW5ndGggPT09IDAgfHwgdG9wTkxhcmdlc3RQYXRocyA8PSAwKSB7XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cblx0bGV0IG91dHB1dCA9IFwiXCI7XG5cdG91dHB1dCArPSBcIjxkZXRhaWxzPlxcblwiO1xuXHRvdXRwdXQgKz0gXCI8c3VtbWFyeT5Ub3AgdGVuIGxhcmdlc3QgcGF0aHM8L3N1bW1hcnk+XFxuXCI7XG5cdG91dHB1dCArPSBgVGhlc2UgdmlzdWFsaXphdGlvbiBzaG93cyB0b3AgJHt0b3BOTGFyZ2VzdFBhdGhzfSBsYXJnZXN0IHBhdGhzIGluIHRoZSBidW5kbGUuXFxuYDtcblx0Zm9yIChjb25zdCBkIG9mIGRhdGEpIHtcblx0XHRvdXRwdXQgKz0gXCJcXG5cIjtcblx0XHRvdXRwdXQgKz0gYCMjIE1ldGEgZmlsZTogJHtkLm1ldGFmaWxlfSwgT3V0IGZpbGU6ICR7ZC5vdXRmaWxlfVxcbmA7XG5cdFx0aWYgKCFkLnRyZWUpIHtcblx0XHRcdG91dHB1dCArPSBcIlx1RkUwRlx1RkUwRlx1RDgzRFx1REREMVx1RkUwRkRlbGV0ZWRcXG5cIjtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRvdXRwdXQgKz0gXCJ8IFBhdGggfCBTaXplIHxcXG5cIjtcblx0XHRvdXRwdXQgKz0gXCJ8LS0tLS0tfC0tLS0tLS18XFxuXCI7XG5cdFx0Y29uc3QgdG90YWxTaXplID0gZC50cmVlLnZhbHVlO1xuXHRcdGNvbnN0IHsgbGFyZ2VOb2RlcywgaGFzT3RoZXIgfSA9IGZpbmRMYXJnZURpcmVjdG9yaWVzKFxuXHRcdFx0ZC50cmVlLFxuXHRcdFx0dG9wTkxhcmdlc3RQYXRocyxcblx0XHQpO1xuXHRcdGZvciAoY29uc3QgeyBwYXRoLCB2YWx1ZSB9IG9mIGxhcmdlTm9kZXMpIHtcblx0XHRcdGNvbnN0IHBlcmNlbnQgPSBmaXhlZFBlcmNlbnQodmFsdWUsIHRvdGFsU2l6ZSk7XG5cdFx0XHRvdXRwdXQgKz0gYHwgJHtwYXRofSB8ICR7cmVuZGVyQmFyKHBlcmNlbnQsIHZhbHVlKX0gfFxcbmA7XG5cdFx0fVxuXHRcdGlmIChoYXNPdGhlcikge1xuXHRcdFx0Y29uc3Qgb3RoZXJTaXplID0gdG90YWxTaXplIC0gbGFyZ2VOb2Rlc1swXS52YWx1ZTtcblx0XHRcdGNvbnN0IG90aGVyUGVyY2VudCA9IGZpeGVkUGVyY2VudChvdGhlclNpemUsIHRvdGFsU2l6ZSk7XG5cdFx0XHRvdXRwdXQgKz0gYHwgKG90aGVyKSB8ICR7cmVuZGVyQmFyKG90aGVyUGVyY2VudCwgb3RoZXJTaXplKX0gfFxcbmA7XG5cdFx0fVxuXHR9XG5cdG91dHB1dCArPSBcIjwvZGV0YWlscz5cXG5cIjtcblx0cmV0dXJuIG91dHB1dDtcbn1cblxuZnVuY3Rpb24gcmVuZGVyQmFyKHBlcmNlbnQ6IG51bWJlciwgYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG5cdGNvbnN0IGJhciA9IHByb2dyZXNzKHBlcmNlbnQgLyAxMDApO1xuXHRyZXR1cm4gYFxcJHt7XFxcXGNvbG9ye0dvbGRlbnJvZH17ICR7YmFyfSB9fX1cXCQgJHtwZXJjZW50LnRvRml4ZWQoXG5cdFx0MSxcblx0KX0lLCAke2ZpbGVzaXplKGJ5dGVzKX1gO1xufVxuXG4vLyBCbG9jayBwcm9ncmVzc2lvbiBpcyAxLzggPSAwLjEyNVxuY29uc3QgYmxvY2tzID0gW1wiXCIsIFwiXHUyNThGXCIsIFwiXHUyNThFXCIsIFwiXHUyNThEXCIsIFwiXHUyNThDXCIsIFwiXHUyNThCXCIsIFwiXHUyNThBXCIsIFwiXHUyNTg5XCIsIFwiXHUyNTg4XCJdO1xuY29uc3QgcHJvZ3Jlc3Npb24gPSAxIC8gKGJsb2Nrcy5sZW5ndGggLSAxKTtcbmZ1bmN0aW9uIHByb2dyZXNzKHZhbHVlOiBudW1iZXIsIGxlbmd0aCA9IDI1LCB2bWluID0gMC4wLCB2bWF4ID0gMS4wKSB7XG5cdGNvbnN0IHYgPSB2YWx1ZSAqIGxlbmd0aDtcblx0Y29uc3QgaW50ZWdlclBhcnQgPSBNYXRoLmZsb29yKHYpO1xuXHRjb25zdCBmcmFjdGlvbmFsUGFydCA9IHYgLSBpbnRlZ2VyUGFydDtcblx0Y29uc3QgaSA9IE1hdGgucm91bmQoXG5cdFx0KHByb2dyZXNzaW9uICogTWF0aC5mbG9vcihmcmFjdGlvbmFsUGFydCAvIHByb2dyZXNzaW9uKSkgLyBwcm9ncmVzc2lvbixcblx0KTtcblx0cmV0dXJuIFwiXHUyNTg4XCIucmVwZWF0KGludGVnZXJQYXJ0KSArIGJsb2Nrc1tpXTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyU2l6ZShkOiBDb21wYXJlUmVzdWx0KTogc3RyaW5nIHtcblx0cmV0dXJuIGZpbGVzaXplKGQuYnl0ZXMpO1xufVxuXG5mdW5jdGlvbiByZW5kZXJOb3RlKGQ6IENvbXBhcmVSZXN1bHQsIHJlZFRocmVzaG9sZDogbnVtYmVyKTogc3RyaW5nIHtcblx0aWYgKGQucmVtYXJrID09PSBcImRlbGV0ZWRcIikge1xuXHRcdHJldHVybiBcIlx1RDgzRFx1REREMVx1RkUwRiBEZWxldGVkXCI7XG5cdH1cblx0aWYgKGQucmVtYXJrID09PSBcImFkZGVkXCIpIHtcblx0XHRyZXR1cm4gXCJcdUQ4M0NcdUREOTUgQWRkZWRcIjtcblx0fVxuXHRpZiAoZC5kaWZmKSB7XG5cdFx0Y29uc3QgcGVyY2VudENoYW5nZSA9IChkLmRpZmYgLyBkLmJ5dGVzKSAqIDEwMDtcblx0XHRyZXR1cm4gYCR7cmVuZGVyU3RhdHVzSW5kaWNhdG9yKHBlcmNlbnRDaGFuZ2UsIHJlZFRocmVzaG9sZCl9JHtmaWxlc2l6ZShcblx0XHRcdGQuZGlmZixcblx0XHQpfSAoJHtzaWduKHBlcmNlbnRDaGFuZ2UpfSR7cGVyY2VudENoYW5nZS50b0ZpeGVkKDEpfSUpYDtcblx0fVxuXHRyZXR1cm4gXCJcdTI3MDUgIE5vIGNoYW5nZVwiO1xufVxuXG5mdW5jdGlvbiBzaWduKG51bTogbnVtYmVyKTogc3RyaW5nIHtcblx0cmV0dXJuIG51bSA8IDAgPyBcIlwiIDogXCIrXCI7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclN0YXR1c0luZGljYXRvcihcblx0cGVyY2VudENoYW5nZTogbnVtYmVyLFxuXHRyZWRUaHJlc2hvbGQ6IG51bWJlcixcbik6IHN0cmluZyB7XG5cdGxldCByZXM6IHN0cmluZztcblx0aWYgKHBlcmNlbnRDaGFuZ2UgPiAwICYmIHBlcmNlbnRDaGFuZ2UgPCByZWRUaHJlc2hvbGQpIHtcblx0XHRyZXMgPSBcIlx1MjZBMFx1RkUwRlwiO1xuXHR9IGVsc2UgaWYgKHBlcmNlbnRDaGFuZ2UgPj0gcmVkVGhyZXNob2xkKSB7XG5cdFx0cmVzID0gXCJcdTIwM0NcdUZFMEZcIjtcblx0fSBlbHNlIHtcblx0XHRyZXMgPSBcIlx1MjcwNSBcIjtcblx0fVxuXHRyZXR1cm4gYCR7cmVzfSAke3NpZ24ocGVyY2VudENoYW5nZSl9YDtcbn1cbiIsICJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcblxuaW1wb3J0IHR5cGUgeyBNZXRhZmlsZSB9IGZyb20gXCJlc2J1aWxkXCI7XG5pbXBvcnQgdHlwZSB7IFJlcG9ydCB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmZ1bmN0aW9uIGxvYWRKc29uRmlsZShwYXRoOiBzdHJpbmcpIHtcblx0cmV0dXJuIEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGgpLnRvU3RyaW5nKFwidXRmLThcIikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZE1ldGFGaWxlKHBhdGg6IHN0cmluZyk6IE1ldGFmaWxlIHtcblx0cmV0dXJuIGxvYWRKc29uRmlsZShwYXRoKSBhcyBNZXRhZmlsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBbmFseXNpc0pzb24ocGF0aDogc3RyaW5nKTogUmVwb3J0IHtcblx0cmV0dXJuIGxvYWRKc29uRmlsZShwYXRoKSBhcyBSZXBvcnQ7XG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hY3Rpb25zL3Rvb2xraXQvYmxvYi84MWE3M2FiYThiZWRkNTMyZjZlZGRjYzQxZWQzYTBmYWQ4YjFjZmViL3BhY2thZ2VzL2NvcmUvc3JjL2NvcmUudHMjTDEyNlxuZXhwb3J0IGZ1bmN0aW9uIGdldElucHV0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IHZhbCA9IHByb2Nlc3MuZW52W2BJTlBVVF8ke25hbWUudG9VcHBlckNhc2UoKX1gXSB8fCBcIlwiO1xuXHRyZXR1cm4gdmFsLnRyaW0oKTtcbn1cbiIsICJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCBwcm9jZXNzIGZyb20gXCJub2RlOnByb2Nlc3NcIjtcblxuaW1wb3J0IHR5cGUgeyBPcHRpb25zLCBSZXBvcnQgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgbG9hZE1ldGFGaWxlIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlcG9ydChpbnB1dDogT3B0aW9ucyk6IHZvaWQge1xuXHRjb25zdCBhbGxQYWdlU2l6ZXMgPSBnZXRBbGxQYWdlU2l6ZXMoaW5wdXQpO1xuXHRmcy5ta2RpclN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGlucHV0LmFuYWx5emVyRGlyZWN0b3J5KSwge1xuXHRcdHJlY3Vyc2l2ZTogdHJ1ZSxcblx0fSk7XG5cdGNvbnN0IHJlc3VsdEpzb25QYXRoID0gcGF0aC5qb2luKFxuXHRcdHByb2Nlc3MuY3dkKCksXG5cdFx0aW5wdXQuYW5hbHl6ZXJEaXJlY3RvcnksXG5cdFx0XCJidW5kbGVfYW5hbHlzaXMuanNvblwiLFxuXHQpO1xuXHRmcy53cml0ZUZpbGVTeW5jKHJlc3VsdEpzb25QYXRoLCBKU09OLnN0cmluZ2lmeShhbGxQYWdlU2l6ZXMsIG51bGwsIDIpKTtcblx0Y29uc29sZS5sb2coYFdyb3RlICR7cmVzdWx0SnNvblBhdGh9YCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbFBhZ2VTaXplcyhpbnB1dDogT3B0aW9ucyk6IFJlcG9ydCB7XG5cdGNvbnN0IGFjYzogUmVwb3J0ID0ge307XG5cdHJldHVybiBpbnB1dC5tZXRhZmlsZXMucmVkdWNlKChhY2MsIG1ldGFmaWxlKSA9PiB7XG5cdFx0Y29uc3QgbWV0YUZpbGVQYXRoID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIG1ldGFmaWxlKTtcblx0XHR0cnkge1xuXHRcdFx0ZnMuYWNjZXNzU3luYyhtZXRhRmlsZVBhdGgsIGZzLmNvbnN0YW50cy5SX09LKTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdGBObyBtZXRhIGZpbGUgZm91bmQgYXQgXCIke21ldGFGaWxlUGF0aH1cIiAtIGEgcGF0aCB0byBtZXRhIGZpbGUgbWF5IGJlIHdyb25nLCBvciBlc2J1aWxkIGlzIG5vdCBleGVjdXRlZC5gLFxuXHRcdFx0KTtcblx0XHRcdHByb2Nlc3MuZXhpdCgxKTtcblx0XHR9XG5cblx0XHRjb25zdCBtZXRhRmlsZUpzb24gPSBsb2FkTWV0YUZpbGUobWV0YUZpbGVQYXRoKTtcblx0XHRPYmplY3QuZW50cmllcyhtZXRhRmlsZUpzb24ub3V0cHV0cykucmVkdWNlKChhY2MsIG91dHB1dCkgPT4ge1xuXHRcdFx0Y29uc3QgW291dGZpbGUsIGJ1aWxkTWV0YV0gPSBvdXRwdXQ7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFpbnB1dC5pbmNsdWRlRXh0ZW5zaW9ucy5zb21lKChleHQpID0+XG5cdFx0XHRcdFx0b3V0ZmlsZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGV4dCksXG5cdFx0XHRcdClcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gYWNjO1xuXHRcdFx0fVxuXHRcdFx0YWNjW2Ake21ldGFmaWxlfSAtPiAke291dGZpbGV9YF0gPSB7XG5cdFx0XHRcdGJ5dGVzOiBidWlsZE1ldGEuYnl0ZXMsXG5cdFx0XHRcdG1ldGFmaWxlLFxuXHRcdFx0XHRvdXRmaWxlLFxuXHRcdFx0fTtcblx0XHRcdHJldHVybiBhY2M7XG5cdFx0fSwgYWNjKTtcblx0XHRyZXR1cm4gYWNjO1xuXHR9LCBhY2MpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLFNBQVMscUJBQXFCOzs7QUNBOUIsT0FBT0EsU0FBUTtBQUNmLE9BQU8sVUFBVTs7O0FDRGpCLE9BQU8sUUFBUTtBQUtmLFNBQVMsYUFBYUMsT0FB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 +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9jb21wYXJlLnRzIiwgIi4uL3NyYy91dGlscy50cyIsICIuLi9zcmMvcmVwb3J0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBjb21wYXJlIH0gZnJvbSBcIi4vY29tcGFyZVwiO1xuaW1wb3J0IHsgcmVwb3J0IH0gZnJvbSBcIi4vcmVwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IElucHV0IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGdldFNpbmdsZUlucHV0IH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuZnVuY3Rpb24gZ2V0SW5wdXQoKTogSW5wdXQge1xuXHRjb25zdCByYXdNZXRhZmlsZXMgPSBnZXRTaW5nbGVJbnB1dChcIm1ldGFmaWxlc1wiKTtcblx0aWYgKCFyYXdNZXRhZmlsZXMpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJtZXRhZmlsZXMgaXMgbm90IHNwZWNpZmllZFwiKTtcblx0fVxuXHRjb25zdCBuYW1lID0gZ2V0U2luZ2xlSW5wdXQoXCJuYW1lXCIpO1xuXHRpZiAoIW5hbWUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJuYW1lIGlzIG5vdCBzcGVjaWZpZWRcIik7XG5cdH1cblx0cmV0dXJuIHtcblx0XHRwZXJjZW50RXh0cmFBdHRlbnRpb246IE51bWJlci5wYXJzZUludChcblx0XHRcdGdldFNpbmdsZUlucHV0KFwicGVyY2VudF9leHRyYV9hdHRlbnRpb25cIikgfHwgXCIyMFwiLFxuXHRcdFx0MTAsXG5cdFx0KSxcblx0XHRzaG93RGV0YWlsczogW1widHJ1ZVwiLCBcIlRydWVcIiwgXCJUUlVFXCJdLmluY2x1ZGVzKFxuXHRcdFx0Z2V0U2luZ2xlSW5wdXQoXCJzaG93X2RldGFpbHNcIikgfHwgXCJ0cnVlXCIsXG5cdFx0KSxcblx0XHR0b3BOTGFyZ2VzdFBhdGhzOiBOdW1iZXIucGFyc2VJbnQoXG5cdFx0XHRnZXRTaW5nbGVJbnB1dChcInRvcF9uX2xhcmdlc3RfcGF0aHNcIikgfHwgXCIyMFwiLFxuXHRcdFx0MTAsXG5cdFx0KSxcblx0XHRpbmNsdWRlRXh0ZW5zaW9uczogKFxuXHRcdFx0Z2V0U2luZ2xlSW5wdXQoXCJpbmNsdWRlX2V4dGVuc2lvbnNcIikgfHwgXCIuanMsLm1qcywuY2pzXCJcblx0XHQpLnNwbGl0KFwiLFwiKSxcblx0XHRuYW1lLFxuXHRcdGFuYWx5emVyRGlyZWN0b3J5OiBnZXRTaW5nbGVJbnB1dChcImFuYWx5emVfZGlyZWN0b3J5XCIpIHx8IFwiLmFuYWx5emVyXCIsXG5cdFx0bWV0YWZpbGVzOiByYXdNZXRhZmlsZXMuc3BsaXQoXCIsXCIpLFxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuKGlucHV0OiBJbnB1dCA9IGdldElucHV0KCkpOiB2b2lkIHtcblx0cmVwb3J0KGlucHV0KTtcblx0Y29tcGFyZShpbnB1dCk7XG59XG5cbmlmIChpbXBvcnQubWV0YS51cmwgPT09IHBhdGhUb0ZpbGVVUkwocHJvY2Vzcy5hcmd2WzFdKS5ocmVmKSB7XG5cdHJ1bigpO1xufVxuIiwgImltcG9ydCBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBDb21wYXJlUmVzdWx0LCBJbnB1dCwgUmVwb3J0LCBUcmVlTWFwTm9kZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBsb2FkQW5hbHlzaXNKc29uLCBsb2FkTWV0YUZpbGUgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZShpbnB1dDogSW5wdXQpOiB2b2lkIHtcblx0bGV0IGhhc0FueUNoYW5nZSA9IGZhbHNlO1xuXHRsZXQgb3V0cHV0ID0gYCMjIFx1RDgzRFx1RENFNiBlc2J1aWxkIEJ1bmRsZSBBbmFseXNpcyBmb3IgJHtpbnB1dC5uYW1lfVxuXG5UaGlzIGFuYWx5c2lzIHdhcyBnZW5lcmF0ZWQgYnkgW2VzYnVpbGQtYnVuZGxlLWFuYWx5emVyXShodHRwczovL2dpdGh1Yi5jb20vZXhvZWdvL2VzYnVpbGQtYnVuZGxlLWFuYWx5emVyKS4gXHVEODNFXHVERDE2XG5gO1xuXG5cdGNvbnN0IGN1cnJlbnQgPSBsb2FkQW5hbHlzaXNKc29uKFxuXHRcdHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBpbnB1dC5hbmFseXplckRpcmVjdG9yeSwgXCJidW5kbGVfYW5hbHlzaXMuanNvblwiKSxcblx0KTtcblx0Y29uc3QgYmFzZSA9IGxvYWRCYXNlQW5hbHlzaXNKc29uKGlucHV0KTtcblxuXHRjb25zdCBmaWxlVHJlZSA9IGJ1aWxkRmlsZVRyZWUoaW5wdXQpO1xuXG5cdGNvbnN0IGFsbE91dEZpbGVzOiBzdHJpbmdbXSA9IFtcblx0XHQuLi5uZXcgU2V0KFsuLi5PYmplY3Qua2V5cyhjdXJyZW50KSwgLi4uT2JqZWN0LmtleXMoYmFzZSldKSxcblx0XS5zb3J0KCk7XG5cblx0Y29uc3QgY29tcGFyaXNvbjogQXJyYXk8Q29tcGFyZVJlc3VsdD4gPSBhbGxPdXRGaWxlcy5tYXAoKG91dGZpbGUpID0+IHtcblx0XHRjb25zdCBjdXJyZW50U3RhdHMgPSBjdXJyZW50W291dGZpbGVdO1xuXHRcdGNvbnN0IGJhc2VTdGF0cyA9IGJhc2Vbb3V0ZmlsZV07XG5cblx0XHRpZiAoIWN1cnJlbnRTdGF0cykge1xuXHRcdFx0aGFzQW55Q2hhbmdlID0gdHJ1ZTtcblx0XHRcdHJldHVybiB7IC4uLmJhc2VTdGF0cywgZGlmZjogLTEsIHJlbWFyazogXCJkZWxldGVkXCIsIHRyZWU6IHVuZGVmaW5lZCB9O1xuXHRcdH1cblxuXHRcdGNvbnN0IHRyZWUgPSBmaWxlVHJlZS5nZXQoXG5cdFx0XHR0cmVlS2V5KGN1cnJlbnRTdGF0cy5tZXRhZmlsZSwgY3VycmVudFN0YXRzLm91dGZpbGUpLFxuXHRcdCk7XG5cdFx0aWYgKCFiYXNlU3RhdHMpIHtcblx0XHRcdGhhc0FueUNoYW5nZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4geyAuLi5jdXJyZW50U3RhdHMsIGRpZmY6IC0xLCByZW1hcms6IFwiYWRkZWRcIiwgdHJlZSB9O1xuXHRcdH1cblxuXHRcdGNvbnN0IGRpZmYgPSBjdXJyZW50U3RhdHMuYnl0ZXMgLSBiYXNlU3RhdHMuYnl0ZXM7XG5cdFx0aWYgKGRpZmYgIT09IDApIHtcblx0XHRcdGhhc0FueUNoYW5nZSA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5jdXJyZW50U3RhdHMsXG5cdFx0XHRkaWZmLFxuXHRcdFx0dHJlZSxcblx0XHRcdHJlbWFyazogTWF0aC5zaWduKGRpZmYpID8gXCJpbmNyZWFzZWRcIiA6IFwiZGVjcmVhc2VkXCIsXG5cdFx0fTtcblx0fSk7XG5cblx0aWYgKGhhc0FueUNoYW5nZSkge1xuXHRcdG91dHB1dCArPSBtYXJrZG93blRhYmxlKGNvbXBhcmlzb24sIGlucHV0LnBlcmNlbnRFeHRyYUF0dGVudGlvbik7XG5cdFx0b3V0cHV0ICs9IGZpbGVTaXplVGFibGUoY29tcGFyaXNvbiwgaW5wdXQudG9wTkxhcmdlc3RQYXRocyk7XG5cdFx0b3V0cHV0ICs9IGRldGFpbChpbnB1dCk7XG5cdH0gZWxzZSB7XG5cdFx0b3V0cHV0ICs9IFwiVGhpcyBQUiBpbnRyb2R1Y2VkIG5vIGNoYW5nZXMgdG8gdGhlIGVzYnVpbGQgYnVuZGxlISBcdUQ4M0RcdURFNENcIjtcblx0fVxuXG5cdC8vIHdlIGFkZCB0aGlzIHRhZyBzbyB0aGF0IG91ciBhY3Rpb24gY2FuIGJlIGFibGUgdG8gZWFzaWx5IGFuZFxuXHQvLyBjb25zaXN0ZW50bHkgZmluZCB0aGUgcmlnaHQgY29tbWVudCB0byBlZGl0IGFzIG1vcmUgY29tbWl0cyBhcmUgcHVzaGVkLlxuXHRvdXRwdXQgKz0gYDwhLS0gX19FU0JVSUxEX0JVTkRMRV8ke2lucHV0Lm5hbWV9IC0tPmA7XG5cblx0d3JpdGVDb21tZW50KGlucHV0LCBvdXRwdXQpO1xufVxuXG5mdW5jdGlvbiB0cmVlS2V5KG1ldGFmaWxlOiBzdHJpbmcsIG91dGZpbGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBgJHttZXRhZmlsZX0gLT4gJHtvdXRmaWxlfWA7XG59XG5cbi8vIFdyaXRlIHRoZSBvdXRwdXQgdG8gYSBmaWxlIHdoaWNoIGlzIGxhdGVyIHJlYWQgaW5cbi8vIGFzIGNvbW1lbnQgY29udGVudHMgYnkgdGhlIGFjdGlvbnMgd29ya2Zsb3cuXG5mdW5jdGlvbiB3cml0ZUNvbW1lbnQoaW5wdXQ6IElucHV0LCBvdXRwdXQ6IHN0cmluZyk6IHZvaWQge1xuXHRmcy5ta2RpclN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGlucHV0LmFuYWx5emVyRGlyZWN0b3J5KSwge1xuXHRcdHJlY3Vyc2l2ZTogdHJ1ZSxcblx0fSk7XG5cdGZzLndyaXRlRmlsZVN5bmMoXG5cdFx0cGF0aC5qb2luKFxuXHRcdFx0cHJvY2Vzcy5jd2QoKSxcblx0XHRcdGlucHV0LmFuYWx5emVyRGlyZWN0b3J5LFxuXHRcdFx0XCJidW5kbGVfYW5hbHlzaXNfY29tbWVudC50eHRcIixcblx0XHQpLFxuXHRcdG91dHB1dC50cmltKCksXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGRldGFpbChpbnB1dDogSW5wdXQpOiBzdHJpbmcge1xuXHRpZiAoIWlucHV0LnNob3dEZXRhaWxzKSB7XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cblx0cmV0dXJuIGBcXG48ZGV0YWlscz5cbjxzdW1tYXJ5PkRldGFpbHM8L3N1bW1hcnk+XG48cD5OZXh0IHRvIHRoZSBzaXplIGlzIGhvdyBtdWNoIHRoZSBzaXplIGhhcyBpbmNyZWFzZWQgb3IgZGVjcmVhc2VkIGNvbXBhcmVkIHdpdGggdGhlIGJhc2UgYnJhbmNoIG9mIHRoaXMgUFIuPC9wPlxuPHVsPlxuPGxpPlx1MjAzQ1x1RkUwRjogU2l6ZSBpbmNyZWFzZWQgYnkgJHtpbnB1dC5wZXJjZW50RXh0cmFBdHRlbnRpb259JSBvciBtb3JlLiBTcGVjaWFsIGF0dGVudGlvbiBzaG91bGQgYmUgZ2l2ZW4gdG8gdGhpcy48L2xpPlxuPGxpPlx1MjZBMFx1RkUwRjogU2l6ZSBpbmNyZWFzZWQgaW4gYWNjZXB0YWJsZSByYW5nZSAobG93ZXIgdGhhbiAke2lucHV0LnBlcmNlbnRFeHRyYUF0dGVudGlvbn0lKS48L2xpPlxuPGxpPlx1MjcwNTogTm8gY2hhbmdlIG9yIGV2ZW4gZG93bnNpemVkLjwvbGk+XG48bGk+XHVEODNEXHVEREQxXHVGRTBGOiBUaGUgb3V0IGZpbGUgaXMgZGVsZXRlZDogbm90IGZvdW5kIGluIGJhc2UgYnJhbmNoLjwvbGk+XG48bGk+XHVEODNDXHVERDk1OiBUaGUgb3V0IGZpbGUgaXMgbmV3bHkgZm91bmQ6IHdpbGwgYmUgYWRkZWQgdG8gYmFzZSBicmFuY2guPC9saT5cbjwvdWw+XG48L2RldGFpbHM+XFxuYDtcbn1cblxuZnVuY3Rpb24gbG9hZEJhc2VBbmFseXNpc0pzb24oaW5wdXQ6IElucHV0KTogUmVwb3J0IHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbG9hZEFuYWx5c2lzSnNvbihcblx0XHRcdHBhdGguam9pbihcblx0XHRcdFx0cHJvY2Vzcy5jd2QoKSxcblx0XHRcdFx0aW5wdXQuYW5hbHl6ZXJEaXJlY3RvcnksXG5cdFx0XHRcdFwiYmFzZS9idW5kbGUvYnVuZGxlX2FuYWx5c2lzLmpzb25cIixcblx0XHRcdCksXG5cdFx0KTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdC8vIEVtcHR5IGlmIG5vIGJhc2UgYW5hbHlzaXMgZm91bmQuXG5cdFx0Ly8gVGhpcyBpcyBhIGNhc2Ugd2hlbiBhbmFseXplciBpcyBmaXJzdCBzZXQgdXAgb3IgYWxsIGFydGlmYWN0cyBhcmUgZXhwaXJlZC5cblx0XHRyZXR1cm4ge307XG5cdH1cbn1cblxuZnVuY3Rpb24gYnVpbGRGaWxlVHJlZShpbnB1dDogSW5wdXQpIHtcblx0ZnVuY3Rpb24gYnVpbGRSb290KFxuXHRcdGlucHV0OiBSZWNvcmQ8c3RyaW5nLCB7IGJ5dGVzSW5PdXRwdXQ6IG51bWJlciB9Pixcblx0KTogVHJlZU1hcE5vZGUge1xuXHRcdGNvbnN0IHJvb3Q6IFRyZWVNYXBOb2RlID0geyBuYW1lOiBcIlwiLCBwYXRoOiBcIlwiLCB2YWx1ZTogMCwgY2hpbGRyZW46IFtdIH07XG5cdFx0Zm9yIChjb25zdCBbZmlsZVBhdGgsIHsgYnl0ZXNJbk91dHB1dCB9XSBvZiBPYmplY3QuZW50cmllcyhpbnB1dCkpIHtcblx0XHRcdGNvbnN0IGRpcmVjdG9yaWVzID0gZmlsZVBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdFx0YnVpbGROb2RlKHJvb3QsIGRpcmVjdG9yaWVzLCBieXRlc0luT3V0cHV0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHJvb3Q7XG5cdH1cblxuXHRmdW5jdGlvbiBidWlsZE5vZGUoXG5cdFx0bm9kZTogVHJlZU1hcE5vZGUsXG5cdFx0cGF0aHM6IEFycmF5PHN0cmluZz4sXG5cdFx0dmFsdWU6IG51bWJlcixcblx0KTogdm9pZCB7XG5cdFx0Y29uc3QgZmlyc3QgPSBwYXRocy5zaGlmdCgpO1xuXHRcdGlmIChmaXJzdCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBsZWFmIG5vZGUgKGZpbGUpXG5cdFx0XHRub2RlLnZhbHVlICs9IHZhbHVlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgY2hpbGQgPSBub2RlLmNoaWxkcmVuLmZpbmQoKGNoaWxkKSA9PiBjaGlsZC5uYW1lID09PSBmaXJzdCk7XG5cdFx0aWYgKCFjaGlsZCkge1xuXHRcdFx0Y2hpbGQgPSB7XG5cdFx0XHRcdG5hbWU6IGZpcnN0LFxuXHRcdFx0XHRwYXRoOiBgJHtub2RlLnBhdGh9LyR7Zmlyc3R9YC5yZXBsYWNlKC9eXFwvLywgXCJcIiksXG5cdFx0XHRcdHZhbHVlOiAwLFxuXHRcdFx0XHRjaGlsZHJlbjogW10sXG5cdFx0XHR9O1xuXHRcdFx0bm9kZS5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcblx0XHR9XG5cdFx0bm9kZS52YWx1ZSArPSB2YWx1ZTtcblx0XHRidWlsZE5vZGUoY2hpbGQsIHBhdGhzLCB2YWx1ZSk7XG5cdH1cblxuXHRjb25zdCB0cmVlcyA9IG5ldyBNYXA8c3RyaW5nLCBUcmVlTWFwTm9kZT4oKTtcblx0aWYgKGlucHV0LnRvcE5MYXJnZXN0UGF0aHMgPD0gMCkge1xuXHRcdC8vIFNraXAgYnVpbGRpbmcgdHJlZSBpZiB3ZSBkb24ndCBuZWVkIGl0LlxuXHRcdHJldHVybiB0cmVlcztcblx0fVxuXHRmb3IgKGNvbnN0IG1ldGFmaWxlIG9mIGlucHV0Lm1ldGFmaWxlcykge1xuXHRcdGNvbnN0IG1ldGFmaWxlSnNvbiA9IGxvYWRNZXRhRmlsZShwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgbWV0YWZpbGUpKTtcblx0XHRmb3IgKGNvbnN0IFtvdXRmaWxlLCBidWlsZE1ldGFdIG9mIE9iamVjdC5lbnRyaWVzKG1ldGFmaWxlSnNvbi5vdXRwdXRzKSkge1xuXHRcdFx0Y29uc3QgdHJlZSA9IGJ1aWxkUm9vdChidWlsZE1ldGEuaW5wdXRzKTtcblx0XHRcdHRyZWVzLnNldCh0cmVlS2V5KG1ldGFmaWxlLCBvdXRmaWxlKSwgdHJlZSk7XG5cblx0XHRcdGZzLndyaXRlRmlsZVN5bmMoXG5cdFx0XHRcdHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBpbnB1dC5hbmFseXplckRpcmVjdG9yeSwgXCJ0cmVlLmpzb25cIiksXG5cdFx0XHRcdEpTT04uc3RyaW5naWZ5KHRyZWUsIG51bGwsIDIpLFxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHRyZWVzO1xufVxuXG5jb25zdCBzcGFjZXIgPSBcIlx1MDBBMFwiO1xuZnVuY3Rpb24gZmlsZXNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG5cdGNvbnN0IHNpZ24gPSBieXRlcyA8IDAgPyBcIi1cIiA6IFwiXCI7XG5cdGNvbnN0IG4gPSBNYXRoLmFicyhieXRlcyk7XG5cdGlmIChuIDwgMTAwMCkge1xuXHRcdHJldHVybiBgJHtzaWdufSR7bn0ke3NwYWNlcn1CYDtcblx0fVxuXHRpZiAobiA8IDEwMDAgKiAxMDAwKSB7XG5cdFx0cmV0dXJuIGAke3NpZ259JHsobiAvIDEwMDApLnRvRml4ZWQoMil9JHtzcGFjZXJ9S0JgO1xuXHR9XG5cdGlmIChuIDwgMTAwMCAqIDEwMDAgKiAxMDAwKSB7XG5cdFx0cmV0dXJuIGAke3NpZ259JHsobiAvIDEwMDAgLyAxMDAwKS50b0ZpeGVkKDIpfSR7c3BhY2VyfU1CYDtcblx0fVxuXHRpZiAobiA8IDEwMDAgKiAxMDAwICogMTAwMCAqIDEwMDApIHtcblx0XHRyZXR1cm4gYCR7c2lnbn0keyhuIC8gMTAwMCAvIDEwMDAgLyAxMDAwKS50b0ZpeGVkKDIpfSR7c3BhY2VyfUdCYDtcblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJUb28gbGFyZ2UgZmlsZSBzaXplISEgQXJlIHlvdSBzdXJlP1wiKTtcbn1cblxuZnVuY3Rpb24gbWFya2Rvd25UYWJsZShcblx0ZGF0YTogQXJyYXk8Q29tcGFyZVJlc3VsdD4sXG5cdHJlZFRocmVzaG9sZDogbnVtYmVyLFxuKTogc3RyaW5nIHtcblx0Y29uc3Qgcm93cyA9IGRhdGFcblx0XHQubWFwKChkKSA9PiB7XG5cdFx0XHRyZXR1cm4gYCR7ZC5tZXRhZmlsZX0gfCAke2Qub3V0ZmlsZX0gfCAke3JlbmRlclNpemUoZCl9IHwgJHtyZW5kZXJOb3RlKFxuXHRcdFx0XHRkLFxuXHRcdFx0XHRyZWRUaHJlc2hvbGQsXG5cdFx0XHQpfVxcbmA7XG5cdFx0fSlcblx0XHQuam9pbihcIlwiKTtcblxuXHRyZXR1cm4gYFxuTWV0YSBGaWxlIHwgT3V0IEZpbGUgIHwgU2l6ZSAocmF3KSB8IE5vdGUgXG4tLS0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS06fC0tLS0tLVxuJHtyb3dzfWA7XG59XG5cbi8qKlxuICogRmluZCB0aGUgdG9wIE4gbGFyZ2VzdCBub2RlcyBpbiByb290IHRyZWUuXG4gKiBEaWcgbm9kZXMgdW50aWwgdGhlIGRlcHRoIG9mIDMuXG4gKi9cbmZ1bmN0aW9uIGZpbmRMYXJnZURpcmVjdG9yaWVzKHJvb3Q6IFRyZWVNYXBOb2RlLCBOOiBudW1iZXIpIHtcblx0Y29uc3Qgbm9kZXM6IFRyZWVNYXBOb2RlW10gPSBbXTtcblx0Y29uc3QgcXVldWU6IEFycmF5PHsgbm9kZTogVHJlZU1hcE5vZGU7IGRlcHRoOiBudW1iZXIgfT4gPSBbXG5cdFx0eyBub2RlOiByb290LCBkZXB0aDogMCB9LFxuXHRdO1xuXHR3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuXHRcdGNvbnN0IHNoaWZ0ID0gcXVldWUuc2hpZnQoKTtcblx0XHRpZiAoIXNoaWZ0KSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y29uc3QgeyBub2RlLCBkZXB0aCB9ID0gc2hpZnQ7XG5cdFx0aWYgKGRlcHRoID09PSAzKSB7XG5cdFx0XHRub2Rlcy5wdXNoKG5vZGUpO1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0bm9kZXMucHVzaChub2RlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIG5vZGUuY2hpbGRyZW4pIHtcblx0XHRcdFx0cXVldWUucHVzaCh7IG5vZGU6IGl0ZW0sIGRlcHRoOiBkZXB0aCArIDEgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGNvbnN0IGxhcmdlTm9kZXMgPSBub2Rlcy5zb3J0KChhLCBiKSA9PiBiLnZhbHVlIC0gYS52YWx1ZSkuc2xpY2UoMCwgTik7XG5cdHJldHVybiB7XG5cdFx0bGFyZ2VOb2Rlcyxcblx0XHRoYXNPdGhlcjogbm9kZXMubGVuZ3RoID4gTixcblx0fTtcbn1cblxuZnVuY3Rpb24gZml4ZWRQZXJjZW50KG46IG51bWJlciwgZDogbnVtYmVyKTogbnVtYmVyIHtcblx0cmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KCgobiAvIGQpICogMTAwKS50b0ZpeGVkKDEpKTtcbn1cblxuZnVuY3Rpb24gZmlsZVNpemVUYWJsZShcblx0ZGF0YTogQXJyYXk8Q29tcGFyZVJlc3VsdD4sXG5cdHRvcE5MYXJnZXN0UGF0aHM6IG51bWJlcixcbik6IHN0cmluZyB7XG5cdGlmIChkYXRhLmxlbmd0aCA9PT0gMCB8fCB0b3BOTGFyZ2VzdFBhdGhzIDw9IDApIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXHRsZXQgb3V0cHV0ID0gXCJcIjtcblx0b3V0cHV0ICs9IFwiPGRldGFpbHM+XFxuXCI7XG5cdG91dHB1dCArPSBcIjxzdW1tYXJ5PlRvcCB0ZW4gbGFyZ2VzdCBwYXRoczwvc3VtbWFyeT5cXG5cIjtcblx0b3V0cHV0ICs9IGBUaGVzZSB2aXN1YWxpemF0aW9uIHNob3dzIHRvcCAke3RvcE5MYXJnZXN0UGF0aHN9IGxhcmdlc3QgcGF0aHMgaW4gdGhlIGJ1bmRsZS5cXG5gO1xuXHRmb3IgKGNvbnN0IGQgb2YgZGF0YSkge1xuXHRcdG91dHB1dCArPSBcIlxcblwiO1xuXHRcdG91dHB1dCArPSBgIyMgTWV0YSBmaWxlOiAke2QubWV0YWZpbGV9LCBPdXQgZmlsZTogJHtkLm91dGZpbGV9XFxuYDtcblx0XHRpZiAoIWQudHJlZSkge1xuXHRcdFx0b3V0cHV0ICs9IFwiXHVGRTBGXHVGRTBGXHVEODNEXHVEREQxXHVGRTBGRGVsZXRlZFxcblwiO1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdG91dHB1dCArPSBcInwgUGF0aCB8IFNpemUgfFxcblwiO1xuXHRcdG91dHB1dCArPSBcInwtLS0tLS18LS0tLS0tLXxcXG5cIjtcblx0XHRjb25zdCB0b3RhbFNpemUgPSBkLnRyZWUudmFsdWU7XG5cdFx0Y29uc3QgeyBsYXJnZU5vZGVzLCBoYXNPdGhlciB9ID0gZmluZExhcmdlRGlyZWN0b3JpZXMoXG5cdFx0XHRkLnRyZWUsXG5cdFx0XHR0b3BOTGFyZ2VzdFBhdGhzLFxuXHRcdCk7XG5cdFx0Zm9yIChjb25zdCB7IHBhdGgsIHZhbHVlIH0gb2YgbGFyZ2VOb2Rlcykge1xuXHRcdFx0Y29uc3QgcGVyY2VudCA9IGZpeGVkUGVyY2VudCh2YWx1ZSwgdG90YWxTaXplKTtcblx0XHRcdG91dHB1dCArPSBgfCAke3BhdGh9IHwgJHtyZW5kZXJCYXIocGVyY2VudCwgdmFsdWUpfSB8XFxuYDtcblx0XHR9XG5cdFx0aWYgKGhhc090aGVyKSB7XG5cdFx0XHRjb25zdCBvdGhlclNpemUgPSB0b3RhbFNpemUgLSBsYXJnZU5vZGVzWzBdLnZhbHVlO1xuXHRcdFx0Y29uc3Qgb3RoZXJQZXJjZW50ID0gZml4ZWRQZXJjZW50KG90aGVyU2l6ZSwgdG90YWxTaXplKTtcblx0XHRcdG91dHB1dCArPSBgfCAob3RoZXIpIHwgJHtyZW5kZXJCYXIob3RoZXJQZXJjZW50LCBvdGhlclNpemUpfSB8XFxuYDtcblx0XHR9XG5cdH1cblx0b3V0cHV0ICs9IFwiPC9kZXRhaWxzPlxcblwiO1xuXHRyZXR1cm4gb3V0cHV0O1xufVxuXG5mdW5jdGlvbiByZW5kZXJCYXIocGVyY2VudDogbnVtYmVyLCBieXRlczogbnVtYmVyKTogc3RyaW5nIHtcblx0Y29uc3QgYmFyID0gcHJvZ3Jlc3MocGVyY2VudCAvIDEwMCk7XG5cdHJldHVybiBgXFwke3tcXFxcY29sb3J7R29sZGVucm9kfXsgJHtiYXJ9IH19fVxcJCAke3BlcmNlbnQudG9GaXhlZChcblx0XHQxLFxuXHQpfSUsICR7ZmlsZXNpemUoYnl0ZXMpfWA7XG59XG5cbi8vIEJsb2NrIHByb2dyZXNzaW9uIGlzIDEvOCA9IDAuMTI1XG5jb25zdCBibG9ja3MgPSBbXCJcIiwgXCJcdTI1OEZcIiwgXCJcdTI1OEVcIiwgXCJcdTI1OERcIiwgXCJcdTI1OENcIiwgXCJcdTI1OEJcIiwgXCJcdTI1OEFcIiwgXCJcdTI1ODlcIiwgXCJcdTI1ODhcIl07XG5jb25zdCBwcm9ncmVzc2lvbiA9IDEgLyAoYmxvY2tzLmxlbmd0aCAtIDEpO1xuZnVuY3Rpb24gcHJvZ3Jlc3ModmFsdWU6IG51bWJlciwgbGVuZ3RoID0gMjUsIHZtaW4gPSAwLjAsIHZtYXggPSAxLjApIHtcblx0Y29uc3QgdiA9IHZhbHVlICogbGVuZ3RoO1xuXHRjb25zdCBpbnRlZ2VyUGFydCA9IE1hdGguZmxvb3Iodik7XG5cdGNvbnN0IGZyYWN0aW9uYWxQYXJ0ID0gdiAtIGludGVnZXJQYXJ0O1xuXHRjb25zdCBpID0gTWF0aC5yb3VuZChcblx0XHQocHJvZ3Jlc3Npb24gKiBNYXRoLmZsb29yKGZyYWN0aW9uYWxQYXJ0IC8gcHJvZ3Jlc3Npb24pKSAvIHByb2dyZXNzaW9uLFxuXHQpO1xuXHRyZXR1cm4gXCJcdTI1ODhcIi5yZXBlYXQoaW50ZWdlclBhcnQpICsgYmxvY2tzW2ldO1xufVxuXG5mdW5jdGlvbiByZW5kZXJTaXplKGQ6IENvbXBhcmVSZXN1bHQpOiBzdHJpbmcge1xuXHRyZXR1cm4gZmlsZXNpemUoZC5ieXRlcyk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlck5vdGUoZDogQ29tcGFyZVJlc3VsdCwgcmVkVGhyZXNob2xkOiBudW1iZXIpOiBzdHJpbmcge1xuXHRpZiAoZC5yZW1hcmsgPT09IFwiZGVsZXRlZFwiKSB7XG5cdFx0cmV0dXJuIFwiXHVEODNEXHVEREQxXHVGRTBGIERlbGV0ZWRcIjtcblx0fVxuXHRpZiAoZC5yZW1hcmsgPT09IFwiYWRkZWRcIikge1xuXHRcdHJldHVybiBcIlx1RDgzQ1x1REQ5NSBBZGRlZFwiO1xuXHR9XG5cdGlmIChkLmRpZmYpIHtcblx0XHRjb25zdCBwZXJjZW50Q2hhbmdlID0gKGQuZGlmZiAvIGQuYnl0ZXMpICogMTAwO1xuXHRcdHJldHVybiBgJHtyZW5kZXJTdGF0dXNJbmRpY2F0b3IocGVyY2VudENoYW5nZSwgcmVkVGhyZXNob2xkKX0ke2ZpbGVzaXplKFxuXHRcdFx0ZC5kaWZmLFxuXHRcdCl9ICgke3NpZ24ocGVyY2VudENoYW5nZSl9JHtwZXJjZW50Q2hhbmdlLnRvRml4ZWQoMSl9JSlgO1xuXHR9XG5cdHJldHVybiBcIlx1MjcwNSAgTm8gY2hhbmdlXCI7XG59XG5cbmZ1bmN0aW9uIHNpZ24obnVtOiBudW1iZXIpOiBzdHJpbmcge1xuXHRyZXR1cm4gbnVtIDwgMCA/IFwiXCIgOiBcIitcIjtcbn1cblxuZnVuY3Rpb24gcmVuZGVyU3RhdHVzSW5kaWNhdG9yKFxuXHRwZXJjZW50Q2hhbmdlOiBudW1iZXIsXG5cdHJlZFRocmVzaG9sZDogbnVtYmVyLFxuKTogc3RyaW5nIHtcblx0bGV0IHJlczogc3RyaW5nO1xuXHRpZiAocGVyY2VudENoYW5nZSA+IDAgJiYgcGVyY2VudENoYW5nZSA8IHJlZFRocmVzaG9sZCkge1xuXHRcdHJlcyA9IFwiXHUyNkEwXHVGRTBGXCI7XG5cdH0gZWxzZSBpZiAocGVyY2VudENoYW5nZSA+PSByZWRUaHJlc2hvbGQpIHtcblx0XHRyZXMgPSBcIlx1MjAzQ1x1RkUwRlwiO1xuXHR9IGVsc2Uge1xuXHRcdHJlcyA9IFwiXHUyNzA1IFwiO1xuXHR9XG5cdHJldHVybiBgJHtyZXN9ICR7c2lnbihwZXJjZW50Q2hhbmdlKX1gO1xufVxuIiwgImltcG9ydCBmcyBmcm9tIFwibm9kZTpmc1wiO1xuXG5pbXBvcnQgdHlwZSB7IE1ldGFmaWxlIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCB0eXBlIHsgUmVwb3J0IH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZnVuY3Rpb24gbG9hZEpzb25GaWxlKHBhdGg6IHN0cmluZykge1xuXHRyZXR1cm4gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGF0aCkudG9TdHJpbmcoXCJ1dGYtOFwiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkTWV0YUZpbGUocGF0aDogc3RyaW5nKTogTWV0YWZpbGUge1xuXHRyZXR1cm4gbG9hZEpzb25GaWxlKHBhdGgpIGFzIE1ldGFmaWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFuYWx5c2lzSnNvbihwYXRoOiBzdHJpbmcpOiBSZXBvcnQge1xuXHRyZXR1cm4gbG9hZEpzb25GaWxlKHBhdGgpIGFzIFJlcG9ydDtcbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FjdGlvbnMvdG9vbGtpdC9ibG9iLzgxYTczYWJhOGJlZGQ1MzJmNmVkZGNjNDFlZDNhMGZhZDhiMWNmZWIvcGFja2FnZXMvY29yZS9zcmMvY29yZS50cyNMMTI2XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2luZ2xlSW5wdXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgdmFsID0gcHJvY2Vzcy5lbnZbYElOUFVUXyR7bmFtZS50b1VwcGVyQ2FzZSgpfWBdIHx8IFwiXCI7XG5cdHJldHVybiB2YWwudHJpbSgpO1xufVxuIiwgImltcG9ydCBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSBcIm5vZGU6cHJvY2Vzc1wiO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0LCBSZXBvcnQgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgbG9hZE1ldGFGaWxlIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlcG9ydChpbnB1dDogSW5wdXQpOiB2b2lkIHtcblx0Y29uc3QgYWxsUGFnZVNpemVzID0gZ2V0QWxsUGFnZVNpemVzKGlucHV0KTtcblx0ZnMubWtkaXJTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBpbnB1dC5hbmFseXplckRpcmVjdG9yeSksIHtcblx0XHRyZWN1cnNpdmU6IHRydWUsXG5cdH0pO1xuXHRjb25zdCByZXN1bHRKc29uUGF0aCA9IHBhdGguam9pbihcblx0XHRwcm9jZXNzLmN3ZCgpLFxuXHRcdGlucHV0LmFuYWx5emVyRGlyZWN0b3J5LFxuXHRcdFwiYnVuZGxlX2FuYWx5c2lzLmpzb25cIixcblx0KTtcblx0ZnMud3JpdGVGaWxlU3luYyhyZXN1bHRKc29uUGF0aCwgSlNPTi5zdHJpbmdpZnkoYWxsUGFnZVNpemVzLCBudWxsLCAyKSk7XG5cdGNvbnNvbGUubG9nKGBXcm90ZSAke3Jlc3VsdEpzb25QYXRofWApO1xufVxuXG5mdW5jdGlvbiBnZXRBbGxQYWdlU2l6ZXMoaW5wdXQ6IElucHV0KTogUmVwb3J0IHtcblx0Y29uc3QgYWNjOiBSZXBvcnQgPSB7fTtcblx0cmV0dXJuIGlucHV0Lm1ldGFmaWxlcy5yZWR1Y2UoKGFjYywgbWV0YWZpbGUpID0+IHtcblx0XHRjb25zdCBtZXRhRmlsZVBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgbWV0YWZpbGUpO1xuXHRcdHRyeSB7XG5cdFx0XHRmcy5hY2Nlc3NTeW5jKG1ldGFGaWxlUGF0aCwgZnMuY29uc3RhbnRzLlJfT0spO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0YE5vIG1ldGEgZmlsZSBmb3VuZCBhdCBcIiR7bWV0YUZpbGVQYXRofVwiIC0gYSBwYXRoIHRvIG1ldGEgZmlsZSBtYXkgYmUgd3JvbmcsIG9yIGVzYnVpbGQgaXMgbm90IGV4ZWN1dGVkLmAsXG5cdFx0XHQpO1xuXHRcdFx0cHJvY2Vzcy5leGl0KDEpO1xuXHRcdH1cblxuXHRcdGNvbnN0IG1ldGFGaWxlSnNvbiA9IGxvYWRNZXRhRmlsZShtZXRhRmlsZVBhdGgpO1xuXHRcdE9iamVjdC5lbnRyaWVzKG1ldGFGaWxlSnNvbi5vdXRwdXRzKS5yZWR1Y2UoKGFjYywgb3V0cHV0KSA9PiB7XG5cdFx0XHRjb25zdCBbb3V0ZmlsZSwgYnVpbGRNZXRhXSA9IG91dHB1dDtcblx0XHRcdGlmIChcblx0XHRcdFx0IWlucHV0LmluY2x1ZGVFeHRlbnNpb25zLnNvbWUoKGV4dCkgPT5cblx0XHRcdFx0XHRvdXRmaWxlLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoZXh0KSxcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBhY2M7XG5cdFx0XHR9XG5cdFx0XHRhY2NbYCR7bWV0YWZpbGV9IC0+ICR7b3V0ZmlsZX1gXSA9IHtcblx0XHRcdFx0Ynl0ZXM6IGJ1aWxkTWV0YS5ieXRlcyxcblx0XHRcdFx0bWV0YWZpbGUsXG5cdFx0XHRcdG91dGZpbGUsXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIGFjYztcblx0XHR9LCBhY2MpO1xuXHRcdHJldHVybiBhY2M7XG5cdH0sIGFjYyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQUEsU0FBUyxxQkFBcUI7OztBQ0E5QixPQUFPQSxTQUFRO0FBQ2YsT0FBTyxVQUFVOzs7QUNEakIsT0FBTyxRQUFRO0FBS2YsU0FBUyxhQUFhQyxPQUFjO0FBQ25DLFNBQU8sS0FBSyxNQUFNLEdBQUcsYUFBYUEsS0FBSSxFQUFFLFNBQVMsT0FBTyxDQUFDO0FBQzFEO0FBRU8sU0FBUyxhQUFhQSxPQUF3QjtBQUNwRCxTQUFPLGFBQWFBLEtBQUk7QUFDekI7QUFFTyxTQUFTLGlCQUFpQkEsT0FBc0I7QUFDdEQsU0FBTyxhQUFhQSxLQUFJO0FBQ3pCO0FBR08sU0FBUyxlQUFlLE1BQXNCO0FBQ3BELFFBQU0sTUFBTSxRQUFRLElBQUksU0FBUyxLQUFLLFlBQVksQ0FBQyxFQUFFLEtBQUs7QUFDMUQsU0FBTyxJQUFJLEtBQUs7QUFDakI7OztBRGhCTyxTQUFTLFFBQVEsT0FBb0I7QUFDM0MsTUFBSSxlQUFlO0FBQ25CLE1BQUksU0FBUyw0Q0FBcUMsTUFBTSxJQUFJO0FBQUE7QUFBQTtBQUFBO0FBSzVELFFBQU0sVUFBVTtBQUFBLElBQ2YsS0FBSyxLQUFLLFFBQVEsSUFBSSxHQUFHLE1BQU0sbUJBQW1CLHNCQUFzQjtBQUFBLEVBQ3pFO0FBQ0EsUUFBTSxPQUFPLHFCQUFxQixLQUFLO0FBRXZDLFFBQU0sV0FBVyxjQUFjLEtBQUs7QUFFcEMsUUFBTSxjQUF3QjtBQUFBLElBQzdCLEdBQUcsb0JBQUksSUFBSSxDQUFDLEdBQUcsT0FBTyxLQUFLLE9BQU8sR0FBRyxHQUFHLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQztBQUFBLEVBQzNELEVBQUUsS0FBSztBQUVQLFFBQU0sYUFBbUMsWUFBWSxJQUFJLENBQUMsWUFBWTtBQUNyRSxVQUFNLGVBQWUsUUFBUSxPQUFPO0FBQ3BDLFVBQU0sWUFBWSxLQUFLLE9BQU87QUFFOUIsUUFBSSxDQUFDLGNBQWM7QUFDbEIscUJBQWU7QUFDZixhQUFPLEVBQUUsR0FBRyxXQUFXLE1BQU0sSUFBSSxRQUFRLFdBQVcsTUFBTSxPQUFVO0FBQUEsSUFDckU7QUFFQSxVQUFNLE9BQU8sU0FBUztBQUFBLE1BQ3JCLFFBQVEsYUFBYSxVQUFVLGFBQWEsT0FBTztBQUFBLElBQ3BEO0FBQ0EsUUFBSSxDQUFDLFdBQVc7QUFDZixxQkFBZTtBQUNmLGFBQU8sRUFBRSxHQUFHLGNBQWMsTUFBTSxJQUFJLFFBQVEsU0FBUyxLQUFLO0FBQUEsSUFDM0Q7QUFFQSxVQUFNLE9BQU8sYUFBYSxRQUFRLFVBQVU7QUFDNUMsUUFBSSxTQUFTLEdBQUc7QUFDZixxQkFBZTtBQUFBLElBQ2hCO0FBQ0EsV0FBTztBQUFBLE1BQ04sR0FBRztBQUFBLE1BQ0g7QUFBQSxNQUNBO0FBQUEsTUFDQSxRQUFRLEtBQUssS0FBSyxJQUFJLElBQUksY0FBYztBQUFBLElBQ3pDO0FBQUEsRUFDRCxDQUFDO0FBRUQsTUFBSSxjQUFjO0FBQ2pCLGNBQVUsY0FBYyxZQUFZLE1BQU0scUJBQXFCO0FBQy9ELGNBQVUsY0FBYyxZQUFZLE1BQU0sZ0JBQWdCO0FBQzFELGNBQVUsT0FBTyxLQUFLO0FBQUEsRUFDdkIsT0FBTztBQUNOLGNBQVU7QUFBQSxFQUNYO0FBSUEsWUFBVSx5QkFBeUIsTUFBTSxJQUFJO0FBRTdDLGVBQWEsT0FBTyxNQUFNO0FBQzNCO0FBRUEsU0FBUyxRQUFRLFVBQWtCLFNBQXlCO0FBQzNELFNBQU8sR0FBRyxRQUFRLE9BQU8sT0FBTztBQUNqQztBQUlBLFNBQVMsYUFBYSxPQUFjLFFBQXNCO0FBQ3pELEVBQUFDLElBQUcsVUFBVSxLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsTUFBTSxpQkFBaUIsR0FBRztBQUFBLElBQy9ELFdBQVc7QUFBQSxFQUNaLENBQUM7QUFDRCxFQUFBQSxJQUFHO0FBQUEsSUFDRixLQUFLO0FBQUEsTUFDSixRQUFRLElBQUk7QUFBQSxNQUNaLE1BQU07QUFBQSxNQUNOO0FBQUEsSUFDRDtBQUFBLElBQ0EsT0FBTyxLQUFLO0FBQUEsRUFDYjtBQUNEO0FBRUEsU0FBUyxPQUFPLE9BQXNCO0FBQ3JDLE1BQUksQ0FBQyxNQUFNLGFBQWE7QUFDdkIsV0FBTztBQUFBLEVBQ1I7QUFDQSxTQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxzQ0FJb0IsTUFBTSxxQkFBcUI7QUFBQSxtRUFDRSxNQUFNLHFCQUFxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1wRjtBQUVBLFNBQVMscUJBQXFCLE9BQXNCO0FBQ25ELE1BQUk7QUFDSCxXQUFPO0FBQUEsTUFDTixLQUFLO0FBQUEsUUFDSixRQUFRLElBQUk7QUFBQSxRQUNaLE1BQU07QUFBQSxRQUNOO0FBQUEsTUFDRDtBQUFBLElBQ0Q7QUFBQSxFQUNELFNBQVMsR0FBRztBQUdYLFdBQU8sQ0FBQztBQUFBLEVBQ1Q7QUFDRDtBQUVBLFNBQVMsY0FBYyxPQUFjO0FBQ3BDLFdBQVMsVUFDUkMsUUFDYztBQUNkLFVBQU0sT0FBb0IsRUFBRSxNQUFNLElBQUksTUFBTSxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUMsRUFBRTtBQUN2RSxlQUFXLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxLQUFLLE9BQU8sUUFBUUEsTUFBSyxHQUFHO0FBQ2xFLFlBQU0sY0FBYyxTQUFTLE1BQU0sR0FBRztBQUN0QyxnQkFBVSxNQUFNLGFBQWEsYUFBYTtBQUFBLElBQzNDO0FBQ0EsV0FBTztBQUFBLEVBQ1I7QUFFQSxXQUFTLFVBQ1IsTUFDQSxPQUNBLE9BQ087QUFDUCxVQUFNLFFBQVEsTUFBTSxNQUFNO0FBQzFCLFFBQUksVUFBVSxRQUFXO0FBRXhCLFdBQUssU0FBUztBQUNkO0FBQUEsSUFDRDtBQUNBLFFBQUksUUFBUSxLQUFLLFNBQVMsS0FBSyxDQUFDQyxXQUFVQSxPQUFNLFNBQVMsS0FBSztBQUM5RCxRQUFJLENBQUMsT0FBTztBQUNYLGNBQVE7QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcsUUFBUSxPQUFPLEVBQUU7QUFBQSxRQUMvQyxPQUFPO0FBQUEsUUFDUCxVQUFVLENBQUM7QUFBQSxNQUNaO0FBQ0EsV0FBSyxTQUFTLEtBQUssS0FBSztBQUFBLElBQ3pCO0FBQ0EsU0FBSyxTQUFTO0FBQ2QsY0FBVSxPQUFPLE9BQU8sS0FBSztBQUFBLEVBQzlCO0FBRUEsUUFBTSxRQUFRLG9CQUFJLElBQXlCO0FBQzNDLE1BQUksTUFBTSxvQkFBb0IsR0FBRztBQUVoQyxXQUFPO0FBQUEsRUFDUjtBQUNBLGFBQVcsWUFBWSxNQUFNLFdBQVc7QUFDdkMsVUFBTSxlQUFlLGFBQWEsS0FBSyxLQUFLLFFBQVEsSUFBSSxHQUFHLFFBQVEsQ0FBQztBQUNwRSxlQUFXLENBQUMsU0FBUyxTQUFTLEtBQUssT0FBTyxRQUFRLGFBQWEsT0FBTyxHQUFHO0FBQ3hFLFlBQU0sT0FBTyxVQUFVLFVBQVUsTUFBTTtBQUN2QyxZQUFNLElBQUksUUFBUSxVQUFVLE9BQU8sR0FBRyxJQUFJO0FBRTFDLE1BQUFGLElBQUc7QUFBQSxRQUNGLEtBQUssS0FBSyxRQUFRLElBQUksR0FBRyxNQUFNLG1CQUFtQixXQUFXO0FBQUEsUUFDN0QsS0FBSyxVQUFVLE1BQU0sTUFBTSxDQUFDO0FBQUEsTUFDN0I7QUFBQSxJQUNEO0FBQUEsRUFDRDtBQUNBLFNBQU87QUFDUjtBQUVBLElBQU0sU0FBUztBQUNmLFNBQVMsU0FBUyxPQUF1QjtBQUN4QyxRQUFNRyxRQUFPLFFBQVEsSUFBSSxNQUFNO0FBQy9CLFFBQU0sSUFBSSxLQUFLLElBQUksS0FBSztBQUN4QixNQUFJLElBQUksS0FBTTtBQUNiLFdBQU8sR0FBR0EsS0FBSSxHQUFHLENBQUMsR0FBRyxNQUFNO0FBQUEsRUFDNUI7QUFDQSxNQUFJLElBQUksTUFBTyxLQUFNO0FBQ3BCLFdBQU8sR0FBR0EsS0FBSSxJQUFJLElBQUksS0FBTSxRQUFRLENBQUMsQ0FBQyxHQUFHLE1BQU07QUFBQSxFQUNoRDtBQUNBLE1BQUksSUFBSSxNQUFPLE1BQU8sS0FBTTtBQUMzQixXQUFPLEdBQUdBLEtBQUksSUFBSSxJQUFJLE1BQU8sS0FBTSxRQUFRLENBQUMsQ0FBQyxHQUFHLE1BQU07QUFBQSxFQUN2RDtBQUNBLE1BQUksSUFBSSxNQUFPLE1BQU8sTUFBTyxLQUFNO0FBQ2xDLFdBQU8sR0FBR0EsS0FBSSxJQUFJLElBQUksTUFBTyxNQUFPLEtBQU0sUUFBUSxDQUFDLENBQUMsR0FBRyxNQUFNO0FBQUEsRUFDOUQ7QUFDQSxRQUFNLElBQUksTUFBTSxxQ0FBcUM7QUFDdEQ7QUFFQSxTQUFTLGNBQ1IsTUFDQSxjQUNTO0FBQ1QsUUFBTSxPQUFPLEtBQ1gsSUFBSSxDQUFDLE1BQU07QUFDWCxXQUFPLEdBQUcsRUFBRSxRQUFRLE1BQU0sRUFBRSxPQUFPLE1BQU0sV0FBVyxDQUFDLENBQUMsTUFBTTtBQUFBLE1BQzNEO0FBQUEsTUFDQTtBQUFBLElBQ0QsQ0FBQztBQUFBO0FBQUEsRUFDRixDQUFDLEVBQ0EsS0FBSyxFQUFFO0FBRVQsU0FBTztBQUFBO0FBQUE7QUFBQSxFQUdOLElBQUk7QUFDTjtBQU1BLFNBQVMscUJBQXFCLE1BQW1CLEdBQVc7QUFDM0QsUUFBTSxRQUF1QixDQUFDO0FBQzlCLFFBQU0sUUFBcUQ7QUFBQSxJQUMxRCxFQUFFLE1BQU0sTUFBTSxPQUFPLEVBQUU7QUFBQSxFQUN4QjtBQUNBLFNBQU8sTUFBTSxTQUFTLEdBQUc7QUFDeEIsVUFBTSxRQUFRLE1BQU0sTUFBTTtBQUMxQixRQUFJLENBQUMsT0FBTztBQUNYO0FBQUEsSUFDRDtBQUNBLFVBQU0sRUFBRSxNQUFNLE1BQU0sSUFBSTtBQUN4QixRQUFJLFVBQVUsR0FBRztBQUNoQixZQUFNLEtBQUssSUFBSTtBQUNmO0FBQUEsSUFDRDtBQUNBLFFBQUksS0FBSyxTQUFTLFdBQVcsR0FBRztBQUMvQixZQUFNLEtBQUssSUFBSTtBQUFBLElBQ2hCLE9BQU87QUFDTixpQkFBVyxRQUFRLEtBQUssVUFBVTtBQUNqQyxjQUFNLEtBQUssRUFBRSxNQUFNLE1BQU0sT0FBTyxRQUFRLEVBQUUsQ0FBQztBQUFBLE1BQzVDO0FBQUEsSUFDRDtBQUFBLEVBQ0Q7QUFDQSxRQUFNLGFBQWEsTUFBTSxLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUNyRSxTQUFPO0FBQUEsSUFDTjtBQUFBLElBQ0EsVUFBVSxNQUFNLFNBQVM7QUFBQSxFQUMxQjtBQUNEO0FBRUEsU0FBUyxhQUFhLEdBQVcsR0FBbUI7QUFDbkQsU0FBTyxPQUFPLFlBQWEsSUFBSSxJQUFLLEtBQUssUUFBUSxDQUFDLENBQUM7QUFDcEQ7QUFFQSxTQUFTLGNBQ1IsTUFDQSxrQkFDUztBQUNULE1BQUksS0FBSyxXQUFXLEtBQUssb0JBQW9CLEdBQUc7QUFDL0MsV0FBTztBQUFBLEVBQ1I7QUFDQSxNQUFJLFNBQVM7QUFDYixZQUFVO0FBQ1YsWUFBVTtBQUNWLFlBQVUsaUNBQWlDLGdCQUFnQjtBQUFBO0FBQzNELGFBQVcsS0FBSyxNQUFNO0FBQ3JCLGNBQVU7QUFDVixjQUFVLGlCQUFpQixFQUFFLFFBQVEsZUFBZSxFQUFFLE9BQU87QUFBQTtBQUM3RCxRQUFJLENBQUMsRUFBRSxNQUFNO0FBQ1osZ0JBQVU7QUFDVjtBQUFBLElBQ0Q7QUFDQSxjQUFVO0FBQ1YsY0FBVTtBQUNWLFVBQU0sWUFBWSxFQUFFLEtBQUs7QUFDekIsVUFBTSxFQUFFLFlBQVksU0FBUyxJQUFJO0FBQUEsTUFDaEMsRUFBRTtBQUFBLE1BQ0Y7QUFBQSxJQUNEO0FBQ0EsZUFBVyxFQUFFLE1BQUFDLE9BQU0sTUFBTSxLQUFLLFlBQVk7QUFDekMsWUFBTSxVQUFVLGFBQWEsT0FBTyxTQUFTO0FBQzdDLGdCQUFVLEtBQUtBLEtBQUksTUFBTSxVQUFVLFNBQVMsS0FBSyxDQUFDO0FBQUE7QUFBQSxJQUNuRDtBQUNBLFFBQUksVUFBVTtBQUNiLFlBQU0sWUFBWSxZQUFZLFdBQVcsQ0FBQyxFQUFFO0FBQzVDLFlBQU0sZUFBZSxhQUFhLFdBQVcsU0FBUztBQUN0RCxnQkFBVSxlQUFlLFVBQVUsY0FBYyxTQUFTLENBQUM7QUFBQTtBQUFBLElBQzVEO0FBQUEsRUFDRDtBQUNBLFlBQVU7QUFDVixTQUFPO0FBQ1I7QUFFQSxTQUFTLFVBQVUsU0FBaUIsT0FBdUI7QUFDMUQsUUFBTSxNQUFNLFNBQVMsVUFBVSxHQUFHO0FBQ2xDLFNBQU8sMkJBQTJCLEdBQUcsU0FBVSxRQUFRO0FBQUEsSUFDdEQ7QUFBQSxFQUNELENBQUMsTUFBTSxTQUFTLEtBQUssQ0FBQztBQUN2QjtBQUdBLElBQU0sU0FBUyxDQUFDLElBQUksVUFBSyxVQUFLLFVBQUssVUFBSyxVQUFLLFVBQUssVUFBSyxRQUFHO0FBQzFELElBQU0sY0FBYyxLQUFLLE9BQU8sU0FBUztBQUN6QyxTQUFTLFNBQVMsT0FBZSxTQUFTLElBQUksT0FBTyxHQUFLLE9BQU8sR0FBSztBQUNyRSxRQUFNLElBQUksUUFBUTtBQUNsQixRQUFNLGNBQWMsS0FBSyxNQUFNLENBQUM7QUFDaEMsUUFBTSxpQkFBaUIsSUFBSTtBQUMzQixRQUFNLElBQUksS0FBSztBQUFBLElBQ2IsY0FBYyxLQUFLLE1BQU0saUJBQWlCLFdBQVcsSUFBSztBQUFBLEVBQzVEO0FBQ0EsU0FBTyxTQUFJLE9BQU8sV0FBVyxJQUFJLE9BQU8sQ0FBQztBQUMxQztBQUVBLFNBQVMsV0FBVyxHQUEwQjtBQUM3QyxTQUFPLFNBQVMsRUFBRSxLQUFLO0FBQ3hCO0FBRUEsU0FBUyxXQUFXLEdBQWtCLGNBQThCO0FBQ25FLE1BQUksRUFBRSxXQUFXLFdBQVc7QUFDM0IsV0FBTztBQUFBLEVBQ1I7QUFDQSxNQUFJLEVBQUUsV0FBVyxTQUFTO0FBQ3pCLFdBQU87QUFBQSxFQUNSO0FBQ0EsTUFBSSxFQUFFLE1BQU07QUFDWCxVQUFNLGdCQUFpQixFQUFFLE9BQU8sRUFBRSxRQUFTO0FBQzNDLFdBQU8sR0FBRyxzQkFBc0IsZUFBZSxZQUFZLENBQUMsR0FBRztBQUFBLE1BQzlELEVBQUU7QUFBQSxJQUNILENBQUMsS0FBSyxLQUFLLGFBQWEsQ0FBQyxHQUFHLGNBQWMsUUFBUSxDQUFDLENBQUM7QUFBQSxFQUNyRDtBQUNBLFNBQU87QUFDUjtBQUVBLFNBQVMsS0FBSyxLQUFxQjtBQUNsQyxTQUFPLE1BQU0sSUFBSSxLQUFLO0FBQ3ZCO0FBRUEsU0FBUyxzQkFDUixlQUNBLGNBQ1M7QUFDVCxNQUFJO0FBQ0osTUFBSSxnQkFBZ0IsS0FBSyxnQkFBZ0IsY0FBYztBQUN0RCxVQUFNO0FBQUEsRUFDUCxXQUFXLGlCQUFpQixjQUFjO0FBQ3pDLFVBQU07QUFBQSxFQUNQLE9BQU87QUFDTixVQUFNO0FBQUEsRUFDUDtBQUNBLFNBQU8sR0FBRyxHQUFHLElBQUksS0FBSyxhQUFhLENBQUM7QUFDckM7OztBRTdWQSxPQUFPQyxTQUFRO0FBQ2YsT0FBT0MsV0FBVTtBQUNqQixPQUFPQyxjQUFhO0FBS2IsU0FBUyxPQUFPLE9BQW9CO0FBQzFDLFFBQU0sZUFBZSxnQkFBZ0IsS0FBSztBQUMxQyxFQUFBQyxJQUFHLFVBQVVDLE1BQUssS0FBS0MsU0FBUSxJQUFJLEdBQUcsTUFBTSxpQkFBaUIsR0FBRztBQUFBLElBQy9ELFdBQVc7QUFBQSxFQUNaLENBQUM7QUFDRCxRQUFNLGlCQUFpQkQsTUFBSztBQUFBLElBQzNCQyxTQUFRLElBQUk7QUFBQSxJQUNaLE1BQU07QUFBQSxJQUNOO0FBQUEsRUFDRDtBQUNBLEVBQUFGLElBQUcsY0FBYyxnQkFBZ0IsS0FBSyxVQUFVLGNBQWMsTUFBTSxDQUFDLENBQUM7QUFDdEUsVUFBUSxJQUFJLFNBQVMsY0FBYyxFQUFFO0FBQ3RDO0FBRUEsU0FBUyxnQkFBZ0IsT0FBc0I7QUFDOUMsUUFBTSxNQUFjLENBQUM7QUFDckIsU0FBTyxNQUFNLFVBQVUsT0FBTyxDQUFDRyxNQUFLLGFBQWE7QUFDaEQsVUFBTSxlQUFlRixNQUFLLEtBQUtDLFNBQVEsSUFBSSxHQUFHLFFBQVE7QUFDdEQsUUFBSTtBQUNILE1BQUFGLElBQUcsV0FBVyxjQUFjQSxJQUFHLFVBQVUsSUFBSTtBQUFBLElBQzlDLFNBQVMsS0FBSztBQUNiLGNBQVE7QUFBQSxRQUNQLDBCQUEwQixZQUFZO0FBQUEsTUFDdkM7QUFDQSxNQUFBRSxTQUFRLEtBQUssQ0FBQztBQUFBLElBQ2Y7QUFFQSxVQUFNLGVBQWUsYUFBYSxZQUFZO0FBQzlDLFdBQU8sUUFBUSxhQUFhLE9BQU8sRUFBRSxPQUFPLENBQUNDLE1BQUssV0FBVztBQUM1RCxZQUFNLENBQUMsU0FBUyxTQUFTLElBQUk7QUFDN0IsVUFDQyxDQUFDLE1BQU0sa0JBQWtCO0FBQUEsUUFBSyxDQUFDLFFBQzlCLFFBQVEsWUFBWSxFQUFFLFNBQVMsR0FBRztBQUFBLE1BQ25DLEdBQ0M7QUFDRCxlQUFPQTtBQUFBLE1BQ1I7QUFDQSxNQUFBQSxLQUFJLEdBQUcsUUFBUSxPQUFPLE9BQU8sRUFBRSxJQUFJO0FBQUEsUUFDbEMsT0FBTyxVQUFVO0FBQUEsUUFDakI7QUFBQSxRQUNBO0FBQUEsTUFDRDtBQUNBLGFBQU9BO0FBQUEsSUFDUixHQUFHQSxJQUFHO0FBQ04sV0FBT0E7QUFBQSxFQUNSLEdBQUcsR0FBRztBQUNQOzs7QUgvQ0EsU0FBUyxXQUFrQjtBQUMxQixRQUFNLGVBQWUsZUFBZSxXQUFXO0FBQy9DLE1BQUksQ0FBQyxjQUFjO0FBQ2xCLFVBQU0sSUFBSSxNQUFNLDRCQUE0QjtBQUFBLEVBQzdDO0FBQ0EsUUFBTSxPQUFPLGVBQWUsTUFBTTtBQUNsQyxNQUFJLENBQUMsTUFBTTtBQUNWLFVBQU0sSUFBSSxNQUFNLHVCQUF1QjtBQUFBLEVBQ3hDO0FBQ0EsU0FBTztBQUFBLElBQ04sdUJBQXVCLE9BQU87QUFBQSxNQUM3QixlQUFlLHlCQUF5QixLQUFLO0FBQUEsTUFDN0M7QUFBQSxJQUNEO0FBQUEsSUFDQSxhQUFhLENBQUMsUUFBUSxRQUFRLE1BQU0sRUFBRTtBQUFBLE1BQ3JDLGVBQWUsY0FBYyxLQUFLO0FBQUEsSUFDbkM7QUFBQSxJQUNBLGtCQUFrQixPQUFPO0FBQUEsTUFDeEIsZUFBZSxxQkFBcUIsS0FBSztBQUFBLE1BQ3pDO0FBQUEsSUFDRDtBQUFBLElBQ0Esb0JBQ0MsZUFBZSxvQkFBb0IsS0FBSyxpQkFDdkMsTUFBTSxHQUFHO0FBQUEsSUFDWDtBQUFBLElBQ0EsbUJBQW1CLGVBQWUsbUJBQW1CLEtBQUs7QUFBQSxJQUMxRCxXQUFXLGFBQWEsTUFBTSxHQUFHO0FBQUEsRUFDbEM7QUFDRDtBQUVPLFNBQVMsSUFBSSxRQUFlLFNBQVMsR0FBUztBQUNwRCxTQUFPLEtBQUs7QUFDWixVQUFRLEtBQUs7QUFDZDtBQUVBLElBQUksWUFBWSxRQUFRLGNBQWMsUUFBUSxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU07QUFDNUQsTUFBSTtBQUNMOyIsCiAgIm5hbWVzIjogWyJmcyIsICJwYXRoIiwgImZzIiwgImlucHV0IiwgImNoaWxkIiwgInNpZ24iLCAicGF0aCIsICJmcyIsICJwYXRoIiwgInByb2Nlc3MiLCAiZnMiLCAicGF0aCIsICJwcm9jZXNzIiwgImFjYyJdCn0K diff --git a/src/compare.ts b/src/compare.ts index af95ec1..f29df3b 100644 --- a/src/compare.ts +++ b/src/compare.ts @@ -1,9 +1,9 @@ import fs from "node:fs"; import path from "node:path"; -import type { CompareResult, Options, Report, TreeMapNode } from "./types"; +import type { CompareResult, Input, Report, TreeMapNode } from "./types"; import { loadAnalysisJson, loadMetaFile } from "./utils"; -export function compare(input: Options): void { +export function compare(input: Input): void { let hasAnyChange = false; let output = `## 📦 esbuild Bundle Analysis for ${input.name} @@ -71,7 +71,7 @@ function treeKey(metafile: string, outfile: string): string { // Write the output to a file which is later read in // as comment contents by the actions workflow. -function writeComment(input: Options, output: string): void { +function writeComment(input: Input, output: string): void { fs.mkdirSync(path.join(process.cwd(), input.analyzerDirectory), { recursive: true, }); @@ -85,7 +85,7 @@ function writeComment(input: Options, output: string): void { ); } -function detail(input: Options): string { +function detail(input: Input): string { if (!input.showDetails) { return ""; } @@ -102,7 +102,7 @@ function detail(input: Options): string { \n`; } -function loadBaseAnalysisJson(input: Options): Report { +function loadBaseAnalysisJson(input: Input): Report { try { return loadAnalysisJson( path.join( @@ -118,7 +118,7 @@ function loadBaseAnalysisJson(input: Options): Report { } } -function buildFileTree(input: Options) { +function buildFileTree(input: Input) { function buildRoot( input: Record, ): TreeMapNode { diff --git a/src/index.ts b/src/index.ts index 966d5a6..26abc77 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,42 +1,42 @@ import { pathToFileURL } from "node:url"; import { compare } from "./compare"; import { report } from "./report"; -import type { Options } from "./types"; -import { getInput } from "./utils"; +import type { Input } from "./types"; +import { getSingleInput } from "./utils"; -function getOptions(): Options { - const rawMetafiles = getInput("metafiles"); +function getInput(): Input { + const rawMetafiles = getSingleInput("metafiles"); if (!rawMetafiles) { throw new Error("metafiles is not specified"); } - const name = getInput("name"); + const name = getSingleInput("name"); if (!name) { throw new Error("name is not specified"); } return { percentExtraAttention: Number.parseInt( - getInput("percent_extra_attention") || "20", + getSingleInput("percent_extra_attention") || "20", 10, ), showDetails: ["true", "True", "TRUE"].includes( - getInput("show_details") || "true", + getSingleInput("show_details") || "true", ), topNLargestPaths: Number.parseInt( - getInput("top_n_largest_paths") || "20", + getSingleInput("top_n_largest_paths") || "20", 10, ), includeExtensions: ( - getInput("include_extensions") || ".js,.mjs,.cjs" + getSingleInput("include_extensions") || ".js,.mjs,.cjs" ).split(","), name, - analyzerDirectory: getInput("analyze_directory") || ".analyzer", + analyzerDirectory: getSingleInput("analyze_directory") || ".analyzer", metafiles: rawMetafiles.split(","), }; } -export function run(options: Options = getOptions()): void { - report(options); - compare(options); +export function run(input: Input = getInput()): void { + report(input); + compare(input); } if (import.meta.url === pathToFileURL(process.argv[1]).href) { diff --git a/src/report.ts b/src/report.ts index ab99d80..158dcd3 100644 --- a/src/report.ts +++ b/src/report.ts @@ -2,10 +2,10 @@ import fs from "node:fs"; import path from "node:path"; import process from "node:process"; -import type { Options, Report } from "./types"; +import type { Input, Report } from "./types"; import { loadMetaFile } from "./utils"; -export function report(input: Options): void { +export function report(input: Input): void { const allPageSizes = getAllPageSizes(input); fs.mkdirSync(path.join(process.cwd(), input.analyzerDirectory), { recursive: true, @@ -19,7 +19,7 @@ export function report(input: Options): void { console.log(`Wrote ${resultJsonPath}`); } -function getAllPageSizes(input: Options): Report { +function getAllPageSizes(input: Input): Report { const acc: Report = {}; return input.metafiles.reduce((acc, metafile) => { const metaFilePath = path.join(process.cwd(), metafile); diff --git a/src/types.ts b/src/types.ts index 81c1520..10d013a 100644 --- a/src/types.ts +++ b/src/types.ts @@ -14,7 +14,7 @@ export interface CompareResult { tree: TreeMapNode | undefined; } -export interface Options { +export interface Input { name: string; metafiles: Array; includeExtensions: Array; diff --git a/src/utils.ts b/src/utils.ts index f5b402b..6ae37b8 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -16,7 +16,7 @@ export function loadAnalysisJson(path: string): Report { } // https://github.com/actions/toolkit/blob/81a73aba8bedd532f6eddcc41ed3a0fad8b1cfeb/packages/core/src/core.ts#L126 -export function getInput(name: string): string { +export function getSingleInput(name: string): string { const val = process.env[`INPUT_${name.toUpperCase()}`] || ""; return val.trim(); }