diff --git a/README.md b/README.md index 718d387..eaf6b61 100644 --- a/README.md +++ b/README.md @@ -50,8 +50,9 @@ If you have multiple meta files, you can specify them like this `"dist/meta1.jso | Name | Default | Description | |---------------------------|---------------------------------------|------------------------------------------------------------------------------------------------------------------| | `metafiles` | - | A required comma-separated list of paths to [esbuild's meta file]([https://esbuild.github.io/api/#metafile]). | -| `name` | ${{ github.event.
repository.name }} | The name of your project. This will be used in the comment header. | +| `name` | ${{ github.event.
repository.name }} | The name of your project. This will be used in the comment header. | | `analyze_directory` | `.analyzer` | A path to working directory where bundle analysis are stored. | +| `include_extensions` | `.js,.cjs,.mjs` | A comma-separated list of file extension to be included in the analysis table. | | `percent_extra_attention` | `20` | If an out file size has increased more than this percent, display a "‼️" to draw extra attention to the change. | | `show_details` | `true` | If `true`, a collapsed "details" section is rendered. It explains the details of the numbers provided and icons. | diff --git a/__tests__/__fixtures__/examples-with-base/multi-output/.analyzer/base/bundle/bundle_analysis.json b/__tests__/__fixtures__/examples-with-base/multi-output/.analyzer/base/bundle/bundle_analysis.json index f271bbf..54837c6 100644 --- a/__tests__/__fixtures__/examples-with-base/multi-output/.analyzer/base/bundle/bundle_analysis.json +++ b/__tests__/__fixtures__/examples-with-base/multi-output/.analyzer/base/bundle/bundle_analysis.json @@ -2,7 +2,7 @@ "out/meta.json -> out/no-change.js": { "metafile": "out/meta.json", "outfile": "out/no-change.js", - "bytes": 733152 + "bytes": 733190 }, "out/meta.json -> out/decreased.js": { "metafile": "out/meta.json", diff --git a/__tests__/__fixtures__/examples-with-base/multi-output/esbuild.mjs b/__tests__/__fixtures__/examples-with-base/multi-output/esbuild.mjs index ae16f9f..51befc2 100644 --- a/__tests__/__fixtures__/examples-with-base/multi-output/esbuild.mjs +++ b/__tests__/__fixtures__/examples-with-base/multi-output/esbuild.mjs @@ -1,5 +1,6 @@ import { writeFileSync } from "node:fs"; import { build } from "esbuild"; +import metaUrlPlugin from '@chialab/esbuild-plugin-meta-url'; const result = await build({ entryPoints: [ @@ -8,6 +9,7 @@ const result = await build({ `./src/much-increased.ts`, `./src/decreased.ts`, `./src/new-outfile.ts`, + `./src/file-imported.ts`, ], outdir: `out`, format: "esm", @@ -16,7 +18,10 @@ const result = await build({ platform: "node", target: "node20.9", bundle: true, - plugins: [], + plugins: [ + metaUrlPlugin(), + ], + sourcemap: true, }); writeFileSync(`out/meta.json`, JSON.stringify(result.metafile, null, 2)); diff --git a/__tests__/__fixtures__/examples-with-base/multi-output/package-lock.json b/__tests__/__fixtures__/examples-with-base/multi-output/package-lock.json index af6c3da..ccf8e89 100644 --- a/__tests__/__fixtures__/examples-with-base/multi-output/package-lock.json +++ b/__tests__/__fixtures__/examples-with-base/multi-output/package-lock.json @@ -9,9 +9,12 @@ "version": "1.0.0", "dependencies": { "@aws-sdk/client-s3": "3.556.0", - "hono": "4.2.7" + "@jitl/quickjs-wasmfile-release-sync": "^0.29.1", + "hono": "4.2.7", + "quickjs-emscripten-core": "^0.29.1" }, "devDependencies": { + "@chialab/esbuild-plugin-meta-url": "^0.18.2", "esbuild": "0.20.2", "typescript": "^5.4.5" } @@ -815,6 +818,54 @@ "node": ">=14.0.0" } }, + "node_modules/@chialab/esbuild-plugin-meta-url": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/@chialab/esbuild-plugin-meta-url/-/esbuild-plugin-meta-url-0.18.2.tgz", + "integrity": "sha512-uIRIdLvYnw5mLrTRXY0BTgeZx6ANL2/OHkWFl8FaiTYNb7cyXmwEDRE1mh6kBXPRPtGuqv6XSpNX+koEkElu4g==", + "dev": true, + "dependencies": { + "@chialab/esbuild-rna": "^0.18.1", + "@chialab/estransform": "^0.18.1", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@chialab/esbuild-rna": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/@chialab/esbuild-rna/-/esbuild-rna-0.18.2.tgz", + "integrity": "sha512-ckzskez7bxstVQ4c5cxbx0DRP2teldzrcSGQl2KPh1VJGdO2ZmRrb6vNkBBD5K3dx9tgTyvskWp4dV+Fbg07Ag==", + "dev": true, + "dependencies": { + "@chialab/estransform": "^0.18.0", + "@chialab/node-resolve": "^0.18.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@chialab/estransform": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@chialab/estransform/-/estransform-0.18.1.tgz", + "integrity": "sha512-W/WmjpQL2hndD0/XfR0FcPBAUj+aLNeoAVehOjV/Q9bSnioz0GVSAXXhzp59S33ZynxJBBfn8DNiMTVNJmk4Aw==", + "dev": true, + "dependencies": { + "@parcel/source-map": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@chialab/node-resolve": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@chialab/node-resolve/-/node-resolve-0.18.0.tgz", + "integrity": "sha512-eV1m70Qn9pLY9xwFmZ2FlcOzwiaUywsJ7NB/ud8VB7DouvCQtIHkQ3Om7uPX0ojXGEG1LCyO96kZkvbNTxNu0Q==", + "dev": true, + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", @@ -1183,6 +1234,31 @@ "node": ">=12" } }, + "node_modules/@jitl/quickjs-ffi-types": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/@jitl/quickjs-ffi-types/-/quickjs-ffi-types-0.29.1.tgz", + "integrity": "sha512-dVt//PvFmwNJIwfyfPx7vR6cg7mLnAq6/THbhIeZ3NqXb66qXQATnW2gNqAnOcTh1D/f6HyrHFwRf3GdKUN3nw==" + }, + "node_modules/@jitl/quickjs-wasmfile-release-sync": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/@jitl/quickjs-wasmfile-release-sync/-/quickjs-wasmfile-release-sync-0.29.1.tgz", + "integrity": "sha512-iVeMmZXIDg3gD0elfj5FscwrqGLmcglvpvWDIzs5tmzJ4AKiDAHXunGwd8X4gifeW6S+f0j681M8+tZuUIqnJA==", + "dependencies": { + "@jitl/quickjs-ffi-types": "0.29.1" + } + }, + "node_modules/@parcel/source-map": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", + "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": "^12.18.3 || >=14" + } + }, "node_modules/@smithy/abort-controller": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", @@ -1825,6 +1901,18 @@ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/esbuild": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", @@ -1892,6 +1980,35 @@ "node": ">=16.0.0" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/quickjs-emscripten-core": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/quickjs-emscripten-core/-/quickjs-emscripten-core-0.29.1.tgz", + "integrity": "sha512-urFIWrPgKfzLFe/IwE8px3Oznb7UGsXpMjHLe15PTPbWongXmy6KAyxRpYFW8K/dDELilg0H/voysHbWHKj6uA==", + "dependencies": { + "@jitl/quickjs-ffi-types": "0.29.1" + } + }, "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", diff --git a/__tests__/__fixtures__/examples-with-base/multi-output/package.json b/__tests__/__fixtures__/examples-with-base/multi-output/package.json index bdd5cf1..13038ee 100644 --- a/__tests__/__fixtures__/examples-with-base/multi-output/package.json +++ b/__tests__/__fixtures__/examples-with-base/multi-output/package.json @@ -3,10 +3,13 @@ "version": "1.0.0", "description": "test", "dependencies": { + "@jitl/quickjs-wasmfile-release-sync": "^0.29.1", + "quickjs-emscripten-core": "^0.29.1", "hono": "4.2.7", "@aws-sdk/client-s3": "3.556.0" }, "devDependencies": { + "@chialab/esbuild-plugin-meta-url": "^0.18.2", "esbuild": "0.20.2", "typescript": "^5.4.5" }, diff --git a/__tests__/__fixtures__/examples-with-base/multi-output/src/file-imported.ts b/__tests__/__fixtures__/examples-with-base/multi-output/src/file-imported.ts new file mode 100644 index 0000000..0b8abcf --- /dev/null +++ b/__tests__/__fixtures__/examples-with-base/multi-output/src/file-imported.ts @@ -0,0 +1,3 @@ +import { newQuickJSWASMModuleFromVariant } from "quickjs-emscripten-core" +import releaseVariant from "@jitl/quickjs-wasmfile-release-sync" +export const QuickJS = await newQuickJSWASMModuleFromVariant(releaseVariant) diff --git a/__tests__/no-base.test.ts b/__tests__/no-base.test.ts index 6deb090..93eb0c6 100644 --- a/__tests__/no-base.test.ts +++ b/__tests__/no-base.test.ts @@ -17,6 +17,7 @@ describe("examples w/o base analysis", () => { const input: Options = { analyzerDirectory: ".analyzer", budgetPercentIncreaseRed: 20, + includeExtensions: [".js", ".mjs", ".cjs"], metafiles: ["out/meta.json"], name: "test", showDetails: false, diff --git a/__tests__/with-base.test.ts b/__tests__/with-base.test.ts index 17a2f4f..980c801 100644 --- a/__tests__/with-base.test.ts +++ b/__tests__/with-base.test.ts @@ -26,6 +26,7 @@ describe("examples w/ base analysis", () => { const input: Options = { analyzerDirectory: ".analyzer", budgetPercentIncreaseRed: 20, + includeExtensions: [".js", ".mjs", ".cjs"], metafiles, name: "test", showDetails: false, @@ -45,6 +46,9 @@ describe("examples w/ base analysis", () => { const comment = readAnalysisComment(input.analyzerDirectory); expect(comment).not.toMatch(/no changes to the esbuild bundle/i); + expect(comment).not.include(".js.map"); + expect(comment).not.include(".wasm"); + expect(comment).toMatch(/\.[cm]?js /i); expect(comment).toMatch(/‼️ \+\d+/); expect(comment).toMatch(/⚠️ \+\d+/); expect(comment).toMatch(/✅ {2}-\d+/); diff --git a/action.yaml b/action.yaml index 3f47c92..877123c 100644 --- a/action.yaml +++ b/action.yaml @@ -36,6 +36,11 @@ inputs: default: ".analyzer" description: | A path to working directory where bundle analysis are stored. + include_extensions: + required: false + default: ".js,.cjs,.mjs" + description: | + A comma-separated list of file extension to be included in the analysis table. percent_extra_attention: required: false default: "20" @@ -67,6 +72,7 @@ runs: INPUT_METAFILES: ${{ inputs.metafiles }} INPUT_NAME: ${{ inputs.name }} INPUT_ANALYZE_DIRECTORY: ${{ inputs.analyze_directory }} + INPUT_INCLUDE_EXTENSIONS: ${{ inputs.include_extensions }} INPUT_PERCENT_EXTRA_ATTENTION: ${{ inputs.percent_extra_attention }} INPUT_SHOW_DETAILS: ${{ inputs.show_details }} run: | diff --git a/dist/index.mjs b/dist/index.mjs index fd188ce..fa38ee2 100644 --- a/dist/index.mjs +++ b/dist/index.mjs @@ -332,6 +332,11 @@ function getAllPageSizes(input) { const metaFileJson = loadMetaFile(metaFilePath); Object.entries(metaFileJson.outputs).reduce((acc3, output) => { const [outfile, buildMeta] = output; + if (!input.includeExtensions.some( + (ext) => outfile.toLowerCase().endsWith(ext) + )) { + return acc3; + } acc3[`${metafile} -> ${outfile}`] = { bytes: buildMeta.bytes, metafile, @@ -361,6 +366,7 @@ function getOptions() { showDetails: ["true", "True", "TRUE"].includes( getInput("show_details") || "true" ), + includeExtensions: (getInput("include_extensions") || ".js,.mjs,.cjs").split(","), name, analyzerDirectory: getInput("analyze_directory") || ".analyzer", metafiles: rawMetafiles.split(",") @@ -387,4 +393,4 @@ filesize/dist/filesize.esm.js: * @version 10.1.1 *) */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9jb21wYXJlLnRzIiwgIi4uL3NyYy91dGlscy50cyIsICIuLi9zcmMvcmVwb3J0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBjb21wYXJlIH0gZnJvbSBcIi4vY29tcGFyZVwiO1xuaW1wb3J0IHsgcmVwb3J0IH0gZnJvbSBcIi4vcmVwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5mdW5jdGlvbiBnZXRPcHRpb25zKCk6IE9wdGlvbnMge1xuXHRjb25zdCByYXdNZXRhZmlsZXMgPSBnZXRJbnB1dChcIm1ldGFmaWxlc1wiKTtcblx0aWYgKCFyYXdNZXRhZmlsZXMpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJtZXRhZmlsZXMgaXMgbm90IHNwZWNpZmllZFwiKTtcblx0fVxuXHRjb25zdCBuYW1lID0gZ2V0SW5wdXQoXCJuYW1lXCIpO1xuXHRpZiAoIW5hbWUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJuYW1lIGlzIG5vdCBzcGVjaWZpZWRcIik7XG5cdH1cblx0cmV0dXJuIHtcblx0XHRidWRnZXRQZXJjZW50SW5jcmVhc2VSZWQ6IE51bWJlci5wYXJzZUludChcblx0XHRcdGdldElucHV0KFwicGVyY2VudF9leHRyYV9hdHRlbnRpb25cIikgfHwgXCIyMFwiLFxuXHRcdFx0MTAsXG5cdFx0KSxcblx0XHRzaG93RGV0YWlsczogW1widHJ1ZVwiLCBcIlRydWVcIiwgXCJUUlVFXCJdLmluY2x1ZGVzKFxuXHRcdFx0Z2V0SW5wdXQoXCJzaG93X2RldGFpbHNcIikgfHwgXCJ0cnVlXCIsXG5cdFx0KSxcblx0XHRuYW1lLFxuXHRcdGFuYWx5emVyRGlyZWN0b3J5OiBnZXRJbnB1dChcImFuYWx5emVfZGlyZWN0b3J5XCIpIHx8IFwiLmFuYWx5emVyXCIsXG5cdFx0bWV0YWZpbGVzOiByYXdNZXRhZmlsZXMuc3BsaXQoXCIsXCIpLFxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuKG9wdGlvbnM6IE9wdGlvbnMgPSBnZXRPcHRpb25zKCkpOiB2b2lkIHtcblx0cmVwb3J0KG9wdGlvbnMpO1xuXHRjb21wYXJlKG9wdGlvbnMpO1xufVxuXG5pZiAoaW1wb3J0Lm1ldGEudXJsID09PSBwYXRoVG9GaWxlVVJMKHByb2Nlc3MuYXJndlsxXSkuaHJlZikge1xuXHRydW4oKTtcbn1cbiIsICJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGZpbGVzaXplIGFzIG9yaWdpbmFsRmlsZXNpemUgfSBmcm9tIFwiZmlsZXNpemVcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGFyZVJlc3VsdCwgT3B0aW9ucywgUmVwb3J0IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGxvYWRBbmFseXNpc0pzb24gfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZShpbnB1dDogT3B0aW9ucyk6IHZvaWQge1xuXHRsZXQgaGFzQW55Q2hhbmdlID0gZmFsc2U7XG5cdGxldCBvdXRwdXQgPSBgIyMgXHVEODNEXHVEQ0U2IGVzYnVpbGQgQnVuZGxlIEFuYWx5c2lzIGZvciAke2lucHV0Lm5hbWV9XG5cblRoaXMgYW5hbHlzaXMgd2FzIGdlbmVyYXRlZCBieSBbZXNidWlsZC1idW5kbGUtYW5hbHl6ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9leG9lZ28vZXNidWlsZC1idW5kbGUtYW5hbHl6ZXIpLiBcdUQ4M0VcdUREMTZcbmA7XG5cblx0Y29uc3QgY3VycmVudCA9IGxvYWRBbmFseXNpc0pzb24oXG5cdFx0cGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGlucHV0LmFuYWx5emVyRGlyZWN0b3J5LCBcImJ1bmRsZV9hbmFseXNpcy5qc29uXCIpLFxuXHQpO1xuXHRsZXQgYmFzZTogUmVwb3J0O1xuXHR0cnkge1xuXHRcdGJhc2UgPSBsb2FkQW5hbHlzaXNKc29uKFxuXHRcdFx0cGF0aC5qb2luKFxuXHRcdFx0XHRwcm9jZXNzLmN3ZCgpLFxuXHRcdFx0XHRpbnB1dC5hbmFseXplckRpcmVjdG9yeSxcblx0XHRcdFx0XCJiYXNlL2J1bmRsZS9idW5kbGVfYW5hbHlzaXMuanNvblwiLFxuXHRcdFx0KSxcblx0XHQpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0YmFzZSA9IHt9O1xuXHR9XG5cblx0Y29uc3QgYWxsT3V0RmlsZXM6IHN0cmluZ1tdID0gW1xuXHRcdC4uLm5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKGN1cnJlbnQpLCAuLi5PYmplY3Qua2V5cyhiYXNlKV0pLFxuXHRdLnNvcnQoKTtcblx0Y29uc3QgY29tcGFyaXNvbjogQXJyYXk8Q29tcGFyZVJlc3VsdD4gPSBhbGxPdXRGaWxlcy5tYXAoKG91dGZpbGUpID0+IHtcblx0XHRjb25zdCBjdXJyZW50U3RhdHMgPSBjdXJyZW50W291dGZpbGVdO1xuXHRcdGNvbnN0IGJhc2VTdGF0cyA9IGJhc2Vbb3V0ZmlsZV07XG5cblx0XHRpZiAoIWN1cnJlbnRTdGF0cykge1xuXHRcdFx0aGFzQW55Q2hhbmdlID0gdHJ1ZTtcblx0XHRcdC8vIGRlbGV0ZWQgb3V0IGZpbGVcblx0XHRcdHJldHVybiB7IC4uLmJhc2VTdGF0cywgZGlmZjogLTEsIHJlbWFyazogXCJkZWxldGVkXCIgfTtcblx0XHR9XG5cdFx0aWYgKCFiYXNlU3RhdHMpIHtcblx0XHRcdGhhc0FueUNoYW5nZSA9IHRydWU7XG5cdFx0XHQvLyBuZXcgb3V0IGZpbGVcblx0XHRcdHJldHVybiB7IC4uLmN1cnJlbnRTdGF0cywgZGlmZjogLTEsIHJlbWFyazogXCJhZGRlZFwiIH07XG5cdFx0fVxuXHRcdGNvbnN0IGRpZmYgPSBjdXJyZW50U3RhdHMuYnl0ZXMgLSBiYXNlU3RhdHMuYnl0ZXM7XG5cdFx0Y29uc3QgaW5jcmVhc2UgPSAhIU1hdGguc2lnbihkaWZmKTtcblx0XHRpZiAoZGlmZiAhPT0gMCkge1xuXHRcdFx0aGFzQW55Q2hhbmdlID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLmN1cnJlbnRTdGF0cyxcblx0XHRcdGRpZmYsXG5cdFx0XHRyZW1hcms6IGluY3JlYXNlID8gXCJpbmNyZWFzZWRcIiA6IFwiZGVjcmVhc2VkXCIsXG5cdFx0fTtcblx0fSk7XG5cblx0aWYgKGhhc0FueUNoYW5nZSkge1xuXHRcdG91dHB1dCArPSBtYXJrZG93blRhYmxlKGNvbXBhcmlzb24sIGlucHV0LmJ1ZGdldFBlcmNlbnRJbmNyZWFzZVJlZCk7XG5cblx0XHRpZiAoaW5wdXQuc2hvd0RldGFpbHMpIHtcblx0XHRcdG91dHB1dCArPSBgXFxuPGRldGFpbHM+XG48c3VtbWFyeT5EZXRhaWxzPC9zdW1tYXJ5PlxuPHA+TmV4dCB0byB0aGUgc2l6ZSBpcyBob3cgbXVjaCB0aGUgc2l6ZSBoYXMgaW5jcmVhc2VkIG9yIGRlY3JlYXNlZCBjb21wYXJlZCB3aXRoIHRoZSBiYXNlIGJyYW5jaCBvZiB0aGlzIFBSLjwvcD5cbjx1bD5cbjxsaT5cdTIwM0NcdUZFMEY6IFNpemUgaW5jcmVhc2VkIGJ5ICR7aW5wdXQuYnVkZ2V0UGVyY2VudEluY3JlYXNlUmVkfSUgb3IgbW9yZS4gU3BlY2lhbCBhdHRlbnRpb24gc2hvdWxkIGJlIGdpdmVuIHRvIHRoaXMuPC9saT5cbjxsaT5cdTI2QTBcdUZFMEY6IFNpemUgaW5jcmVhc2VkIGluIGFjY2VwdGFibGUgcmFuZ2UgKGxvd2VyIHRoYW4gJHtpbnB1dC5idWRnZXRQZXJjZW50SW5jcmVhc2VSZWR9JSkuPC9saT5cbjxsaT5cdTI3MDU6IE5vIGNoYW5nZSBvciBldmVuIGRvd25zaXplZC48L2xpPlxuPGxpPlx1RDgzRFx1REREMVx1RkUwRjogVGhlIG91dCBmaWxlIGlzIGRlbGV0ZWQ6IG5vdCBmb3VuZCBpbiBiYXNlIGJyYW5jaC48L2xpPlxuPGxpPlx1RDgzQ1x1REQ5NTogVGhlIG91dCBmaWxlIGlzIG5ld2x5IGZvdW5kOiB3aWxsIGJlIGFkZGVkIHRvIGJhc2UgYnJhbmNoLjwvbGk+XG48L3VsPlxuPC9kZXRhaWxzPlxcbmA7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdG91dHB1dCArPSBcIlRoaXMgUFIgaW50cm9kdWNlZCBubyBjaGFuZ2VzIHRvIHRoZSBlc2J1aWxkIGJ1bmRsZSEgXHVEODNEXHVERTRDXCI7XG5cdH1cblxuXHQvLyB3ZSBhZGQgdGhpcyB0YWcgc28gdGhhdCBvdXIgYWN0aW9uIGNhbiBiZSBhYmxlIHRvIGVhc2lseSBhbmRcblx0Ly8gY29uc2lzdGVudGx5IGZpbmQgdGhlIHJpZ2h0IGNvbW1lbnQgdG8gZWRpdCBhcyBtb3JlIGNvbW1pdHMgYXJlIHB1c2hlZC5cblx0b3V0cHV0ICs9IGA8IS0tIF9fRVNCVUlMRF9CVU5ETEVfJHtpbnB1dC5uYW1lfSAtLT5gO1xuXG5cdC8vIExvZyBtb3N0bHkgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy5cblx0Ly8gVGhpcyB3aWxsIHNob3cgdXAgaW4gdGhlIGdpdGh1YiBhY3Rpb25zIGNvbnNvbGUuXG5cdGNvbnNvbGUuZGlyKHtcblx0XHRpbnB1dCxcblx0XHRoYXNBbnlDaGFuZ2UsXG5cdFx0b3V0cHV0LFxuXHR9KTtcblxuXHQvLyBXcml0ZSB0aGUgb3V0cHV0IHRvIGEgZmlsZSB3aGljaCBpcyBsYXRlciByZWFkIGluXG5cdC8vIGFzIGNvbW1lbnQgY29udGVudHMgYnkgdGhlIGFjdGlvbnMgd29ya2Zsb3cuXG5cdGZzLm1rZGlyU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgaW5wdXQuYW5hbHl6ZXJEaXJlY3RvcnkpLCB7XG5cdFx0cmVjdXJzaXZlOiB0cnVlLFxuXHR9KTtcblx0ZnMud3JpdGVGaWxlU3luYyhcblx0XHRwYXRoLmpvaW4oXG5cdFx0XHRwcm9jZXNzLmN3ZCgpLFxuXHRcdFx0aW5wdXQuYW5hbHl6ZXJEaXJlY3RvcnksXG5cdFx0XHRcImJ1bmRsZV9hbmFseXNpc19jb21tZW50LnR4dFwiLFxuXHRcdCksXG5cdFx0b3V0cHV0LnRyaW0oKSxcblx0KTtcbn1cblxuZnVuY3Rpb24gZmlsZXNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG5cdHJldHVybiBvcmlnaW5hbEZpbGVzaXplKGJ5dGVzLCB7XG5cdFx0c3BhY2VyOiBcIlx1MDBBMFwiLFxuXHR9KTtcbn1cblxuZnVuY3Rpb24gbWFya2Rvd25UYWJsZShcblx0ZGF0YTogQXJyYXk8Q29tcGFyZVJlc3VsdD4sXG5cdHJlZFRocmVzaG9sZDogbnVtYmVyLFxuKTogc3RyaW5nIHtcblx0Y29uc3Qgcm93cyA9IGRhdGFcblx0XHQubWFwKChkKSA9PiB7XG5cdFx0XHRyZXR1cm4gYCR7ZC5tZXRhZmlsZX0gfCAke2Qub3V0ZmlsZX0gfCAke3JlbmRlclNpemUoZCl9IHwgJHtyZW5kZXJOb3RlKFxuXHRcdFx0XHRkLFxuXHRcdFx0XHRyZWRUaHJlc2hvbGQsXG5cdFx0XHQpfVxcbmA7XG5cdFx0fSlcblx0XHQuam9pbihcIlwiKTtcblxuXHRyZXR1cm4gYFxuTWV0YSBGaWxlIHwgT3V0IEZpbGUgIHwgU2l6ZSAocmF3KSB8IE5vdGUgXG4tLS0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS06fC0tLS0tLVxuJHtyb3dzfWA7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclNpemUoZDogQ29tcGFyZVJlc3VsdCk6IHN0cmluZyB7XG5cdHJldHVybiBmaWxlc2l6ZShkLmJ5dGVzKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyTm90ZShkOiBDb21wYXJlUmVzdWx0LCByZWRUaHJlc2hvbGQ6IG51bWJlcik6IHN0cmluZyB7XG5cdGlmIChkLnJlbWFyayA9PT0gXCJkZWxldGVkXCIpIHtcblx0XHRyZXR1cm4gXCJcdUQ4M0RcdURERDFcdUZFMEYgRGVsZXRlZFwiO1xuXHR9XG5cdGlmIChkLnJlbWFyayA9PT0gXCJhZGRlZFwiKSB7XG5cdFx0cmV0dXJuIFwiXHVEODNDXHVERDk1IEFkZGVkXCI7XG5cdH1cblx0aWYgKGQuZGlmZikge1xuXHRcdGNvbnN0IHBlcmNlbnRDaGFuZ2UgPSAoZC5kaWZmIC8gZC5ieXRlcykgKiAxMDA7XG5cdFx0cmV0dXJuIGAke3JlbmRlclN0YXR1c0luZGljYXRvcihwZXJjZW50Q2hhbmdlLCByZWRUaHJlc2hvbGQpfSR7ZmlsZXNpemUoXG5cdFx0XHRkLmRpZmYsXG5cdFx0KX0gKCR7c2lnbihwZXJjZW50Q2hhbmdlKX0ke3BlcmNlbnRDaGFuZ2UudG9GaXhlZCgxKX0lKWA7XG5cdH1cblx0cmV0dXJuIFwiXHUyNzA1ICBObyBjaGFuZ2VcIjtcbn1cblxuZnVuY3Rpb24gc2lnbihudW06IG51bWJlcik6IHN0cmluZyB7XG5cdHJldHVybiBudW0gPCAwID8gXCJcIiA6IFwiK1wiO1xufVxuXG5mdW5jdGlvbiByZW5kZXJTdGF0dXNJbmRpY2F0b3IoXG5cdHBlcmNlbnRDaGFuZ2U6IG51bWJlcixcblx0cmVkVGhyZXNob2xkOiBudW1iZXIsXG4pOiBzdHJpbmcge1xuXHRsZXQgcmVzOiBzdHJpbmc7XG5cdGlmIChwZXJjZW50Q2hhbmdlID4gMCAmJiBwZXJjZW50Q2hhbmdlIDwgcmVkVGhyZXNob2xkKSB7XG5cdFx0cmVzID0gXCJcdTI2QTBcdUZFMEZcIjtcblx0fSBlbHNlIGlmIChwZXJjZW50Q2hhbmdlID49IHJlZFRocmVzaG9sZCkge1xuXHRcdHJlcyA9IFwiXHUyMDNDXHVGRTBGXCI7XG5cdH0gZWxzZSB7XG5cdFx0cmVzID0gXCJcdTI3MDUgXCI7XG5cdH1cblx0cmV0dXJuIGAke3Jlc30gJHtzaWduKHBlcmNlbnRDaGFuZ2UpfWA7XG59XG4iLCAiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5cbmltcG9ydCB0eXBlIHsgTWV0YWZpbGUgfSBmcm9tIFwiZXNidWlsZFwiO1xuaW1wb3J0IHR5cGUgeyBSZXBvcnQgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5mdW5jdGlvbiBsb2FkSnNvbkZpbGUocGF0aDogc3RyaW5nKSB7XG5cdHJldHVybiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoKS50b1N0cmluZyhcInV0Zi04XCIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRNZXRhRmlsZShwYXRoOiBzdHJpbmcpOiBNZXRhZmlsZSB7XG5cdHJldHVybiBsb2FkSnNvbkZpbGUocGF0aCkgYXMgTWV0YWZpbGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQW5hbHlzaXNKc29uKHBhdGg6IHN0cmluZyk6IFJlcG9ydCB7XG5cdHJldHVybiBsb2FkSnNvbkZpbGUocGF0aCkgYXMgUmVwb3J0O1xufVxuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYWN0aW9ucy90b29sa2l0L2Jsb2IvODFhNzNhYmE4YmVkZDUzMmY2ZWRkY2M0MWVkM2EwZmFkOGIxY2ZlYi9wYWNrYWdlcy9jb3JlL3NyYy9jb3JlLnRzI0wxMjZcbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCB2YWwgPSBwcm9jZXNzLmVudltgSU5QVVRfJHtuYW1lLnRvVXBwZXJDYXNlKCl9YF0gfHwgXCJcIjtcblx0cmV0dXJuIHZhbC50cmltKCk7XG59XG4iLCAiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgcHJvY2VzcyBmcm9tIFwibm9kZTpwcm9jZXNzXCI7XG5cbmltcG9ydCB0eXBlIHsgT3B0aW9ucywgUmVwb3J0IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGxvYWRNZXRhRmlsZSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnQoaW5wdXQ6IE9wdGlvbnMpOiB2b2lkIHtcblx0Y29uc3QgYWxsUGFnZVNpemVzID0gZ2V0QWxsUGFnZVNpemVzKGlucHV0KTtcblx0ZnMubWtkaXJTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBpbnB1dC5hbmFseXplckRpcmVjdG9yeSksIHtcblx0XHRyZWN1cnNpdmU6IHRydWUsXG5cdH0pO1xuXHRjb25zdCByZXN1bHRKc29uUGF0aCA9IHBhdGguam9pbihcblx0XHRwcm9jZXNzLmN3ZCgpLFxuXHRcdGlucHV0LmFuYWx5emVyRGlyZWN0b3J5LFxuXHRcdFwiYnVuZGxlX2FuYWx5c2lzLmpzb25cIixcblx0KTtcblx0ZnMud3JpdGVGaWxlU3luYyhyZXN1bHRKc29uUGF0aCwgSlNPTi5zdHJpbmdpZnkoYWxsUGFnZVNpemVzLCBudWxsLCAyKSk7XG5cdGNvbnNvbGUubG9nKGBXcm90ZSAke3Jlc3VsdEpzb25QYXRofWApO1xufVxuXG5mdW5jdGlvbiBnZXRBbGxQYWdlU2l6ZXMoaW5wdXQ6IE9wdGlvbnMpOiBSZXBvcnQge1xuXHRjb25zdCBhY2M6IFJlcG9ydCA9IHt9O1xuXHRyZXR1cm4gaW5wdXQubWV0YWZpbGVzLnJlZHVjZSgoYWNjLCBtZXRhZmlsZSkgPT4ge1xuXHRcdGNvbnN0IG1ldGFGaWxlUGF0aCA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBtZXRhZmlsZSk7XG5cdFx0dHJ5IHtcblx0XHRcdGZzLmFjY2Vzc1N5bmMobWV0YUZpbGVQYXRoLCBmcy5jb25zdGFudHMuUl9PSyk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFxuXHRcdFx0XHRgTm8gbWV0YSBmaWxlIGZvdW5kIGF0IFwiJHttZXRhRmlsZVBhdGh9XCIgLSBhIHBhdGggdG8gbWV0YSBmaWxlIG1heSBiZSB3cm9uZywgb3IgZXNidWlsZCBpcyBub3QgZXhlY3V0ZWQuYCxcblx0XHRcdCk7XG5cdFx0XHRwcm9jZXNzLmV4aXQoMSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWV0YUZpbGVKc29uID0gbG9hZE1ldGFGaWxlKG1ldGFGaWxlUGF0aCk7XG5cdFx0T2JqZWN0LmVudHJpZXMobWV0YUZpbGVKc29uLm91dHB1dHMpLnJlZHVjZSgoYWNjLCBvdXRwdXQpID0+IHtcblx0XHRcdGNvbnN0IFtvdXRmaWxlLCBidWlsZE1ldGFdID0gb3V0cHV0O1xuXHRcdFx0YWNjW2Ake21ldGFmaWxlfSAtPiAke291dGZpbGV9YF0gPSB7XG5cdFx0XHRcdGJ5dGVzOiBidWlsZE1ldGEuYnl0ZXMsXG5cdFx0XHRcdG1ldGFmaWxlLFxuXHRcdFx0XHRvdXRmaWxlLFxuXHRcdFx0fTtcblx0XHRcdHJldHVybiBhY2M7XG5cdFx0fSwgYWNjKTtcblx0XHRyZXR1cm4gYWNjO1xuXHR9LCBhY2MpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLFNBQVMscUJBQXFCOzs7QUNBOUIsT0FBT0EsU0FBUTtBQUNmLE9BQU8sVUFBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNEakIsT0FBTyxRQUFRO0FBS2YsU0FBUyxhQUFhQyxPQUFjO0FBQ25DLFNBQU8sS0FBSyxNQUFNLEdBQUcsYUFBYUEsS0FBSSxFQUFFLFNBQVMsT0FBTyxDQUFDO0FBQzFEO0FBRU8sU0FBUyxhQUFhQSxPQUF3QjtBQUNwRCxTQUFPLGFBQWFBLEtBQUk7QUFDekI7QUFFTyxTQUFTLGlCQUFpQkEsT0FBc0I7QUFDdEQsU0FBTyxhQUFhQSxLQUFJO0FBQ3pCO0FBR08sU0FBUyxTQUFTLE1BQXNCO0FBQzlDLFFBQU0sTUFBTSxRQUFRLElBQUksU0FBUyxLQUFLLFlBQVksQ0FBQyxFQUFFLEtBQUs7QUFDMUQsU0FBTyxJQUFJLEtBQUs7QUFDakI7OztBRGZPLFNBQVMsUUFBUSxPQUFzQjtBQUM3QyxNQUFJLGVBQWU7QUFDbkIsTUFBSSxTQUFTLDRDQUFxQyxNQUFNLElBQUk7QUFBQTtBQUFBO0FBQUE7QUFLNUQsUUFBTSxVQUFVO0FBQUEsSUFDZixLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsTUFBTSxtQkFBbUIsc0JBQXNCO0FBQUEsRUFDekU7QUFDQSxNQUFJO0FBQ0osTUFBSTtBQUNILFdBQU87QUFB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QUFDSCxNQUFBRixJQUFHLFdBQVcsY0FBY0EsSUFBRyxVQUFVLElBQUk7QUFBQSxJQUM5QyxTQUFTLEtBQUs7QUFDYixjQUFRO0FBQUEsUUFDUCwwQkFBMEIsWUFBWTtBQUFBLE1BQ3ZDO0FBQ0EsTUFBQUUsU0FBUSxLQUFLLENBQUM7QUFBQSxJQUNmO0FBRUEsVUFBTSxlQUFlLGFBQWEsWUFBWTtBQUM5QyxXQUFPLFFBQVEsYUFBYSxPQUFPLEVBQUUsT0FBTyxDQUFDQyxNQUFLLFdBQVc7QUFDNUQsWUFBTSxDQUFDLFNBQVMsU0FBUyxJQUFJO0FBQzdCLE1BQUFBLEtBQUksR0FBRyxRQUFRLE9BQU8sT0FBTyxFQUFFLElBQUk7QUFBQSxRQUNsQyxPQUFPLFVBQVU7QUFBQSxRQUNqQjtBQUFBLFFBQ0E7QUFBQSxNQUNEO0FBQ0EsYUFBT0E7QUFBQSxJQUNSLEdBQUdBLElBQUc7QUFDTixXQUFPQTtBQUFBLEVBQ1IsR0FBRyxHQUFHO0FBQ1A7OztBSHhDQSxTQUFTLGFBQXNCO0FBQzlCLFFBQU0sZUFBZSxTQUFTLFdBQVc7QUFDekMsTUFBSSxDQUFDLGNBQWM7QUFDbEIsVUFBTSxJQUFJLE1BQU0sNEJBQTRCO0FBQUEsRUFDN0M7QUFDQSxRQUFNLE9BQU8sU0FBUyxNQUFNO0FBQzVCLE1BQUksQ0FBQyxNQUFNO0FBQ1YsVUFBTSxJQUFJLE1BQU0sdUJBQXVCO0FBQUEsRUFDeEM7QUFDQSxTQUFPO0FBQUEsSUFDTiwwQkFBMEIsT0FBTztBQUFBLE1BQ2hDLFNBQVMseUJBQXlCLEtBQUs7QUFBQSxNQUN2QztBQUFBLElBQ0Q7QUFBQSxJQUNBLGFBQWEsQ0FBQyxRQUFRLFFBQVEsTUFBTSxFQUFFO0FBQUEsTUFDckMsU0FBUyxjQUFjLEtBQUs7QUFBQSxJQUM3QjtBQUFBLElBQ0E7QUFBQSxJQUNBLG1CQUFtQixTQUFTLG1CQUFtQixLQUFLO0FBQUEsSUFDcEQsV0FBVyxhQUFhLE1BQU0sR0FBRztBQUFBLEVBQ2xDO0FBQ0Q7QUFFTyxTQUFTLElBQUksVUFBbUIsV0FBVyxHQUFTO0FBQzFELFNBQU8sT0FBTztBQUNkLFVBQVEsT0FBTztBQUNoQjtBQUVBLElBQUksWUFBWSxRQUFRLGNBQWMsUUFBUSxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU07QUFDNUQsTUFBSTtBQUNMOyIsCiAgIm5hbWVzIjogWyJmcyIsICJwYXRoIiwgImZzIiwgImZpbGVzaXplIiwgImZzIiwgInBhdGgiLCAicHJvY2VzcyIsICJmcyIsICJwYXRoIiwgInByb2Nlc3MiLCAiYWNjIl0KfQo= +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9jb21wYXJlLnRzIiwgIi4uL3NyYy91dGlscy50cyIsICIuLi9zcmMvcmVwb3J0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBjb21wYXJlIH0gZnJvbSBcIi4vY29tcGFyZVwiO1xuaW1wb3J0IHsgcmVwb3J0IH0gZnJvbSBcIi4vcmVwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5mdW5jdGlvbiBnZXRPcHRpb25zKCk6IE9wdGlvbnMge1xuXHRjb25zdCByYXdNZXRhZmlsZXMgPSBnZXRJbnB1dChcIm1ldGFmaWxlc1wiKTtcblx0aWYgKCFyYXdNZXRhZmlsZXMpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJtZXRhZmlsZXMgaXMgbm90IHNwZWNpZmllZFwiKTtcblx0fVxuXHRjb25zdCBuYW1lID0gZ2V0SW5wdXQoXCJuYW1lXCIpO1xuXHRpZiAoIW5hbWUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJuYW1lIGlzIG5vdCBzcGVjaWZpZWRcIik7XG5cdH1cblx0cmV0dXJuIHtcblx0XHRidWRnZXRQZXJjZW50SW5jcmVhc2VSZWQ6IE51bWJlci5wYXJzZUludChcblx0XHRcdGdldElucHV0KFwicGVyY2VudF9leHRyYV9hdHRlbnRpb25cIikgfHwgXCIyMFwiLFxuXHRcdFx0MTAsXG5cdFx0KSxcblx0XHRzaG93RGV0YWlsczogW1widHJ1ZVwiLCBcIlRydWVcIiwgXCJUUlVFXCJdLmluY2x1ZGVzKFxuXHRcdFx0Z2V0SW5wdXQoXCJzaG93X2RldGFpbHNcIikgfHwgXCJ0cnVlXCIsXG5cdFx0KSxcblx0XHRpbmNsdWRlRXh0ZW5zaW9uczogKFxuXHRcdFx0Z2V0SW5wdXQoXCJpbmNsdWRlX2V4dGVuc2lvbnNcIikgfHwgXCIuanMsLm1qcywuY2pzXCJcblx0XHQpLnNwbGl0KFwiLFwiKSxcblx0XHRuYW1lLFxuXHRcdGFuYWx5emVyRGlyZWN0b3J5OiBnZXRJbnB1dChcImFuYWx5emVfZGlyZWN0b3J5XCIpIHx8IFwiLmFuYWx5emVyXCIsXG5cdFx0bWV0YWZpbGVzOiByYXdNZXRhZmlsZXMuc3BsaXQoXCIsXCIpLFxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuKG9wdGlvbnM6IE9wdGlvbnMgPSBnZXRPcHRpb25zKCkpOiB2b2lkIHtcblx0cmVwb3J0KG9wdGlvbnMpO1xuXHRjb21wYXJlKG9wdGlvbnMpO1xufVxuXG5pZiAoaW1wb3J0Lm1ldGEudXJsID09PSBwYXRoVG9GaWxlVVJMKHByb2Nlc3MuYXJndlsxXSkuaHJlZikge1xuXHRydW4oKTtcbn1cbiIsICJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGZpbGVzaXplIGFzIG9yaWdpbmFsRmlsZXNpemUgfSBmcm9tIFwiZmlsZXNpemVcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGFyZVJlc3VsdCwgT3B0aW9ucywgUmVwb3J0IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGxvYWRBbmFseXNpc0pzb24gfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZShpbnB1dDogT3B0aW9ucyk6IHZvaWQge1xuXHRsZXQgaGFzQW55Q2hhbmdlID0gZmFsc2U7XG5cdGxldCBvdXRwdXQgPSBgIyMgXHVEODNEXHVEQ0U2IGVzYnVpbGQgQnVuZGxlIEFuYWx5c2lzIGZvciAke2lucHV0Lm5hbWV9XG5cblRoaXMgYW5hbHlzaXMgd2FzIGdlbmVyYXRlZCBieSBbZXNidWlsZC1idW5kbGUtYW5hbHl6ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9leG9lZ28vZXNidWlsZC1idW5kbGUtYW5hbHl6ZXIpLiBcdUQ4M0VcdUREMTZcbmA7XG5cblx0Y29uc3QgY3VycmVudCA9IGxvYWRBbmFseXNpc0pzb24oXG5cdFx0cGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGlucHV0LmFuYWx5emVyRGlyZWN0b3J5LCBcImJ1bmRsZV9hbmFseXNpcy5qc29uXCIpLFxuXHQpO1xuXHRsZXQgYmFzZTogUmVwb3J0O1xuXHR0cnkge1xuXHRcdGJhc2UgPSBsb2FkQW5hbHlzaXNKc29uKFxuXHRcdFx0cGF0aC5qb2luKFxuXHRcdFx0XHRwcm9jZXNzLmN3ZCgpLFxuXHRcdFx0XHRpbnB1dC5hbmFseXplckRpcmVjdG9yeSxcblx0XHRcdFx0XCJiYXNlL2J1bmRsZS9idW5kbGVfYW5hbHlzaXMuanNvblwiLFxuXHRcdFx0KSxcblx0XHQpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0YmFzZSA9IHt9O1xuXHR9XG5cblx0Y29uc3QgYWxsT3V0RmlsZXM6IHN0cmluZ1tdID0gW1xuXHRcdC4uLm5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKGN1cnJlbnQpLCAuLi5PYmplY3Qua2V5cyhiYXNlKV0pLFxuXHRdLnNvcnQoKTtcblx0Y29uc3QgY29tcGFyaXNvbjogQXJyYXk8Q29tcGFyZVJlc3VsdD4gPSBhbGxPdXRGaWxlcy5tYXAoKG91dGZpbGUpID0+IHtcblx0XHRjb25zdCBjdXJyZW50U3RhdHMgPSBjdXJyZW50W291dGZpbGVdO1xuXHRcdGNvbnN0IGJhc2VTdGF0cyA9IGJhc2Vbb3V0ZmlsZV07XG5cblx0XHRpZiAoIWN1cnJlbnRTdGF0cykge1xuXHRcdFx0aGFzQW55Q2hhbmdlID0gdHJ1ZTtcblx0XHRcdC8vIGRlbGV0ZWQgb3V0IGZpbGVcblx0XHRcdHJldHVybiB7IC4uLmJhc2VTdGF0cywgZGlmZjogLTEsIHJlbWFyazogXCJkZWxldGVkXCIgfTtcblx0XHR9XG5cdFx0aWYgKCFiYXNlU3RhdHMpIHtcblx0XHRcdGhhc0FueUNoYW5nZSA9IHRydWU7XG5cdFx0XHQvLyBuZXcgb3V0IGZpbGVcblx0XHRcdHJldHVybiB7IC4uLmN1cnJlbnRTdGF0cywgZGlmZjogLTEsIHJlbWFyazogXCJhZGRlZFwiIH07XG5cdFx0fVxuXHRcdGNvbnN0IGRpZmYgPSBjdXJyZW50U3RhdHMuYnl0ZXMgLSBiYXNlU3RhdHMuYnl0ZXM7XG5cdFx0Y29uc3QgaW5jcmVhc2UgPSAhIU1hdGguc2lnbihkaWZmKTtcblx0XHRpZiAoZGlmZiAhPT0gMCkge1xuXHRcdFx0aGFzQW55Q2hhbmdlID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLmN1cnJlbnRTdGF0cyxcblx0XHRcdGRpZmYsXG5cdFx0XHRyZW1hcms6IGluY3JlYXNlID8gXCJpbmNyZWFzZWRcIiA6IFwiZGVjcmVhc2VkXCIsXG5cdFx0fTtcblx0fSk7XG5cblx0aWYgKGhhc0FueUNoYW5nZSkge1xuXHRcdG91dHB1dCArPSBtYXJrZG93blRhYmxlKGNvbXBhcmlzb24sIGlucHV0LmJ1ZGdldFBlcmNlbnRJbmNyZWFzZVJlZCk7XG5cblx0XHRpZiAoaW5wdXQuc2hvd0RldGFpbHMpIHtcblx0XHRcdG91dHB1dCArPSBgXFxuPGRldGFpbHM+XG48c3VtbWFyeT5EZXRhaWxzPC9zdW1tYXJ5PlxuPHA+TmV4dCB0byB0aGUgc2l6ZSBpcyBob3cgbXVjaCB0aGUgc2l6ZSBoYXMgaW5jcmVhc2VkIG9yIGRlY3JlYXNlZCBjb21wYXJlZCB3aXRoIHRoZSBiYXNlIGJyYW5jaCBvZiB0aGlzIFBSLjwvcD5cbjx1bD5cbjxsaT5cdTIwM0NcdUZFMEY6IFNpemUgaW5jcmVhc2VkIGJ5ICR7aW5wdXQuYnVkZ2V0UGVyY2VudEluY3JlYXNlUmVkfSUgb3IgbW9yZS4gU3BlY2lhbCBhdHRlbnRpb24gc2hvdWxkIGJlIGdpdmVuIHRvIHRoaXMuPC9saT5cbjxsaT5cdTI2QTBcdUZFMEY6IFNpemUgaW5jcmVhc2VkIGluIGFjY2VwdGFibGUgcmFuZ2UgKGxvd2VyIHRoYW4gJHtpbnB1dC5idWRnZXRQZXJjZW50SW5jcmVhc2VSZWR9JSkuPC9saT5cbjxsaT5cdTI3MDU6IE5vIGNoYW5nZSBvciBldmVuIGRvd25zaXplZC48L2xpPlxuPGxpPlx1RDgzRFx1REREMVx1RkUwRjogVGhlIG91dCBmaWxlIGlzIGRlbGV0ZWQ6IG5vdCBmb3VuZCBpbiBiYXNlIGJyYW5jaC48L2xpPlxuPGxpPlx1RDgzQ1x1REQ5NTogVGhlIG91dCBmaWxlIGlzIG5ld2x5IGZvdW5kOiB3aWxsIGJlIGFkZGVkIHRvIGJhc2UgYnJhbmNoLjwvbGk+XG48L3VsPlxuPC9kZXRhaWxzPlxcbmA7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdG91dHB1dCArPSBcIlRoaXMgUFIgaW50cm9kdWNlZCBubyBjaGFuZ2VzIHRvIHRoZSBlc2J1aWxkIGJ1bmRsZSEgXHVEODNEXHVERTRDXCI7XG5cdH1cblxuXHQvLyB3ZSBhZGQgdGhpcyB0YWcgc28gdGhhdCBvdXIgYWN0aW9uIGNhbiBiZSBhYmxlIHRvIGVhc2lseSBhbmRcblx0Ly8gY29uc2lzdGVudGx5IGZpbmQgdGhlIHJpZ2h0IGNvbW1lbnQgdG8gZWRpdCBhcyBtb3JlIGNvbW1pdHMgYXJlIHB1c2hlZC5cblx0b3V0cHV0ICs9IGA8IS0tIF9fRVNCVUlMRF9CVU5ETEVfJHtpbnB1dC5uYW1lfSAtLT5gO1xuXG5cdC8vIExvZyBtb3N0bHkgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy5cblx0Ly8gVGhpcyB3aWxsIHNob3cgdXAgaW4gdGhlIGdpdGh1YiBhY3Rpb25zIGNvbnNvbGUuXG5cdGNvbnNvbGUuZGlyKHtcblx0XHRpbnB1dCxcblx0XHRoYXNBbnlDaGFuZ2UsXG5cdFx0b3V0cHV0LFxuXHR9KTtcblxuXHQvLyBXcml0ZSB0aGUgb3V0cHV0IHRvIGEgZmlsZSB3aGljaCBpcyBsYXRlciByZWFkIGluXG5cdC8vIGFzIGNvbW1lbnQgY29udGVudHMgYnkgdGhlIGFjdGlvbnMgd29ya2Zsb3cuXG5cdGZzLm1rZGlyU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgaW5wdXQuYW5hbHl6ZXJEaXJlY3RvcnkpLCB7XG5cdFx0cmVjdXJzaXZlOiB0cnVlLFxuXHR9KTtcblx0ZnMud3JpdGVGaWxlU3luYyhcblx0XHRwYXRoLmpvaW4oXG5cdFx0XHRwcm9jZXNzLmN3ZCgpLFxuXHRcdFx0aW5wdXQuYW5hbHl6ZXJEaXJlY3RvcnksXG5cdFx0XHRcImJ1bmRsZV9hbmFseXNpc19jb21tZW50LnR4dFwiLFxuXHRcdCksXG5cdFx0b3V0cHV0LnRyaW0oKSxcblx0KTtcbn1cblxuZnVuY3Rpb24gZmlsZXNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG5cdHJldHVybiBvcmlnaW5hbEZpbGVzaXplKGJ5dGVzLCB7XG5cdFx0c3BhY2VyOiBcIlx1MDBBMFwiLFxuXHR9KTtcbn1cblxuZnVuY3Rpb24gbWFya2Rvd25UYWJsZShcblx0ZGF0YTogQXJyYXk8Q29tcGFyZVJlc3VsdD4sXG5cdHJlZFRocmVzaG9sZDogbnVtYmVyLFxuKTogc3RyaW5nIHtcblx0Y29uc3Qgcm93cyA9IGRhdGFcblx0XHQubWFwKChkKSA9PiB7XG5cdFx0XHRyZXR1cm4gYCR7ZC5tZXRhZmlsZX0gfCAke2Qub3V0ZmlsZX0gfCAke3JlbmRlclNpemUoZCl9IHwgJHtyZW5kZXJOb3RlKFxuXHRcdFx0XHRkLFxuXHRcdFx0XHRyZWRUaHJlc2hvbGQsXG5cdFx0XHQpfVxcbmA7XG5cdFx0fSlcblx0XHQuam9pbihcIlwiKTtcblxuXHRyZXR1cm4gYFxuTWV0YSBGaWxlIHwgT3V0IEZpbGUgIHwgU2l6ZSAocmF3KSB8IE5vdGUgXG4tLS0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS06fC0tLS0tLVxuJHtyb3dzfWA7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclNpemUoZDogQ29tcGFyZVJlc3VsdCk6IHN0cmluZyB7XG5cdHJldHVybiBmaWxlc2l6ZShkLmJ5dGVzKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyTm90ZShkOiBDb21wYXJlUmVzdWx0LCByZWRUaHJlc2hvbGQ6IG51bWJlcik6IHN0cmluZyB7XG5cdGlmIChkLnJlbWFyayA9PT0gXCJkZWxldGVkXCIpIHtcblx0XHRyZXR1cm4gXCJcdUQ4M0RcdURERDFcdUZFMEYgRGVsZXRlZFwiO1xuXHR9XG5cdGlmIChkLnJlbWFyayA9PT0gXCJhZGRlZFwiKSB7XG5cdFx0cmV0dXJuIFwiXHVEODNDXHVERDk1IEFkZGVkXCI7XG5cdH1cblx0aWYgKGQuZGlmZikge1xuXHRcdGNvbnN0IHBlcmNlbnRDaGFuZ2UgPSAoZC5kaWZmIC8gZC5ieXRlcykgKiAxMDA7XG5cdFx0cmV0dXJuIGAke3JlbmRlclN0YXR1c0luZGljYXRvcihwZXJjZW50Q2hhbmdlLCByZWRUaHJlc2hvbGQpfSR7ZmlsZXNpemUoXG5cdFx0XHRkLmRpZmYsXG5cdFx0KX0gKCR7c2lnbihwZXJjZW50Q2hhbmdlKX0ke3BlcmNlbnRDaGFuZ2UudG9GaXhlZCgxKX0lKWA7XG5cdH1cblx0cmV0dXJuIFwiXHUyNzA1ICBObyBjaGFuZ2VcIjtcbn1cblxuZnVuY3Rpb24gc2lnbihudW06IG51bWJlcik6IHN0cmluZyB7XG5cdHJldHVybiBudW0gPCAwID8gXCJcIiA6IFwiK1wiO1xufVxuXG5mdW5jdGlvbiByZW5kZXJTdGF0dXNJbmRpY2F0b3IoXG5cdHBlcmNlbnRDaGFuZ2U6IG51bWJlcixcblx0cmVkVGhyZXNob2xkOiBudW1iZXIsXG4pOiBzdHJpbmcge1xuXHRsZXQgcmVzOiBzdHJpbmc7XG5cdGlmIChwZXJjZW50Q2hhbmdlID4gMCAmJiBwZXJjZW50Q2hhbmdlIDwgcmVkVGhyZXNob2xkKSB7XG5cdFx0cmVzID0gXCJcdTI2QTBcdUZFMEZcIjtcblx0fSBlbHNlIGlmIChwZXJjZW50Q2hhbmdlID49IHJlZFRocmVzaG9sZCkge1xuXHRcdHJlcyA9IFwiXHUyMDNDXHVGRTBGXCI7XG5cdH0gZWxzZSB7XG5cdFx0cmVzID0gXCJcdTI3MDUgXCI7XG5cdH1cblx0cmV0dXJuIGAke3Jlc30gJHtzaWduKHBlcmNlbnRDaGFuZ2UpfWA7XG59XG4iLCAiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5cbmltcG9ydCB0eXBlIHsgTWV0YWZpbGUgfSBmcm9tIFwiZXNidWlsZFwiO1xuaW1wb3J0IHR5cGUgeyBSZXBvcnQgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5mdW5jdGlvbiBsb2FkSnNvbkZpbGUocGF0aDogc3RyaW5nKSB7XG5cdHJldHVybiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoKS50b1N0cmluZyhcInV0Zi04XCIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRNZXRhRmlsZShwYXRoOiBzdHJpbmcpOiBNZXRhZmlsZSB7XG5cdHJldHVybiBsb2FkSnNvbkZpbGUocGF0aCkgYXMgTWV0YWZpbGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQW5hbHlzaXNKc29uKHBhdGg6IHN0cmluZyk6IFJlcG9ydCB7XG5cdHJldHVybiBsb2FkSnNvbkZpbGUocGF0aCkgYXMgUmVwb3J0O1xufVxuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYWN0aW9ucy90b29sa2l0L2Jsb2IvODFhNzNhYmE4YmVkZDUzMmY2ZWRkY2M0MWVkM2EwZmFkOGIxY2ZlYi9wYWNrYWdlcy9jb3JlL3NyYy9jb3JlLnRzI0wxMjZcbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCB2YWwgPSBwcm9jZXNzLmVudltgSU5QVVRfJHtuYW1lLnRvVXBwZXJDYXNlKCl9YF0gfHwgXCJcIjtcblx0cmV0dXJuIHZhbC50cmltKCk7XG59XG4iLCAiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgcHJvY2VzcyBmcm9tIFwibm9kZTpwcm9jZXNzXCI7XG5cbmltcG9ydCB0eXBlIHsgT3B0aW9ucywgUmVwb3J0IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGxvYWRNZXRhRmlsZSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnQoaW5wdXQ6IE9wdGlvbnMpOiB2b2lkIHtcblx0Y29uc3QgYWxsUGFnZVNpemVzID0gZ2V0QWxsUGFnZVNpemVzKGlucHV0KTtcblx0ZnMubWtkaXJTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBpbnB1dC5hbmFseXplckRpcmVjdG9yeSksIHtcblx0XHRyZWN1cnNpdmU6IHRydWUsXG5cdH0pO1xuXHRjb25zdCByZXN1bHRKc29uUGF0aCA9IHBhdGguam9pbihcblx0XHRwcm9jZXNzLmN3ZCgpLFxuXHRcdGlucHV0LmFuYWx5emVyRGlyZWN0b3J5LFxuXHRcdFwiYnVuZGxlX2FuYWx5c2lzLmpzb25cIixcblx0KTtcblx0ZnMud3JpdGVGaWxlU3luYyhyZXN1bHRKc29uUGF0aCwgSlNPTi5zdHJpbmdpZnkoYWxsUGFnZVNpemVzLCBudWxsLCAyKSk7XG5cdGNvbnNvbGUubG9nKGBXcm90ZSAke3Jlc3VsdEpzb25QYXRofWApO1xufVxuXG5mdW5jdGlvbiBnZXRBbGxQYWdlU2l6ZXMoaW5wdXQ6IE9wdGlvbnMpOiBSZXBvcnQge1xuXHRjb25zdCBhY2M6IFJlcG9ydCA9IHt9O1xuXHRyZXR1cm4gaW5wdXQubWV0YWZpbGVzLnJlZHVjZSgoYWNjLCBtZXRhZmlsZSkgPT4ge1xuXHRcdGNvbnN0IG1ldGFGaWxlUGF0aCA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBtZXRhZmlsZSk7XG5cdFx0dHJ5IHtcblx0XHRcdGZzLmFjY2Vzc1N5bmMobWV0YUZpbGVQYXRoLCBmcy5jb25zdGFudHMuUl9PSyk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFxuXHRcdFx0XHRgTm8gbWV0YSBmaWxlIGZvdW5kIGF0IFwiJHttZXRhRmlsZVBhdGh9XCIgLSBhIHBhdGggdG8gbWV0YSBmaWxlIG1heSBiZSB3cm9uZywgb3IgZXNidWlsZCBpcyBub3QgZXhlY3V0ZWQuYCxcblx0XHRcdCk7XG5cdFx0XHRwcm9jZXNzLmV4aXQoMSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWV0YUZpbGVKc29uID0gbG9hZE1ldGFGaWxlKG1ldGFGaWxlUGF0aCk7XG5cdFx0T2JqZWN0LmVudHJpZXMobWV0YUZpbGVKc29uLm91dHB1dHMpLnJlZHVjZSgoYWNjLCBvdXRwdXQpID0+IHtcblx0XHRcdGNvbnN0IFtvdXRmaWxlLCBidWlsZE1ldGFdID0gb3V0cHV0O1xuXHRcdFx0aWYgKFxuXHRcdFx0XHQhaW5wdXQuaW5jbHVkZUV4dGVuc2lvbnMuc29tZSgoZXh0KSA9PlxuXHRcdFx0XHRcdG91dGZpbGUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChleHQpLFxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIGFjYztcblx0XHRcdH1cblx0XHRcdGFjY1tgJHttZXRhZmlsZX0gLT4gJHtvdXRmaWxlfWBdID0ge1xuXHRcdFx0XHRieXRlczogYnVpbGRNZXRhLmJ5dGVzLFxuXHRcdFx0XHRtZXRhZmlsZSxcblx0XHRcdFx0b3V0ZmlsZSxcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gYWNjO1xuXHRcdH0sIGFjYyk7XG5cdFx0cmV0dXJuIGFjYztcblx0fSwgYWNjKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBQSxTQUFTLHFCQUFxQjs7O0FDQTlCLE9BQU9BLFNBQVE7QUFDZixPQUFPLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRGpCLE9BQU8sUUFBUTtBQUtmLFNBQVMsYUFBYUMsT0FBYztBQUNuQyxTQUFPLEtBQUssTUFBTSxHQUFHLGFBQWFBLEtBQUksRUFBRSxTQUFTLE9BQU8sQ0FBQztBQUMxRDtBQUVPLFNBQVMsYUFBYUEsT0FBd0I7QUFDcEQsU0FBTyxhQUFhQSxLQUFJO0FBQ3pCO0FBRU8sU0FBUyxpQkFBaUJBLE9BQXNCO0FBQ3RELFNBQU8sYUFBYUEsS0FBSTtBQUN6QjtBQUdPLFNBQVMsU0FBUyxNQUFzQjtBQUM5QyxRQUFNLE1BQU0s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QUFDQSxRQUFNLE9BQU8sU0FBUyxNQUFNO0FBQzVCLE1BQUksQ0FBQyxNQUFNO0FBQ1YsVUFBTSxJQUFJLE1BQU0sdUJBQXVCO0FBQUEsRUFDeEM7QUFDQSxTQUFPO0FBQUEsSUFDTiwwQkFBMEIsT0FBTztBQUFBLE1BQ2hDLFNBQVMseUJBQXlCLEtBQUs7QUFBQSxNQUN2QztBQUFBLElBQ0Q7QUFBQSxJQUNBLGFBQWEsQ0FBQyxRQUFRLFFBQVEsTUFBTSxFQUFFO0FBQUEsTUFDckMsU0FBUyxjQUFjLEtBQUs7QUFBQSxJQUM3QjtBQUFBLElBQ0Esb0JBQ0MsU0FBUyxvQkFBb0IsS0FBSyxpQkFDakMsTUFBTSxHQUFHO0FBQUEsSUFDWDtBQUFBLElBQ0EsbUJBQW1CLFNBQVMsbUJBQW1CLEtBQUs7QUFBQSxJQUNwRCxXQUFXLGFBQWEsTUFBTSxHQUFHO0FBQUEsRUFDbEM7QUFDRDtBQUVPLFNBQVMsSUFBSSxVQUFtQixXQUFXLEdBQVM7QUFDMUQsU0FBTyxPQUFPO0FBQ2QsVUFBUSxPQUFPO0FBQ2hCO0FBRUEsSUFBSSxZQUFZLFFBQVEsY0FBYyxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTTtBQUM1RCxNQUFJO0FBQ0w7IiwKICAibmFtZXMiOiBbImZzIiwgInBhdGgiLCAiZnMiLCAiZmlsZXNpemUiLCAiZnMiLCAicGF0aCIsICJwcm9jZXNzIiwgImZzIiwgInBhdGgiLCAicHJvY2VzcyIsICJhY2MiXQp9Cg== diff --git a/src/index.ts b/src/index.ts index 0c5da57..95d94a2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,6 +21,9 @@ function getOptions(): Options { showDetails: ["true", "True", "TRUE"].includes( getInput("show_details") || "true", ), + includeExtensions: ( + getInput("include_extensions") || ".js,.mjs,.cjs" + ).split(","), name, analyzerDirectory: getInput("analyze_directory") || ".analyzer", metafiles: rawMetafiles.split(","), diff --git a/src/report.ts b/src/report.ts index 5e51672..ab99d80 100644 --- a/src/report.ts +++ b/src/report.ts @@ -35,6 +35,13 @@ function getAllPageSizes(input: Options): Report { const metaFileJson = loadMetaFile(metaFilePath); Object.entries(metaFileJson.outputs).reduce((acc, output) => { const [outfile, buildMeta] = output; + if ( + !input.includeExtensions.some((ext) => + outfile.toLowerCase().endsWith(ext), + ) + ) { + return acc; + } acc[`${metafile} -> ${outfile}`] = { bytes: buildMeta.bytes, metafile, diff --git a/src/types.ts b/src/types.ts index 3731377..200cd5b 100644 --- a/src/types.ts +++ b/src/types.ts @@ -16,6 +16,7 @@ export interface CompareResult { export interface Options { name: string; metafiles: Array; + includeExtensions: Array; analyzerDirectory: string; budgetPercentIncreaseRed: number; showDetails: boolean;