@angular-devkit/build-angular 17.0.0-next.3 → 17.0.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +13 -15
- package/src/babel-bazel.d.ts +0 -6
- package/src/builders/app-shell/render-worker.js +5 -4
- package/src/builders/application/execute-build.js +3 -3
- package/src/builders/application/index.js +1 -2
- package/src/builders/application/options.d.ts +1 -2
- package/src/builders/application/options.js +5 -7
- package/src/builders/application/schema.d.ts +6 -18
- package/src/builders/application/schema.js +1 -1
- package/src/builders/application/schema.json +4 -20
- package/src/builders/browser/index.js +4 -3
- package/src/builders/browser-esbuild/builder-status-warnings.js +1 -4
- package/src/builders/dev-server/load-proxy-config.js +24 -1
- package/src/builders/dev-server/vite-server.d.ts +2 -1
- package/src/builders/dev-server/vite-server.js +36 -23
- package/src/builders/dev-server/webpack-server.js +2 -2
- package/src/builders/karma/find-tests-plugin.js +4 -2
- package/src/builders/karma/index.js +6 -7
- package/src/builders/prerender/index.js +45 -10
- package/src/builders/prerender/render-worker.js +12 -9
- package/src/builders/prerender/routes-extractor-worker.d.ts +20 -0
- package/src/builders/prerender/routes-extractor-worker.js +71 -0
- package/src/builders/prerender/schema.d.ts +2 -2
- package/src/builders/prerender/schema.js +1 -1
- package/src/builders/prerender/schema.json +2 -2
- package/src/builders/server/index.js +2 -3
- package/src/builders/server/platform-server-exports-loader.js +7 -2
- package/src/tools/babel/plugins/adjust-static-class-members.js +5 -4
- package/src/tools/babel/plugins/adjust-typescript-enums.js +2 -2
- package/src/tools/babel/presets/application.js +5 -7
- package/src/tools/babel/webpack-loader.js +6 -5
- package/src/tools/esbuild/angular/compilation/angular-compilation.js +6 -20
- package/src/tools/esbuild/angular/compilation/aot-compilation.js +15 -25
- package/src/tools/esbuild/angular/compilation/jit-compilation.js +12 -24
- package/src/tools/esbuild/angular/compiler-plugin.js +16 -28
- package/src/tools/esbuild/angular/jit-resource-transformer.js +33 -31
- package/src/tools/esbuild/application-code-bundle.js +31 -23
- package/src/tools/esbuild/bundler-context.js +18 -28
- package/src/tools/esbuild/bundler-execution-result.js +5 -3
- package/src/tools/esbuild/global-scripts.js +2 -2
- package/src/tools/esbuild/javascript-transformer-worker.js +3 -3
- package/src/tools/esbuild/javascript-transformer.js +15 -28
- package/src/tools/esbuild/load-result-cache.js +11 -20
- package/src/tools/esbuild/profiling.js +2 -2
- package/src/tools/esbuild/rxjs-esm-resolution-plugin.js +2 -2
- package/src/tools/esbuild/sourcemap-ignorelist-plugin.d.ts +1 -1
- package/src/tools/esbuild/sourcemap-ignorelist-plugin.js +4 -4
- package/src/tools/esbuild/stylesheets/less-language.js +2 -2
- package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js +8 -5
- package/src/tools/esbuild/watcher.js +7 -9
- package/src/tools/sass/rebasing-importer.js +9 -4
- package/src/tools/sass/sass-service-legacy.js +7 -9
- package/src/tools/sass/sass-service.js +9 -8
- package/src/tools/sass/worker.js +3 -3
- package/src/tools/webpack/plugins/any-component-style-budget-checker.js +2 -1
- package/src/tools/webpack/plugins/builder-watch-plugin.js +4 -1
- package/src/tools/webpack/plugins/common-js-usage-warn-plugin.js +4 -2
- package/src/tools/webpack/plugins/css-optimizer-plugin.js +3 -2
- package/src/tools/webpack/plugins/dedupe-module-resolve-plugin.js +3 -2
- package/src/tools/webpack/plugins/esbuild-executor.js +5 -2
- package/src/tools/webpack/plugins/index-html-webpack-plugin.js +3 -1
- package/src/tools/webpack/plugins/javascript-optimizer-plugin.js +3 -1
- package/src/tools/webpack/plugins/json-stats-plugin.js +2 -1
- package/src/tools/webpack/plugins/occurrences-plugin.js +2 -1
- package/src/tools/webpack/plugins/remove-hash-plugin.js +2 -1
- package/src/tools/webpack/plugins/scripts-webpack-plugin.js +4 -1
- package/src/tools/webpack/plugins/service-worker-plugin.js +2 -1
- package/src/tools/webpack/plugins/styles-webpack-plugin.js +5 -4
- package/src/tools/webpack/plugins/typescript.js +2 -2
- package/src/tools/webpack/utils/helpers.js +2 -3
- package/src/typings.d.ts +1 -1
- package/src/utils/action-executor.js +3 -1
- package/src/utils/bundle-calculator.js +4 -1
- package/src/utils/i18n-options.js +2 -2
- package/src/utils/index-file/augment-index-html.d.ts +1 -0
- package/src/utils/index-file/augment-index-html.js +22 -2
- package/src/utils/index-file/index-html-generator.d.ts +1 -0
- package/src/utils/index-file/index-html-generator.js +5 -2
- package/src/utils/index-file/inline-critical-css.js +48 -45
- package/src/utils/index-file/inline-fonts.js +5 -6
- package/src/utils/process-bundle.js +2 -3
- package/src/utils/routes-extractor/extractor.d.ts +15 -0
- package/src/utils/routes-extractor/extractor.js +76 -0
- package/src/utils/server-rendering/esm-in-memory-file-loader.d.ts +8 -0
- package/src/utils/server-rendering/esm-in-memory-file-loader.js +8 -8
- package/src/utils/server-rendering/main-bundle-exports.d.ts +22 -0
- package/src/utils/server-rendering/main-bundle-exports.js +10 -0
- package/src/utils/server-rendering/prerender.d.ts +1 -2
- package/src/utils/server-rendering/prerender.js +58 -51
- package/src/utils/server-rendering/render-page.d.ts +1 -13
- package/src/utils/server-rendering/render-page.js +2 -2
- package/src/utils/server-rendering/render-worker.d.ts +2 -2
- package/src/utils/server-rendering/render-worker.js +1 -1
- package/src/utils/server-rendering/routes-extractor-worker.d.ts +17 -0
- package/src/utils/server-rendering/routes-extractor-worker.js +47 -0
- package/src/utils/service-worker.js +4 -2
- package/src/utils/spinner.js +7 -13
- package/src/utils/webpack-browser-config.js +2 -2
- package/src/builders/prerender/utils.d.ts +0 -22
- package/src/builders/prerender/utils.js +0 -79
|
@@ -104,6 +104,9 @@ function calculateSizes(budget, stats) {
|
|
|
104
104
|
return calculator.calculate();
|
|
105
105
|
}
|
|
106
106
|
class Calculator {
|
|
107
|
+
budget;
|
|
108
|
+
chunks;
|
|
109
|
+
assets;
|
|
107
110
|
constructor(budget, chunks, assets) {
|
|
108
111
|
this.budget = budget;
|
|
109
112
|
this.chunks = chunks;
|
|
@@ -286,4 +289,4 @@ function* checkThresholds(thresholds, size, label) {
|
|
|
286
289
|
}
|
|
287
290
|
}
|
|
288
291
|
exports.checkThresholds = checkThresholds;
|
|
289
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLWNhbGN1bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy91dGlscy9idW5kbGUtY2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFHSCx1REFBMEQ7QUFDMUQsd0RBQTBEO0FBYTFELElBQUssYUFHSjtBQUhELFdBQUssYUFBYTtJQUNoQixnQ0FBZSxDQUFBO0lBQ2YsZ0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSEksYUFBYSxLQUFiLGFBQWEsUUFHakI7QUFFRCxJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDM0Isd0NBQW1CLENBQUE7SUFDbkIsb0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFHNUI7QUFRRCxRQUFlLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFjO0lBQ2pELElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtRQUN6QixNQUFNO1lBQ0osS0FBSyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLElBQUksRUFBRSxhQUFhLENBQUMsR0FBRztZQUN2QixRQUFRLEVBQUUsaUJBQWlCLENBQUMsT0FBTztTQUNwQyxDQUFDO0tBQ0g7SUFFRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUU7UUFDdkIsTUFBTTtZQUNKLEtBQUssRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM5RCxJQUFJLEVBQUUsYUFBYSxDQUFDLEdBQUc7WUFDdkIsUUFBUSxFQUFFLGlCQUFpQixDQUFDLEtBQUs7U0FDbEMsQ0FBQztLQUNIO0lBRUQsSUFBSSxNQUFNLENBQUMsY0FBYyxF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InNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBTdGF0c0Fzc2V0LCBTdGF0c0NodW5rLCBTdGF0c0NvbXBpbGF0aW9uIH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBCdWRnZXQsIFR5cGUgfSBmcm9tICcuLi9idWlsZGVycy9icm93c2VyL3NjaGVtYSc7XG5pbXBvcnQgeyBmb3JtYXRTaXplIH0gZnJvbSAnLi4vdG9vbHMvd2VicGFjay91dGlscy9zdGF0cyc7XG5cbmludGVyZmFjZSBTaXplIHtcbiAgc2l6ZTogbnVtYmVyO1xuICBsYWJlbD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFRocmVzaG9sZCB7XG4gIGxpbWl0OiBudW1iZXI7XG4gIHR5cGU6IFRocmVzaG9sZFR5cGU7XG4gIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eTtcbn1cblxuZW51bSBUaHJlc2hvbGRUeXBlIHtcbiAgTWF4ID0gJ21heGltdW0nLFxuICBNaW4gPSAnbWluaW11bScsXG59XG5cbmV4cG9ydCBlbnVtIFRocmVzaG9sZFNldmVyaXR5IHtcbiAgV2FybmluZyA9ICd3YXJuaW5nJyxcbiAgRXJyb3IgPSAnZXJyb3InLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1ZGdldENhbGN1bGF0b3JSZXN1bHQge1xuICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHk7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogY2FsY3VsYXRlVGhyZXNob2xkcyhidWRnZXQ6IEJ1ZGdldCk6IEl0ZXJhYmxlSXRlcmF0b3I8VGhyZXNob2xkPiB7XG4gIGlmIChidWRnZXQubWF4aW11bVdhcm5pbmcpIHtcbiAgICB5aWVsZCB7XG4gICAgICBsaW1pdDogY2FsY3VsYXRlQnl0ZXMoYnVkZ2V0Lm1heGltdW1XYXJuaW5nLCBidWRnZXQuYmFzZWxpbmUsIDEpLFxuICAgICAgdHlwZTogVGhyZXNob2xkVHlwZS5NYXgsXG4gICAgICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHkuV2FybmluZyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGJ1ZGdldC5tYXhpbXVtRXJyb3IpIHtcbiAgICB5aWVsZCB7XG4gICAgICBsaW1pdDogY2FsY3VsYXRlQnl0ZXMoYnVkZ2V0Lm1heGltdW1FcnJvciwgYnVkZ2V0LmJhc2VsaW5lLCAxKSxcbiAgICAgIHR5cGU6IFRocmVzaG9sZFR5cGUuTWF4LFxuICAgICAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5LkVycm9yLFxuICAgIH07XG4gIH1cblxuICBpZiAoYnVkZ2V0Lm1pbmltdW1XYXJuaW5nKSB7XG4gICAgeWllbGQge1xuICAgICAgbGltaXQ6IGNhbGN1bGF0ZUJ5dGVzKGJ1ZGdldC5taW5pbXVtV2FybmluZywgYnVkZ2V0LmJhc2VsaW5lLCAtMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1pbixcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5XYXJuaW5nLFxuICAgIH07XG4gIH1cblxuICBpZiAoYnVkZ2V0Lm1pbmltdW1FcnJvcikge1xuICAgIHlpZWxkIHtcbiAgICAgIGxpbWl0OiBjYWxjdWxhdGVCeXRlcyhidWRnZXQubWluaW11bUVycm9yLCBidWRnZXQuYmFzZWxpbmUsIC0xKSxcbiAgICAgIHR5cGU6IFRocmVzaG9sZFR5cGUuTWluLFxuICAgICAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5LkVycm9yLFxuICAgIH07XG4gIH1cblxuICBpZiAoYnVkZ2V0Lndhcm5pbmcpIHtcbiAgICB5aWVsZCB7XG4gICAgICBsaW1pdDogY2FsY3VsYXRlQnl0ZXMoYnVkZ2V0Lndhcm5pbmcsIGJ1ZGdldC5iYXNlbGluZSwgLTEpLFxuICAgICAgdHlwZTogVGhyZXNob2xkVHlwZS5NaW4sXG4gICAgICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHkuV2FybmluZyxcbiAgICB9O1xuXG4gICAgeWllbGQge1xuICAgICAgbGltaXQ6IGNhbGN1bGF0ZUJ5dGVzKGJ1ZGdldC53YXJuaW5nLCBidWRnZXQuYmFzZWxpbmUsIDEpLFxuICAgICAgdHlwZTogVGhyZXNob2xkVHlwZS5NYXgsXG4gICAgICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHkuV2FybmluZyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGJ1ZGdldC5lcnJvcikge1xuICAgIHlpZWxkIHtcbiAgICAgIGxpbWl0OiBjYWxjdWxhdGVCeXRlcyhidWRnZXQuZXJyb3IsIGJ1ZGdldC5iYXNlbGluZSwgLTEpLFxuICAgICAgdHlwZTogVGhyZXNob2xkVHlwZS5NaW4sXG4gICAgICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHkuRXJyb3IsXG4gICAgfTtcblxuICAgIHlpZWxkIHtcbiAgICAgIGxpbWl0OiBjYWxjdWxhdGVCeXRlcyhidWRnZXQuZXJyb3IsIGJ1ZGdldC5iYXNlbGluZSwgMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1heCxcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5FcnJvcixcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgc2l6ZXMgZm9yIGJ1bmRsZXMgaW4gdGhlIGJ1ZGdldCB0eXBlIHByb3ZpZGVkLlxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVTaXplcyhidWRnZXQ6IEJ1ZGdldCwgc3RhdHM6IFN0YXRzQ29tcGlsYXRpb24pOiBTaXplW10ge1xuICBpZiAoYnVkZ2V0LnR5cGUgPT09IFR5cGUuQW55Q29tcG9uZW50U3R5bGUpIHtcbiAgICAvLyBDb21wb25lbnQgc3R5bGUgc2l6ZSBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHBvc3QtYnVpbGQsIHRoaXMgbXVzdFxuICAgIC8vIGJlIGNoZWNrZWQgbWlkLWJ1aWxkIHZpYSB0aGUgYEFueUNvbXBvbmVudFN0eWxlQnVkZ2V0Q2hlY2tlcmAgcGx1Z2luLlxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYW4gbm90IGNhbGN1bGF0ZSBzaXplIG9mIEFueUNvbXBvbmVudFN0eWxlLiBVc2UgYEFueUNvbXBvbmVudFN0eWxlQnVkZ2V0Q2hlY2tlcmAgaW5zdGVhZC4nLFxuICAgICk7XG4gIH1cblxuICB0eXBlIE5vbkNvbXBvbmVudFN0eWxlQnVkZ2V0VHlwZXMgPSBFeGNsdWRlPEJ1ZGdldFsndHlwZSddLCBUeXBlLkFueUNvbXBvbmVudFN0eWxlPjtcbiAgdHlwZSBDYWxjdWxhdG9yVHlwZXMgPSB7XG4gICAgbmV3IChidWRnZXQ6IEJ1ZGdldCwgY2h1bmtzOiBTdGF0c0NodW5rW10sIGFzc2V0czogU3RhdHNBc3NldFtdKTogQ2FsY3VsYXRvcjtcbiAgfTtcbiAgY29uc3QgY2FsY3VsYXRvck1hcDogUmVjb3JkPE5vbkNvbXBvbmVudFN0eWxlQnVkZ2V0VHlwZXMsIENhbGN1bGF0b3JUeXBlcz4gPSB7XG4gICAgYWxsOiBBbGxDYWxjdWxhdG9yLFxuICAgIGFsbFNjcmlwdDogQWxsU2NyaXB0Q2FsY3VsYXRvcixcbiAgICBhbnk6IEFueUNhbGN1bGF0b3IsXG4gICAgYW55U2NyaXB0OiBBbnlTY3JpcHRDYWxjdWxhdG9yLFxuICAgIGJ1bmRsZTogQnVuZGxlQ2FsY3VsYXRvcixcbiAgICBpbml0aWFsOiBJbml0aWFsQ2FsY3VsYXRvcixcbiAgfTtcblxuICBjb25zdCBjdG9yID0gY2FsY3VsYXRvck1hcFtidWRnZXQudHlwZV07XG4gIGNvbnN0IHsgY2h1bmtzLCBhc3NldHMgfSA9IHN0YXRzO1xuICBpZiAoIWNodW5rcykge1xuICAgIHRocm93IG5ldyBFcnJvcignV2VicGFjayBzdGF0cyBvdXRwdXQgZGlkIG5vdCBpbmNsdWRlIGNodW5rIGluZm9ybWF0aW9uLicpO1xuICB9XG4gIGlmICghYXNzZXRzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXZWJwYWNrIHN0YXRzIG91dHB1dCBkaWQgbm90IGluY2x1ZGUgYXNzZXQgaW5mb3JtYXRpb24uJyk7XG4gIH1cblxuICBjb25zdCBjYWxjdWxhdG9yID0gbmV3IGN0b3IoYnVkZ2V0LCBjaHVua3MsIGFzc2V0cyk7XG5cbiAgcmV0dXJuIGNhbGN1bGF0b3IuY2FsY3VsYXRlKCk7XG59XG5cbmFic3RyYWN0IGNsYXNzIENhbGN1bGF0b3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgYnVkZ2V0OiBCdWRnZXQsXG4gICAgcHJvdGVjdGVkIGNodW5rczogU3RhdHNDaHVua1tdLFxuICAgIHByb3RlY3RlZCBhc3NldHM6IFN0YXRzQXNzZXRbXSxcbiAgKSB7fVxuXG4gIGFic3RyYWN0IGNhbGN1bGF0ZSgpOiBTaXplW107XG5cbiAgLyoqIENhbGN1bGF0ZXMgdGhlIHNpemUgb2YgdGhlIGdpdmVuIGNodW5rIGZvciB0aGUgcHJvdmlkZWQgYnVpbGQgdHlwZS4gKi9cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZUNodW5rU2l6ZShjaHVuazogU3RhdHNDaHVuayk6IG51bWJlciB7XG4gICAgLy8gTm8gZGlmZmVyZW50aWFsIGJ1aWxkcywgZ2V0IHRoZSBjaHVuayBzaXplIGJ5IHN1bW1pbmcgaXRzIGFzc2V0cy5cbiAgICBpZiAoIWNodW5rLmZpbGVzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2h1bmsuZmlsZXNcbiAgICAgIC5maWx0ZXIoKGZpbGUpID0+ICFmaWxlLmVuZHNXaXRoKCcubWFwJykpXG4gICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc2V0ID0gdGhpcy5hc3NldHMuZmluZCgoYXNzZXQpID0+IGFzc2V0Lm5hbWUgPT09IGZpbGUpO1xuICAgICAgICBpZiAoIWFzc2V0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhc3NldCBmb3IgZmlsZTogJHtmaWxlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFzc2V0LnNpemU7XG4gICAgICB9KVxuICAgICAgLnJlZHVjZSgobCwgcikgPT4gbCArIHIsIDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEFzc2V0U2l6ZShhc3NldDogU3RhdHNBc3NldCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGFzc2V0LnNpemU7XG4gIH1cbn1cblxuLyoqXG4gKiBBIG5hbWVkIGJ1bmRsZS5cbiAqL1xuY2xhc3MgQnVuZGxlQ2FsY3VsYXRvciBleHRlbmRzIENhbGN1bGF0b3Ige1xuICBjYWxjdWxhdGUoKSB7XG4gICAgY29uc3QgYnVkZ2V0TmFtZSA9IHRoaXMuYnVkZ2V0Lm5hbWU7XG4gICAgaWYgKCFidWRnZXROYW1lKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuY2h1bmtzXG4gICAgICAuZmlsdGVyKChjaHVuaykgPT4gY2h1bms/Lm5hbWVzPy5pbmNsdWRlcyhidWRnZXROYW1lKSlcbiAgICAgIC5tYXAoKGNodW5rKSA9PiB0aGlzLmNhbGN1bGF0ZUNodW5rU2l6ZShjaHVuaykpXG4gICAgICAucmVkdWNlKChsLCByKSA9PiBsICsgciwgMCk7XG5cbiAgICByZXR1cm4gW3sgc2l6ZSwgbGFiZWw6IHRoaXMuYnVkZ2V0Lm5hbWUgfV07XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgc3VtIG9mIGFsbCBpbml0aWFsIGNodW5rcyAobWFya2VkIGFzIGluaXRpYWwpLlxuICovXG5jbGFzcyBJbml0aWFsQ2FsY3VsYXRvciBleHRlbmRzIENhbGN1bGF0b3Ige1xuICBjYWxjdWxhdGUoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6IGBidW5kbGUgaW5pdGlhbGAsXG4gICAgICAgIHNpemU6IHRoaXMuY2h1bmtzXG4gICAgICAgICAgLmZpbHRlcigoY2h1bmspID0+IGNodW5rLmluaXRpYWwpXG4gICAgICAgICAgLm1hcCgoY2h1bmspID0+IHRoaXMuY2FsY3VsYXRlQ2h1bmtTaXplKGNodW5rKSlcbiAgICAgICAgICAucmVkdWNlKChsLCByKSA9PiBsICsgciwgMCksXG4gICAgICB9LFxuICAgIF07XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgc3VtIG9mIGFsbCB0aGUgc2NyaXB0cyBwb3J0aW9ucy5cbiAqL1xuY2xhc3MgQWxsU2NyaXB0Q2FsY3VsYXRvciBleHRlbmRzIENhbGN1bGF0b3Ige1xuICBjYWxjdWxhdGUoKSB7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuYXNzZXRzXG4gICAgICAuZmlsdGVyKChhc3NldCkgPT4gYXNzZXQubmFtZS5lbmRzV2l0aCgnLmpzJykpXG4gICAgICAubWFwKChhc3NldCkgPT4gdGhpcy5nZXRBc3NldFNpemUoYXNzZXQpKVxuICAgICAgLnJlZHVjZSgodG90YWw6IG51bWJlciwgc2l6ZTogbnVtYmVyKSA9PiB0b3RhbCArIHNpemUsIDApO1xuXG4gICAgcmV0dXJuIFt7IHNpemUsIGxhYmVsOiAndG90YWwgc2NyaXB0cycgfV07XG4gIH1cbn1cblxuLyoqXG4gKiBBbGwgc2NyaXB0cyBhbmQgYXNzZXRzIGFkZGVkIHRvZ2V0aGVyLlxuICovXG5jbGFzcyBBbGxDYWxjdWxhdG9yIGV4dGVuZHMgQ2FsY3VsYXRvciB7XG4gIGNhbGN1bGF0ZSgpIHtcbiAgICBjb25zdCBzaXplID0gdGhpcy5hc3NldHNcbiAgICAgIC5maWx0ZXIoKGFzc2V0KSA9PiAhYXNzZXQubmFtZS5lbmRzV2l0aCgnLm1hcCcpKVxuICAgICAgLm1hcCgoYXNzZXQpID0+IHRoaXMuZ2V0QXNzZXRTaXplKGFzc2V0KSlcbiAgICAgIC5yZWR1Y2UoKHRvdGFsOiBudW1iZXIsIHNpemU6IG51bWJlcikgPT4gdG90YWwgKyBzaXplLCAwKTtcblxuICAgIHJldHVybiBbeyBzaXplLCBsYWJlbDogJ3RvdGFsJyB9XTtcbiAgfVxufVxuXG4vKipcbiAqIEFueSBzY3JpcHQsIGluZGl2aWR1YWxseS5cbiAqL1xuY2xhc3MgQW55U2NyaXB0Q2FsY3VsYXRvciBleHRlbmRzIENhbGN1bGF0b3Ige1xuICBjYWxjdWxhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXRzXG4gICAgICAuZmlsdGVyKChhc3NldCkgPT4gYXNzZXQubmFtZS5lbmRzV2l0aCgnLmpzJykpXG4gICAgICAubWFwKChhc3NldCkgPT4gKHtcbiAgICAgICAgc2l6ZTogdGhpcy5nZXRBc3NldFNpemUoYXNzZXQpLFxuICAgICAgICBsYWJlbDogYXNzZXQubmFtZSxcbiAgICAgIH0pKTtcbiAgfVxufVxuXG4vKipcbiAqIEFueSBzY3JpcHQgb3IgYXNzZXQgKGltYWdlcywgY3NzLCBldGMpLlxuICovXG5jbGFzcyBBbnlDYWxjdWxhdG9yIGV4dGVuZHMgQ2FsY3VsYXRvciB7XG4gIGNhbGN1bGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5hc3NldHNcbiAgICAgIC5maWx0ZXIoKGFzc2V0KSA9PiAhYXNzZXQubmFtZS5lbmRzV2l0aCgnLm1hcCcpKVxuICAgICAgLm1hcCgoYXNzZXQpID0+ICh7XG4gICAgICAgIHNpemU6IHRoaXMuZ2V0QXNzZXRTaXplKGFzc2V0KSxcbiAgICAgICAgbGFiZWw6IGFzc2V0Lm5hbWUsXG4gICAgICB9KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGJ5dGVzIGdpdmVuIGEgc3RyaW5nIHZhbHVlLlxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVCeXRlcyhpbnB1dDogc3RyaW5nLCBiYXNlbGluZT86IHN0cmluZywgZmFjdG9yOiAxIHwgLTEgPSAxKTogbnVtYmVyIHtcbiAgY29uc3QgbWF0Y2hlcyA9IGlucHV0Lm1hdGNoKC9eXFxzKihcXGQrKD86XFwuXFxkKyk/KVxccyooJXwoPzpbbU1dfFtrS118W2dHXSk/W2JCXSk/XFxzKiQvKTtcbiAgaWYgKCFtYXRjaGVzKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIGNvbnN0IGJhc2VsaW5lQnl0ZXMgPSAoYmFzZWxpbmUgJiYgY2FsY3VsYXRlQnl0ZXMoYmFzZWxpbmUpKSB8fCAwO1xuXG4gIGxldCB2YWx1ZSA9IE51bWJlcihtYXRjaGVzWzFdKTtcbiAgc3dpdGNoIChtYXRjaGVzWzJdICYmIG1hdGNoZXNbMl0udG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJyUnOlxuICAgICAgdmFsdWUgPSAoYmFzZWxpbmVCeXRlcyAqIHZhbHVlKSAvIDEwMDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2tiJzpcbiAgICAgIHZhbHVlICo9IDEwMjQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdtYic6XG4gICAgICB2YWx1ZSAqPSAxMDI0ICogMTAyNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2diJzpcbiAgICAgIHZhbHVlICo9IDEwMjQgKiAxMDI0ICogMTAyNDtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGJhc2VsaW5lQnl0ZXMgPT09IDApIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gYmFzZWxpbmVCeXRlcyArIHZhbHVlICogZmFjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24qIGNoZWNrQnVkZ2V0cyhcbiAgYnVkZ2V0czogQnVkZ2V0W10sXG4gIHdlYnBhY2tTdGF0czogU3RhdHNDb21waWxhdGlvbixcbik6IEl0ZXJhYmxlSXRlcmF0b3I8QnVkZ2V0Q2FsY3VsYXRvclJlc3VsdD4ge1xuICAvLyBJZ25vcmUgQW55Q29tcG9uZW50U3R5bGUgYnVkZ2V0cyBhcyB0aGVzZSBhcmUgaGFuZGxlZCBpbiBgQW55Q29tcG9uZW50U3R5bGVCdWRnZXRDaGVja2VyYC5cbiAgY29uc3QgY29tcHV0YWJsZUJ1ZGdldHMgPSBidWRnZXRzLmZpbHRlcigoYnVkZ2V0KSA9PiBidWRnZXQudHlwZSAhPT0gVHlwZS5BbnlDb21wb25lbnRTdHlsZSk7XG5cbiAgZm9yIChjb25zdCBidWRnZXQgb2YgY29tcHV0YWJsZUJ1ZGdldHMpIHtcbiAgICBjb25zdCBzaXplcyA9IGNhbGN1bGF0ZVNpemVzKGJ1ZGdldCwgd2VicGFja1N0YXRzKTtcbiAgICBmb3IgKGNvbnN0IHsgc2l6ZSwgbGFiZWwgfSBvZiBzaXplcykge1xuICAgICAgeWllbGQqIGNoZWNrVGhyZXNob2xkcyhjYWxjdWxhdGVUaHJlc2hvbGRzKGJ1ZGdldCksIHNpemUsIGxhYmVsKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjaGVja1RocmVzaG9sZHMoXG4gIHRocmVzaG9sZHM6IEl0ZXJhYmxlSXRlcmF0b3I8VGhyZXNob2xkPixcbiAgc2l6ZTogbnVtYmVyLFxuICBsYWJlbD86IHN0cmluZyxcbik6IEl0ZXJhYmxlSXRlcmF0b3I8QnVkZ2V0Q2FsY3VsYXRvclJlc3VsdD4ge1xuICBmb3IgKGNvbnN0IHRocmVzaG9sZCBvZiB0aHJlc2hvbGRzKSB7XG4gICAgc3dpdGNoICh0aHJlc2hvbGQudHlwZSkge1xuICAgICAgY2FzZSBUaHJlc2hvbGRUeXBlLk1heDoge1xuICAgICAgICBpZiAoc2l6ZSA8PSB0aHJlc2hvbGQubGltaXQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNpemVEaWZmZXJlbmNlID0gZm9ybWF0U2l6ZShzaXplIC0gdGhyZXNob2xkLmxpbWl0KTtcbiAgICAgICAgeWllbGQge1xuICAgICAgICAgIHNldmVyaXR5OiB0aHJlc2hvbGQuc2V2ZXJpdHksXG4gICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgbWVzc2FnZTogYCR7bGFiZWx9IGV4Y2VlZGVkIG1heGltdW0gYnVkZ2V0LiBCdWRnZXQgJHtmb3JtYXRTaXplKFxuICAgICAgICAgICAgdGhyZXNob2xkLmxpbWl0LFxuICAgICAgICAgICl9IHdhcyBub3QgbWV0IGJ5ICR7c2l6ZURpZmZlcmVuY2V9IHdpdGggYSB0b3RhbCBvZiAke2Zvcm1hdFNpemUoc2l6ZSl9LmAsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBUaHJlc2hvbGRUeXBlLk1pbjoge1xuICAgICAgICBpZiAoc2l6ZSA+PSB0aHJlc2hvbGQubGltaXQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNpemVEaWZmZXJlbmNlID0gZm9ybWF0U2l6ZSh0aHJlc2hvbGQubGltaXQgLSBzaXplKTtcbiAgICAgICAgeWllbGQge1xuICAgICAgICAgIHNldmVyaXR5OiB0aHJlc2hvbGQuc2V2ZXJpdHksXG4gICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgbWVzc2FnZTogYCR7bGFiZWx9IGZhaWxlZCB0byBtZWV0IG1pbmltdW0gYnVkZ2V0LiBCdWRnZXQgJHtmb3JtYXRTaXplKFxuICAgICAgICAgICAgdGhyZXNob2xkLmxpbWl0LFxuICAgICAgICAgICl9IHdhcyBub3QgbWV0IGJ5ICR7c2l6ZURpZmZlcmVuY2V9IHdpdGggYSB0b3RhbCBvZiAke2Zvcm1hdFNpemUoc2l6ZSl9LmAsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdGhyZXNob2xkIHR5cGU6ICR7VGhyZXNob2xkVHlwZVt0aHJlc2hvbGQudHlwZV19YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLWNhbGN1bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy91dGlscy9idW5kbGUtY2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFHSCx1REFBMEQ7QUFDMUQsd0RBQTBEO0FBYTFELElBQUssYUFHSjtBQUhELFdBQUssYUFBYTtJQUNoQixnQ0FBZSxDQUFBO0lBQ2YsZ0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSEksYUFBYSxLQUFiLGFBQWEsUUFHakI7QUFFRCxJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDM0Isd0NBQW1CLENBQUE7SUFDbkIsb0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFHNUI7QUFRRCxRQUFlLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFjO0lBQ2pELElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtRQUN6QixNQUFNO1lBQ0osS0FBSyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLElBQUksRUFBRSxhQUFhLENBQUMsR0FBRztZQUN2QixRQUFRLEVBQUUsaUJBQWlCLENBQUMsT0FBTztTQUNwQyxDQUFDO0tBQ0g7SUFFRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUU7UUFDdkIsTUFBTTtZQUNKLEtBQUssRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM5RCxJQUFJLEVBQUUsYUFBYSxDQUFDLEdBQUc7WUFDdkIsUUFBUSxFQUFFLGlCQUFpQixDQUFDLEtBQUs7U0FDbEMsQ0FBQztLQUNIO0lBRUQsSUFBSSxNQUFNLENBQUMsY0FBYyxF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QUExQ0QsMENBMENDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IFN0YXRzQXNzZXQsIFN0YXRzQ2h1bmssIFN0YXRzQ29tcGlsYXRpb24gfSBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB7IEJ1ZGdldCwgVHlwZSB9IGZyb20gJy4uL2J1aWxkZXJzL2Jyb3dzZXIvc2NoZW1hJztcbmltcG9ydCB7IGZvcm1hdFNpemUgfSBmcm9tICcuLi90b29scy93ZWJwYWNrL3V0aWxzL3N0YXRzJztcblxuaW50ZXJmYWNlIFNpemUge1xuICBzaXplOiBudW1iZXI7XG4gIGxhYmVsPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVGhyZXNob2xkIHtcbiAgbGltaXQ6IG51bWJlcjtcbiAgdHlwZTogVGhyZXNob2xkVHlwZTtcbiAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5O1xufVxuXG5lbnVtIFRocmVzaG9sZFR5cGUge1xuICBNYXggPSAnbWF4aW11bScsXG4gIE1pbiA9ICdtaW5pbXVtJyxcbn1cblxuZXhwb3J0IGVudW0gVGhyZXNob2xkU2V2ZXJpdHkge1xuICBXYXJuaW5nID0gJ3dhcm5pbmcnLFxuICBFcnJvciA9ICdlcnJvcicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVkZ2V0Q2FsY3VsYXRvclJlc3VsdCB7XG4gIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eTtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjYWxjdWxhdGVUaHJlc2hvbGRzKGJ1ZGdldDogQnVkZ2V0KTogSXRlcmFibGVJdGVyYXRvcjxUaHJlc2hvbGQ+IHtcbiAgaWYgKGJ1ZGdldC5tYXhpbXVtV2FybmluZykge1xuICAgIHlpZWxkIHtcbiAgICAgIGxpbWl0OiBjYWxjdWxhdGVCeXRlcyhidWRnZXQubWF4aW11bVdhcm5pbmcsIGJ1ZGdldC5iYXNlbGluZSwgMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1heCxcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5XYXJuaW5nLFxuICAgIH07XG4gIH1cblxuICBpZiAoYnVkZ2V0Lm1heGltdW1FcnJvcikge1xuICAgIHlpZWxkIHtcbiAgICAgIGxpbWl0OiBjYWxjdWxhdGVCeXRlcyhidWRnZXQubWF4aW11bUVycm9yLCBidWRnZXQuYmFzZWxpbmUsIDEpLFxuICAgICAgdHlwZTogVGhyZXNob2xkVHlwZS5NYXgsXG4gICAgICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHkuRXJyb3IsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChidWRnZXQubWluaW11bVdhcm5pbmcpIHtcbiAgICB5aWVsZCB7XG4gICAgICBsaW1pdDogY2FsY3VsYXRlQnl0ZXMoYnVkZ2V0Lm1pbmltdW1XYXJuaW5nLCBidWRnZXQuYmFzZWxpbmUsIC0xKSxcbiAgICAgIHR5cGU6IFRocmVzaG9sZFR5cGUuTWluLFxuICAgICAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5Lldhcm5pbmcsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChidWRnZXQubWluaW11bUVycm9yKSB7XG4gICAgeWllbGQge1xuICAgICAgbGltaXQ6IGNhbGN1bGF0ZUJ5dGVzKGJ1ZGdldC5taW5pbXVtRXJyb3IsIGJ1ZGdldC5iYXNlbGluZSwgLTEpLFxuICAgICAgdHlwZTogVGhyZXNob2xkVHlwZS5NaW4sXG4gICAgICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHkuRXJyb3IsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChidWRnZXQud2FybmluZykge1xuICAgIHlpZWxkIHtcbiAgICAgIGxpbWl0OiBjYWxjdWxhdGVCeXRlcyhidWRnZXQud2FybmluZywgYnVkZ2V0LmJhc2VsaW5lLCAtMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1pbixcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5XYXJuaW5nLFxuICAgIH07XG5cbiAgICB5aWVsZCB7XG4gICAgICBsaW1pdDogY2FsY3VsYXRlQnl0ZXMoYnVkZ2V0Lndhcm5pbmcsIGJ1ZGdldC5iYXNlbGluZSwgMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1heCxcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5XYXJuaW5nLFxuICAgIH07XG4gIH1cblxuICBpZiAoYnVkZ2V0LmVycm9yKSB7XG4gICAgeWllbGQge1xuICAgICAgbGltaXQ6IGNhbGN1bGF0ZUJ5dGVzKGJ1ZGdldC5lcnJvciwgYnVkZ2V0LmJhc2VsaW5lLCAtMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1pbixcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5FcnJvcixcbiAgICB9O1xuXG4gICAgeWllbGQge1xuICAgICAgbGltaXQ6IGNhbGN1bGF0ZUJ5dGVzKGJ1ZGdldC5lcnJvciwgYnVkZ2V0LmJhc2VsaW5lLCAxKSxcbiAgICAgIHR5cGU6IFRocmVzaG9sZFR5cGUuTWF4LFxuICAgICAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5LkVycm9yLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBzaXplcyBmb3IgYnVuZGxlcyBpbiB0aGUgYnVkZ2V0IHR5cGUgcHJvdmlkZWQuXG4gKi9cbmZ1bmN0aW9uIGNhbGN1bGF0ZVNpemVzKGJ1ZGdldDogQnVkZ2V0LCBzdGF0czogU3RhdHNDb21waWxhdGlvbik6IFNpemVbXSB7XG4gIGlmIChidWRnZXQudHlwZSA9PT0gVHlwZS5BbnlDb21wb25lbnRTdHlsZSkge1xuICAgIC8vIENvbXBvbmVudCBzdHlsZSBzaXplIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgcG9zdC1idWlsZCwgdGhpcyBtdXN0XG4gICAgLy8gYmUgY2hlY2tlZCBtaWQtYnVpbGQgdmlhIHRoZSBgQW55Q29tcG9uZW50U3R5bGVCdWRnZXRDaGVja2VyYCBwbHVnaW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0NhbiBub3QgY2FsY3VsYXRlIHNpemUgb2YgQW55Q29tcG9uZW50U3R5bGUuIFVzZSBgQW55Q29tcG9uZW50U3R5bGVCdWRnZXRDaGVja2VyYCBpbnN0ZWFkLicsXG4gICAgKTtcbiAgfVxuXG4gIHR5cGUgTm9uQ29tcG9uZW50U3R5bGVCdWRnZXRUeXBlcyA9IEV4Y2x1ZGU8QnVkZ2V0Wyd0eXBlJ10sIFR5cGUuQW55Q29tcG9uZW50U3R5bGU+O1xuICB0eXBlIENhbGN1bGF0b3JUeXBlcyA9IHtcbiAgICBuZXcgKGJ1ZGdldDogQnVkZ2V0LCBjaHVua3M6IFN0YXRzQ2h1bmtbXSwgYXNzZXRzOiBTdGF0c0Fzc2V0W10pOiBDYWxjdWxhdG9yO1xuICB9O1xuICBjb25zdCBjYWxjdWxhdG9yTWFwOiBSZWNvcmQ8Tm9uQ29tcG9uZW50U3R5bGVCdWRnZXRUeXBlcywgQ2FsY3VsYXRvclR5cGVzPiA9IHtcbiAgICBhbGw6IEFsbENhbGN1bGF0b3IsXG4gICAgYWxsU2NyaXB0OiBBbGxTY3JpcHRDYWxjdWxhdG9yLFxuICAgIGFueTogQW55Q2FsY3VsYXRvcixcbiAgICBhbnlTY3JpcHQ6IEFueVNjcmlwdENhbGN1bGF0b3IsXG4gICAgYnVuZGxlOiBCdW5kbGVDYWxjdWxhdG9yLFxuICAgIGluaXRpYWw6IEluaXRpYWxDYWxjdWxhdG9yLFxuICB9O1xuXG4gIGNvbnN0IGN0b3IgPSBjYWxjdWxhdG9yTWFwW2J1ZGdldC50eXBlXTtcbiAgY29uc3QgeyBjaHVua3MsIGFzc2V0cyB9ID0gc3RhdHM7XG4gIGlmICghY2h1bmtzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXZWJwYWNrIHN0YXRzIG91dHB1dCBkaWQgbm90IGluY2x1ZGUgY2h1bmsgaW5mb3JtYXRpb24uJyk7XG4gIH1cbiAgaWYgKCFhc3NldHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dlYnBhY2sgc3RhdHMgb3V0cHV0IGRpZCBub3QgaW5jbHVkZSBhc3NldCBpbmZvcm1hdGlvbi4nKTtcbiAgfVxuXG4gIGNvbnN0IGNhbGN1bGF0b3IgPSBuZXcgY3RvcihidWRnZXQsIGNodW5rcywgYXNzZXRzKTtcblxuICByZXR1cm4gY2FsY3VsYXRvci5jYWxjdWxhdGUoKTtcbn1cblxuYWJzdHJhY3QgY2xhc3MgQ2FsY3VsYXRvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBidWRnZXQ6IEJ1ZGdldCxcbiAgICBwcm90ZWN0ZWQgY2h1bmtzOiBTdGF0c0NodW5rW10sXG4gICAgcHJvdGVjdGVkIGFzc2V0czogU3RhdHNBc3NldFtdLFxuICApIHt9XG5cbiAgYWJzdHJhY3QgY2FsY3VsYXRlKCk6IFNpemVbXTtcblxuICAvKiogQ2FsY3VsYXRlcyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gY2h1bmsgZm9yIHRoZSBwcm92aWRlZCBidWlsZCB0eXBlLiAqL1xuICBwcm90ZWN0ZWQgY2FsY3VsYXRlQ2h1bmtTaXplKGNodW5rOiBTdGF0c0NodW5rKTogbnVtYmVyIHtcbiAgICAvLyBObyBkaWZmZXJlbnRpYWwgYnVpbGRzLCBnZXQgdGhlIGNodW5rIHNpemUgYnkgc3VtbWluZyBpdHMgYXNzZXRzLlxuICAgIGlmICghY2h1bmsuZmlsZXMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBjaHVuay5maWxlc1xuICAgICAgLmZpbHRlcigoZmlsZSkgPT4gIWZpbGUuZW5kc1dpdGgoJy5tYXAnKSlcbiAgICAgIC5tYXAoKGZpbGUpID0+IHtcbiAgICAgICAgY29uc3QgYXNzZXQgPSB0aGlzLmFzc2V0cy5maW5kKChhc3NldCkgPT4gYXNzZXQubmFtZSA9PT0gZmlsZSk7XG4gICAgICAgIGlmICghYXNzZXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGFzc2V0IGZvciBmaWxlOiAke2ZpbGV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXNzZXQuc2l6ZTtcbiAgICAgIH0pXG4gICAgICAucmVkdWNlKChsLCByKSA9PiBsICsgciwgMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QXNzZXRTaXplKGFzc2V0OiBTdGF0c0Fzc2V0KTogbnVtYmVyIHtcbiAgICByZXR1cm4gYXNzZXQuc2l6ZTtcbiAgfVxufVxuXG4vKipcbiAqIEEgbmFtZWQgYnVuZGxlLlxuICovXG5jbGFzcyBCdW5kbGVDYWxjdWxhdG9yIGV4dGVuZHMgQ2FsY3VsYXRvciB7XG4gIGNhbGN1bGF0ZSgpIHtcbiAgICBjb25zdCBidWRnZXROYW1lID0gdGhpcy5idWRnZXQubmFtZTtcbiAgICBpZiAoIWJ1ZGdldE5hbWUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBzaXplID0gdGhpcy5jaHVua3NcbiAgICAgIC5maWx0ZXIoKGNodW5rKSA9PiBjaHVuaz8ubmFtZXM/LmluY2x1ZGVzKGJ1ZGdldE5hbWUpKVxuICAgICAgLm1hcCgoY2h1bmspID0+IHRoaXMuY2FsY3VsYXRlQ2h1bmtTaXplKGNodW5rKSlcbiAgICAgIC5yZWR1Y2UoKGwsIHIpID0+IGwgKyByLCAwKTtcblxuICAgIHJldHVybiBbeyBzaXplLCBsYWJlbDogdGhpcy5idWRnZXQubmFtZSB9XTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzdW0gb2YgYWxsIGluaXRpYWwgY2h1bmtzIChtYXJrZWQgYXMgaW5pdGlhbCkuXG4gKi9cbmNsYXNzIEluaXRpYWxDYWxjdWxhdG9yIGV4dGVuZHMgQ2FsY3VsYXRvciB7XG4gIGNhbGN1bGF0ZSgpIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBsYWJlbDogYGJ1bmRsZSBpbml0aWFsYCxcbiAgICAgICAgc2l6ZTogdGhpcy5jaHVua3NcbiAgICAgICAgICAuZmlsdGVyKChjaHVuaykgPT4gY2h1bmsuaW5pdGlhbClcbiAgICAgICAgICAubWFwKChjaHVuaykgPT4gdGhpcy5jYWxjdWxhdGVDaHVua1NpemUoY2h1bmspKVxuICAgICAgICAgIC5yZWR1Y2UoKGwsIHIpID0+IGwgKyByLCAwKSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzdW0gb2YgYWxsIHRoZSBzY3JpcHRzIHBvcnRpb25zLlxuICovXG5jbGFzcyBBbGxTY3JpcHRDYWxjdWxhdG9yIGV4dGVuZHMgQ2FsY3VsYXRvciB7XG4gIGNhbGN1bGF0ZSgpIHtcbiAgICBjb25zdCBzaXplID0gdGhpcy5hc3NldHNcbiAgICAgIC5maWx0ZXIoKGFzc2V0KSA9PiBhc3NldC5uYW1lLmVuZHNXaXRoKCcuanMnKSlcbiAgICAgIC5tYXAoKGFzc2V0KSA9PiB0aGlzLmdldEFzc2V0U2l6ZShhc3NldCkpXG4gICAgICAucmVkdWNlKCh0b3RhbDogbnVtYmVyLCBzaXplOiBudW1iZXIpID0+IHRvdGFsICsgc2l6ZSwgMCk7XG5cbiAgICByZXR1cm4gW3sgc2l6ZSwgbGFiZWw6ICd0b3RhbCBzY3JpcHRzJyB9XTtcbiAgfVxufVxuXG4vKipcbiAqIEFsbCBzY3JpcHRzIGFuZCBhc3NldHMgYWRkZWQgdG9nZXRoZXIuXG4gKi9cbmNsYXNzIEFsbENhbGN1bGF0b3IgZXh0ZW5kcyBDYWxjdWxhdG9yIHtcbiAgY2FsY3VsYXRlKCkge1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLmFzc2V0c1xuICAgICAgLmZpbHRlcigoYXNzZXQpID0+ICFhc3NldC5uYW1lLmVuZHNXaXRoKCcubWFwJykpXG4gICAgICAubWFwKChhc3NldCkgPT4gdGhpcy5nZXRBc3NldFNpemUoYXNzZXQpKVxuICAgICAgLnJlZHVjZSgodG90YWw6IG51bWJlciwgc2l6ZTogbnVtYmVyKSA9PiB0b3RhbCArIHNpemUsIDApO1xuXG4gICAgcmV0dXJuIFt7IHNpemUsIGxhYmVsOiAndG90YWwnIH1dO1xuICB9XG59XG5cbi8qKlxuICogQW55IHNjcmlwdCwgaW5kaXZpZHVhbGx5LlxuICovXG5jbGFzcyBBbnlTY3JpcHRDYWxjdWxhdG9yIGV4dGVuZHMgQ2FsY3VsYXRvciB7XG4gIGNhbGN1bGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5hc3NldHNcbiAgICAgIC5maWx0ZXIoKGFzc2V0KSA9PiBhc3NldC5uYW1lLmVuZHNXaXRoKCcuanMnKSlcbiAgICAgIC5tYXAoKGFzc2V0KSA9PiAoe1xuICAgICAgICBzaXplOiB0aGlzLmdldEFzc2V0U2l6ZShhc3NldCksXG4gICAgICAgIGxhYmVsOiBhc3NldC5uYW1lLFxuICAgICAgfSkpO1xuICB9XG59XG5cbi8qKlxuICogQW55IHNjcmlwdCBvciBhc3NldCAoaW1hZ2VzLCBjc3MsIGV0YykuXG4gKi9cbmNsYXNzIEFueUNhbGN1bGF0b3IgZXh0ZW5kcyBDYWxjdWxhdG9yIHtcbiAgY2FsY3VsYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmFzc2V0c1xuICAgICAgLmZpbHRlcigoYXNzZXQpID0+ICFhc3NldC5uYW1lLmVuZHNXaXRoKCcubWFwJykpXG4gICAgICAubWFwKChhc3NldCkgPT4gKHtcbiAgICAgICAgc2l6ZTogdGhpcy5nZXRBc3NldFNpemUoYXNzZXQpLFxuICAgICAgICBsYWJlbDogYXNzZXQubmFtZSxcbiAgICAgIH0pKTtcbiAgfVxufVxuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgYnl0ZXMgZ2l2ZW4gYSBzdHJpbmcgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGNhbGN1bGF0ZUJ5dGVzKGlucHV0OiBzdHJpbmcsIGJhc2VsaW5lPzogc3RyaW5nLCBmYWN0b3I6IDEgfCAtMSA9IDEpOiBudW1iZXIge1xuICBjb25zdCBtYXRjaGVzID0gaW5wdXQubWF0Y2goL15cXHMqKFxcZCsoPzpcXC5cXGQrKT8pXFxzKiglfCg/OlttTV18W2tLXXxbZ0ddKT9bYkJdKT9cXHMqJC8pO1xuICBpZiAoIW1hdGNoZXMpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG5cbiAgY29uc3QgYmFzZWxpbmVCeXRlcyA9IChiYXNlbGluZSAmJiBjYWxjdWxhdGVCeXRlcyhiYXNlbGluZSkpIHx8IDA7XG5cbiAgbGV0IHZhbHVlID0gTnVtYmVyKG1hdGNoZXNbMV0pO1xuICBzd2l0Y2ggKG1hdGNoZXNbMl0gJiYgbWF0Y2hlc1syXS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnJSc6XG4gICAgICB2YWx1ZSA9IChiYXNlbGluZUJ5dGVzICogdmFsdWUpIC8gMTAwO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAna2InOlxuICAgICAgdmFsdWUgKj0gMTAyNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ21iJzpcbiAgICAgIHZhbHVlICo9IDEwMjQgKiAxMDI0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZ2InOlxuICAgICAgdmFsdWUgKj0gMTAyNCAqIDEwMjQgKiAxMDI0O1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoYmFzZWxpbmVCeXRlcyA9PT0gMCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBiYXNlbGluZUJ5dGVzICsgdmFsdWUgKiBmYWN0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogY2hlY2tCdWRnZXRzKFxuICBidWRnZXRzOiBCdWRnZXRbXSxcbiAgd2VicGFja1N0YXRzOiBTdGF0c0NvbXBpbGF0aW9uLFxuKTogSXRlcmFibGVJdGVyYXRvcjxCdWRnZXRDYWxjdWxhdG9yUmVzdWx0PiB7XG4gIC8vIElnbm9yZSBBbnlDb21wb25lbnRTdHlsZSBidWRnZXRzIGFzIHRoZXNlIGFyZSBoYW5kbGVkIGluIGBBbnlDb21wb25lbnRTdHlsZUJ1ZGdldENoZWNrZXJgLlxuICBjb25zdCBjb21wdXRhYmxlQnVkZ2V0cyA9IGJ1ZGdldHMuZmlsdGVyKChidWRnZXQpID0+IGJ1ZGdldC50eXBlICE9PSBUeXBlLkFueUNvbXBvbmVudFN0eWxlKTtcblxuICBmb3IgKGNvbnN0IGJ1ZGdldCBvZiBjb21wdXRhYmxlQnVkZ2V0cykge1xuICAgIGNvbnN0IHNpemVzID0gY2FsY3VsYXRlU2l6ZXMoYnVkZ2V0LCB3ZWJwYWNrU3RhdHMpO1xuICAgIGZvciAoY29uc3QgeyBzaXplLCBsYWJlbCB9IG9mIHNpemVzKSB7XG4gICAgICB5aWVsZCogY2hlY2tUaHJlc2hvbGRzKGNhbGN1bGF0ZVRocmVzaG9sZHMoYnVkZ2V0KSwgc2l6ZSwgbGFiZWwpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGNoZWNrVGhyZXNob2xkcyhcbiAgdGhyZXNob2xkczogSXRlcmFibGVJdGVyYXRvcjxUaHJlc2hvbGQ+LFxuICBzaXplOiBudW1iZXIsXG4gIGxhYmVsPzogc3RyaW5nLFxuKTogSXRlcmFibGVJdGVyYXRvcjxCdWRnZXRDYWxjdWxhdG9yUmVzdWx0PiB7XG4gIGZvciAoY29uc3QgdGhyZXNob2xkIG9mIHRocmVzaG9sZHMpIHtcbiAgICBzd2l0Y2ggKHRocmVzaG9sZC50eXBlKSB7XG4gICAgICBjYXNlIFRocmVzaG9sZFR5cGUuTWF4OiB7XG4gICAgICAgIGlmIChzaXplIDw9IHRocmVzaG9sZC5saW1pdCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2l6ZURpZmZlcmVuY2UgPSBmb3JtYXRTaXplKHNpemUgLSB0aHJlc2hvbGQubGltaXQpO1xuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgc2V2ZXJpdHk6IHRocmVzaG9sZC5zZXZlcml0eSxcbiAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICBtZXNzYWdlOiBgJHtsYWJlbH0gZXhjZWVkZWQgbWF4aW11bSBidWRnZXQuIEJ1ZGdldCAke2Zvcm1hdFNpemUoXG4gICAgICAgICAgICB0aHJlc2hvbGQubGltaXQsXG4gICAgICAgICAgKX0gd2FzIG5vdCBtZXQgYnkgJHtzaXplRGlmZmVyZW5jZX0gd2l0aCBhIHRvdGFsIG9mICR7Zm9ybWF0U2l6ZShzaXplKX0uYCxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFRocmVzaG9sZFR5cGUuTWluOiB7XG4gICAgICAgIGlmIChzaXplID49IHRocmVzaG9sZC5saW1pdCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2l6ZURpZmZlcmVuY2UgPSBmb3JtYXRTaXplKHRocmVzaG9sZC5saW1pdCAtIHNpemUpO1xuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgc2V2ZXJpdHk6IHRocmVzaG9sZC5zZXZlcml0eSxcbiAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICBtZXNzYWdlOiBgJHtsYWJlbH0gZmFpbGVkIHRvIG1lZXQgbWluaW11bSBidWRnZXQuIEJ1ZGdldCAke2Zvcm1hdFNpemUoXG4gICAgICAgICAgICB0aHJlc2hvbGQubGltaXQsXG4gICAgICAgICAgKX0gd2FzIG5vdCBtZXQgYnkgJHtzaXplRGlmZmVyZW5jZX0gd2l0aCBhIHRvdGFsIG9mICR7Zm9ybWF0U2l6ZShzaXplKX0uYCxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB0aHJlc2hvbGQgdHlwZTogJHtUaHJlc2hvbGRUeXBlW3RocmVzaG9sZC50eXBlXX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -159,7 +159,7 @@ async function configureI18nBuild(context, options) {
|
|
|
159
159
|
if (!desc.files.length) {
|
|
160
160
|
continue;
|
|
161
161
|
}
|
|
162
|
-
loader
|
|
162
|
+
loader ??= await (0, load_translations_1.createTranslationLoader)();
|
|
163
163
|
loadTranslations(locale, desc, context.workspaceRoot, loader, {
|
|
164
164
|
warn(message) {
|
|
165
165
|
context.logger.warn(message);
|
|
@@ -246,4 +246,4 @@ function loadTranslations(locale, desc, workspaceRoot, loader, logger, usedForma
|
|
|
246
246
|
desc.translation = translations;
|
|
247
247
|
}
|
|
248
248
|
exports.loadTranslations = loadTranslations;
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvaTE4bi1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7OztBQUdILCtDQUE0QztBQUM1Qyw0Q0FBb0I7QUFDcEIsb0RBQTRCO0FBQzVCLDRDQUFvQjtBQUNwQixnREFBd0I7QUFDeEIsdURBQTZGO0FBRTdGLDBEQUFzRDtBQUN0RCwyREFBaUY7QUFFakY7O0dBRUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLGdDQUFnQyxDQUFDO0FBc0JqRSxTQUFTLDhCQUE4QixDQUNyQyxNQUFzQixFQUN0QixNQUFjLEVBQ2QsbUJBQTRCO0lBRTVCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1FBQzlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNqQjtJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsRUFBRTtRQUNuRixPQUFPLE1BQWtCLENBQUM7S0FDM0I7SUFFRCxJQUFJLFlBQVksR0FBRyxxREFBcUQsTUFBTSxrQkFBa0IsQ0FBQztJQUNqRyxJQUFJLG1CQUFtQixFQUFFO1FBQ3ZCLFlBQVksSUFBSSxpREFBaUQsQ0FBQztLQUNuRTtTQUFNO1FBQ0wsWUFBWSxJQUFJLHdDQUF3QyxDQUFDO0tBQzFEO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQy9CLFFBQXlCLEVBQ3pCLE1BQTJCO0lBRTNCLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksQ0FB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QyxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ25FLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLFNBQVMsRUFBRTtvQkFDbEMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLDBDQUEwQyxFQUFFLGlCQUFpQixDQUFDO29CQUMvRyxRQUFRLG9CQUFvQixFQUFFO3dCQUM1QixLQUFLLHdCQUFlLENBQUMsTUFBTTs0QkFDekIsTUFBTTt3QkFDUixLQUFLLHdCQUFlLENBQUMsS0FBSzs0QkFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLDJCQUEyQixFQUFFLENBQUMsQ0FBQzs0QkFDckQsTUFBTTt3QkFDUixLQUFLLHdCQUFlLENBQUMsT0FBTyxDQUFDO3dCQUM3Qjs0QkFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDOzRCQUN0RCxNQUFNO3FCQUNUO2lCQUNGO2dCQUNELFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7YUFDNUI7U0FDRjthQUFNO1lBQ0wsaUNBQWlDO1lBQ2pDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO1NBQ3hDO0tBQ0Y7SUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztBQUNsQyxDQUFDO0FBeERELDRDQXdEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBCdWlsZGVyQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9hcmNoaXRlY3QnO1xuaW1wb3J0IHsganNvbiB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgbW9kdWxlIGZyb20gJ21vZHVsZSc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBTY2hlbWEgYXMgQnJvd3NlckJ1aWxkZXJTY2hlbWEsIEkxOE5UcmFuc2xhdGlvbiB9IGZyb20gJy4uL2J1aWxkZXJzL2Jyb3dzZXIvc2NoZW1hJztcbmltcG9ydCB7IFNjaGVtYSBhcyBTZXJ2ZXJCdWlsZGVyU2NoZW1hIH0gZnJvbSAnLi4vYnVpbGRlcnMvc2VydmVyL3NjaGVtYSc7XG5pbXBvcnQgeyByZWFkVHNjb25maWcgfSBmcm9tICcuLi91dGlscy9yZWFkLXRzY29uZmlnJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uTG9hZGVyLCBjcmVhdGVUcmFuc2xhdGlvbkxvYWRlciB9IGZyb20gJy4vbG9hZC10cmFuc2xhdGlvbnMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIG1vZHVsZSBsb2NhdGlvbiB1c2VkIHRvIHNlYXJjaCBmb3IgbG9jYWxlIHNwZWNpZmljIGRhdGEuXG4gKi9cbmNvbnN0IExPQ0FMRV9EQVRBX0JBU0VfTU9EVUxFID0gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2dsb2JhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxlRGVzY3JpcHRpb24ge1xuICBmaWxlczoge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBpbnRlZ3JpdHk/OiBzdHJpbmc7XG4gICAgZm9ybWF0Pzogc3RyaW5nO1xuICB9W107XG4gIHRyYW5zbGF0aW9uPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGRhdGFQYXRoPzogc3RyaW5nO1xuICBiYXNlSHJlZj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJMThuT3B0aW9ucyB7XG4gIGlubGluZUxvY2FsZXM6IFNldDxzdHJpbmc+O1xuICBzb3VyY2VMb2NhbGU6IHN0cmluZztcbiAgbG9jYWxlczogUmVjb3JkPHN0cmluZywgTG9jYWxlRGVzY3JpcHRpb24+O1xuICBmbGF0T3V0cHV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc2hvdWxkSW5saW5lOiBib29sZWFuO1xuICBoYXNEZWZpbmVkU291cmNlTG9jYWxlPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVHJhbnNsYXRpb25GaWxlT3B0aW9uKFxuICBvcHRpb246IGpzb24uSnNvblZhbHVlLFxuICBsb2NhbGU6IHN0cmluZyxcbiAgZXhwZWN0T2JqZWN0SW5FcnJvcjogYm9vbGVhbixcbik6IHN0cmluZ1tdIHtcbiAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIFtvcHRpb25dO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9uKSAmJiBvcHRpb24uZXZlcnkoKGVsZW1lbnQpID0+IHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykpIHtcbiAgICByZXR1cm4gb3B0aW9uIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgbGV0IGVycm9yTWVzc2FnZSA9IGBQcm9qZWN0IGkxOG4gbG9jYWxlcyB0cmFuc2xhdGlvbiBmaWVsZCB2YWx1ZSBmb3IgJyR7bG9jYWxlfScgaXMgbWFsZm9ybWVkLiBgO1xuICBpZiAoZXhwZWN0T2JqZWN0SW5FcnJvcikge1xuICAgIGVycm9yTWVzc2FnZSArPSAnRXhwZWN0ZWQgYSBzdHJpbmcsIGFycmF5IG9mIHN0cmluZ3MsIG9yIG9iamVjdC4nO1xuICB9IGVsc2Uge1xuICAgIGVycm9yTWVzc2FnZSArPSAnRXhwZWN0ZWQgYSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncy4nO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuT3B0aW9ucyhcbiAgbWV0YWRhdGE6IGpzb24uSnNvbk9iamVjdCxcbiAgaW5saW5lPzogYm9vbGVhbiB8IHN0cmluZ1tdLFxuKTogSTE4bk9wdGlvbnMge1xuICBpZiAobWV0YWRhdGEuaTE4biAhPT0gdW5kZWZpbmVkICYmICFqc29uLmlzSnNvbk9iamVjdChtZXRhZGF0YS5pMThuKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJvamVjdCBpMThuIGZpZWxkIGlzIG1hbGZvcm1lZC4gRXhwZWN0ZWQgYW4gb2JqZWN0LicpO1xuICB9XG4gIG1ldGFkYXRhID0gbWV0YWRhdGEuaTE4biB8fCB7fTtcblxuICBjb25zdCBpMThuOiBJMThuT3B0aW9ucyA9IHtcbiAgICBpbmxpbmVMb2NhbGVzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAvLyBlbi1VUyBpcyB0aGUgZGVmYXVsdCBsb2NhbGUgYWRkZWQgdG8gQW5ndWxhciBhcHBsaWNhdGlvbnMgKGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9pMThuI2kxOG4tcGlwZXMpXG4gICAgc291cmNlTG9jYWxlOiAnZW4tVVMnLFxuICAgIGxvY2FsZXM6IHt9LFxuICAgIGdldCBzaG91bGRJbmxpbmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbmxpbmVMb2NhbGVzLnNpemUgPiAwO1xuICAgIH0sXG4gIH07XG5cbiAgbGV0IHJhd1NvdXJjZUxvY2FsZTtcbiAgbGV0IHJhd1NvdXJjZUxvY2FsZUJhc2VIcmVmO1xuICBpZiAoanNvbi5pc0pzb25PYmplY3QobWV0YWRhdGEuc291cmNlTG9jYWxlKSkge1xuICAgIHJhd1NvdXJjZUxvY2FsZSA9IG1ldGFkYXRhLnNvdXJjZUxvY2FsZS5jb2RlO1xuICAgIGlmIChcbiAgICAgIG1ldGFkYXRhLnNvdXJjZUxvY2FsZS5iYXNlSHJlZiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0eXBlb2YgbWV0YWRhdGEuc291cmNlTG9jYWxlLmJhc2VIcmVmICE9PSAnc3RyaW5nJ1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9qZWN0IGkxOG4gc291cmNlTG9jYWxlIGJhc2VIcmVmIGZpZWxkIGlzIG1hbGZvcm1lZC4gRXhwZWN0ZWQgYSBzdHJpbmcuJyk7XG4gICAgfVxuICAgIHJhd1NvdXJjZUxvY2FsZUJhc2VIcmVmID0gbWV0YWRhdGEuc291cmNlTG9jYWxlLmJhc2VIcmVmO1xuICB9IGVsc2Uge1xuICAgIHJhd1NvdXJjZUxvY2FsZSA9IG1ldGFkYXRhLnNvdXJjZUxvY2FsZTtcbiAgfVxuXG4gIGlmIChyYXdTb3VyY2VMb2NhbGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2YgcmF3U291cmNlTG9jYWxlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9qZWN0IGkxOG4gc291cmNlTG9jYWxlIGZpZWxkIGlzIG1hbGZvcm1lZC4gRXhwZWN0ZWQgYSBzdHJpbmcuJyk7XG4gICAgfVxuXG4gICAgaTE4bi5zb3VyY2VMb2NhbGUgPSByYXdTb3VyY2VMb2NhbGU7XG4gICAgaTE4bi5oYXNEZWZpbmVkU291cmNlTG9jYWxlID0gdHJ1ZTtcbiAgfVxuXG4gIGkxOG4ubG9jYWxlc1tpMThuLnNvdXJjZUxvY2FsZV0gPSB7XG4gICAgZmlsZXM6IFtdLFxuICAgIGJhc2VIcmVmOiByYXdTb3VyY2VMb2NhbGVCYXNlSHJlZixcbiAgfTtcblxuICBpZiAobWV0YWRhdGEubG9jYWxlcyAhPT0gdW5kZWZpbmVkICYmICFqc29uLmlzSnNvbk9iamVjdChtZXRhZGF0YS5sb2NhbGVzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJvamVjdCBpMThuIGxvY2FsZXMgZmllbGQgaXMgbWFsZm9ybWVkLiBFeHBlY3RlZCBhbiBvYmplY3QuJyk7XG4gIH0gZWxzZSBpZiAobWV0YWRhdGEubG9jYWxlcykge1xuICAgIGZvciAoY29uc3QgW2xvY2FsZSwgb3B0aW9uc10gb2YgT2JqZWN0LmVudHJpZXMobWV0YWRhdGEubG9jYWxlcykpIHtcbiAgICAgIGxldCB0cmFuc2xhdGlvbkZpbGVzO1xuICAgICAgbGV0IGJhc2VIcmVmO1xuICAgICAgaWYgKGpzb24uaXNKc29uT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIHRyYW5zbGF0aW9uRmlsZXMgPSBub3JtYWxpemVUcmFuc2xhdGlvbkZpbGVPcHRpb24ob3B0aW9ucy50cmFuc2xhdGlvbiwgbG9jYWxlLCBmYWxzZSk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmJhc2VIcmVmID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGJhc2VIcmVmID0gb3B0aW9ucy5iYXNlSHJlZjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhbnNsYXRpb25GaWxlcyA9IG5vcm1hbGl6ZVRyYW5zbGF0aW9uRmlsZU9wdGlvbihvcHRpb25zLCBsb2NhbGUsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAobG9jYWxlID09PSBpMThuLnNvdXJjZUxvY2FsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFuIGkxOG4gbG9jYWxlICgnJHtsb2NhbGV9JykgY2Fubm90IGJvdGggYmUgYSBzb3VyY2UgbG9jYWxlIGFuZCBwcm92aWRlIGEgdHJhbnNsYXRpb24uYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaTE4bi5sb2NhbGVzW2xvY2FsZV0gPSB7XG4gICAgICAgIGZpbGVzOiB0cmFuc2xhdGlvbkZpbGVzLm1hcCgoZmlsZSkgPT4gKHsgcGF0aDogZmlsZSB9KSksXG4gICAgICAgIGJhc2VIcmVmLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBpZiAoaW5saW5lID09PSB0cnVlKSB7XG4gICAgaTE4bi5pbmxpbmVMb2NhbGVzLmFkZChpMThuLnNvdXJjZUxvY2FsZSk7XG4gICAgT2JqZWN0LmtleXMoaTE4bi5sb2NhbGVzKS5mb3JFYWNoKChsb2NhbGUpID0+IGkxOG4uaW5saW5lTG9jYWxlcy5hZGQobG9jYWxlKSk7XG4gIH0gZWxzZSBpZiAoaW5saW5lKSB7XG4gICAgZm9yIChjb25zdCBsb2NhbGUgb2YgaW5saW5lKSB7XG4gICAgICBpZiAoIWkxOG4ubG9jYWxlc1tsb2NhbGVdICYmIGkxOG4uc291cmNlTG9jYWxlICE9PSBsb2NhbGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXF1ZXN0ZWQgbG9jYWxlICcke2xvY2FsZX0nIGlzIG5vdCBkZWZpbmVkIGZvciB0aGUgcHJvamVjdC5gKTtcbiAgICAgIH1cblxuICAgICAgaTE4bi5pbmxpbmVMb2NhbGVzLmFkZChsb2NhbGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpMThuO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29uZmlndXJlSTE4bkJ1aWxkPFQgZXh0ZW5kcyBCcm93c2VyQnVpbGRlclNjaGVtYSB8IFNlcnZlckJ1aWxkZXJTY2hlbWE+KFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgb3B0aW9uczogVCxcbik6IFByb21pc2U8e1xuICBidWlsZE9wdGlvbnM6IFQ7XG4gIGkxOG46IEkxOG5PcHRpb25zO1xufT4ge1xuICBpZiAoIWNvbnRleHQudGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYnVpbGRlciByZXF1aXJlcyBhIHRhcmdldC4nKTtcbiAgfVxuXG4gIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IHsgLi4ub3B0aW9ucyB9O1xuICBjb25zdCB0c0NvbmZpZyA9IGF3YWl0IHJlYWRUc2NvbmZpZyhidWlsZE9wdGlvbnMudHNDb25maWcsIGNvbnRleHQud29ya3NwYWNlUm9vdCk7XG4gIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgY29udGV4dC5nZXRQcm9qZWN0TWV0YWRhdGEoY29udGV4dC50YXJnZXQpO1xuICBjb25zdCBpMThuID0gY3JlYXRlSTE4bk9wdGlvbnMobWV0YWRhdGEsIGJ1aWxkT3B0aW9ucy5sb2NhbGl6ZSk7XG5cbiAgLy8gTm8gYWRkaXRpb25hbCBwcm9jZXNzaW5nIG5lZWRlZCBpZiBubyBpbmxpbmluZyByZXF1ZXN0ZWQgYW5kIG5vIHNvdXJjZSBsb2NhbGUgZGVmaW5lZC5cbiAgaWYgKCFpMThuLnNob3VsZElubGluZSAmJiAhaTE4bi5oYXNEZWZpbmVkU291cmNlTG9jYWxlKSB7XG4gICAgcmV0dXJuIHsgYnVpbGRPcHRpb25zLCBpMThuIH07XG4gIH1cblxuICBjb25zdCBwcm9qZWN0Um9vdCA9IHBhdGguam9pbihjb250ZXh0LndvcmtzcGFjZVJvb3QsIChtZXRhZGF0YS5yb290IGFzIHN0cmluZykgfHwgJycpO1xuICAvLyBUaGUgdHJhaWxpbmcgc2xhc2ggaXMgcmVxdWlyZWQgdG8gc2lnbmFsIHRoYXQgdGhlIHBhdGggaXMgYSBkaXJlY3RvcnkgYW5kIG5vdCBhIGZpbGUuXG4gIGNvbnN0IHByb2plY3RSZXF1aXJlID0gbW9kdWxlLmNyZWF0ZVJlcXVpcmUocHJvamVjdFJvb3QgKyAnLycpO1xuICBjb25zdCBsb2NhbGVSZXNvbHZlciA9IChsb2NhbGU6IHN0cmluZykgPT5cbiAgICBwcm9qZWN0UmVxdWlyZS5yZXNvbHZlKHBhdGguam9pbihMT0NBTEVfREFUQV9CQVNFX01PRFVMRSwgbG9jYWxlKSk7XG5cbiAgLy8gTG9hZCBsb2NhbGUgZGF0YSBhbmQgdHJhbnNsYXRpb25zIChpZiBwcmVzZW50KVxuICBsZXQgbG9hZGVyO1xuICBjb25zdCB1c2VkRm9ybWF0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IFtsb2NhbGUsIGRlc2NdIG9mIE9iamVjdC5lbnRyaWVzKGkxOG4ubG9jYWxlcykpIHtcbiAgICBpZiAoIWkxOG4uaW5saW5lTG9jYWxlcy5oYXMobG9jYWxlKSAmJiBsb2NhbGUgIT09IGkxOG4uc291cmNlTG9jYWxlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBsZXQgbG9jYWxlRGF0YVBhdGggPSBmaW5kTG9jYWxlRGF0YVBhdGgobG9jYWxlLCBsb2NhbGVSZXNvbHZlcik7XG4gICAgaWYgKCFsb2NhbGVEYXRhUGF0aCkge1xuICAgICAgY29uc3QgW2ZpcnN0XSA9IGxvY2FsZS5zcGxpdCgnLScpO1xuICAgICAgaWYgKGZpcnN0KSB7XG4gICAgICAgIGxvY2FsZURhdGFQYXRoID0gZmluZExvY2FsZURhdGFQYXRoKGZpcnN0LnRvTG93ZXJDYXNlKCksIGxvY2FsZVJlc29sdmVyKTtcbiAgICAgICAgaWYgKGxvY2FsZURhdGFQYXRoKSB7XG4gICAgICAgICAgY29udGV4dC5sb2dnZXIud2FybihcbiAgICAgICAgICAgIGBMb2NhbGUgZGF0YSBmb3IgJyR7bG9jYWxlfScgY2Fubm90IGJlIGZvdW5kLiBVc2luZyBsb2NhbGUgZGF0YSBmb3IgJyR7Zmlyc3R9Jy5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFsb2NhbGVEYXRhUGF0aCkge1xuICAgICAgY29udGV4dC5sb2dnZXIud2FybihcbiAgICAgICAgYExvY2FsZSBkYXRhIGZvciAnJHtsb2NhbGV9JyBjYW5ub3QgYmUgZm91bmQuIE5vIGxvY2FsZSBkYXRhIHdpbGwgYmUgaW5jbHVkZWQgZm9yIHRoaXMgbG9jYWxlLmAsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZXNjLmRhdGFQYXRoID0gbG9jYWxlRGF0YVBhdGg7XG4gICAgfVxuXG4gICAgaWYgKCFkZXNjLmZpbGVzLmxlbmd0aCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbG9hZGVyID8/PSBhd2FpdCBjcmVhdGVUcmFuc2xhdGlvbkxvYWRlcigpO1xuXG4gICAgbG9hZFRyYW5zbGF0aW9ucyhcbiAgICAgIGxvY2FsZSxcbiAgICAgIGRlc2MsXG4gICAgICBjb250ZXh0LndvcmtzcGFjZVJvb3QsXG4gICAgICBsb2FkZXIsXG4gICAgICB7XG4gICAgICAgIHdhcm4obWVzc2FnZSkge1xuICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm4obWVzc2FnZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yKG1lc3NhZ2UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdXNlZEZvcm1hdHMsXG4gICAgICBidWlsZE9wdGlvbnMuaTE4bkR1cGxpY2F0ZVRyYW5zbGF0aW9uLFxuICAgICk7XG5cbiAgICBpZiAodXNlZEZvcm1hdHMuc2l6ZSA+IDEgJiYgdHNDb25maWcub3B0aW9ucy5lbmFibGVJMThuTGVnYWN5TWVzc2FnZUlkRm9ybWF0ICE9PSBmYWxzZSkge1xuICAgICAgLy8gVGhpcyBsaW1pdGF0aW9uIGlzIG9ubHkgZm9yIGxlZ2FjeSBtZXNzYWdlIGlkIHN1cHBvcnQgKGRlZmF1bHRzIHRvIHRydWUgYXMgb2YgOS4wKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnTG9jYWxpemF0aW9uIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIHVzaW5nIG9uZSB0eXBlIG9mIHRyYW5zbGF0aW9uIGZpbGUgZm9ybWF0IGZvciB0aGUgZW50aXJlIGFwcGxpY2F0aW9uLicsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIGlubGluaW5nIHN0b3JlIHRoZSBvdXRwdXQgaW4gYSB0ZW1wb3JhcnkgbG9jYXRpb24gdG8gZmFjaWxpdGF0ZSBwb3N0LXByb2Nlc3NpbmdcbiAgaWYgKGkxOG4uc2hvdWxkSW5saW5lKSB7XG4gICAgLy8gVE9ETzogd2Ugc2hvdWxkIGxpa2VseSBzYXZlIHRoZXNlIGluIHRoZSAuYW5ndWxhciBkaXJlY3RvcnkgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbi5cbiAgICAvLyBXZSdkIG5lZWQgdG8gZG8gYSBtaWdyYXRpb24gdG8gYWRkIHRoZSB0ZW1wIGRpcmVjdG9yeSB0byBnaXRpZ25vcmUuXG4gICAgY29uc3QgdGVtcFBhdGggPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4oZnMucmVhbHBhdGhTeW5jKG9zLnRtcGRpcigpKSwgJ2FuZ3VsYXItY2xpLWkxOG4tJykpO1xuICAgIGJ1aWxkT3B0aW9ucy5vdXRwdXRQYXRoID0gdGVtcFBhdGg7XG5cbiAgICBwcm9jZXNzLm9uKCdleGl0JywgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZnMucm1TeW5jKHRlbXBQYXRoLCB7IGZvcmNlOiB0cnVlLCByZWN1cnNpdmU6IHRydWUsIG1heFJldHJpZXM6IDMgfSk7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4geyBidWlsZE9wdGlvbnMsIGkxOG4gfTtcbn1cblxuZnVuY3Rpb24gZmluZExvY2FsZURhdGFQYXRoKGxvY2FsZTogc3RyaW5nLCByZXNvbHZlcjogKGxvY2FsZTogc3RyaW5nKSA9PiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgLy8gUmVtb3ZlIHByaXZhdGUgdXNlIHN1YnRhZ3NcbiAgY29uc3Qgc2NydWJiZWRMb2NhbGUgPSBsb2NhbGUucmVwbGFjZSgvLXgoLVthLXpBLVowLTldezEsOH0pKyQvLCAnJyk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gcmVzb2x2ZXIoc2NydWJiZWRMb2NhbGUpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBmYWxsYmFjayB0byBrbm93biBleGlzdGluZyBlbi1VUyBsb2NhbGUgZGF0YSBhcyBvZiAxNC4wXG4gICAgcmV0dXJuIHNjcnViYmVkTG9jYWxlID09PSAnZW4tVVMnID8gZmluZExvY2FsZURhdGFQYXRoKCdlbicsIHJlc29sdmVyKSA6IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRUcmFuc2xhdGlvbnMoXG4gIGxvY2FsZTogc3RyaW5nLFxuICBkZXNjOiBMb2NhbGVEZXNjcmlwdGlvbixcbiAgd29ya3NwYWNlUm9vdDogc3RyaW5nLFxuICBsb2FkZXI6IFRyYW5zbGF0aW9uTG9hZGVyLFxuICBsb2dnZXI6IHsgd2FybjogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZDsgZXJyb3I6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQgfSxcbiAgdXNlZEZvcm1hdHM/OiBTZXQ8c3RyaW5nPixcbiAgZHVwbGljYXRlVHJhbnNsYXRpb24/OiBJMThOVHJhbnNsYXRpb24sXG4pIHtcbiAgbGV0IHRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3QgZmlsZSBvZiBkZXNjLmZpbGVzKSB7XG4gICAgY29uc3QgbG9hZFJlc3VsdCA9IGxvYWRlcihwYXRoLmpvaW4od29ya3NwYWNlUm9vdCwgZmlsZS5wYXRoKSk7XG5cbiAgICBmb3IgKGNvbnN0IGRpYWdub3N0aWNzIG9mIGxvYWRSZXN1bHQuZGlhZ25vc3RpY3MubWVzc2FnZXMpIHtcbiAgICAgIGlmIChkaWFnbm9zdGljcy50eXBlID09PSAnZXJyb3InKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihgRXJyb3IgcGFyc2luZyB0cmFuc2xhdGlvbiBmaWxlICcke2ZpbGUucGF0aH0nOiAke2RpYWdub3N0aWNzLm1lc3NhZ2V9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIud2FybihgV0FSTklORyBbJHtmaWxlLnBhdGh9XTogJHtkaWFnbm9zdGljcy5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsb2FkUmVzdWx0LmxvY2FsZSAhPT0gdW5kZWZpbmVkICYmIGxvYWRSZXN1bHQubG9jYWxlICE9PSBsb2NhbGUpIHtcbiAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICBgV0FSTklORyBbJHtmaWxlLnBhdGh9XTogRmlsZSB0YXJnZXQgbG9jYWxlICgnJHtsb2FkUmVzdWx0LmxvY2FsZX0nKSBkb2VzIG5vdCBtYXRjaCBjb25maWd1cmVkIGxvY2FsZSAoJyR7bG9jYWxlfScpYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdXNlZEZvcm1hdHM/LmFkZChsb2FkUmVzdWx0LmZvcm1hdCk7XG4gICAgZmlsZS5mb3JtYXQgPSBsb2FkUmVzdWx0LmZvcm1hdDtcbiAgICBmaWxlLmludGVncml0eSA9IGxvYWRSZXN1bHQuaW50ZWdyaXR5O1xuXG4gICAgaWYgKHRyYW5zbGF0aW9ucykge1xuICAgICAgLy8gTWVyZ2UgdHJhbnNsYXRpb25zXG4gICAgICBmb3IgKGNvbnN0IFtpZCwgbWVzc2FnZV0gb2YgT2JqZWN0LmVudHJpZXMobG9hZFJlc3VsdC50cmFuc2xhdGlvbnMpKSB7XG4gICAgICAgIGlmICh0cmFuc2xhdGlvbnNbaWRdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBkdXBsaWNhdGVUcmFuc2xhdGlvbk1lc3NhZ2UgPSBgWyR7ZmlsZS5wYXRofV06IER1cGxpY2F0ZSB0cmFuc2xhdGlvbnMgZm9yIG1lc3NhZ2UgJyR7aWR9JyB3aGVuIG1lcmdpbmcuYDtcbiAgICAgICAgICBzd2l0Y2ggKGR1cGxpY2F0ZVRyYW5zbGF0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIEkxOE5UcmFuc2xhdGlvbi5JZ25vcmU6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBJMThOVHJhbnNsYXRpb24uRXJyb3I6XG4gICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgRVJST1IgJHtkdXBsaWNhdGVUcmFuc2xhdGlvbk1lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBJMThOVHJhbnNsYXRpb24uV2FybmluZzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGxvZ2dlci53YXJuKGBXQVJOSU5HICR7ZHVwbGljYXRlVHJhbnNsYXRpb25NZXNzYWdlfWApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNsYXRpb25zW2lkXSA9IG1lc3NhZ2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZpcnN0IG9yIG9ubHkgdHJhbnNsYXRpb24gZmlsZVxuICAgICAgdHJhbnNsYXRpb25zID0gbG9hZFJlc3VsdC50cmFuc2xhdGlvbnM7XG4gICAgfVxuICB9XG4gIGRlc2MudHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbnM7XG59XG4iXX0=
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvaTE4bi1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7OztBQUdILCtDQUE0QztBQUM1Qyw0Q0FBb0I7QUFDcEIsb0RBQTRCO0FBQzVCLDRDQUFvQjtBQUNwQixnREFBd0I7QUFDeEIsdURBQTZGO0FBRTdGLDBEQUFzRDtBQUN0RCwyREFBaUY7QUFFakY7O0dBRUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLGdDQUFnQyxDQUFDO0FBc0JqRSxTQUFTLDhCQUE4QixDQUNyQyxNQUFzQixFQUN0QixNQUFjLEVBQ2QsbUJBQTRCO0lBRTVCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1FBQzlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNqQjtJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsRUFBRTtRQUNuRixPQUFPLE1BQWtCLENBQUM7S0FDM0I7SUFFRCxJQUFJLFlBQVksR0FBRyxxREFBcUQsTUFBTSxrQkFBa0IsQ0FBQztJQUNqRyxJQUFJLG1CQUFtQixFQUFFO1FBQ3ZCLFlBQVksSUFBSSxpREFBaUQsQ0FBQztLQUNuRTtTQUFNO1FBQ0wsWUFBWSxJQUFJLHdDQUF3QyxDQUFDO0tBQzFEO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQy9CLFFBQXlCLEVBQ3pCLE1BQTJCO0lBRTNCLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksQ0FB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RSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkUsSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssU0FBUyxFQUFFO29CQUNsQyxNQUFNLDJCQUEyQixHQUFHLElBQUksSUFBSSxDQUFDLElBQUksMENBQTBDLEVBQUUsaUJBQWlCLENBQUM7b0JBQy9HLFFBQVEsb0JBQW9CLEVBQUU7d0JBQzVCLEtBQUssd0JBQWUsQ0FBQyxNQUFNOzRCQUN6QixNQUFNO3dCQUNSLEtBQUssd0JBQWUsQ0FBQyxLQUFLOzRCQUN4QixNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDOzRCQUNyRCxNQUFNO3dCQUNSLEtBQUssd0JBQWUsQ0FBQyxPQUFPLENBQUM7d0JBQzdCOzRCQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVywyQkFBMkIsRUFBRSxDQUFDLENBQUM7NEJBQ3RELE1BQU07cUJBQ1Q7aUJBQ0Y7Z0JBQ0QsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQzthQUM1QjtTQUNGO2FBQU07WUFDTCxpQ0FBaUM7WUFDakMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7U0FDeEM7S0FDRjtJQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDO0FBQ2xDLENBQUM7QUF4REQsNENBd0RDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEJ1aWxkZXJDb250ZXh0IH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2FyY2hpdGVjdCc7XG5pbXBvcnQgeyBqc29uIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBtb2R1bGUgZnJvbSAnbW9kdWxlJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFNjaGVtYSBhcyBCcm93c2VyQnVpbGRlclNjaGVtYSwgSTE4TlRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vYnVpbGRlcnMvYnJvd3Nlci9zY2hlbWEnO1xuaW1wb3J0IHsgU2NoZW1hIGFzIFNlcnZlckJ1aWxkZXJTY2hlbWEgfSBmcm9tICcuLi9idWlsZGVycy9zZXJ2ZXIvc2NoZW1hJztcbmltcG9ydCB7IHJlYWRUc2NvbmZpZyB9IGZyb20gJy4uL3V0aWxzL3JlYWQtdHNjb25maWcnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25Mb2FkZXIsIGNyZWF0ZVRyYW5zbGF0aW9uTG9hZGVyIH0gZnJvbSAnLi9sb2FkLXRyYW5zbGF0aW9ucyc7XG5cbi8qKlxuICogVGhlIGJhc2UgbW9kdWxlIGxvY2F0aW9uIHVzZWQgdG8gc2VhcmNoIGZvciBsb2NhbGUgc3BlY2lmaWMgZGF0YS5cbiAqL1xuY29uc3QgTE9DQUxFX0RBVEFfQkFTRV9NT0RVTEUgPSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZ2xvYmFsJztcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbGVEZXNjcmlwdGlvbiB7XG4gIGZpbGVzOiB7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIGludGVncml0eT86IHN0cmluZztcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XG4gIH1bXTtcbiAgdHJhbnNsYXRpb24/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZGF0YVBhdGg/OiBzdHJpbmc7XG4gIGJhc2VIcmVmPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5PcHRpb25zIHtcbiAgaW5saW5lTG9jYWxlczogU2V0PHN0cmluZz47XG4gIHNvdXJjZUxvY2FsZTogc3RyaW5nO1xuICBsb2NhbGVzOiBSZWNvcmQ8c3RyaW5nLCBMb2NhbGVEZXNjcmlwdGlvbj47XG4gIGZsYXRPdXRwdXQ/OiBib29sZWFuO1xuICByZWFkb25seSBzaG91bGRJbmxpbmU6IGJvb2xlYW47XG4gIGhhc0RlZmluZWRTb3VyY2VMb2NhbGU/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVUcmFuc2xhdGlvbkZpbGVPcHRpb24oXG4gIG9wdGlvbjoganNvbi5Kc29uVmFsdWUsXG4gIGxvY2FsZTogc3RyaW5nLFxuICBleHBlY3RPYmplY3RJbkVycm9yOiBib29sZWFuLFxuKTogc3RyaW5nW10ge1xuICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gW29wdGlvbl07XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb24pICYmIG9wdGlvbi5ldmVyeSgoZWxlbWVudCkgPT4gdHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSkge1xuICAgIHJldHVybiBvcHRpb24gYXMgc3RyaW5nW107XG4gIH1cblxuICBsZXQgZXJyb3JNZXNzYWdlID0gYFByb2plY3QgaTE4biBsb2NhbGVzIHRyYW5zbGF0aW9uIGZpZWxkIHZhbHVlIGZvciAnJHtsb2NhbGV9JyBpcyBtYWxmb3JtZWQuIGA7XG4gIGlmIChleHBlY3RPYmplY3RJbkVycm9yKSB7XG4gICAgZXJyb3JNZXNzYWdlICs9ICdFeHBlY3RlZCBhIHN0cmluZywgYXJyYXkgb2Ygc3RyaW5ncywgb3Igb2JqZWN0Lic7XG4gIH0gZWxzZSB7XG4gICAgZXJyb3JNZXNzYWdlICs9ICdFeHBlY3RlZCBhIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzLic7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUkxOG5PcHRpb25zKFxuICBtZXRhZGF0YToganNvbi5Kc29uT2JqZWN0LFxuICBpbmxpbmU/OiBib29sZWFuIHwgc3RyaW5nW10sXG4pOiBJMThuT3B0aW9ucyB7XG4gIGlmIChtZXRhZGF0YS5pMThuICE9PSB1bmRlZmluZWQgJiYgIWpzb24uaXNKc29uT2JqZWN0KG1ldGFkYXRhLmkxOG4pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQcm9qZWN0IGkxOG4gZmllbGQgaXMgbWFsZm9ybWVkLiBFeHBlY3RlZCBhbiBvYmplY3QuJyk7XG4gIH1cbiAgbWV0YWRhdGEgPSBtZXRhZGF0YS5pMThuIHx8IHt9O1xuXG4gIGNvbnN0IGkxOG46IEkxOG5PcHRpb25zID0ge1xuICAgIGlubGluZUxvY2FsZXM6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgIC8vIGVuLVVTIGlzIHRoZSBkZWZhdWx0IGxvY2FsZSBhZGRlZCB0byBBbmd1bGFyIGFwcGxpY2F0aW9ucyAoaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2kxOG4jaTE4bi1waXBlcylcbiAgICBzb3VyY2VMb2NhbGU6ICdlbi1VUycsXG4gICAgbG9jYWxlczoge30sXG4gICAgZ2V0IHNob3VsZElubGluZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlubGluZUxvY2FsZXMuc2l6ZSA+IDA7XG4gICAgfSxcbiAgfTtcblxuICBsZXQgcmF3U291cmNlTG9jYWxlO1xuICBsZXQgcmF3U291cmNlTG9jYWxlQmFzZUhyZWY7XG4gIGlmIChqc29uLmlzSnNvbk9iamVjdChtZXRhZGF0YS5zb3VyY2VMb2NhbGUpKSB7XG4gICAgcmF3U291cmNlTG9jYWxlID0gbWV0YWRhdGEuc291cmNlTG9jYWxlLmNvZGU7XG4gICAgaWYgKFxuICAgICAgbWV0YWRhdGEuc291cmNlTG9jYWxlLmJhc2VIcmVmICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHR5cGVvZiBtZXRhZGF0YS5zb3VyY2VMb2NhbGUuYmFzZUhyZWYgIT09ICdzdHJpbmcnXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb2plY3QgaTE4biBzb3VyY2VMb2NhbGUgYmFzZUhyZWYgZmllbGQgaXMgbWFsZm9ybWVkLiBFeHBlY3RlZCBhIHN0cmluZy4nKTtcbiAgICB9XG4gICAgcmF3U291cmNlTG9jYWxlQmFzZUhyZWYgPSBtZXRhZGF0YS5zb3VyY2VMb2NhbGUuYmFzZUhyZWY7XG4gIH0gZWxzZSB7XG4gICAgcmF3U291cmNlTG9jYWxlID0gbWV0YWRhdGEuc291cmNlTG9jYWxlO1xuICB9XG5cbiAgaWYgKHJhd1NvdXJjZUxvY2FsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiByYXdTb3VyY2VMb2NhbGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb2plY3QgaTE4biBzb3VyY2VMb2NhbGUgZmllbGQgaXMgbWFsZm9ybWVkLiBFeHBlY3RlZCBhIHN0cmluZy4nKTtcbiAgICB9XG5cbiAgICBpMThuLnNvdXJjZUxvY2FsZSA9IHJhd1NvdXJjZUxvY2FsZTtcbiAgICBpMThuLmhhc0RlZmluZWRTb3VyY2VMb2NhbGUgPSB0cnVlO1xuICB9XG5cbiAgaTE4bi5sb2NhbGVzW2kxOG4uc291cmNlTG9jYWxlXSA9IHtcbiAgICBmaWxlczogW10sXG4gICAgYmFzZUhyZWY6IHJhd1NvdXJjZUxvY2FsZUJhc2VIcmVmLFxuICB9O1xuXG4gIGlmIChtZXRhZGF0YS5sb2NhbGVzICE9PSB1bmRlZmluZWQgJiYgIWpzb24uaXNKc29uT2JqZWN0KG1ldGFkYXRhLmxvY2FsZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQcm9qZWN0IGkxOG4gbG9jYWxlcyBmaWVsZCBpcyBtYWxmb3JtZWQuIEV4cGVjdGVkIGFuIG9iamVjdC4nKTtcbiAgfSBlbHNlIGlmIChtZXRhZGF0YS5sb2NhbGVzKSB7XG4gICAgZm9yIChjb25zdCBbbG9jYWxlLCBvcHRpb25zXSBvZiBPYmplY3QuZW50cmllcyhtZXRhZGF0YS5sb2NhbGVzKSkge1xuICAgICAgbGV0IHRyYW5zbGF0aW9uRmlsZXM7XG4gICAgICBsZXQgYmFzZUhyZWY7XG4gICAgICBpZiAoanNvbi5pc0pzb25PYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgdHJhbnNsYXRpb25GaWxlcyA9IG5vcm1hbGl6ZVRyYW5zbGF0aW9uRmlsZU9wdGlvbihvcHRpb25zLnRyYW5zbGF0aW9uLCBsb2NhbGUsIGZhbHNlKTtcblxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuYmFzZUhyZWYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgYmFzZUhyZWYgPSBvcHRpb25zLmJhc2VIcmVmO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2xhdGlvbkZpbGVzID0gbm9ybWFsaXplVHJhbnNsYXRpb25GaWxlT3B0aW9uKG9wdGlvbnMsIGxvY2FsZSwgdHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChsb2NhbGUgPT09IGkxOG4uc291cmNlTG9jYWxlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQW4gaTE4biBsb2NhbGUgKCcke2xvY2FsZX0nKSBjYW5ub3QgYm90aCBiZSBhIHNvdXJjZSBsb2NhbGUgYW5kIHByb3ZpZGUgYSB0cmFuc2xhdGlvbi5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpMThuLmxvY2FsZXNbbG9jYWxlXSA9IHtcbiAgICAgICAgZmlsZXM6IHRyYW5zbGF0aW9uRmlsZXMubWFwKChmaWxlKSA9PiAoeyBwYXRoOiBmaWxlIH0pKSxcbiAgICAgICAgYmFzZUhyZWYsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbmxpbmUgPT09IHRydWUpIHtcbiAgICBpMThuLmlubGluZUxvY2FsZXMuYWRkKGkxOG4uc291cmNlTG9jYWxlKTtcbiAgICBPYmplY3Qua2V5cyhpMThuLmxvY2FsZXMpLmZvckVhY2goKGxvY2FsZSkgPT4gaTE4bi5pbmxpbmVMb2NhbGVzLmFkZChsb2NhbGUpKTtcbiAgfSBlbHNlIGlmIChpbmxpbmUpIHtcbiAgICBmb3IgKGNvbnN0IGxvY2FsZSBvZiBpbmxpbmUpIHtcbiAgICAgIGlmICghaTE4bi5sb2NhbGVzW2xvY2FsZV0gJiYgaTE4bi5zb3VyY2VMb2NhbGUgIT09IGxvY2FsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3RlZCBsb2NhbGUgJyR7bG9jYWxlfScgaXMgbm90IGRlZmluZWQgZm9yIHRoZSBwcm9qZWN0LmApO1xuICAgICAgfVxuXG4gICAgICBpMThuLmlubGluZUxvY2FsZXMuYWRkKGxvY2FsZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGkxOG47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25maWd1cmVJMThuQnVpbGQ8VCBleHRlbmRzIEJyb3dzZXJCdWlsZGVyU2NoZW1hIHwgU2VydmVyQnVpbGRlclNjaGVtYT4oXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICBvcHRpb25zOiBULFxuKTogUHJvbWlzZTx7XG4gIGJ1aWxkT3B0aW9uczogVDtcbiAgaTE4bjogSTE4bk9wdGlvbnM7XG59PiB7XG4gIGlmICghY29udGV4dC50YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBidWlsZGVyIHJlcXVpcmVzIGEgdGFyZ2V0LicpO1xuICB9XG5cbiAgY29uc3QgYnVpbGRPcHRpb25zID0geyAuLi5vcHRpb25zIH07XG4gIGNvbnN0IHRzQ29uZmlnID0gYXdhaXQgcmVhZFRzY29uZmlnKGJ1aWxkT3B0aW9ucy50c0NvbmZpZywgY29udGV4dC53b3Jrc3BhY2VSb290KTtcbiAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBjb250ZXh0LmdldFByb2plY3RNZXRhZGF0YShjb250ZXh0LnRhcmdldCk7XG4gIGNvbnN0IGkxOG4gPSBjcmVhdGVJMThuT3B0aW9ucyhtZXRhZGF0YSwgYnVpbGRPcHRpb25zLmxvY2FsaXplKTtcblxuICAvLyBObyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgbmVlZGVkIGlmIG5vIGlubGluaW5nIHJlcXVlc3RlZCBhbmQgbm8gc291cmNlIGxvY2FsZSBkZWZpbmVkLlxuICBpZiAoIWkxOG4uc2hvdWxkSW5saW5lICYmICFpMThuLmhhc0RlZmluZWRTb3VyY2VMb2NhbGUpIHtcbiAgICByZXR1cm4geyBidWlsZE9wdGlvbnMsIGkxOG4gfTtcbiAgfVxuXG4gIGNvbnN0IHByb2plY3RSb290ID0gcGF0aC5qb2luKGNvbnRleHQud29ya3NwYWNlUm9vdCwgKG1ldGFkYXRhLnJvb3QgYXMgc3RyaW5nKSB8fCAnJyk7XG4gIC8vIFRoZSB0cmFpbGluZyBzbGFzaCBpcyByZXF1aXJlZCB0byBzaWduYWwgdGhhdCB0aGUgcGF0aCBpcyBhIGRpcmVjdG9yeSBhbmQgbm90IGEgZmlsZS5cbiAgY29uc3QgcHJvamVjdFJlcXVpcmUgPSBtb2R1bGUuY3JlYXRlUmVxdWlyZShwcm9qZWN0Um9vdCArICcvJyk7XG4gIGNvbnN0IGxvY2FsZVJlc29sdmVyID0gKGxvY2FsZTogc3RyaW5nKSA9PlxuICAgIHByb2plY3RSZXF1aXJlLnJlc29sdmUocGF0aC5qb2luKExPQ0FMRV9EQVRBX0JBU0VfTU9EVUxFLCBsb2NhbGUpKTtcblxuICAvLyBMb2FkIGxvY2FsZSBkYXRhIGFuZCB0cmFuc2xhdGlvbnMgKGlmIHByZXNlbnQpXG4gIGxldCBsb2FkZXI7XG4gIGNvbnN0IHVzZWRGb3JtYXRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgW2xvY2FsZSwgZGVzY10gb2YgT2JqZWN0LmVudHJpZXMoaTE4bi5sb2NhbGVzKSkge1xuICAgIGlmICghaTE4bi5pbmxpbmVMb2NhbGVzLmhhcyhsb2NhbGUpICYmIGxvY2FsZSAhPT0gaTE4bi5zb3VyY2VMb2NhbGUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGxldCBsb2NhbGVEYXRhUGF0aCA9IGZpbmRMb2NhbGVEYXRhUGF0aChsb2NhbGUsIGxvY2FsZVJlc29sdmVyKTtcbiAgICBpZiAoIWxvY2FsZURhdGFQYXRoKSB7XG4gICAgICBjb25zdCBbZmlyc3RdID0gbG9jYWxlLnNwbGl0KCctJyk7XG4gICAgICBpZiAoZmlyc3QpIHtcbiAgICAgICAgbG9jYWxlRGF0YVBhdGggPSBmaW5kTG9jYWxlRGF0YVBhdGgoZmlyc3QudG9Mb3dlckNhc2UoKSwgbG9jYWxlUmVzb2x2ZXIpO1xuICAgICAgICBpZiAobG9jYWxlRGF0YVBhdGgpIHtcbiAgICAgICAgICBjb250ZXh0LmxvZ2dlci53YXJuKFxuICAgICAgICAgICAgYExvY2FsZSBkYXRhIGZvciAnJHtsb2NhbGV9JyBjYW5ub3QgYmUgZm91bmQuIFVzaW5nIGxvY2FsZSBkYXRhIGZvciAnJHtmaXJzdH0nLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWxvY2FsZURhdGFQYXRoKSB7XG4gICAgICBjb250ZXh0LmxvZ2dlci53YXJuKFxuICAgICAgICBgTG9jYWxlIGRhdGEgZm9yICcke2xvY2FsZX0nIGNhbm5vdCBiZSBmb3VuZC4gTm8gbG9jYWxlIGRhdGEgd2lsbCBiZSBpbmNsdWRlZCBmb3IgdGhpcyBsb2NhbGUuYCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlc2MuZGF0YVBhdGggPSBsb2NhbGVEYXRhUGF0aDtcbiAgICB9XG5cbiAgICBpZiAoIWRlc2MuZmlsZXMubGVuZ3RoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBsb2FkZXIgPz89IGF3YWl0IGNyZWF0ZVRyYW5zbGF0aW9uTG9hZGVyKCk7XG5cbiAgICBsb2FkVHJhbnNsYXRpb25zKFxuICAgICAgbG9jYWxlLFxuICAgICAgZGVzYyxcbiAgICAgIGNvbnRleHQud29ya3NwYWNlUm9vdCxcbiAgICAgIGxvYWRlcixcbiAgICAgIHtcbiAgICAgICAgd2FybihtZXNzYWdlKSB7XG4gICAgICAgICAgY29udGV4dC5sb2dnZXIud2FybihtZXNzYWdlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IobWVzc2FnZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB1c2VkRm9ybWF0cyxcbiAgICAgIGJ1aWxkT3B0aW9ucy5pMThuRHVwbGljYXRlVHJhbnNsYXRpb24sXG4gICAgKTtcblxuICAgIGlmICh1c2VkRm9ybWF0cy5zaXplID4gMSAmJiB0c0NvbmZpZy5vcHRpb25zLmVuYWJsZUkxOG5MZWdhY3lNZXNzYWdlSWRGb3JtYXQgIT09IGZhbHNlKSB7XG4gICAgICAvLyBUaGlzIGxpbWl0YXRpb24gaXMgb25seSBmb3IgbGVnYWN5IG1lc3NhZ2UgaWQgc3VwcG9ydCAoZGVmYXVsdHMgdG8gdHJ1ZSBhcyBvZiA5LjApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdMb2NhbGl6YXRpb24gY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgdXNpbmcgb25lIHR5cGUgb2YgdHJhbnNsYXRpb24gZmlsZSBmb3JtYXQgZm9yIHRoZSBlbnRpcmUgYXBwbGljYXRpb24uJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgaW5saW5pbmcgc3RvcmUgdGhlIG91dHB1dCBpbiBhIHRlbXBvcmFyeSBsb2NhdGlvbiB0byBmYWNpbGl0YXRlIHBvc3QtcHJvY2Vzc2luZ1xuICBpZiAoaTE4bi5zaG91bGRJbmxpbmUpIHtcbiAgICAvLyBUT0RPOiB3ZSBzaG91bGQgbGlrZWx5IHNhdmUgdGhlc2UgaW4gdGhlIC5hbmd1bGFyIGRpcmVjdG9yeSBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uLlxuICAgIC8vIFdlJ2QgbmVlZCB0byBkbyBhIG1pZ3JhdGlvbiB0byBhZGQgdGhlIHRlbXAgZGlyZWN0b3J5IHRvIGdpdGlnbm9yZS5cbiAgICBjb25zdCB0ZW1wUGF0aCA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihmcy5yZWFscGF0aFN5bmMob3MudG1wZGlyKCkpLCAnYW5ndWxhci1jbGktaTE4bi0nKSk7XG4gICAgYnVpbGRPcHRpb25zLm91dHB1dFBhdGggPSB0ZW1wUGF0aDtcblxuICAgIHByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBmcy5ybVN5bmModGVtcFBhdGgsIHsgZm9yY2U6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZSwgbWF4UmV0cmllczogMyB9KTtcbiAgICAgIH0gY2F0Y2gge31cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7IGJ1aWxkT3B0aW9ucywgaTE4biB9O1xufVxuXG5mdW5jdGlvbiBmaW5kTG9jYWxlRGF0YVBhdGgobG9jYWxlOiBzdHJpbmcsIHJlc29sdmVyOiAobG9jYWxlOiBzdHJpbmcpID0+IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAvLyBSZW1vdmUgcHJpdmF0ZSB1c2Ugc3VidGFnc1xuICBjb25zdCBzY3J1YmJlZExvY2FsZSA9IGxvY2FsZS5yZXBsYWNlKC8teCgtW2EtekEtWjAtOV17MSw4fSkrJC8sICcnKTtcblxuICB0cnkge1xuICAgIHJldHVybiByZXNvbHZlcihzY3J1YmJlZExvY2FsZSk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIGZhbGxiYWNrIHRvIGtub3duIGV4aXN0aW5nIGVuLVVTIGxvY2FsZSBkYXRhIGFzIG9mIDE0LjBcbiAgICByZXR1cm4gc2NydWJiZWRMb2NhbGUgPT09ICdlbi1VUycgPyBmaW5kTG9jYWxlRGF0YVBhdGgoJ2VuJywgcmVzb2x2ZXIpIDogbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFRyYW5zbGF0aW9ucyhcbiAgbG9jYWxlOiBzdHJpbmcsXG4gIGRlc2M6IExvY2FsZURlc2NyaXB0aW9uLFxuICB3b3Jrc3BhY2VSb290OiBzdHJpbmcsXG4gIGxvYWRlcjogVHJhbnNsYXRpb25Mb2FkZXIsXG4gIGxvZ2dlcjogeyB3YXJuOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkOyBlcnJvcjogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCB9LFxuICB1c2VkRm9ybWF0cz86IFNldDxzdHJpbmc+LFxuICBkdXBsaWNhdGVUcmFuc2xhdGlvbj86IEkxOE5UcmFuc2xhdGlvbixcbikge1xuICBsZXQgdHJhbnNsYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBmaWxlIG9mIGRlc2MuZmlsZXMpIHtcbiAgICBjb25zdCBsb2FkUmVzdWx0ID0gbG9hZGVyKHBhdGguam9pbih3b3Jrc3BhY2VSb290LCBmaWxlLnBhdGgpKTtcblxuICAgIGZvciAoY29uc3QgZGlhZ25vc3RpY3Mgb2YgbG9hZFJlc3VsdC5kaWFnbm9zdGljcy5tZXNzYWdlcykge1xuICAgICAgaWYgKGRpYWdub3N0aWNzLnR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKGBFcnJvciBwYXJzaW5nIHRyYW5zbGF0aW9uIGZpbGUgJyR7ZmlsZS5wYXRofSc6ICR7ZGlhZ25vc3RpY3MubWVzc2FnZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGBXQVJOSU5HIFske2ZpbGUucGF0aH1dOiAke2RpYWdub3N0aWNzLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvYWRSZXN1bHQubG9jYWxlICE9PSB1bmRlZmluZWQgJiYgbG9hZFJlc3VsdC5sb2NhbGUgIT09IGxvY2FsZSkge1xuICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgIGBXQVJOSU5HIFske2ZpbGUucGF0aH1dOiBGaWxlIHRhcmdldCBsb2NhbGUgKCcke2xvYWRSZXN1bHQubG9jYWxlfScpIGRvZXMgbm90IG1hdGNoIGNvbmZpZ3VyZWQgbG9jYWxlICgnJHtsb2NhbGV9JylgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB1c2VkRm9ybWF0cz8uYWRkKGxvYWRSZXN1bHQuZm9ybWF0KTtcbiAgICBmaWxlLmZvcm1hdCA9IGxvYWRSZXN1bHQuZm9ybWF0O1xuICAgIGZpbGUuaW50ZWdyaXR5ID0gbG9hZFJlc3VsdC5pbnRlZ3JpdHk7XG5cbiAgICBpZiAodHJhbnNsYXRpb25zKSB7XG4gICAgICAvLyBNZXJnZSB0cmFuc2xhdGlvbnNcbiAgICAgIGZvciAoY29uc3QgW2lkLCBtZXNzYWdlXSBvZiBPYmplY3QuZW50cmllcyhsb2FkUmVzdWx0LnRyYW5zbGF0aW9ucykpIHtcbiAgICAgICAgaWYgKHRyYW5zbGF0aW9uc1tpZF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IGR1cGxpY2F0ZVRyYW5zbGF0aW9uTWVzc2FnZSA9IGBbJHtmaWxlLnBhdGh9XTogRHVwbGljYXRlIHRyYW5zbGF0aW9ucyBmb3IgbWVzc2FnZSAnJHtpZH0nIHdoZW4gbWVyZ2luZy5gO1xuICAgICAgICAgIHN3aXRjaCAoZHVwbGljYXRlVHJhbnNsYXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgSTE4TlRyYW5zbGF0aW9uLklnbm9yZTpcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEkxOE5UcmFuc2xhdGlvbi5FcnJvcjpcbiAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGBFUlJPUiAke2R1cGxpY2F0ZVRyYW5zbGF0aW9uTWVzc2FnZX1gKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEkxOE5UcmFuc2xhdGlvbi5XYXJuaW5nOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oYFdBUk5JTkcgJHtkdXBsaWNhdGVUcmFuc2xhdGlvbk1lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cmFuc2xhdGlvbnNbaWRdID0gbWVzc2FnZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmlyc3Qgb3Igb25seSB0cmFuc2xhdGlvbiBmaWxlXG4gICAgICB0cmFuc2xhdGlvbnMgPSBsb2FkUmVzdWx0LnRyYW5zbGF0aW9ucztcbiAgICB9XG4gIH1cbiAgZGVzYy50cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9ucztcbn1cbiJdfQ==
|
|
@@ -18,8 +18,9 @@ const html_rewriting_stream_1 = require("./html-rewriting-stream");
|
|
|
18
18
|
* after processing several configurations in order to build different sets of
|
|
19
19
|
* bundles for differential serving.
|
|
20
20
|
*/
|
|
21
|
+
// eslint-disable-next-line max-lines-per-function
|
|
21
22
|
async function augmentIndexHtml(params) {
|
|
22
|
-
const { loadOutputFile, files, entrypoints, sri, deployUrl = '', lang, baseHref, html } = params;
|
|
23
|
+
const { loadOutputFile, files, entrypoints, sri, deployUrl = '', lang, baseHref, html, imageDomains, } = params;
|
|
23
24
|
const warnings = [];
|
|
24
25
|
const errors = [];
|
|
25
26
|
let { crossOrigin = 'none' } = params;
|
|
@@ -117,6 +118,7 @@ async function augmentIndexHtml(params) {
|
|
|
117
118
|
const dir = lang ? await getLanguageDirection(lang, warnings) : undefined;
|
|
118
119
|
const { rewriter, transformedContent } = await (0, html_rewriting_stream_1.htmlRewritingStream)(html);
|
|
119
120
|
const baseTagExists = html.includes('<base');
|
|
121
|
+
const foundPreconnects = new Set();
|
|
120
122
|
rewriter
|
|
121
123
|
.on('startTag', (tag) => {
|
|
122
124
|
switch (tag.tagName) {
|
|
@@ -143,6 +145,13 @@ async function augmentIndexHtml(params) {
|
|
|
143
145
|
updateAttribute(tag, 'href', baseHref);
|
|
144
146
|
}
|
|
145
147
|
break;
|
|
148
|
+
case 'link':
|
|
149
|
+
if (readAttribute(tag, 'rel') === 'preconnect') {
|
|
150
|
+
const href = readAttribute(tag, 'href');
|
|
151
|
+
if (href) {
|
|
152
|
+
foundPreconnects.add(href);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
146
155
|
}
|
|
147
156
|
rewriter.emitStartTag(tag);
|
|
148
157
|
})
|
|
@@ -152,6 +161,13 @@ async function augmentIndexHtml(params) {
|
|
|
152
161
|
for (const linkTag of linkTags) {
|
|
153
162
|
rewriter.emitRaw(linkTag);
|
|
154
163
|
}
|
|
164
|
+
if (imageDomains) {
|
|
165
|
+
for (const imageDomain of imageDomains) {
|
|
166
|
+
if (!foundPreconnects.has(imageDomain)) {
|
|
167
|
+
rewriter.emitRaw(`<link rel="preconnect" href="${imageDomain}" data-ngimg>`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
155
171
|
linkTags = [];
|
|
156
172
|
break;
|
|
157
173
|
case 'body':
|
|
@@ -190,6 +206,10 @@ function updateAttribute(tag, name, value) {
|
|
|
190
206
|
tag.attrs[index] = newValue;
|
|
191
207
|
}
|
|
192
208
|
}
|
|
209
|
+
function readAttribute(tag, name) {
|
|
210
|
+
const targetAttr = tag.attrs.find((attr) => attr.name === name);
|
|
211
|
+
return targetAttr ? targetAttr.value : undefined;
|
|
212
|
+
}
|
|
193
213
|
function isString(value) {
|
|
194
214
|
return typeof value === 'string';
|
|
195
215
|
}
|
|
@@ -216,4 +236,4 @@ async function getLanguageDirectionFromLocales(locale) {
|
|
|
216
236
|
}
|
|
217
237
|
return undefined;
|
|
218
238
|
}
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudC1pbmRleC1odG1sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvaW5kZXgtZmlsZS9hdWdtZW50LWluZGV4LWh0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsNkNBQXlDO0FBQ3pDLHlDQUFvQztBQUNwQywwQ0FBNEM7QUFDNUMsbUVBQThEO0FBc0M5RDs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsTUFBK0I7SUFFL0IsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRWpHLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUM5QixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFFNUIsSUFBSSxFQUFFLFdBQVcsR0FBRyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDdEMsSUFBSSxHQUFHLElBQUksV0FBVyxLQUFLLE1BQU0sRUFBRTtRQUNqQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0tBQzNCO0lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUN0QyxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBb0QsQ0FBQztJQUU1RSwrREFBK0Q7SUFDL0QsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFJLFdBQVcsRUFBRTtRQUNoRCxLQUFLLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEtBQUssRUFBRTtZQUM3QyxJQUFJLElBQUksS0FBSyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJ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TTtRQUNOLDBGQUEwRjtRQUMxRiw0QkFBNEI7UUFDNUIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksVUFBVSxLQUFLLE1BQU0sRUFBRTtZQUN6QixPQUFPLCtCQUErQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3BEO0tBQ0Y7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdub2RlOmNyeXB0byc7XG5pbXBvcnQgeyBleHRuYW1lIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGxvYWRFc21Nb2R1bGUgfSBmcm9tICcuLi9sb2FkLWVzbSc7XG5pbXBvcnQgeyBodG1sUmV3cml0aW5nU3RyZWFtIH0gZnJvbSAnLi9odG1sLXJld3JpdGluZy1zdHJlYW0nO1xuXG5leHBvcnQgdHlwZSBMb2FkT3V0cHV0RmlsZUZ1bmN0aW9uVHlwZSA9IChmaWxlOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPjtcblxuZXhwb3J0IHR5cGUgQ3Jvc3NPcmlnaW5WYWx1ZSA9ICdub25lJyB8ICdhbm9ueW1vdXMnIHwgJ3VzZS1jcmVkZW50aWFscyc7XG5cbmV4cG9ydCB0eXBlIEVudHJ5cG9pbnQgPSBbbmFtZTogc3RyaW5nLCBpc01vZHVsZTogYm9vbGVhbl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVnbWVudEluZGV4SHRtbE9wdGlvbnMge1xuICAvKiBJbnB1dCBjb250ZW50cyAqL1xuICBodG1sOiBzdHJpbmc7XG4gIGJhc2VIcmVmPzogc3RyaW5nO1xuICBkZXBsb3lVcmw/OiBzdHJpbmc7XG4gIHNyaTogYm9vbGVhbjtcbiAgLyoqIGNyb3Nzb3JpZ2luIGF0dHJpYnV0ZSBzZXR0aW5nIG9mIGVsZW1lbnRzIHRoYXQgcHJvdmlkZSBDT1JTIHN1cHBvcnQgKi9cbiAgY3Jvc3NPcmlnaW4/OiBDcm9zc09yaWdpblZhbHVlO1xuICAvKlxuICAgKiBGaWxlcyBlbWl0dGVkIGJ5IHRoZSBidWlsZC5cbiAgICovXG4gIGZpbGVzOiBGaWxlSW5mb1tdO1xuICAvKlxuICAgKiBGdW5jdGlvbiB0aGF0IGxvYWRzIGEgZmlsZSB1c2VkLlxuICAgKiBUaGlzIGFsbG93cyB1cyB0byB1c2UgZGlmZmVyZW50IHJvdXRpbmVzIHdpdGhpbiB0aGUgSW5kZXhIdG1sV2VicGFja1BsdWdpbiBhbmRcbiAgICogd2hlbiB1c2VkIHdpdGhvdXQgdGhpcyBwbHVnaW4uXG4gICAqL1xuICBsb2FkT3V0cHV0RmlsZTogTG9hZE91dHB1dEZpbGVGdW5jdGlvblR5cGU7XG4gIC8qKiBVc2VkIHRvIHNvcnQgdGhlIGluc2VyYXRpb24gb2YgZmlsZXMgaW4gdGhlIEhUTUwgZmlsZSAqL1xuICBlbnRyeXBvaW50czogRW50cnlwb2ludFtdO1xuICAvKiogVXNlZCB0byBzZXQgdGhlIGRvY3VtZW50IGRlZmF1bHQgbG9jYWxlICovXG4gIGxhbmc/OiBzdHJpbmc7XG4gIGhpbnRzPzogeyB1cmw6IHN0cmluZzsgbW9kZTogc3RyaW5nOyBhcz86IHN0cmluZyB9W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUluZm8ge1xuICBmaWxlOiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGV4dGVuc2lvbjogc3RyaW5nO1xufVxuLypcbiAqIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBJbmRleEh0bWxXZWJwYWNrUGx1Z2luLlxuICogQ2FuIGFsc28gYmUgZGlyZWN0bHkgdXNlZCBieSBidWlsZGVyLCBlLiBnLiBpbiBvcmRlciB0byBnZW5lcmF0ZSBhbiBpbmRleC5odG1sXG4gKiBhZnRlciBwcm9jZXNzaW5nIHNldmVyYWwgY29uZmlndXJhdGlvbnMgaW4gb3JkZXIgdG8gYnVpbGQgZGlmZmVyZW50IHNldHMgb2ZcbiAqIGJ1bmRsZXMgZm9yIGRpZmZlcmVudGlhbCBzZXJ2aW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXVnbWVudEluZGV4SHRtbChcbiAgcGFyYW1zOiBBdWdtZW50SW5kZXhIdG1sT3B0aW9ucyxcbik6IFByb21pc2U8eyBjb250ZW50OiBzdHJpbmc7IHdhcm5pbmdzOiBzdHJpbmdbXTsgZXJyb3JzOiBzdHJpbmdbXSB9PiB7XG4gIGNvbnN0IHsgbG9hZE91dHB1dEZpbGUsIGZpbGVzLCBlbnRyeXBvaW50cywgc3JpLCBkZXBsb3lVcmwgPSAnJywgbGFuZywgYmFzZUhyZWYsIGh0bWwgfSA9IHBhcmFtcztcblxuICBjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGxldCB7IGNyb3NzT3JpZ2luID0gJ25vbmUnIH0gPSBwYXJhbXM7XG4gIGlmIChzcmkgJiYgY3Jvc3NPcmlnaW4gPT09ICdub25lJykge1xuICAgIGNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XG4gIH1cblxuICBjb25zdCBzdHlsZXNoZWV0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBzY3JpcHRzID0gbmV3IE1hcDwvKiogZmlsZSBuYW1lICovIHN0cmluZywgLyoqIGlzTW9kdWxlICovIGJvb2xlYW4+KCk7XG5cbiAgLy8gU29ydCBmaWxlcyBpbiB0aGUgb3JkZXIgd2Ugd2FudCB0byBpbnNlcnQgdGhlbSBieSBlbnRyeXBvaW50XG4gIGZvciAoY29uc3QgW2VudHJ5cG9pbnQsIGlzTW9kdWxlXSBvZiBlbnRyeXBvaW50cykge1xuICAgIGZvciAoY29uc3QgeyBleHRlbnNpb24sIGZpbGUsIG5hbWUgfSBvZiBmaWxlcykge1xuICAgICAgaWYgKG5hbWUgIT09IGVudHJ5cG9pbnQgfHwgc2NyaXB0cy5oYXMoZmlsZSkgfHwgc3R5bGVzaGVldHMuaGFzKGZpbGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGV4dGVuc2lvbikge1xuICAgICAgICBjYXNlICcuanMnOlxuICAgICAgICAgIC8vIEFsc28sIG5vbiBlbnRyeXBvaW50cyBuZWVkIHRvIGJlIGxvYWRlZCBhcyBubyBtb2R1bGUgYXMgdGhleSBjYW4gY29udGFpbiBwcm9ibGVtYXRpYyBjb2RlLlxuICAgICAgICAgIHNjcmlwdHMuc2V0KGZpbGUsIGlzTW9kdWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnLm1qcyc6XG4gICAgICAgICAgaWYgKCFpc01vZHVsZSkge1xuICAgICAgICAgICAgLy8gSXQgd291bGQgYmUgdmVyeSBjb25mdXNpbmcgdG8gbGluayBhbiBgKi5tanNgIGZpbGUgaW4gYSBub24tbW9kdWxlIHNjcmlwdCBjb250ZXh0LFxuICAgICAgICAgICAgLy8gc28gd2UgZGlzYWxsb3cgaXQgZW50aXJlbHkuXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2AubWpzYCBmaWxlcyAqbXVzdCogc2V0IGBpc01vZHVsZWAgdG8gYHRydWVgLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzY3JpcHRzLnNldChmaWxlLCB0cnVlIC8qIGlzTW9kdWxlICovKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnLmNzcyc6XG4gICAgICAgICAgc3R5bGVzaGVldHMuYWRkKGZpbGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBzY3JpcHRUYWdzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IFtzcmMsIGlzTW9kdWxlXSBvZiBzY3JpcHRzKSB7XG4gICAgY29uc3QgYXR0cnMgPSBbYHNyYz1cIiR7ZGVwbG95VXJsfSR7c3JjfVwiYF07XG5cbiAgICAvLyBUaGlzIGlzIGFsc28gbmVlZCBmb3Igbm9uIGVudHJ5LXBvaW50cyBhcyB0aGV5IG1heSBjb250YWluIHByb2JsZW1hdGljIGNvZGUuXG4gICAgaWYgKGlzTW9kdWxlKSB7XG4gICAgICBhdHRycy5wdXNoKCd0eXBlPVwibW9kdWxlXCInKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXR0cnMucHVzaCgnZGVmZXInKTtcbiAgICB9XG5cbiAgICBpZiAoY3Jvc3NPcmlnaW4gIT09ICdub25lJykge1xuICAgICAgYXR0cnMucHVzaChgY3Jvc3NvcmlnaW49XCIke2Nyb3NzT3JpZ2lufVwiYCk7XG4gICAgfVxuXG4gICAgaWYgKHNyaSkge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGxvYWRPdXRwdXRGaWxlKHNyYyk7XG4gICAgICBhdHRycy5wdXNoKGdlbmVyYXRlU3JpQXR0cmlidXRlcyhjb250ZW50KSk7XG4gICAgfVxuXG4gICAgc2NyaXB0VGFncy5wdXNoKGA8c2NyaXB0ICR7YXR0cnMuam9pbignICcpfT48L3NjcmlwdD5gKTtcbiAgfVxuXG4gIGxldCBsaW5rVGFnczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBzcmMgb2Ygc3R5bGVzaGVldHMpIHtcbiAgICBjb25zdCBhdHRycyA9IFtgcmVsPVwic3R5bGVzaGVldFwiYCwgYGhyZWY9XCIke2RlcGxveVVybH0ke3NyY31cImBdO1xuXG4gICAgaWYgKGNyb3NzT3JpZ2luICE9PSAnbm9uZScpIHtcbiAgICAgIGF0dHJzLnB1c2goYGNyb3Nzb3JpZ2luPVwiJHtjcm9zc09yaWdpbn1cImApO1xuICAgIH1cblxuICAgIGlmIChzcmkpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBsb2FkT3V0cHV0RmlsZShzcmMpO1xuICAgICAgYXR0cnMucHVzaChnZW5lcmF0ZVNyaUF0dHJpYnV0ZXMoY29udGVudCkpO1xuICAgIH1cblxuICAgIGxpbmtUYWdzLnB1c2goYDxsaW5rICR7YXR0cnMuam9pbignICcpfT5gKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuaGludHM/Lmxlbmd0aCkge1xuICAgIGZvciAoY29uc3QgaGludCBvZiBwYXJhbXMuaGludHMpIHtcbiAgICAgIGNvbnN0IGF0dHJzID0gW2ByZWw9XCIke2hpbnQubW9kZX1cImAsIGBocmVmPVwiJHtkZXBsb3lVcmx9JHtoaW50LnVybH1cImBdO1xuXG4gICAgICBpZiAoaGludC5tb2RlICE9PSAnbW9kdWxlcHJlbG9hZCcgJiYgY3Jvc3NPcmlnaW4gIT09ICdub25lJykge1xuICAgICAgICAvLyBWYWx1ZSBpcyBjb25zaWRlcmVkIGFub255bW91cyBieSB0aGUgYnJvd3NlciB3aGVuIG5vdCBwcmVzZW50IG9yIGVtcHR5XG4gICAgICAgIGF0dHJzLnB1c2goY3Jvc3NPcmlnaW4gPT09ICdhbm9ueW1vdXMnID8gJ2Nyb3Nzb3JpZ2luJyA6IGBjcm9zc29yaWdpbj1cIiR7Y3Jvc3NPcmlnaW59XCJgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhpbnQubW9kZSA9PT0gJ3ByZWxvYWQnIHx8IGhpbnQubW9kZSA9PT0gJ3ByZWZldGNoJykge1xuICAgICAgICBzd2l0Y2ggKGV4dG5hbWUoaGludC51cmwpKSB7XG4gICAgICAgICAgY2FzZSAnLmpzJzpcbiAgICAgICAgICAgIGF0dHJzLnB1c2goJ2FzPVwic2NyaXB0XCInKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJy5jc3MnOlxuICAgICAgICAgICAgYXR0cnMucHVzaCgnYXM9XCJzdHlsZVwiJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWYgKGhpbnQuYXMpIHtcbiAgICAgICAgICAgICAgYXR0cnMucHVzaChgYXM9XCIke2hpbnQuYXN9XCJgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgc3JpICYmXG4gICAgICAgIChoaW50Lm1vZGUgPT09ICdwcmVsb2FkJyB8fCBoaW50Lm1vZGUgPT09ICdwcmVmZXRjaCcgfHwgaGludC5tb2RlID09PSAnbW9kdWxlcHJlbG9hZCcpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGxvYWRPdXRwdXRGaWxlKGhpbnQudXJsKTtcbiAgICAgICAgYXR0cnMucHVzaChnZW5lcmF0ZVNyaUF0dHJpYnV0ZXMoY29udGVudCkpO1xuICAgICAgfVxuXG4gICAgICBsaW5rVGFncy5wdXNoKGA8bGluayAke2F0dHJzLmpvaW4oJyAnKX0+YCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZGlyID0gbGFuZyA/IGF3YWl0IGdldExhbmd1YWdlRGlyZWN0aW9uKGxhbmcsIHdhcm5pbmdzKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgeyByZXdyaXRlciwgdHJhbnNmb3JtZWRDb250ZW50IH0gPSBhd2FpdCBodG1sUmV3cml0aW5nU3RyZWFtKGh0bWwpO1xuICBjb25zdCBiYXNlVGFnRXhpc3RzID0gaHRtbC5pbmNsdWRlcygnPGJhc2UnKTtcblxuICByZXdyaXRlclxuICAgIC5vbignc3RhcnRUYWcnLCAodGFnKSA9PiB7XG4gICAgICBzd2l0Y2ggKHRhZy50YWdOYW1lKSB7XG4gICAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgICAgIC8vIEFkanVzdCBkb2N1bWVudCBsb2NhbGUgaWYgc3BlY2lmaWVkXG4gICAgICAgICAgaWYgKGlzU3RyaW5nKGxhbmcpKSB7XG4gICAgICAgICAgICB1cGRhdGVBdHRyaWJ1dGUodGFnLCAnbGFuZycsIGxhbmcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgICAgIHVwZGF0ZUF0dHJpYnV0ZSh0YWcsICdkaXInLCBkaXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICAgICAgLy8gQmFzZSBocmVmIHNob3VsZCBiZSBhZGRlZCBiZWZvcmUgYW55IGxpbmssIG1ldGEgdGFnc1xuICAgICAgICAgIGlmICghYmFzZVRhZ0V4aXN0cyAmJiBpc1N0cmluZyhiYXNlSHJlZikpIHtcbiAgICAgICAgICAgIHJld3JpdGVyLmVtaXRTdGFydFRhZyh0YWcpO1xuICAgICAgICAgICAgcmV3cml0ZXIuZW1pdFJhdyhgPGJhc2UgaHJlZj1cIiR7YmFzZUhyZWZ9XCI+YCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jhc2UnOlxuICAgICAgICAgIC8vIEFkanVzdCBiYXNlIGhyZWYgaWYgc3BlY2lmaWVkXG4gICAgICAgICAgaWYgKGlzU3RyaW5nKGJhc2VIcmVmKSkge1xuICAgICAgICAgICAgdXBkYXRlQXR0cmlidXRlKHRhZywgJ2hyZWYnLCBiYXNlSHJlZik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXdyaXRlci5lbWl0U3RhcnRUYWcodGFnKTtcbiAgICB9KVxuICAgIC5vbignZW5kVGFnJywgKHRhZykgPT4ge1xuICAgICAgc3dpdGNoICh0YWcudGFnTmFtZSkge1xuICAgICAgICBjYXNlICdoZWFkJzpcbiAgICAgICAgICBmb3IgKGNvbnN0IGxpbmtUYWcgb2YgbGlua1RhZ3MpIHtcbiAgICAgICAgICAgIHJld3JpdGVyLmVtaXRSYXcobGlua1RhZyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGlua1RhZ3MgPSBbXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYm9keSc6XG4gICAgICAgICAgLy8gQWRkIHNjcmlwdCB0YWdzXG4gICAgICAgICAgZm9yIChjb25zdCBzY3JpcHRUYWcgb2Ygc2NyaXB0VGFncykge1xuICAgICAgICAgICAgcmV3cml0ZXIuZW1pdFJhdyhzY3JpcHRUYWcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNjcmlwdFRhZ3MgPSBbXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmV3cml0ZXIuZW1pdEVuZFRhZyh0YWcpO1xuICAgIH0pO1xuXG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCB0cmFuc2Zvcm1lZENvbnRlbnQoKTtcblxuICByZXR1cm4ge1xuICAgIGNvbnRlbnQ6XG4gICAgICBsaW5rVGFncy5sZW5ndGggfHwgc2NyaXB0VGFncy5sZW5ndGhcbiAgICAgICAgPyAvLyBJbiBjYXNlIG5vIGJvZHkvaGVhZCB0YWdzIGFyZSBub3QgcHJlc2VudCAoZG90bmV0IHBhcnRpYWwgdGVtcGxhdGVzKVxuICAgICAgICAgIGxpbmtUYWdzLmpvaW4oJycpICsgc2NyaXB0VGFncy5qb2luKCcnKSArIGNvbnRlbnRcbiAgICAgICAgOiBjb250ZW50LFxuICAgIHdhcm5pbmdzLFxuICAgIGVycm9ycyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVTcmlBdHRyaWJ1dGVzKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGFsZ28gPSAnc2hhMzg0JztcbiAgY29uc3QgaGFzaCA9IGNyZWF0ZUhhc2goYWxnbykudXBkYXRlKGNvbnRlbnQsICd1dGY4JykuZGlnZXN0KCdiYXNlNjQnKTtcblxuICByZXR1cm4gYGludGVncml0eT1cIiR7YWxnb30tJHtoYXNofVwiYDtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQXR0cmlidXRlKFxuICB0YWc6IHsgYXR0cnM6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSB9LFxuICBuYW1lOiBzdHJpbmcsXG4gIHZhbHVlOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uc3QgaW5kZXggPSB0YWcuYXR0cnMuZmluZEluZGV4KChhKSA9PiBhLm5hbWUgPT09IG5hbWUpO1xuICBjb25zdCBuZXdWYWx1ZSA9IHsgbmFtZSwgdmFsdWUgfTtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgdGFnLmF0dHJzLnB1c2gobmV3VmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHRhZy5hdHRyc1tpbmRleF0gPSBuZXdWYWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRMYW5ndWFnZURpcmVjdGlvbihcbiAgbG9jYWxlOiBzdHJpbmcsXG4gIHdhcm5pbmdzOiBzdHJpbmdbXSxcbik6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IGRpciA9IGF3YWl0IGdldExhbmd1YWdlRGlyZWN0aW9uRnJvbUxvY2FsZXMobG9jYWxlKTtcblxuICBpZiAoIWRpcikge1xuICAgIHdhcm5pbmdzLnB1c2goXG4gICAgICBgTG9jYWxlIGRhdGEgZm9yICcke2xvY2FsZX0nIGNhbm5vdCBiZSBmb3VuZC4gJ2RpcicgYXR0cmlidXRlIHdpbGwgbm90IGJlIHNldCBmb3IgdGhpcyBsb2NhbGUuYCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGRpcjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VEaXJlY3Rpb25Gcm9tTG9jYWxlcyhsb2NhbGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgbG9jYWxlRGF0YSA9IChcbiAgICAgIGF3YWl0IGxvYWRFc21Nb2R1bGU8dHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZW4nKT4oXG4gICAgICAgIGBAYW5ndWxhci9jb21tb24vbG9jYWxlcy8ke2xvY2FsZX1gLFxuICAgICAgKVxuICAgICkuZGVmYXVsdDtcblxuICAgIGNvbnN0IGRpciA9IGxvY2FsZURhdGFbbG9jYWxlRGF0YS5sZW5ndGggLSAyXTtcblxuICAgIHJldHVybiBpc1N0cmluZyhkaXIpID8gZGlyIDogdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICAvLyBJbiBzb21lIGNhc2VzIGNlcnRhaW4gbG9jYWxlcyBtaWdodCBtYXAgdG8gZmlsZXMgd2hpY2ggYXJlIG5hbWVkIG9ubHkgd2l0aCBsYW5ndWFnZSBpZC5cbiAgICAvLyBFeGFtcGxlOiBgZW4tVVNgIC0+IGBlbmAuXG4gICAgY29uc3QgW2xhbmd1YWdlSWRdID0gbG9jYWxlLnNwbGl0KCctJywgMSk7XG4gICAgaWYgKGxhbmd1YWdlSWQgIT09IGxvY2FsZSkge1xuICAgICAgcmV0dXJuIGdldExhbmd1YWdlRGlyZWN0aW9uRnJvbUxvY2FsZXMobGFuZ3VhZ2VJZCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudC1pbmRleC1odG1sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvaW5kZXgtZmlsZS9hdWdtZW50LWluZGV4LWh0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsNkNBQXlDO0FBQ3pDLHlDQUFvQztBQUNwQywwQ0FBNEM7QUFDNUMsbUVBQThEO0FBdUM5RDs7Ozs7R0FLRztBQUNILGtEQUFrRDtBQUMzQyxLQUFLLFVBQVUsZ0JBQWdCLENBQ3BDLE1BQStCO0lBRS9CLE1BQU0sRUFDSixjQUFjLEVBQ2QsS0FBSyxFQUNMLFdBQVcsRUFDWCxHQUFHLEVBQ0gsU0FBUyxHQUFHLEVBQUUsRUFDZCxJQUFJLEVBQ0osUUFBUSxFQUNSLElBQUksRUFDSixZQUFZLEdBQ2IsR0FBRyxNQUFNLENBQUM7SUFFWCxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBRTVCLElBQUksRUFBRSxXQUFXLEdBQUcsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3RDLElBQUksR0FBRyxJQUFJLFdBQVcsS0FBSyxNQUFNLEVBQUU7UUFDakMsV0FBVyxHQUFHLFdBQVcsQ0FBQztLQUMzQjtJQUVELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQW9ELENBQUM7SUFFNUUsK0RBQStEO0lBQy9ELEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsSUFBSSxXQUFXLEVBQUU7UUFDaEQsS0FBSyxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxLQUFLLEVBQUU7WUFDN0MsSUFBSSxJQUFJLEtBQUssVUFBVSxJQUFJ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LCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCB7IGV4dG5hbWUgfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgbG9hZEVzbU1vZHVsZSB9IGZyb20gJy4uL2xvYWQtZXNtJztcbmltcG9ydCB7IGh0bWxSZXdyaXRpbmdTdHJlYW0gfSBmcm9tICcuL2h0bWwtcmV3cml0aW5nLXN0cmVhbSc7XG5cbmV4cG9ydCB0eXBlIExvYWRPdXRwdXRGaWxlRnVuY3Rpb25UeXBlID0gKGZpbGU6IHN0cmluZykgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG5leHBvcnQgdHlwZSBDcm9zc09yaWdpblZhbHVlID0gJ25vbmUnIHwgJ2Fub255bW91cycgfCAndXNlLWNyZWRlbnRpYWxzJztcblxuZXhwb3J0IHR5cGUgRW50cnlwb2ludCA9IFtuYW1lOiBzdHJpbmcsIGlzTW9kdWxlOiBib29sZWFuXTtcblxuZXhwb3J0IGludGVyZmFjZSBBdWdtZW50SW5kZXhIdG1sT3B0aW9ucyB7XG4gIC8qIElucHV0IGNvbnRlbnRzICovXG4gIGh0bWw6IHN0cmluZztcbiAgYmFzZUhyZWY/OiBzdHJpbmc7XG4gIGRlcGxveVVybD86IHN0cmluZztcbiAgc3JpOiBib29sZWFuO1xuICAvKiogY3Jvc3NvcmlnaW4gYXR0cmlidXRlIHNldHRpbmcgb2YgZWxlbWVudHMgdGhhdCBwcm92aWRlIENPUlMgc3VwcG9ydCAqL1xuICBjcm9zc09yaWdpbj86IENyb3NzT3JpZ2luVmFsdWU7XG4gIC8qXG4gICAqIEZpbGVzIGVtaXR0ZWQgYnkgdGhlIGJ1aWxkLlxuICAgKi9cbiAgZmlsZXM6IEZpbGVJbmZvW107XG4gIC8qXG4gICAqIEZ1bmN0aW9uIHRoYXQgbG9hZHMgYSBmaWxlIHVzZWQuXG4gICAqIFRoaXMgYWxsb3dzIHVzIHRvIHVzZSBkaWZmZXJlbnQgcm91dGluZXMgd2l0aGluIHRoZSBJbmRleEh0bWxXZWJwYWNrUGx1Z2luIGFuZFxuICAgKiB3aGVuIHVzZWQgd2l0aG91dCB0aGlzIHBsdWdpbi5cbiAgICovXG4gIGxvYWRPdXRwdXRGaWxlOiBMb2FkT3V0cHV0RmlsZUZ1bmN0aW9uVHlwZTtcbiAgLyoqIFVzZWQgdG8gc29ydCB0aGUgaW5zZXJhdGlvbiBvZiBmaWxlcyBpbiB0aGUgSFRNTCBmaWxlICovXG4gIGVudHJ5cG9pbnRzOiBFbnRyeXBvaW50W107XG4gIC8qKiBVc2VkIHRvIHNldCB0aGUgZG9jdW1lbnQgZGVmYXVsdCBsb2NhbGUgKi9cbiAgbGFuZz86IHN0cmluZztcbiAgaGludHM/OiB7IHVybDogc3RyaW5nOyBtb2RlOiBzdHJpbmc7IGFzPzogc3RyaW5nIH1bXTtcbiAgaW1hZ2VEb21haW5zPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUluZm8ge1xuICBmaWxlOiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGV4dGVuc2lvbjogc3RyaW5nO1xufVxuLypcbiAqIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBJbmRleEh0bWxXZWJwYWNrUGx1Z2luLlxuICogQ2FuIGFsc28gYmUgZGlyZWN0bHkgdXNlZCBieSBidWlsZGVyLCBlLiBnLiBpbiBvcmRlciB0byBnZW5lcmF0ZSBhbiBpbmRleC5odG1sXG4gKiBhZnRlciBwcm9jZXNzaW5nIHNldmVyYWwgY29uZmlndXJhdGlvbnMgaW4gb3JkZXIgdG8gYnVpbGQgZGlmZmVyZW50IHNldHMgb2ZcbiAqIGJ1bmRsZXMgZm9yIGRpZmZlcmVudGlhbCBzZXJ2aW5nLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGF1Z21lbnRJbmRleEh0bWwoXG4gIHBhcmFtczogQXVnbWVudEluZGV4SHRtbE9wdGlvbnMsXG4pOiBQcm9taXNlPHsgY29udGVudDogc3RyaW5nOyB3YXJuaW5nczogc3RyaW5nW107IGVycm9yczogc3RyaW5nW10gfT4ge1xuICBjb25zdCB7XG4gICAgbG9hZE91dHB1dEZpbGUsXG4gICAgZmlsZXMsXG4gICAgZW50cnlwb2ludHMsXG4gICAgc3JpLFxuICAgIGRlcGxveVVybCA9ICcnLFxuICAgIGxhbmcsXG4gICAgYmFzZUhyZWYsXG4gICAgaHRtbCxcbiAgICBpbWFnZURvbWFpbnMsXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICBsZXQgeyBjcm9zc09yaWdpbiA9ICdub25lJyB9ID0gcGFyYW1zO1xuICBpZiAoc3JpICYmIGNyb3NzT3JpZ2luID09PSAnbm9uZScpIHtcbiAgICBjcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xuICB9XG5cbiAgY29uc3Qgc3R5bGVzaGVldHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3Qgc2NyaXB0cyA9IG5ldyBNYXA8LyoqIGZpbGUgbmFtZSAqLyBzdHJpbmcsIC8qKiBpc01vZHVsZSAqLyBib29sZWFuPigpO1xuXG4gIC8vIFNvcnQgZmlsZXMgaW4gdGhlIG9yZGVyIHdlIHdhbnQgdG8gaW5zZXJ0IHRoZW0gYnkgZW50cnlwb2ludFxuICBmb3IgKGNvbnN0IFtlbnRyeXBvaW50LCBpc01vZHVsZV0gb2YgZW50cnlwb2ludHMpIHtcbiAgICBmb3IgKGNvbnN0IHsgZXh0ZW5zaW9uLCBmaWxlLCBuYW1lIH0gb2YgZmlsZXMpIHtcbiAgICAgIGlmIChuYW1lICE9PSBlbnRyeXBvaW50IHx8IHNjcmlwdHMuaGFzKGZpbGUpIHx8IHN0eWxlc2hlZXRzLmhhcyhmaWxlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChleHRlbnNpb24pIHtcbiAgICAgICAgY2FzZSAnLmpzJzpcbiAgICAgICAgICAvLyBBbHNvLCBub24gZW50cnlwb2ludHMgbmVlZCB0byBiZSBsb2FkZWQgYXMgbm8gbW9kdWxlIGFzIHRoZXkgY2FuIGNvbnRhaW4gcHJvYmxlbWF0aWMgY29kZS5cbiAgICAgICAgICBzY3JpcHRzLnNldChmaWxlLCBpc01vZHVsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJy5tanMnOlxuICAgICAgICAgIGlmICghaXNNb2R1bGUpIHtcbiAgICAgICAgICAgIC8vIEl0IHdvdWxkIGJlIHZlcnkgY29uZnVzaW5nIHRvIGxpbmsgYW4gYCoubWpzYCBmaWxlIGluIGEgbm9uLW1vZHVsZSBzY3JpcHQgY29udGV4dCxcbiAgICAgICAgICAgIC8vIHNvIHdlIGRpc2FsbG93IGl0IGVudGlyZWx5LlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdgLm1qc2AgZmlsZXMgKm11c3QqIHNldCBgaXNNb2R1bGVgIHRvIGB0cnVlYC4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2NyaXB0cy5zZXQoZmlsZSwgdHJ1ZSAvKiBpc01vZHVsZSAqLyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJy5jc3MnOlxuICAgICAgICAgIHN0eWxlc2hlZXRzLmFkZChmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgc2NyaXB0VGFnczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBbc3JjLCBpc01vZHVsZV0gb2Ygc2NyaXB0cykge1xuICAgIGNvbnN0IGF0dHJzID0gW2BzcmM9XCIke2RlcGxveVVybH0ke3NyY31cImBdO1xuXG4gICAgLy8gVGhpcyBpcyBhbHNvIG5lZWQgZm9yIG5vbiBlbnRyeS1wb2ludHMgYXMgdGhleSBtYXkgY29udGFpbiBwcm9ibGVtYXRpYyBjb2RlLlxuICAgIGlmIChpc01vZHVsZSkge1xuICAgICAgYXR0cnMucHVzaCgndHlwZT1cIm1vZHVsZVwiJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF0dHJzLnB1c2goJ2RlZmVyJyk7XG4gICAgfVxuXG4gICAgaWYgKGNyb3NzT3JpZ2luICE9PSAnbm9uZScpIHtcbiAgICAgIGF0dHJzLnB1c2goYGNyb3Nzb3JpZ2luPVwiJHtjcm9zc09yaWdpbn1cImApO1xuICAgIH1cblxuICAgIGlmIChzcmkpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBsb2FkT3V0cHV0RmlsZShzcmMpO1xuICAgICAgYXR0cnMucHVzaChnZW5lcmF0ZVNyaUF0dHJpYnV0ZXMoY29udGVudCkpO1xuICAgIH1cblxuICAgIHNjcmlwdFRhZ3MucHVzaChgPHNjcmlwdCAke2F0dHJzLmpvaW4oJyAnKX0+PC9zY3JpcHQ+YCk7XG4gIH1cblxuICBsZXQgbGlua1RhZ3M6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3Qgc3JjIG9mIHN0eWxlc2hlZXRzKSB7XG4gICAgY29uc3QgYXR0cnMgPSBbYHJlbD1cInN0eWxlc2hlZXRcImAsIGBocmVmPVwiJHtkZXBsb3lVcmx9JHtzcmN9XCJgXTtcblxuICAgIGlmIChjcm9zc09yaWdpbiAhPT0gJ25vbmUnKSB7XG4gICAgICBhdHRycy5wdXNoKGBjcm9zc29yaWdpbj1cIiR7Y3Jvc3NPcmlnaW59XCJgKTtcbiAgICB9XG5cbiAgICBpZiAoc3JpKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgbG9hZE91dHB1dEZpbGUoc3JjKTtcbiAgICAgIGF0dHJzLnB1c2goZ2VuZXJhdGVTcmlBdHRyaWJ1dGVzKGNvbnRlbnQpKTtcbiAgICB9XG5cbiAgICBsaW5rVGFncy5wdXNoKGA8bGluayAke2F0dHJzLmpvaW4oJyAnKX0+YCk7XG4gIH1cblxuICBpZiAocGFyYW1zLmhpbnRzPy5sZW5ndGgpIHtcbiAgICBmb3IgKGNvbnN0IGhpbnQgb2YgcGFyYW1zLmhpbnRzKSB7XG4gICAgICBjb25zdCBhdHRycyA9IFtgcmVsPVwiJHtoaW50Lm1vZGV9XCJgLCBgaHJlZj1cIiR7ZGVwbG95VXJsfSR7aGludC51cmx9XCJgXTtcblxuICAgICAgaWYgKGhpbnQubW9kZSAhPT0gJ21vZHVsZXByZWxvYWQnICYmIGNyb3NzT3JpZ2luICE9PSAnbm9uZScpIHtcbiAgICAgICAgLy8gVmFsdWUgaXMgY29uc2lkZXJlZCBhbm9ueW1vdXMgYnkgdGhlIGJyb3dzZXIgd2hlbiBub3QgcHJlc2VudCBvciBlbXB0eVxuICAgICAgICBhdHRycy5wdXNoKGNyb3NzT3JpZ2luID09PSAnYW5vbnltb3VzJyA/ICdjcm9zc29yaWdpbicgOiBgY3Jvc3NvcmlnaW49XCIke2Nyb3NzT3JpZ2lufVwiYCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChoaW50Lm1vZGUgPT09ICdwcmVsb2FkJyB8fCBoaW50Lm1vZGUgPT09ICdwcmVmZXRjaCcpIHtcbiAgICAgICAgc3dpdGNoIChleHRuYW1lKGhpbnQudXJsKSkge1xuICAgICAgICAgIGNhc2UgJy5qcyc6XG4gICAgICAgICAgICBhdHRycy5wdXNoKCdhcz1cInNjcmlwdFwiJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICcuY3NzJzpcbiAgICAgICAgICAgIGF0dHJzLnB1c2goJ2FzPVwic3R5bGVcIicpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmIChoaW50LmFzKSB7XG4gICAgICAgICAgICAgIGF0dHJzLnB1c2goYGFzPVwiJHtoaW50LmFzfVwiYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHNyaSAmJlxuICAgICAgICAoaGludC5tb2RlID09PSAncHJlbG9hZCcgfHwgaGludC5tb2RlID09PSAncHJlZmV0Y2gnIHx8IGhpbnQubW9kZSA9PT0gJ21vZHVsZXByZWxvYWQnKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBsb2FkT3V0cHV0RmlsZShoaW50LnVybCk7XG4gICAgICAgIGF0dHJzLnB1c2goZ2VuZXJhdGVTcmlBdHRyaWJ1dGVzKGNvbnRlbnQpKTtcbiAgICAgIH1cblxuICAgICAgbGlua1RhZ3MucHVzaChgPGxpbmsgJHthdHRycy5qb2luKCcgJyl9PmApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpciA9IGxhbmcgPyBhd2FpdCBnZXRMYW5ndWFnZURpcmVjdGlvbihsYW5nLCB3YXJuaW5ncykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHsgcmV3cml0ZXIsIHRyYW5zZm9ybWVkQ29udGVudCB9ID0gYXdhaXQgaHRtbFJld3JpdGluZ1N0cmVhbShodG1sKTtcbiAgY29uc3QgYmFzZVRhZ0V4aXN0cyA9IGh0bWwuaW5jbHVkZXMoJzxiYXNlJyk7XG4gIGNvbnN0IGZvdW5kUHJlY29ubmVjdHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICByZXdyaXRlclxuICAgIC5vbignc3RhcnRUYWcnLCAodGFnKSA9PiB7XG4gICAgICBzd2l0Y2ggKHRhZy50YWdOYW1lKSB7XG4gICAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgICAgIC8vIEFkanVzdCBkb2N1bWVudCBsb2NhbGUgaWYgc3BlY2lmaWVkXG4gICAgICAgICAgaWYgKGlzU3RyaW5nKGxhbmcpKSB7XG4gICAgICAgICAgICB1cGRhdGVBdHRyaWJ1dGUodGFnLCAnbGFuZycsIGxhbmcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgICAgIHVwZGF0ZUF0dHJpYnV0ZSh0YWcsICdkaXInLCBkaXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICAgICAgLy8gQmFzZSBocmVmIHNob3VsZCBiZSBhZGRlZCBiZWZvcmUgYW55IGxpbmssIG1ldGEgdGFnc1xuICAgICAgICAgIGlmICghYmFzZVRhZ0V4aXN0cyAmJiBpc1N0cmluZyhiYXNlSHJlZikpIHtcbiAgICAgICAgICAgIHJld3JpdGVyLmVtaXRTdGFydFRhZyh0YWcpO1xuICAgICAgICAgICAgcmV3cml0ZXIuZW1pdFJhdyhgPGJhc2UgaHJlZj1cIiR7YmFzZUhyZWZ9XCI+YCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jhc2UnOlxuICAgICAgICAgIC8vIEFkanVzdCBiYXNlIGhyZWYgaWYgc3BlY2lmaWVkXG4gICAgICAgICAgaWYgKGlzU3RyaW5nKGJhc2VIcmVmKSkge1xuICAgICAgICAgICAgdXBkYXRlQXR0cmlidXRlKHRhZywgJ2hyZWYnLCBiYXNlSHJlZik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgICBpZiAocmVhZEF0dHJpYnV0ZSh0YWcsICdyZWwnKSA9PT0gJ3ByZWNvbm5lY3QnKSB7XG4gICAgICAgICAgICBjb25zdCBocmVmID0gcmVhZEF0dHJpYnV0ZSh0YWcsICdocmVmJyk7XG4gICAgICAgICAgICBpZiAoaHJlZikge1xuICAgICAgICAgICAgICBmb3VuZFByZWNvbm5lY3RzLmFkZChocmVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJld3JpdGVyLmVtaXRTdGFydFRhZyh0YWcpO1xuICAgIH0pXG4gICAgLm9uKCdlbmRUYWcnLCAodGFnKSA9PiB7XG4gICAgICBzd2l0Y2ggKHRhZy50YWdOYW1lKSB7XG4gICAgICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgICAgIGZvciAoY29uc3QgbGlua1RhZyBvZiBsaW5rVGFncykge1xuICAgICAgICAgICAgcmV3cml0ZXIuZW1pdFJhdyhsaW5rVGFnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGltYWdlRG9tYWlucykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpbWFnZURvbWFpbiBvZiBpbWFnZURvbWFpbnMpIHtcbiAgICAgICAgICAgICAgaWYgKCFmb3VuZFByZWNvbm5lY3RzLmhhcyhpbWFnZURvbWFpbikpIHtcbiAgICAgICAgICAgICAgICByZXdyaXRlci5lbWl0UmF3KGA8bGluayByZWw9XCJwcmVjb25uZWN0XCIgaHJlZj1cIiR7aW1hZ2VEb21haW59XCIgZGF0YS1uZ2ltZz5gKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBsaW5rVGFncyA9IFtdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgICAvLyBBZGQgc2NyaXB0IHRhZ3NcbiAgICAgICAgICBmb3IgKGNvbnN0IHNjcmlwdFRhZyBvZiBzY3JpcHRUYWdzKSB7XG4gICAgICAgICAgICByZXdyaXRlci5lbWl0UmF3KHNjcmlwdFRhZyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2NyaXB0VGFncyA9IFtdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXdyaXRlci5lbWl0RW5kVGFnKHRhZyk7XG4gICAgfSk7XG5cbiAgY29uc3QgY29udGVudCA9IGF3YWl0IHRyYW5zZm9ybWVkQ29udGVudCgpO1xuXG4gIHJldHVybiB7XG4gICAgY29udGVudDpcbiAgICAgIGxpbmtUYWdzLmxlbmd0aCB8fCBzY3JpcHRUYWdzLmxlbmd0aFxuICAgICAgICA/IC8vIEluIGNhc2Ugbm8gYm9keS9oZWFkIHRhZ3MgYXJlIG5vdCBwcmVzZW50IChkb3RuZXQgcGFydGlhbCB0ZW1wbGF0ZXMpXG4gICAgICAgICAgbGlua1RhZ3Muam9pbignJykgKyBzY3JpcHRUYWdzLmpvaW4oJycpICsgY29udGVudFxuICAgICAgICA6IGNvbnRlbnQsXG4gICAgd2FybmluZ3MsXG4gICAgZXJyb3JzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVNyaUF0dHJpYnV0ZXMoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYWxnbyA9ICdzaGEzODQnO1xuICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaChhbGdvKS51cGRhdGUoY29udGVudCwgJ3V0ZjgnKS5kaWdlc3QoJ2Jhc2U2NCcpO1xuXG4gIHJldHVybiBgaW50ZWdyaXR5PVwiJHthbGdvfS0ke2hhc2h9XCJgO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVBdHRyaWJ1dGUoXG4gIHRhZzogeyBhdHRyczogeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdIH0sXG4gIG5hbWU6IHN0cmluZyxcbiAgdmFsdWU6IHN0cmluZyxcbik6IHZvaWQge1xuICBjb25zdCBpbmRleCA9IHRhZy5hdHRycy5maW5kSW5kZXgoKGEpID0+IGEubmFtZSA9PT0gbmFtZSk7XG4gIGNvbnN0IG5ld1ZhbHVlID0geyBuYW1lLCB2YWx1ZSB9O1xuXG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICB0YWcuYXR0cnMucHVzaChuZXdWYWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdGFnLmF0dHJzW2luZGV4XSA9IG5ld1ZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRBdHRyaWJ1dGUoXG4gIHRhZzogeyBhdHRyczogeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdIH0sXG4gIG5hbWU6IHN0cmluZyxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHRhcmdldEF0dHIgPSB0YWcuYXR0cnMuZmluZCgoYXR0cikgPT4gYXR0ci5uYW1lID09PSBuYW1lKTtcblxuICByZXR1cm4gdGFyZ2V0QXR0ciA/IHRhcmdldEF0dHIudmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldExhbmd1YWdlRGlyZWN0aW9uKFxuICBsb2NhbGU6IHN0cmluZyxcbiAgd2FybmluZ3M6IHN0cmluZ1tdLFxuKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgZGlyID0gYXdhaXQgZ2V0TGFuZ3VhZ2VEaXJlY3Rpb25Gcm9tTG9jYWxlcyhsb2NhbGUpO1xuXG4gIGlmICghZGlyKSB7XG4gICAgd2FybmluZ3MucHVzaChcbiAgICAgIGBMb2NhbGUgZGF0YSBmb3IgJyR7bG9jYWxlfScgY2Fubm90IGJlIGZvdW5kLiAnZGlyJyBhdHRyaWJ1dGUgd2lsbCBub3QgYmUgc2V0IGZvciB0aGlzIGxvY2FsZS5gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZGlyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRMYW5ndWFnZURpcmVjdGlvbkZyb21Mb2NhbGVzKGxvY2FsZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBsb2NhbGVEYXRhID0gKFxuICAgICAgYXdhaXQgbG9hZEVzbU1vZHVsZTx0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9lbicpPihcbiAgICAgICAgYEBhbmd1bGFyL2NvbW1vbi9sb2NhbGVzLyR7bG9jYWxlfWAsXG4gICAgICApXG4gICAgKS5kZWZhdWx0O1xuXG4gICAgY29uc3QgZGlyID0gbG9jYWxlRGF0YVtsb2NhbGVEYXRhLmxlbmd0aCAtIDJdO1xuXG4gICAgcmV0dXJuIGlzU3RyaW5nKGRpcikgPyBkaXIgOiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEluIHNvbWUgY2FzZXMgY2VydGFpbiBsb2NhbGVzIG1pZ2h0IG1hcCB0byBmaWxlcyB3aGljaCBhcmUgbmFtZWQgb25seSB3aXRoIGxhbmd1YWdlIGlkLlxuICAgIC8vIEV4YW1wbGU6IGBlbi1VU2AgLT4gYGVuYC5cbiAgICBjb25zdCBbbGFuZ3VhZ2VJZF0gPSBsb2NhbGUuc3BsaXQoJy0nLCAxKTtcbiAgICBpZiAobGFuZ3VhZ2VJZCAhPT0gbG9jYWxlKSB7XG4gICAgICByZXR1cm4gZ2V0TGFuZ3VhZ2VEaXJlY3Rpb25Gcm9tTG9jYWxlcyhsYW5ndWFnZUlkKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
|
|
@@ -29,6 +29,7 @@ export interface IndexHtmlGeneratorOptions {
|
|
|
29
29
|
crossOrigin?: CrossOriginValue;
|
|
30
30
|
optimization?: NormalizedOptimizationOptions;
|
|
31
31
|
cache?: NormalizedCachedOptions;
|
|
32
|
+
imageDomains?: string[];
|
|
32
33
|
}
|
|
33
34
|
export type IndexHtmlTransform = (content: string) => Promise<string>;
|
|
34
35
|
export interface IndexHtmlTransformResult {
|
|
@@ -39,6 +39,8 @@ const inline_critical_css_1 = require("./inline-critical-css");
|
|
|
39
39
|
const inline_fonts_1 = require("./inline-fonts");
|
|
40
40
|
const style_nonce_1 = require("./style-nonce");
|
|
41
41
|
class IndexHtmlGenerator {
|
|
42
|
+
options;
|
|
43
|
+
plugins;
|
|
42
44
|
constructor(options) {
|
|
43
45
|
this.options = options;
|
|
44
46
|
const extraPlugins = [];
|
|
@@ -91,7 +93,7 @@ class IndexHtmlGenerator {
|
|
|
91
93
|
}
|
|
92
94
|
exports.IndexHtmlGenerator = IndexHtmlGenerator;
|
|
93
95
|
function augmentIndexHtmlPlugin(generator) {
|
|
94
|
-
const { deployUrl, crossOrigin, sri = false, entrypoints } = generator.options;
|
|
96
|
+
const { deployUrl, crossOrigin, sri = false, entrypoints, imageDomains } = generator.options;
|
|
95
97
|
return async (html, options) => {
|
|
96
98
|
const { lang, baseHref, outputPath = '', files, hints } = options;
|
|
97
99
|
return (0, augment_index_html_1.augmentIndexHtml)({
|
|
@@ -103,6 +105,7 @@ function augmentIndexHtmlPlugin(generator) {
|
|
|
103
105
|
lang,
|
|
104
106
|
entrypoints,
|
|
105
107
|
loadOutputFile: (filePath) => generator.readAsset((0, path_1.join)(outputPath, filePath)),
|
|
108
|
+
imageDomains,
|
|
106
109
|
files,
|
|
107
110
|
hints,
|
|
108
111
|
});
|
|
@@ -128,4 +131,4 @@ function addStyleNoncePlugin() {
|
|
|
128
131
|
function postTransformPlugin({ options }) {
|
|
129
132
|
return async (html) => (options.postTransform ? options.postTransform(html) : html);
|
|
130
133
|
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtaHRtbC1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy91dGlscy9pbmRleC1maWxlL2luZGV4LWh0bWwtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsdUNBQXlCO0FBQ3pCLCtCQUE0QjtBQUc1Qiw0Q0FBd0M7QUFDeEMsNkRBQWdHO0FBQ2hHLCtEQUFtRTtBQUNuRSxpREFBc0Q7QUFDdEQsK0NBQThDO0FBb0M5QyxNQUFhLGtCQUFrQjtJQUc3QixZQUFxQixPQUFrQztRQUFsQyxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQUNyRCxNQUFNLFlBQVksR0FBK0IsRUFBRSxDQUFDO1FBQ3BELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUMzQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDNUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUU7WUFDcEQsWUFBWSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLHNCQUFzQixDQUFDLElBQUksQ0FBQztZQUM1QixHQUFHLFlBQVk7WUFDZix3REFBd0Q7WUFDeEQsaURBQWlEO1lBQ2pELG1CQUFtQixFQUFFO1lBQ3JCLG1CQUFtQixDQUFDLElBQUksQ0FBQztTQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBeUM7UUFDckQsSUFBSSxPQUFPLEdBQUcsSUFB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LEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0tBQ3ZELENBQUMsQ0FBQztJQUVILE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUM3QiwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxTQUFTLG1CQUFtQjtJQUMxQixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDJCQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsRUFBRSxPQUFPLEVBQXNCO0lBQzFELE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IE5vcm1hbGl6ZWRDYWNoZWRPcHRpb25zIH0gZnJvbSAnLi4vbm9ybWFsaXplLWNhY2hlJztcbmltcG9ydCB7IE5vcm1hbGl6ZWRPcHRpbWl6YXRpb25PcHRpb25zIH0gZnJvbSAnLi4vbm9ybWFsaXplLW9wdGltaXphdGlvbic7XG5pbXBvcnQgeyBzdHJpcEJvbSB9IGZyb20gJy4uL3N0cmlwLWJvbSc7XG5pbXBvcnQgeyBDcm9zc09yaWdpblZhbHVlLCBFbnRyeXBvaW50LCBGaWxlSW5mbywgYXVnbWVudEluZGV4SHRtbCB9IGZyb20gJy4vYXVnbWVudC1pbmRleC1odG1sJztcbmltcG9ydCB7IElubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yIH0gZnJvbSAnLi9pbmxpbmUtY3JpdGljYWwtY3NzJztcbmltcG9ydCB7IElubGluZUZvbnRzUHJvY2Vzc29yIH0gZnJvbSAnLi9pbmxpbmUtZm9udHMnO1xuaW1wb3J0IHsgYWRkU3R5bGVOb25jZSB9IGZyb20gJy4vc3R5bGUtbm9uY2UnO1xuXG50eXBlIEluZGV4SHRtbEdlbmVyYXRvclBsdWdpbiA9IChcbiAgaHRtbDogc3RyaW5nLFxuICBvcHRpb25zOiBJbmRleEh0bWxHZW5lcmF0b3JQcm9jZXNzT3B0aW9ucyxcbikgPT4gUHJvbWlzZTxzdHJpbmcgfCBJbmRleEh0bWxUcmFuc2Zvcm1SZXN1bHQ+O1xuXG5leHBvcnQgdHlwZSBIaW50TW9kZSA9ICdwcmVmZXRjaCcgfCAncHJlbG9hZCcgfCAnbW9kdWxlcHJlbG9hZCcgfCAncHJlY29ubmVjdCcgfCAnZG5zLXByZWZldGNoJztcblxuZXhwb3J0IGludGVyZmFjZSBJbmRleEh0bWxHZW5lcmF0b3JQcm9jZXNzT3B0aW9ucyB7XG4gIGxhbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYmFzZUhyZWY6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgb3V0cHV0UGF0aDogc3RyaW5nO1xuICBmaWxlczogRmlsZUluZm9bXTtcbiAgaGludHM/OiB7IHVybDogc3RyaW5nOyBtb2RlOiBIaW50TW9kZTsgYXM/OiBzdHJpbmcgfVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4SHRtbEdlbmVyYXRvck9wdGlvbnMge1xuICBpbmRleFBhdGg6IHN0cmluZztcbiAgZGVwbG95VXJsPzogc3RyaW5nO1xuICBzcmk/OiBib29sZWFuO1xuICBlbnRyeXBvaW50czogRW50cnlwb2ludFtdO1xuICBwb3N0VHJhbnNmb3JtPzogSW5kZXhIdG1sVHJhbnNmb3JtO1xuICBjcm9zc09yaWdpbj86IENyb3NzT3JpZ2luVmFsdWU7XG4gIG9wdGltaXphdGlvbj86IE5vcm1hbGl6ZWRPcHRpbWl6YXRpb25PcHRpb25zO1xuICBjYWNoZT86IE5vcm1hbGl6ZWRDYWNoZWRPcHRpb25zO1xufVxuXG5leHBvcnQgdHlwZSBJbmRleEh0bWxUcmFuc2Zvcm0gPSAoY29udGVudDogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhIdG1sVHJhbnNmb3JtUmVzdWx0IHtcbiAgY29udGVudDogc3RyaW5nO1xuICB3YXJuaW5nczogc3RyaW5nW107XG4gIGVycm9yczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBJbmRleEh0bWxHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbnM6IEluZGV4SHRtbEdlbmVyYXRvclBsdWdpbltdO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IG9wdGlvbnM6IEluZGV4SHRtbEdlbmVyYXRvck9wdGlvbnMpIHtcbiAgICBjb25zdCBleHRyYVBsdWdpbnM6IEluZGV4SHRtbEdlbmVyYXRvclBsdWdpbltdID0gW107XG4gICAgaWYgKHRoaXMub3B0aW9ucy5vcHRpbWl6YXRpb24/LmZvbnRzLmlubGluZSkge1xuICAgICAgZXh0cmFQbHVnaW5zLnB1c2goaW5saW5lRm9udHNQbHVnaW4odGhpcykpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMub3B0aW1pemF0aW9uPy5zdHlsZXMuaW5saW5lQ3JpdGljYWwpIHtcbiAgICAgIGV4dHJhUGx1Z2lucy5wdXNoKGlubGluZUNyaXRpY2FsQ3NzUGx1Z2luKHRoaXMpKTtcbiAgICB9XG5cbiAgICB0aGlzLnBsdWdpbnMgPSBbXG4gICAgICBhdWdtZW50SW5kZXhIdG1sUGx1Z2luKHRoaXMpLFxuICAgICAgLi4uZXh0cmFQbHVnaW5zLFxuICAgICAgLy8gUnVucyBhZnRlciB0aGUgYGV4dHJhUGx1Z2luc2AgdG8gY2FwdHVyZSBhbnkgbm9uY2Ugb3JcbiAgICAgIC8vIGBzdHlsZWAgdGFncyB0aGF0IG1pZ2h0J3ZlIGJlZW4gYWRkZWQgYnkgdGhlbS5cbiAgICAgIGFkZFN0eWxlTm9uY2VQbHVnaW4oKSxcbiAgICAgIHBvc3RUcmFuc2Zvcm1QbHVnaW4odGhpcyksXG4gICAgXTtcbiAgfVxuXG4gIGFzeW5jIHByb2Nlc3Mob3B0aW9uczogSW5kZXhIdG1sR2VuZXJhdG9yUHJvY2Vzc09wdGlvbnMpOiBQcm9taXNlPEluZGV4SHRtbFRyYW5zZm9ybVJlc3VsdD4ge1xuICAgIGxldCBjb250ZW50ID0gc3RyaXBCb20oYXdhaXQgdGhpcy5yZWFkSW5kZXgodGhpcy5vcHRpb25zLmluZGV4UGF0aCkpO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHRoaXMucGx1Z2lucykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGx1Z2luKGNvbnRlbnQsIG9wdGlvbnMpO1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnRlbnQgPSByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZW50ID0gcmVzdWx0LmNvbnRlbnQ7XG5cbiAgICAgICAgaWYgKHJlc3VsdC53YXJuaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgICB3YXJuaW5ncy5wdXNoKC4uLnJlc3VsdC53YXJuaW5ncyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzdWx0LmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaCguLi5yZXN1bHQuZXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50LFxuICAgICAgd2FybmluZ3MsXG4gICAgICBlcnJvcnMsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHJlYWRBc3NldChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBmcy5wcm9taXNlcy5yZWFkRmlsZShwYXRoLCAndXRmLTgnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZWFkSW5kZXgocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gZnMucHJvbWlzZXMucmVhZEZpbGUocGF0aCwgJ3V0Zi04Jyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXVnbWVudEluZGV4SHRtbFBsdWdpbihnZW5lcmF0b3I6IEluZGV4SHRtbEdlbmVyYXRvcik6IEluZGV4SHRtbEdlbmVyYXRvclBsdWdpbiB7XG4gIGNvbnN0IHsgZGVwbG95VXJsLCBjcm9zc09yaWdpbiwgc3JpID0gZmFsc2UsIGVudHJ5cG9pbnRzIH0gPSBnZW5lcmF0b3Iub3B0aW9ucztcblxuICByZXR1cm4gYXN5bmMgKGh0bWwsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB7IGxhbmcsIGJhc2VIcmVmLCBvdXRwdXRQYXRoID0gJycsIGZpbGVzLCBoaW50cyB9ID0gb3B0aW9ucztcblxuICAgIHJldHVybiBhdWdtZW50SW5kZXhIdG1sKHtcbiAgICAgIGh0bWwsXG4gICAgICBiYXNlSHJlZixcbiAgICAgIGRlcGxveVVybCxcbiAgICAgIGNyb3NzT3JpZ2luLFxuICAgICAgc3JpLFxuICAgICAgbGFuZyxcbiAgICAgIGVudHJ5cG9pbnRzLFxuICAgICAgbG9hZE91dHB1dEZpbGU6IChmaWxlUGF0aCkgPT4gZ2VuZXJhdG9yLnJlYWRBc3NldChqb2luKG91dHB1dFBhdGgsIGZpbGVQYXRoKSksXG4gICAgICBmaWxlcyxcbiAgICAgIGhpbnRzLFxuICAgIH0pO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbmxpbmVGb250c1BsdWdpbih7IG9wdGlvbnMgfTogSW5kZXhIdG1sR2VuZXJhdG9yKTogSW5kZXhIdG1sR2VuZXJhdG9yUGx1Z2luIHtcbiAgY29uc3QgaW5saW5lRm9udHNQcm9jZXNzb3IgPSBuZXcgSW5saW5lRm9udHNQcm9jZXNzb3Ioe1xuICAgIG1pbmlmeTogb3B0aW9ucy5vcHRpbWl6YXRpb24/LnN0eWxlcy5taW5pZnksXG4gIH0pO1xuXG4gIHJldHVybiBhc3luYyAoaHRtbCkgPT4gaW5saW5lRm9udHNQcm9jZXNzb3IucHJvY2VzcyhodG1sKTtcbn1cblxuZnVuY3Rpb24gaW5saW5lQ3JpdGljYWxDc3NQbHVnaW4oZ2VuZXJhdG9yOiBJbmRleEh0bWxHZW5lcmF0b3IpOiBJbmRleEh0bWxHZW5lcmF0b3JQbHVnaW4ge1xuICBjb25zdCBpbmxpbmVDcml0aWNhbENzc1Byb2Nlc3NvciA9IG5ldyBJbmxpbmVDcml0aWNhbENzc1Byb2Nlc3Nvcih7XG4gICAgbWluaWZ5OiBnZW5lcmF0b3Iub3B0aW9ucy5vcHRpbWl6YXRpb24/LnN0eWxlcy5taW5pZnksXG4gICAgZGVwbG95VXJsOiBnZW5lcmF0b3Iub3B0aW9ucy5kZXBsb3lVcmwsXG4gICAgcmVhZEFzc2V0OiAoZmlsZVBhdGgpID0+IGdlbmVyYXRvci5yZWFkQXNzZXQoZmlsZVBhdGgpLFxuICB9KTtcblxuICByZXR1cm4gYXN5bmMgKGh0bWwsIG9wdGlvbnMpID0+XG4gICAgaW5saW5lQ3JpdGljYWxDc3NQcm9jZXNzb3IucHJvY2VzcyhodG1sLCB7IG91dHB1dFBhdGg6IG9wdGlvbnMub3V0cHV0UGF0aCB9KTtcbn1cblxuZnVuY3Rpb24gYWRkU3R5bGVOb25jZVBsdWdpbigpOiBJbmRleEh0bWxHZW5lcmF0b3JQbHVnaW4ge1xuICByZXR1cm4gKGh0bWwpID0+IGFkZFN0eWxlTm9uY2UoaHRtbCk7XG59XG5cbmZ1bmN0aW9uIHBvc3RUcmFuc2Zvcm1QbHVnaW4oeyBvcHRpb25zIH06IEluZGV4SHRtbEdlbmVyYXRvcik6IEluZGV4SHRtbEdlbmVyYXRvclBsdWdpbiB7XG4gIHJldHVybiBhc3luYyAoaHRtbCkgPT4gKG9wdGlvbnMucG9zdFRyYW5zZm9ybSA/IG9wdGlvbnMucG9zdFRyYW5zZm9ybShodG1sKSA6IGh0bWwpO1xufVxuIl19
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtaHRtbC1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy91dGlscy9pbmRleC1maWxlL2luZGV4LWh0bWwtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsdUNBQXlCO0FBQ3pCLCtCQUE0QjtBQUc1Qiw0Q0FBd0M7QUFDeEMsNkRBQWdHO0FBQ2hHLCtEQUFtRTtBQUNuRSxpREFBc0Q7QUFDdEQsK0NBQThDO0FBcUM5QyxNQUFhLGtCQUFrQjtJQUdSO0lBRkosT0FBTyxDQUE2QjtJQUVyRCxZQUFxQixPQUFrQztRQUFsQyxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQUNyRCxNQUFNLFlBQVksR0FBK0IsRUFBRSxDQUFDO1FBQ3BELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUMzQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDNUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUU7WUFDcEQsWUFBWSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLHNCQUFzQixDQUFDLElBQUksQ0FBQztZQUM1QixHQUFHLFlBQVk7WUFDZix3REFBd0Q7WUFDeEQsaURBQWlEO1lBQ2pELG1CQUFtQixFQUFFO1lBQ3JCLG1CQUFtQixDQUFDLElBQUksQ0FBQztTQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBeUM7UUFD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LEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTO1FBQ3RDLFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7S0FDdkQsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQzdCLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDakYsQ0FBQztBQUVELFNBQVMsbUJBQW1CO0lBQzFCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUEsMkJBQWEsRUFBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxFQUFFLE9BQU8sRUFBc0I7SUFDMUQsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgTm9ybWFsaXplZENhY2hlZE9wdGlvbnMgfSBmcm9tICcuLi9ub3JtYWxpemUtY2FjaGUnO1xuaW1wb3J0IHsgTm9ybWFsaXplZE9wdGltaXphdGlvbk9wdGlvbnMgfSBmcm9tICcuLi9ub3JtYWxpemUtb3B0aW1pemF0aW9uJztcbmltcG9ydCB7IHN0cmlwQm9tIH0gZnJvbSAnLi4vc3RyaXAtYm9tJztcbmltcG9ydCB7IENyb3NzT3JpZ2luVmFsdWUsIEVudHJ5cG9pbnQsIEZpbGVJbmZvLCBhdWdtZW50SW5kZXhIdG1sIH0gZnJvbSAnLi9hdWdtZW50LWluZGV4LWh0bWwnO1xuaW1wb3J0IHsgSW5saW5lQ3JpdGljYWxDc3NQcm9jZXNzb3IgfSBmcm9tICcuL2lubGluZS1jcml0aWNhbC1jc3MnO1xuaW1wb3J0IHsgSW5saW5lRm9udHNQcm9jZXNzb3IgfSBmcm9tICcuL2lubGluZS1mb250cyc7XG5pbXBvcnQgeyBhZGRTdHlsZU5vbmNlIH0gZnJvbSAnLi9zdHlsZS1ub25jZSc7XG5cbnR5cGUgSW5kZXhIdG1sR2VuZXJhdG9yUGx1Z2luID0gKFxuICBodG1sOiBzdHJpbmcsXG4gIG9wdGlvbnM6IEluZGV4SHRtbEdlbmVyYXRvclByb2Nlc3NPcHRpb25zLFxuKSA9PiBQcm9taXNlPHN0cmluZyB8IEluZGV4SHRtbFRyYW5zZm9ybVJlc3VsdD47XG5cbmV4cG9ydCB0eXBlIEhpbnRNb2RlID0gJ3ByZWZldGNoJyB8ICdwcmVsb2FkJyB8ICdtb2R1bGVwcmVsb2FkJyB8ICdwcmVjb25uZWN0JyB8ICdkbnMtcHJlZmV0Y2gnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4SHRtbEdlbmVyYXRvclByb2Nlc3NPcHRpb25zIHtcbiAgbGFuZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBiYXNlSHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBvdXRwdXRQYXRoOiBzdHJpbmc7XG4gIGZpbGVzOiBGaWxlSW5mb1tdO1xuICBoaW50cz86IHsgdXJsOiBzdHJpbmc7IG1vZGU6IEhpbnRNb2RlOyBhcz86IHN0cmluZyB9W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhIdG1sR2VuZXJhdG9yT3B0aW9ucyB7XG4gIGluZGV4UGF0aDogc3RyaW5nO1xuICBkZXBsb3lVcmw/OiBzdHJpbmc7XG4gIHNyaT86IGJvb2xlYW47XG4gIGVudHJ5cG9pbnRzOiBFbnRyeXBvaW50W107XG4gIHBvc3RUcmFuc2Zvcm0/OiBJbmRleEh0bWxUcmFuc2Zvcm07XG4gIGNyb3NzT3JpZ2luPzogQ3Jvc3NPcmlnaW5WYWx1ZTtcbiAgb3B0aW1pemF0aW9uPzogTm9ybWFsaXplZE9wdGltaXphdGlvbk9wdGlvbnM7XG4gIGNhY2hlPzogTm9ybWFsaXplZENhY2hlZE9wdGlvbnM7XG4gIGltYWdlRG9tYWlucz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgdHlwZSBJbmRleEh0bWxUcmFuc2Zvcm0gPSAoY29udGVudDogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhIdG1sVHJhbnNmb3JtUmVzdWx0IHtcbiAgY29udGVudDogc3RyaW5nO1xuICB3YXJuaW5nczogc3RyaW5nW107XG4gIGVycm9yczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBJbmRleEh0bWxHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbnM6IEluZGV4SHRtbEdlbmVyYXRvclBsdWdpbltdO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IG9wdGlvbnM6IEluZGV4SHRtbEdlbmVyYXRvck9wdGlvbnMpIHtcbiAgICBjb25zdCBleHRyYVBsdWdpbnM6IEluZGV4SHRtbEdlbmVyYXRvclBsdWdpbltdID0gW107XG4gICAgaWYgKHRoaXMub3B0aW9ucy5vcHRpbWl6YXRpb24/LmZvbnRzLmlubGluZSkge1xuICAgICAgZXh0cmFQbHVnaW5zLnB1c2goaW5saW5lRm9udHNQbHVnaW4odGhpcykpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMub3B0aW1pemF0aW9uPy5zdHlsZXMuaW5saW5lQ3JpdGljYWwpIHtcbiAgICAgIGV4dHJhUGx1Z2lucy5wdXNoKGlubGluZUNyaXRpY2FsQ3NzUGx1Z2luKHRoaXMpKTtcbiAgICB9XG5cbiAgICB0aGlzLnBsdWdpbnMgPSBbXG4gICAgICBhdWdtZW50SW5kZXhIdG1sUGx1Z2luKHRoaXMpLFxuICAgICAgLi4uZXh0cmFQbHVnaW5zLFxuICAgICAgLy8gUnVucyBhZnRlciB0aGUgYGV4dHJhUGx1Z2luc2AgdG8gY2FwdHVyZSBhbnkgbm9uY2Ugb3JcbiAgICAgIC8vIGBzdHlsZWAgdGFncyB0aGF0IG1pZ2h0J3ZlIGJlZW4gYWRkZWQgYnkgdGhlbS5cbiAgICAgIGFkZFN0eWxlTm9uY2VQbHVnaW4oKSxcbiAgICAgIHBvc3RUcmFuc2Zvcm1QbHVnaW4odGhpcyksXG4gICAgXTtcbiAgfVxuXG4gIGFzeW5jIHByb2Nlc3Mob3B0aW9uczogSW5kZXhIdG1sR2VuZXJhdG9yUHJvY2Vzc09wdGlvbnMpOiBQcm9taXNlPEluZGV4SHRtbFRyYW5zZm9ybVJlc3VsdD4ge1xuICAgIGxldCBjb250ZW50ID0gc3RyaXBCb20oYXdhaXQgdGhpcy5yZWFkSW5kZXgodGhpcy5vcHRpb25zLmluZGV4UGF0aCkpO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHRoaXMucGx1Z2lucykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGx1Z2luKGNvbnRlbnQsIG9wdGlvbnMpO1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnRlbnQgPSByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZW50ID0gcmVzdWx0LmNvbnRlbnQ7XG5cbiAgICAgICAgaWYgKHJlc3VsdC53YXJuaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgICB3YXJuaW5ncy5wdXNoKC4uLnJlc3VsdC53YXJuaW5ncyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzdWx0LmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaCguLi5yZXN1bHQuZXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50LFxuICAgICAgd2FybmluZ3MsXG4gICAgICBlcnJvcnMsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHJlYWRBc3NldChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBmcy5wcm9taXNlcy5yZWFkRmlsZShwYXRoLCAndXRmLTgnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZWFkSW5kZXgocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gZnMucHJvbWlzZXMucmVhZEZpbGUocGF0aCwgJ3V0Zi04Jyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXVnbWVudEluZGV4SHRtbFBsdWdpbihnZW5lcmF0b3I6IEluZGV4SHRtbEdlbmVyYXRvcik6IEluZGV4SHRtbEdlbmVyYXRvclBsdWdpbiB7XG4gIGNvbnN0IHsgZGVwbG95VXJsLCBjcm9zc09yaWdpbiwgc3JpID0gZmFsc2UsIGVudHJ5cG9pbnRzLCBpbWFnZURvbWFpbnMgfSA9IGdlbmVyYXRvci5vcHRpb25zO1xuXG4gIHJldHVybiBhc3luYyAoaHRtbCwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHsgbGFuZywgYmFzZUhyZWYsIG91dHB1dFBhdGggPSAnJywgZmlsZXMsIGhpbnRzIH0gPSBvcHRpb25zO1xuXG4gICAgcmV0dXJuIGF1Z21lbnRJbmRleEh0bWwoe1xuICAgICAgaHRtbCxcbiAgICAgIGJhc2VIcmVmLFxuICAgICAgZGVwbG95VXJsLFxuICAgICAgY3Jvc3NPcmlnaW4sXG4gICAgICBzcmksXG4gICAgICBsYW5nLFxuICAgICAgZW50cnlwb2ludHMsXG4gICAgICBsb2FkT3V0cHV0RmlsZTogKGZpbGVQYXRoKSA9PiBnZW5lcmF0b3IucmVhZEFzc2V0KGpvaW4ob3V0cHV0UGF0aCwgZmlsZVBhdGgpKSxcbiAgICAgIGltYWdlRG9tYWlucyxcbiAgICAgIGZpbGVzLFxuICAgICAgaGludHMsXG4gICAgfSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlubGluZUZvbnRzUGx1Z2luKHsgb3B0aW9ucyB9OiBJbmRleEh0bWxHZW5lcmF0b3IpOiBJbmRleEh0bWxHZW5lcmF0b3JQbHVnaW4ge1xuICBjb25zdCBpbmxpbmVGb250c1Byb2Nlc3NvciA9IG5ldyBJbmxpbmVGb250c1Byb2Nlc3Nvcih7XG4gICAgbWluaWZ5OiBvcHRpb25zLm9wdGltaXphdGlvbj8uc3R5bGVzLm1pbmlmeSxcbiAgfSk7XG5cbiAgcmV0dXJuIGFzeW5jIChodG1sKSA9PiBpbmxpbmVGb250c1Byb2Nlc3Nvci5wcm9jZXNzKGh0bWwpO1xufVxuXG5mdW5jdGlvbiBpbmxpbmVDcml0aWNhbENzc1BsdWdpbihnZW5lcmF0b3I6IEluZGV4SHRtbEdlbmVyYXRvcik6IEluZGV4SHRtbEdlbmVyYXRvclBsdWdpbiB7XG4gIGNvbnN0IGlubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yID0gbmV3IElubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yKHtcbiAgICBtaW5pZnk6IGdlbmVyYXRvci5vcHRpb25zLm9wdGltaXphdGlvbj8uc3R5bGVzLm1pbmlmeSxcbiAgICBkZXBsb3lVcmw6IGdlbmVyYXRvci5vcHRpb25zLmRlcGxveVVybCxcbiAgICByZWFkQXNzZXQ6IChmaWxlUGF0aCkgPT4gZ2VuZXJhdG9yLnJlYWRBc3NldChmaWxlUGF0aCksXG4gIH0pO1xuXG4gIHJldHVybiBhc3luYyAoaHRtbCwgb3B0aW9ucykgPT5cbiAgICBpbmxpbmVDcml0aWNhbENzc1Byb2Nlc3Nvci5wcm9jZXNzKGh0bWwsIHsgb3V0cHV0UGF0aDogb3B0aW9ucy5vdXRwdXRQYXRoIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRTdHlsZU5vbmNlUGx1Z2luKCk6IEluZGV4SHRtbEdlbmVyYXRvclBsdWdpbiB7XG4gIHJldHVybiAoaHRtbCkgPT4gYWRkU3R5bGVOb25jZShodG1sKTtcbn1cblxuZnVuY3Rpb24gcG9zdFRyYW5zZm9ybVBsdWdpbih7IG9wdGlvbnMgfTogSW5kZXhIdG1sR2VuZXJhdG9yKTogSW5kZXhIdG1sR2VuZXJhdG9yUGx1Z2luIHtcbiAgcmV0dXJuIGFzeW5jIChodG1sKSA9PiAob3B0aW9ucy5wb3N0VHJhbnNmb3JtID8gb3B0aW9ucy5wb3N0VHJhbnNmb3JtKGh0bWwpIDogaHRtbCk7XG59XG4iXX0=
|