@angular-devkit/build-angular 17.0.0-next.8 → 17.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/package.json +17 -17
  2. package/src/builders/app-shell/index.js +7 -6
  3. package/src/builders/application/execute-build.js +36 -64
  4. package/src/builders/application/execute-post-bundle.d.ts +25 -0
  5. package/src/builders/application/execute-post-bundle.js +91 -0
  6. package/src/builders/application/i18n.d.ts +1 -0
  7. package/src/builders/application/i18n.js +16 -36
  8. package/src/builders/application/index.d.ts +18 -2
  9. package/src/builders/application/index.js +19 -5
  10. package/src/builders/application/options.d.ts +5 -2
  11. package/src/builders/application/options.js +7 -4
  12. package/src/builders/application/schema.d.ts +11 -4
  13. package/src/builders/application/schema.js +1 -1
  14. package/src/builders/application/schema.json +9 -3
  15. package/src/builders/browser/schema.d.ts +0 -1
  16. package/src/builders/browser/schema.js +1 -1
  17. package/src/builders/browser/schema.json +1 -1
  18. package/src/builders/browser-esbuild/builder-status-warnings.d.ts +1 -1
  19. package/src/builders/browser-esbuild/builder-status-warnings.js +6 -4
  20. package/src/builders/browser-esbuild/index.d.ts +2 -1
  21. package/src/builders/browser-esbuild/index.js +17 -15
  22. package/src/builders/browser-esbuild/schema.d.ts +0 -1
  23. package/src/builders/browser-esbuild/schema.js +1 -1
  24. package/src/builders/browser-esbuild/schema.json +1 -1
  25. package/src/builders/dev-server/builder.d.ts +2 -1
  26. package/src/builders/dev-server/builder.js +9 -3
  27. package/src/builders/dev-server/vite-server.d.ts +2 -1
  28. package/src/builders/dev-server/vite-server.js +35 -13
  29. package/src/builders/prerender/render-worker.js +3 -3
  30. package/src/index.d.ts +1 -0
  31. package/src/index.js +4 -2
  32. package/src/tools/esbuild/angular/compilation/angular-compilation.d.ts +4 -2
  33. package/src/tools/esbuild/angular/compilation/angular-compilation.js +5 -4
  34. package/src/tools/esbuild/angular/compilation/aot-compilation.js +3 -1
  35. package/src/tools/esbuild/angular/compilation/factory.d.ts +16 -0
  36. package/src/tools/esbuild/angular/compilation/factory.js +57 -0
  37. package/src/tools/esbuild/angular/compilation/index.d.ts +1 -2
  38. package/src/tools/esbuild/angular/compilation/index.js +4 -6
  39. package/src/tools/esbuild/angular/compilation/parallel-compilation.d.ts +42 -0
  40. package/src/tools/esbuild/angular/compilation/parallel-compilation.js +122 -0
  41. package/src/tools/esbuild/angular/compilation/parallel-worker.d.ts +32 -0
  42. package/src/tools/esbuild/angular/compilation/parallel-worker.js +91 -0
  43. package/src/tools/esbuild/angular/compiler-plugin.d.ts +1 -0
  44. package/src/tools/esbuild/angular/compiler-plugin.js +100 -48
  45. package/src/tools/esbuild/angular/component-stylesheets.d.ts +2 -1
  46. package/src/tools/esbuild/angular/component-stylesheets.js +8 -6
  47. package/src/tools/esbuild/angular/diagnostics.js +2 -6
  48. package/src/tools/esbuild/angular/file-reference-tracker.d.ts +17 -0
  49. package/src/tools/esbuild/angular/file-reference-tracker.js +54 -0
  50. package/src/tools/esbuild/angular/jit-plugin-callbacks.d.ts +6 -3
  51. package/src/tools/esbuild/angular/jit-plugin-callbacks.js +5 -5
  52. package/src/tools/esbuild/angular/source-file-cache.js +4 -2
  53. package/src/tools/esbuild/application-code-bundle.d.ts +1 -0
  54. package/src/tools/esbuild/application-code-bundle.js +103 -51
  55. package/src/tools/esbuild/bundler-execution-result.d.ts +11 -12
  56. package/src/tools/esbuild/bundler-execution-result.js +8 -3
  57. package/src/tools/esbuild/compiler-plugin-options.js +2 -1
  58. package/src/tools/esbuild/index-html-generator.js +26 -3
  59. package/src/tools/esbuild/stylesheets/bundle-options.js +2 -2
  60. package/src/tools/esbuild/stylesheets/less-language.js +37 -10
  61. package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js +26 -11
  62. package/src/tools/esbuild/utils.d.ts +4 -5
  63. package/src/tools/esbuild/utils.js +28 -14
  64. package/src/utils/environment-options.d.ts +1 -0
  65. package/src/utils/environment-options.js +4 -2
  66. package/src/utils/index-file/inline-critical-css.js +6 -3
  67. package/src/utils/routes-extractor/extractor.js +20 -7
  68. package/src/utils/server-rendering/main-bundle-exports.d.ts +3 -1
  69. package/src/utils/server-rendering/main-bundle-exports.js +1 -1
  70. package/src/utils/server-rendering/prerender.d.ts +2 -1
  71. package/src/utils/server-rendering/prerender.js +43 -11
  72. package/src/utils/server-rendering/render-page.js +42 -4
  73. package/src/utils/service-worker.d.ts +3 -8
  74. package/src/utils/service-worker.js +1 -1
package/package.json CHANGED
@@ -1,26 +1,26 @@
1
1
  {
2
2
  "name": "@angular-devkit/build-angular",
3
- "version": "17.0.0-next.8",
3
+ "version": "17.0.0-rc.0",
4
4
  "description": "Angular Webpack Build Facade",
5
5
  "main": "src/index.js",
6
6
  "typings": "src/index.d.ts",
7
7
  "builders": "builders.json",
8
8
  "dependencies": {
9
9
  "@ampproject/remapping": "2.2.1",
10
- "@angular-devkit/architect": "0.1700.0-next.8",
11
- "@angular-devkit/build-webpack": "0.1700.0-next.8",
12
- "@angular-devkit/core": "17.0.0-next.8",
13
- "@babel/core": "7.23.0",
10
+ "@angular-devkit/architect": "0.1700.0-rc.0",
11
+ "@angular-devkit/build-webpack": "0.1700.0-rc.0",
12
+ "@angular-devkit/core": "17.0.0-rc.0",
13
+ "@babel/core": "7.23.2",
14
14
  "@babel/generator": "7.23.0",
15
15
  "@babel/helper-annotate-as-pure": "7.22.5",
16
16
  "@babel/helper-split-export-declaration": "7.22.6",
17
- "@babel/plugin-transform-async-generator-functions": "7.22.15",
17
+ "@babel/plugin-transform-async-generator-functions": "7.23.2",
18
18
  "@babel/plugin-transform-async-to-generator": "7.22.5",
19
- "@babel/plugin-transform-runtime": "7.22.15",
20
- "@babel/preset-env": "7.22.20",
21
- "@babel/runtime": "7.23.1",
19
+ "@babel/plugin-transform-runtime": "7.23.2",
20
+ "@babel/preset-env": "7.23.2",
21
+ "@babel/runtime": "7.23.2",
22
22
  "@discoveryjs/json-ext": "0.5.7",
23
- "@ngtools/webpack": "17.0.0-next.8",
23
+ "@ngtools/webpack": "17.0.0-rc.0",
24
24
  "@vitejs/plugin-basic-ssl": "1.0.1",
25
25
  "ansi-colors": "4.1.3",
26
26
  "autoprefixer": "10.4.16",
@@ -32,7 +32,7 @@
32
32
  "copy-webpack-plugin": "11.0.0",
33
33
  "critters": "0.0.20",
34
34
  "css-loader": "6.8.1",
35
- "esbuild-wasm": "0.19.4",
35
+ "esbuild-wasm": "0.19.5",
36
36
  "fast-glob": "3.3.1",
37
37
  "https-proxy-agent": "7.0.2",
38
38
  "http-proxy-middleware": "2.0.6",
@@ -43,7 +43,7 @@
43
43
  "less-loader": "11.1.0",
44
44
  "license-webpack-plugin": "4.0.2",
45
45
  "loader-utils": "3.2.1",
46
- "magic-string": "0.30.4",
46
+ "magic-string": "0.30.5",
47
47
  "mini-css-extract-plugin": "2.7.6",
48
48
  "mrmime": "1.0.1",
49
49
  "open": "8.4.2",
@@ -60,19 +60,19 @@
60
60
  "semver": "7.5.4",
61
61
  "source-map-loader": "4.0.1",
62
62
  "source-map-support": "0.5.21",
63
- "terser": "5.21.0",
63
+ "terser": "5.22.0",
64
64
  "text-table": "0.2.0",
65
65
  "tree-kill": "1.2.2",
66
66
  "tslib": "2.6.2",
67
- "vite": "4.4.11",
68
- "webpack": "5.88.2",
67
+ "vite": "4.5.0",
68
+ "webpack": "5.89.0",
69
69
  "webpack-dev-middleware": "6.1.1",
70
70
  "webpack-dev-server": "4.15.1",
71
- "webpack-merge": "5.9.0",
71
+ "webpack-merge": "5.10.0",
72
72
  "webpack-subresource-integrity": "5.1.0"
73
73
  },
74
74
  "optionalDependencies": {
75
- "esbuild": "0.19.4"
75
+ "esbuild": "0.19.5"
76
76
  },
77
77
  "peerDependencies": {
78
78
  "@angular/compiler-cli": "^17.0.0 || ^17.0.0-next.0",
@@ -39,7 +39,6 @@ const path = __importStar(require("path"));
39
39
  const piscina_1 = __importDefault(require("piscina"));
40
40
  const utils_1 = require("../../utils");
41
41
  const error_1 = require("../../utils/error");
42
- const inline_critical_css_1 = require("../../utils/index-file/inline-critical-css");
43
42
  const service_worker_1 = require("../../utils/service-worker");
44
43
  const spinner_1 = require("../../utils/spinner");
45
44
  async function _renderUniversal(options, context, browserResult, serverResult, spinner) {
@@ -58,12 +57,14 @@ async function _renderUniversal(options, context, browserResult, serverResult, s
58
57
  const projectMetadata = await context.getProjectMetadata(projectName);
59
58
  const projectRoot = path.join(root, projectMetadata.root ?? '');
60
59
  const { styles } = (0, utils_1.normalizeOptimization)(browserOptions.optimization);
61
- const inlineCriticalCssProcessor = styles.inlineCritical
62
- ? new inline_critical_css_1.InlineCriticalCssProcessor({
60
+ let inlineCriticalCssProcessor;
61
+ if (styles.inlineCritical) {
62
+ const { InlineCriticalCssProcessor } = await Promise.resolve().then(() => __importStar(require('../../utils/index-file/inline-critical-css')));
63
+ inlineCriticalCssProcessor = new InlineCriticalCssProcessor({
63
64
  minify: styles.minify,
64
65
  deployUrl: browserOptions.deployUrl,
65
- })
66
- : undefined;
66
+ });
67
+ }
67
68
  const renderWorker = new piscina_1.default({
68
69
  filename: require.resolve('./render-worker'),
69
70
  maxThreads: 1,
@@ -167,4 +168,4 @@ async function _appShellBuilder(options, context) {
167
168
  }
168
169
  }
169
170
  exports.default = (0, architect_1.createBuilder)(_appShellBuilder);
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9hcHAtc2hlbGwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHlEQUttQztBQUVuQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLHNEQUE4QjtBQUM5Qix1Q0FBb0Q7QUFDcEQsNkNBQWtEO0FBQ2xELG9GQUF3RjtBQUN4RiwrREFBeUU7QUFDekUsaURBQThDO0FBTTlDLEtBQUssVUFBVSxnQkFBZ0IsQ0FDN0IsT0FBbUMsRUFDbkMsT0FBdUIsRUFDdkIsYUFBbUMsRUFDbkMsWUFBaUMsRUFDakMsT0FBZ0I7SUFFaEIsOEJBQThCO0lBQzlCLE1BQU0sYUFBYSxHQUFHLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FDbEQsQ0FBQztJQUN2QixNQUFNLGtCQUFrQixHQUFHLE1BQU0sT0FBTyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hGLE1BQU0sY0FBYyxHQUFHLE1BQU0sT0FBTyxDQUFDLGVBQWUsQ0FDbEQsaUJBQWlCLEVBQ2pCLGtCQUFrQixDQUNuQixDQUFDO0lBRUYsOENBQThDO0lBQzlDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDbkMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFbEUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUM3RCxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztLQUNuRDtJQUVELE1BQU0sZUFBZSxHQUFHLE1BQU0sT0FBTyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFHLGVBQWUsQ0FBQyxJQUEyQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXhGLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLDZCQUFxQixFQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN0RSxNQUFNLDBCQUEwQixHQUFHLE1BQU0sQ0FBQyxjQUFjO1FBQ3RELENBQUMsQ0FBQyxJQUFJLGdEQUEwQixDQUFDO1lBQzdCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixTQUFTLEVBQUUsY0FBYyxDQUFDLFNBQVM7U0FDcEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFZCxNQUFNLFlBQVksR0FBRyxJQUFJLGlCQUFPLENBQUM7UUFDL0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDNUMsVUFBVSxFQUFFLENBQUM7UUFDYixVQUFVLEVBQUUsRUFBRSxXQUFXLEVBQUU7S0FDNUIsQ0FBQyxDQUFDO0lBRUgsSUFBSTtRQUNGLEtBQUssTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRTtZQUNsRSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEYsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNuRSxNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzdFLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSwwQkFBMEIsQ0FDdkQsT0FBTyxFQUNQLE9BQU8sRUFDUCxZQUFZLEVBQ1osZUFBZSxDQUNoQixDQUFDO1lBRUYsSUFBSSxJQUFJLEdBQVcsTUFBTSxZQUFZLENBQUMsR0FBRyxDQUFDO2dCQUN4QyxnQkFBZ0I7Z0JBQ2hCLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUs7YUFDbkIsQ0FBQyxDQUFDO1lBRUgsbUNBQW1DO1lBQ25DLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlO2dCQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO1lBRTNCLElBQUksMEJBQTBCLEVBQUU7Z0JBQzlCLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sMEJBQTBCLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtvQkFDbkYsVUFBVTtpQkFDWCxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxHQUFHLE9BQU8sQ0FBQztnQkFFZixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtvQkFDcEMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNmLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDakI7YUFDRjtZQUVELE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRW5ELElBQUksY0FBYyxDQUFDLGFBQWEsRUFBRTtnQkFDaEMsTUFBTSxJQUFBLDRDQUEyQixFQUMvQixXQUFXLEVBQ1gsSUFBSSxFQUNKLFVBQVUsRUFDVixRQUFRLElBQUksR0FBRyxFQUNmLGNBQWMsQ0FBQyxjQUFjLENBQzlCLENBQUM7YUFDSDtTQUNGO0tBQ0Y7WUFBUztRQUNSLE1BQU0sWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQzlCO0lBRUQsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVELEtBQUssVUFBVSwwQkFBMEIsQ0FDdkMsT0FBbUMsRUFDbkMsT0FBdUIsRUFDdkIsWUFBaUMsRUFDakMsc0JBQThCO0lBRTlCLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRTtRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDbEU7SUFFRCxNQUFNLEVBQUUsY0FBYyxHQUFHLEVBQUUsRUFBRSxHQUFHLFlBQVksQ0FBQztJQUM3QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBRXJFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLFVBQVUsR0FBRyxDQUFDLENBQUM7S0FDM0U7SUFFRCxNQUFNLEVBQUUsR0FBRyxrQ0FBa0MsQ0FBQztJQUM5QyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXJFLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7S0FDcEQ7SUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxLQUFLLFVBQVUsZ0JBQWdCLENBQzdCLE9BQW1DLEVBQ25DLE9BQXVCO0lBRXZCLE1BQU0sYUFBYSxHQUFHLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sWUFBWSxHQUFHLElBQUEsa0NBQXNCLEVBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRWxFLDhDQUE4QztJQUM5Qyx1RUFBdUU7SUFDdkUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FDL0MsQ0FBQztJQUV2QixNQUFNLFlBQVksR0FBRyxJQUFBLDZCQUFxQixFQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RSxZQUFZLENBQUMsTUFBTSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFFM0MsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFO1FBQ25FLEtBQUssRUFBRSxLQUFLO1FBQ1osYUFBYSxFQUFFLEtBQUs7UUFDcEIsWUFBWSxFQUFFLFlBQXFDO0tBQ3BELENBQUMsQ0FBQztJQUNILE1BQU0sZUFBZSxHQUFHLE1BQU0sT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUU7UUFDakUsS0FBSyxFQUFFLEtBQUs7S0FDYixDQUFDLENBQUM7SUFFSCxJQUFJLE9BQTRCLENBQUM7SUFFakMsSUFBSTtRQUNGLE1BQU0sQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ3RELGdCQUFnQixDQUFDLE1BQXVDO1lBQ3hELGVBQWUsQ0FBQyxNQUFzQztTQUN2RCxDQUFDLENBQUM7UUFFSCxJQUFJLGFBQWEsQ0FBQyxPQUFPLEtBQUssS0FBSyxJQUFJLGFBQWEsQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFO1lBQ2pGLE9BQU8sYUFBYSxDQUFDO1NBQ3RCO2FBQU0sSUFBSSxZQUFZLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtZQUN6QyxPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUVELE9BQU8sR0FBRyxJQUFJLGlCQUFPLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDakQsTUFBTSxNQUFNLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUYsT0FBTyxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBRTFELE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFBQyxPQUFPLEdBQUcsRUFBRTtRQUNaLE9BQU8sRUFBRSxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUN0RCxJQUFBLHFCQUFhLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFFbkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUMvQztZQUFTO1FBQ1IsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN0RTtBQUNILENBQUM7QUFFRCxrQkFBZSxJQUFBLHlCQUFhLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBCdWlsZGVyQ29udGV4dCxcbiAgQnVpbGRlck91dHB1dCxcbiAgY3JlYXRlQnVpbGRlcixcbiAgdGFyZ2V0RnJvbVRhcmdldFN0cmluZyxcbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2FyY2hpdGVjdCc7XG5pbXBvcnQgeyBKc29uT2JqZWN0IH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBQaXNjaW5hIGZyb20gJ3Bpc2NpbmEnO1xuaW1wb3J0IHsgbm9ybWFsaXplT3B0aW1pemF0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgYXNzZXJ0SXNFcnJvciB9IGZyb20gJy4uLy4uL3V0aWxzL2Vycm9yJztcbmltcG9ydCB7IElubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW5kZXgtZmlsZS9pbmxpbmUtY3JpdGljYWwtY3NzJztcbmltcG9ydCB7IGF1Z21lbnRBcHBXaXRoU2VydmljZVdvcmtlciB9IGZyb20gJy4uLy4uL3V0aWxzL3NlcnZpY2Utd29ya2VyJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi8uLi91dGlscy9zcGlubmVyJztcbmltcG9ydCB7IEJyb3dzZXJCdWlsZGVyT3V0cHV0IH0gZnJvbSAnLi4vYnJvd3Nlcic7XG5pbXBvcnQgeyBTY2hlbWEgYXMgQnJvd3NlckJ1aWxkZXJTY2hlbWEgfSBmcm9tICcuLi9icm93c2VyL3NjaGVtYSc7XG5pbXBvcnQgeyBTZXJ2ZXJCdWlsZGVyT3V0cHV0IH0gZnJvbSAnLi4vc2VydmVyJztcbmltcG9ydCB7IFNjaGVtYSBhcyBCdWlsZFdlYnBhY2tBcHBTaGVsbFNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcblxuYXN5bmMgZnVuY3Rpb24gX3JlbmRlclVuaXZlcnNhbChcbiAgb3B0aW9uczogQnVpbGRXZWJwYWNrQXBwU2hlbGxTY2hlbWEsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICBicm93c2VyUmVzdWx0OiBCcm93c2VyQnVpbGRlck91dHB1dCxcbiAgc2VydmVyUmVzdWx0OiBTZXJ2ZXJCdWlsZGVyT3V0cHV0LFxuICBzcGlubmVyOiBTcGlubmVyLFxuKTogUHJvbWlzZTxCcm93c2VyQnVpbGRlck91dHB1dD4ge1xuICAvLyBHZXQgYnJvd3NlciB0YXJnZXQgb3B0aW9ucy5cbiAgY29uc3QgYnJvd3NlclRhcmdldCA9IHRhcmdldEZyb21UYXJnZXRTdHJpbmcob3B0aW9ucy5icm93c2VyVGFyZ2V0KTtcbiAgY29uc3QgcmF3QnJvd3Nlck9wdGlvbnMgPSAoYXdhaXQgY29udGV4dC5nZXRUYXJnZXRPcHRpb25zKGJyb3dzZXJUYXJnZXQpKSBhcyBKc29uT2JqZWN0ICZcbiAgICBCcm93c2VyQnVpbGRlclNjaGVtYTtcbiAgY29uc3QgYnJvd3NlckJ1aWxkZXJOYW1lID0gYXdhaXQgY29udGV4dC5nZXRCdWlsZGVyTmFtZUZvclRhcmdldChicm93c2VyVGFyZ2V0KTtcbiAgY29uc3QgYnJvd3Nlck9wdGlvbnMgPSBhd2FpdCBjb250ZXh0LnZhbGlkYXRlT3B0aW9uczxKc29uT2JqZWN0ICYgQnJvd3NlckJ1aWxkZXJTY2hlbWE+KFxuICAgIHJhd0Jyb3dzZXJPcHRpb25zLFxuICAgIGJyb3dzZXJCdWlsZGVyTmFtZSxcbiAgKTtcblxuICAvLyBMb2NhdGUgem9uZS5qcyB0byBsb2FkIGluIHRoZSByZW5kZXIgd29ya2VyXG4gIGNvbnN0IHJvb3QgPSBjb250ZXh0LndvcmtzcGFjZVJvb3Q7XG4gIGNvbnN0IHpvbmVQYWNrYWdlID0gcmVxdWlyZS5yZXNvbHZlKCd6b25lLmpzJywgeyBwYXRoczogW3Jvb3RdIH0pO1xuXG4gIGNvbnN0IHByb2plY3ROYW1lID0gY29udGV4dC50YXJnZXQgJiYgY29udGV4dC50YXJnZXQucHJvamVjdDtcbiAgaWYgKCFwcm9qZWN0TmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGJ1aWxkZXIgcmVxdWlyZXMgYSB0YXJnZXQuJyk7XG4gIH1cblxuICBjb25zdCBwcm9qZWN0TWV0YWRhdGEgPSBhd2FpdCBjb250ZXh0LmdldFByb2plY3RNZXRhZGF0YShwcm9qZWN0TmFtZSk7XG4gIGNvbnN0IHByb2plY3RSb290ID0gcGF0aC5qb2luKHJvb3QsIChwcm9qZWN0TWV0YWRhdGEucm9vdCBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/ICcnKTtcblxuICBjb25zdCB7IHN0eWxlcyB9ID0gbm9ybWFsaXplT3B0aW1pemF0aW9uKGJyb3dzZXJPcHRpb25zLm9wdGltaXphdGlvbik7XG4gIGNvbnN0IGlubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yID0gc3R5bGVzLmlubGluZUNyaXRpY2FsXG4gICAgPyBuZXcgSW5saW5lQ3JpdGljYWxDc3NQcm9jZXNzb3Ioe1xuICAgICAgICBtaW5pZnk6IHN0eWxlcy5taW5pZnksXG4gICAgICAgIGRlcGxveVVybDogYnJvd3Nlck9wdGlvbnMuZGVwbG95VXJsLFxuICAgICAgfSlcbiAgICA6IHVuZGVmaW5lZDtcblxuICBjb25zdCByZW5kZXJXb3JrZXIgPSBuZXcgUGlzY2luYSh7XG4gICAgZmlsZW5hbWU6IHJlcXVpcmUucmVzb2x2ZSgnLi9yZW5kZXItd29ya2VyJyksXG4gICAgbWF4VGhyZWFkczogMSxcbiAgICB3b3JrZXJEYXRhOiB7IHpvbmVQYWNrYWdlIH0sXG4gIH0pO1xuXG4gIHRyeSB7XG4gICAgZm9yIChjb25zdCB7IHBhdGg6IG91dHB1dFBhdGgsIGJhc2VIcmVmIH0gb2YgYnJvd3NlclJlc3VsdC5vdXRwdXRzKSB7XG4gICAgICBjb25zdCBsb2NhbGVEaXJlY3RvcnkgPSBwYXRoLnJlbGF0aXZlKGJyb3dzZXJSZXN1bHQuYmFzZU91dHB1dFBhdGgsIG91dHB1dFBhdGgpO1xuICAgICAgY29uc3QgYnJvd3NlckluZGV4T3V0cHV0UGF0aCA9IHBhdGguam9pbihvdXRwdXRQYXRoLCAnaW5kZXguaHRtbCcpO1xuICAgICAgY29uc3QgaW5kZXhIdG1sID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoYnJvd3NlckluZGV4T3V0cHV0UGF0aCwgJ3V0ZjgnKTtcbiAgICAgIGNvbnN0IHNlcnZlckJ1bmRsZVBhdGggPSBhd2FpdCBfZ2V0U2VydmVyTW9kdWxlQnVuZGxlUGF0aChcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc2VydmVyUmVzdWx0LFxuICAgICAgICBsb2NhbGVEaXJlY3RvcnksXG4gICAgICApO1xuXG4gICAgICBsZXQgaHRtbDogc3RyaW5nID0gYXdhaXQgcmVuZGVyV29ya2VyLnJ1bih7XG4gICAgICAgIHNlcnZlckJ1bmRsZVBhdGgsXG4gICAgICAgIGRvY3VtZW50OiBpbmRleEh0bWwsXG4gICAgICAgIHVybDogb3B0aW9ucy5yb3V0ZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBPdmVyd3JpdGUgdGhlIGNsaWVudCBpbmRleCBmaWxlLlxuICAgICAgY29uc3Qgb3V0cHV0SW5kZXhQYXRoID0gb3B0aW9ucy5vdXRwdXRJbmRleFBhdGhcbiAgICAgICAgPyBwYXRoLmpvaW4ocm9vdCwgb3B0aW9ucy5vdXRwdXRJbmRleFBhdGgpXG4gICAgICAgIDogYnJvd3NlckluZGV4T3V0cHV0UGF0aDtcblxuICAgICAgaWYgKGlubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yKSB7XG4gICAgICAgIGNvbnN0IHsgY29udGVudCwgd2FybmluZ3MsIGVycm9ycyB9ID0gYXdhaXQgaW5saW5lQ3JpdGljYWxDc3NQcm9jZXNzb3IucHJvY2VzcyhodG1sLCB7XG4gICAgICAgICAgb3V0cHV0UGF0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIGh0bWwgPSBjb250ZW50O1xuXG4gICAgICAgIGlmICh3YXJuaW5ncy5sZW5ndGggfHwgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgIHNwaW5uZXIuc3RvcCgpO1xuICAgICAgICAgIHdhcm5pbmdzLmZvckVhY2goKG0pID0+IGNvbnRleHQubG9nZ2VyLndhcm4obSkpO1xuICAgICAgICAgIGVycm9ycy5mb3JFYWNoKChtKSA9PiBjb250ZXh0LmxvZ2dlci5lcnJvcihtKSk7XG4gICAgICAgICAgc3Bpbm5lci5zdGFydCgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShvdXRwdXRJbmRleFBhdGgsIGh0bWwpO1xuXG4gICAgICBpZiAoYnJvd3Nlck9wdGlvbnMuc2VydmljZVdvcmtlcikge1xuICAgICAgICBhd2FpdCBhdWdtZW50QXBwV2l0aFNlcnZpY2VXb3JrZXIoXG4gICAgICAgICAgcHJvamVjdFJvb3QsXG4gICAgICAgICAgcm9vdCxcbiAgICAgICAgICBvdXRwdXRQYXRoLFxuICAgICAgICAgIGJhc2VIcmVmID8/ICcvJyxcbiAgICAgICAgICBicm93c2VyT3B0aW9ucy5uZ3N3Q29uZmlnUGF0aCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcmVuZGVyV29ya2VyLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHJldHVybiBicm93c2VyUmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiBfZ2V0U2VydmVyTW9kdWxlQnVuZGxlUGF0aChcbiAgb3B0aW9uczogQnVpbGRXZWJwYWNrQXBwU2hlbGxTY2hlbWEsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICBzZXJ2ZXJSZXN1bHQ6IFNlcnZlckJ1aWxkZXJPdXRwdXQsXG4gIGJyb3dzZXJMb2NhbGVEaXJlY3Rvcnk6IHN0cmluZyxcbikge1xuICBpZiAob3B0aW9ucy5hcHBNb2R1bGVCdW5kbGUpIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKGNvbnRleHQud29ya3NwYWNlUm9vdCwgb3B0aW9ucy5hcHBNb2R1bGVCdW5kbGUpO1xuICB9XG5cbiAgY29uc3QgeyBiYXNlT3V0cHV0UGF0aCA9ICcnIH0gPSBzZXJ2ZXJSZXN1bHQ7XG4gIGNvbnN0IG91dHB1dFBhdGggPSBwYXRoLmpvaW4oYmFzZU91dHB1dFBhdGgsIGJyb3dzZXJMb2NhbGVEaXJlY3RvcnkpO1xuXG4gIGlmICghZnMuZXhpc3RzU3luYyhvdXRwdXRQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgc2VydmVyIG91dHB1dCBkaXJlY3Rvcnk6ICR7b3V0cHV0UGF0aH0uYCk7XG4gIH1cblxuICBjb25zdCByZSA9IC9ebWFpblxcLig/OlthLXpBLVowLTldezE2fVxcLik/anMkLztcbiAgY29uc3QgbWF5YmVNYWluID0gZnMucmVhZGRpclN5bmMob3V0cHV0UGF0aCkuZmluZCgoeCkgPT4gcmUudGVzdCh4KSk7XG5cbiAgaWYgKCFtYXliZU1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHRoZSBtYWluIGJ1bmRsZS4nKTtcbiAgfVxuXG4gIHJldHVybiBwYXRoLmpvaW4ob3V0cHV0UGF0aCwgbWF5YmVNYWluKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2FwcFNoZWxsQnVpbGRlcihcbiAgb3B0aW9uczogQnVpbGRXZWJwYWNrQXBwU2hlbGxTY2hlbWEsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuKTogUHJvbWlzZTxCdWlsZGVyT3V0cHV0PiB7XG4gIGNvbnN0IGJyb3dzZXJUYXJnZXQgPSB0YXJnZXRGcm9tVGFyZ2V0U3RyaW5nKG9wdGlvbnMuYnJvd3NlclRhcmdldCk7XG4gIGNvbnN0IHNlcnZlclRhcmdldCA9IHRhcmdldEZyb21UYXJnZXRTdHJpbmcob3B0aW9ucy5zZXJ2ZXJUYXJnZXQpO1xuXG4gIC8vIE5ldmVyIHJ1biB0aGUgYnJvd3NlciB0YXJnZXQgaW4gd2F0Y2ggbW9kZS5cbiAgLy8gSWYgc2VydmljZSB3b3JrZXIgaXMgbmVlZGVkLCBpdCB3aWxsIGJlIGFkZGVkIGluIF9yZW5kZXJVbml2ZXJzYWwoKTtcbiAgY29uc3QgYnJvd3Nlck9wdGlvbnMgPSAoYXdhaXQgY29udGV4dC5nZXRUYXJnZXRPcHRpb25zKGJyb3dzZXJUYXJnZXQpKSBhcyBKc29uT2JqZWN0ICZcbiAgICBCcm93c2VyQnVpbGRlclNjaGVtYTtcblxuICBjb25zdCBvcHRpbWl6YXRpb24gPSBub3JtYWxpemVPcHRpbWl6YXRpb24oYnJvd3Nlck9wdGlvbnMub3B0aW1pemF0aW9uKTtcbiAgb3B0aW1pemF0aW9uLnN0eWxlcy5pbmxpbmVDcml0aWNhbCA9IGZhbHNlO1xuXG4gIGNvbnN0IGJyb3dzZXJUYXJnZXRSdW4gPSBhd2FpdCBjb250ZXh0LnNjaGVkdWxlVGFyZ2V0KGJyb3dzZXJUYXJnZXQsIHtcbiAgICB3YXRjaDogZmFsc2UsXG4gICAgc2VydmljZVdvcmtlcjogZmFsc2UsXG4gICAgb3B0aW1pemF0aW9uOiBvcHRpbWl6YXRpb24gYXMgdW5rbm93biBhcyBKc29uT2JqZWN0LFxuICB9KTtcbiAgY29uc3Qgc2VydmVyVGFyZ2V0UnVuID0gYXdhaXQgY29udGV4dC5zY2hlZHVsZVRhcmdldChzZXJ2ZXJUYXJnZXQsIHtcbiAgICB3YXRjaDogZmFsc2UsXG4gIH0pO1xuXG4gIGxldCBzcGlubmVyOiBTcGlubmVyIHwgdW5kZWZpbmVkO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgW2Jyb3dzZXJSZXN1bHQsIHNlcnZlclJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBicm93c2VyVGFyZ2V0UnVuLnJlc3VsdCBhcyBQcm9taXNlPEJyb3dzZXJCdWlsZGVyT3V0cHV0PixcbiAgICAgIHNlcnZlclRhcmdldFJ1bi5yZXN1bHQgYXMgUHJvbWlzZTxTZXJ2ZXJCdWlsZGVyT3V0cHV0PixcbiAgICBdKTtcblxuICAgIGlmIChicm93c2VyUmVzdWx0LnN1Y2Nlc3MgPT09IGZhbHNlIHx8IGJyb3dzZXJSZXN1bHQuYmFzZU91dHB1dFBhdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGJyb3dzZXJSZXN1bHQ7XG4gICAgfSBlbHNlIGlmIChzZXJ2ZXJSZXN1bHQuc3VjY2VzcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBzZXJ2ZXJSZXN1bHQ7XG4gICAgfVxuXG4gICAgc3Bpbm5lciA9IG5ldyBTcGlubmVyKCk7XG4gICAgc3Bpbm5lci5zdGFydCgnR2VuZXJhdGluZyBhcHBsaWNhdGlvbiBzaGVsbC4uLicpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IF9yZW5kZXJVbml2ZXJzYWwob3B0aW9ucywgY29udGV4dCwgYnJvd3NlclJlc3VsdCwgc2VydmVyUmVzdWx0LCBzcGlubmVyKTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ0FwcGxpY2F0aW9uIHNoZWxsIGdlbmVyYXRpb24gY29tcGxldGUuJyk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBzcGlubmVyPy5mYWlsKCdBcHBsaWNhdGlvbiBzaGVsbCBnZW5lcmF0aW9uIGZhaWxlZC4nKTtcbiAgICBhc3NlcnRJc0Vycm9yKGVycik7XG5cbiAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6IGVyci5tZXNzYWdlIH07XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW2Jyb3dzZXJUYXJnZXRSdW4uc3RvcCgpLCBzZXJ2ZXJUYXJnZXRSdW4uc3RvcCgpXSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQnVpbGRlcihfYXBwU2hlbGxCdWlsZGVyKTtcbiJdfQ==
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9hcHAtc2hlbGwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHlEQUttQztBQUVuQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLHNEQUE4QjtBQUM5Qix1Q0FBb0Q7QUFDcEQsNkNBQWtEO0FBRWxELCtEQUF5RTtBQUN6RSxpREFBOEM7QUFNOUMsS0FBSyxVQUFVLGdCQUFnQixDQUM3QixPQUFtQyxFQUNuQyxPQUF1QixFQUN2QixhQUFtQyxFQUNuQyxZQUFpQyxFQUNqQyxPQUFnQjtJQUVoQiw4QkFBOEI7SUFDOUIsTUFBTSxhQUFhLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEUsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUNsRCxDQUFDO0lBQ3ZCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxPQUFPLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEYsTUFBTSxjQUFjLEdBQUcsTUFBTSxPQUFPLENBQUMsZUFBZSxDQUNsRCxpQkFBaUIsRUFDakIsa0JBQWtCLENBQ25CLENBQUM7SUFFRiw4Q0FBOEM7SUFDOUMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUNuQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVsRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8s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QUMsTUFBdUM7WUFDeEQsZUFBZSxDQUFDLE1BQXNDO1NBQ3ZELENBQUMsQ0FBQztRQUVILElBQUksYUFBYSxDQUFDLE9BQU8sS0FBSyxLQUFLLElBQUksYUFBYSxDQUFDLGNBQWMsS0FBSyxTQUFTLEVBQUU7WUFDakYsT0FBTyxhQUFhLENBQUM7U0FDdEI7YUFBTSxJQUFJLFlBQVksQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFO1lBQ3pDLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO1FBRUQsT0FBTyxHQUFHLElBQUksaUJBQU8sRUFBRSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUNqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5RixPQUFPLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFFMUQsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osT0FBTyxFQUFFLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQ3RELElBQUEscUJBQWEsRUFBQyxHQUFHLENBQUMsQ0FBQztRQUVuQixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQy9DO1lBQVM7UUFDUixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3RFO0FBQ0gsQ0FBQztBQUVELGtCQUFlLElBQUEseUJBQWEsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7XG4gIEJ1aWxkZXJDb250ZXh0LFxuICBCdWlsZGVyT3V0cHV0LFxuICBjcmVhdGVCdWlsZGVyLFxuICB0YXJnZXRGcm9tVGFyZ2V0U3RyaW5nLFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcbmltcG9ydCB7IEpzb25PYmplY3QgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IFBpc2NpbmEgZnJvbSAncGlzY2luYSc7XG5pbXBvcnQgeyBub3JtYWxpemVPcHRpbWl6YXRpb24gfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBhc3NlcnRJc0Vycm9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvZXJyb3InO1xuaW1wb3J0IHR5cGUgeyBJbmxpbmVDcml0aWNhbENzc1Byb2Nlc3NvciB9IGZyb20gJy4uLy4uL3V0aWxzL2luZGV4LWZpbGUvaW5saW5lLWNyaXRpY2FsLWNzcyc7XG5pbXBvcnQgeyBhdWdtZW50QXBwV2l0aFNlcnZpY2VXb3JrZXIgfSBmcm9tICcuLi8uLi91dGlscy9zZXJ2aWNlLXdvcmtlcic7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3Bpbm5lcic7XG5pbXBvcnQgeyBCcm93c2VyQnVpbGRlck91dHB1dCB9IGZyb20gJy4uL2Jyb3dzZXInO1xuaW1wb3J0IHsgU2NoZW1hIGFzIEJyb3dzZXJCdWlsZGVyU2NoZW1hIH0gZnJvbSAnLi4vYnJvd3Nlci9zY2hlbWEnO1xuaW1wb3J0IHsgU2VydmVyQnVpbGRlck91dHB1dCB9IGZyb20gJy4uL3NlcnZlcic7XG5pbXBvcnQgeyBTY2hlbWEgYXMgQnVpbGRXZWJwYWNrQXBwU2hlbGxTY2hlbWEgfSBmcm9tICcuL3NjaGVtYSc7XG5cbmFzeW5jIGZ1bmN0aW9uIF9yZW5kZXJVbml2ZXJzYWwoXG4gIG9wdGlvbnM6IEJ1aWxkV2VicGFja0FwcFNoZWxsU2NoZW1hLFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgYnJvd3NlclJlc3VsdDogQnJvd3NlckJ1aWxkZXJPdXRwdXQsXG4gIHNlcnZlclJlc3VsdDogU2VydmVyQnVpbGRlck91dHB1dCxcbiAgc3Bpbm5lcjogU3Bpbm5lcixcbik6IFByb21pc2U8QnJvd3NlckJ1aWxkZXJPdXRwdXQ+IHtcbiAgLy8gR2V0IGJyb3dzZXIgdGFyZ2V0IG9wdGlvbnMuXG4gIGNvbnN0IGJyb3dzZXJUYXJnZXQgPSB0YXJnZXRGcm9tVGFyZ2V0U3RyaW5nKG9wdGlvbnMuYnJvd3NlclRhcmdldCk7XG4gIGNvbnN0IHJhd0Jyb3dzZXJPcHRpb25zID0gKGF3YWl0IGNvbnRleHQuZ2V0VGFyZ2V0T3B0aW9ucyhicm93c2VyVGFyZ2V0KSkgYXMgSnNvbk9iamVjdCAmXG4gICAgQnJvd3NlckJ1aWxkZXJTY2hlbWE7XG4gIGNvbnN0IGJyb3dzZXJCdWlsZGVyTmFtZSA9IGF3YWl0IGNvbnRleHQuZ2V0QnVpbGRlck5hbWVGb3JUYXJnZXQoYnJvd3NlclRhcmdldCk7XG4gIGNvbnN0IGJyb3dzZXJPcHRpb25zID0gYXdhaXQgY29udGV4dC52YWxpZGF0ZU9wdGlvbnM8SnNvbk9iamVjdCAmIEJyb3dzZXJCdWlsZGVyU2NoZW1hPihcbiAgICByYXdCcm93c2VyT3B0aW9ucyxcbiAgICBicm93c2VyQnVpbGRlck5hbWUsXG4gICk7XG5cbiAgLy8gTG9jYXRlIHpvbmUuanMgdG8gbG9hZCBpbiB0aGUgcmVuZGVyIHdvcmtlclxuICBjb25zdCByb290ID0gY29udGV4dC53b3Jrc3BhY2VSb290O1xuICBjb25zdCB6b25lUGFja2FnZSA9IHJlcXVpcmUucmVzb2x2ZSgnem9uZS5qcycsIHsgcGF0aHM6IFtyb290XSB9KTtcblxuICBjb25zdCBwcm9qZWN0TmFtZSA9IGNvbnRleHQudGFyZ2V0ICYmIGNvbnRleHQudGFyZ2V0LnByb2plY3Q7XG4gIGlmICghcHJvamVjdE5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBidWlsZGVyIHJlcXVpcmVzIGEgdGFyZ2V0LicpO1xuICB9XG5cbiAgY29uc3QgcHJvamVjdE1ldGFkYXRhID0gYXdhaXQgY29udGV4dC5nZXRQcm9qZWN0TWV0YWRhdGEocHJvamVjdE5hbWUpO1xuICBjb25zdCBwcm9qZWN0Um9vdCA9IHBhdGguam9pbihyb290LCAocHJvamVjdE1ldGFkYXRhLnJvb3QgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSA/PyAnJyk7XG5cbiAgY29uc3QgeyBzdHlsZXMgfSA9IG5vcm1hbGl6ZU9wdGltaXphdGlvbihicm93c2VyT3B0aW9ucy5vcHRpbWl6YXRpb24pO1xuICBsZXQgaW5saW5lQ3JpdGljYWxDc3NQcm9jZXNzb3I6IElubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yIHwgdW5kZWZpbmVkO1xuICBpZiAoc3R5bGVzLmlubGluZUNyaXRpY2FsKSB7XG4gICAgY29uc3QgeyBJbmxpbmVDcml0aWNhbENzc1Byb2Nlc3NvciB9ID0gYXdhaXQgaW1wb3J0KFxuICAgICAgJy4uLy4uL3V0aWxzL2luZGV4LWZpbGUvaW5saW5lLWNyaXRpY2FsLWNzcydcbiAgICApO1xuICAgIGlubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yID0gbmV3IElubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yKHtcbiAgICAgIG1pbmlmeTogc3R5bGVzLm1pbmlmeSxcbiAgICAgIGRlcGxveVVybDogYnJvd3Nlck9wdGlvbnMuZGVwbG95VXJsLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgcmVuZGVyV29ya2VyID0gbmV3IFBpc2NpbmEoe1xuICAgIGZpbGVuYW1lOiByZXF1aXJlLnJlc29sdmUoJy4vcmVuZGVyLXdvcmtlcicpLFxuICAgIG1heFRocmVhZHM6IDEsXG4gICAgd29ya2VyRGF0YTogeyB6b25lUGFja2FnZSB9LFxuICB9KTtcblxuICB0cnkge1xuICAgIGZvciAoY29uc3QgeyBwYXRoOiBvdXRwdXRQYXRoLCBiYXNlSHJlZiB9IG9mIGJyb3dzZXJSZXN1bHQub3V0cHV0cykge1xuICAgICAgY29uc3QgbG9jYWxlRGlyZWN0b3J5ID0gcGF0aC5yZWxhdGl2ZShicm93c2VyUmVzdWx0LmJhc2VPdXRwdXRQYXRoLCBvdXRwdXRQYXRoKTtcbiAgICAgIGNvbnN0IGJyb3dzZXJJbmRleE91dHB1dFBhdGggPSBwYXRoLmpvaW4ob3V0cHV0UGF0aCwgJ2luZGV4Lmh0bWwnKTtcbiAgICAgIGNvbnN0IGluZGV4SHRtbCA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKGJyb3dzZXJJbmRleE91dHB1dFBhdGgsICd1dGY4Jyk7XG4gICAgICBjb25zdCBzZXJ2ZXJCdW5kbGVQYXRoID0gYXdhaXQgX2dldFNlcnZlck1vZHVsZUJ1bmRsZVBhdGgoXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHNlcnZlclJlc3VsdCxcbiAgICAgICAgbG9jYWxlRGlyZWN0b3J5LFxuICAgICAgKTtcblxuICAgICAgbGV0IGh0bWw6IHN0cmluZyA9IGF3YWl0IHJlbmRlcldvcmtlci5ydW4oe1xuICAgICAgICBzZXJ2ZXJCdW5kbGVQYXRoLFxuICAgICAgICBkb2N1bWVudDogaW5kZXhIdG1sLFxuICAgICAgICB1cmw6IG9wdGlvbnMucm91dGUsXG4gICAgICB9KTtcblxuICAgICAgLy8gT3ZlcndyaXRlIHRoZSBjbGllbnQgaW5kZXggZmlsZS5cbiAgICAgIGNvbnN0IG91dHB1dEluZGV4UGF0aCA9IG9wdGlvbnMub3V0cHV0SW5kZXhQYXRoXG4gICAgICAgID8gcGF0aC5qb2luKHJvb3QsIG9wdGlvbnMub3V0cHV0SW5kZXhQYXRoKVxuICAgICAgICA6IGJyb3dzZXJJbmRleE91dHB1dFBhdGg7XG5cbiAgICAgIGlmIChpbmxpbmVDcml0aWNhbENzc1Byb2Nlc3Nvcikge1xuICAgICAgICBjb25zdCB7IGNvbnRlbnQsIHdhcm5pbmdzLCBlcnJvcnMgfSA9IGF3YWl0IGlubGluZUNyaXRpY2FsQ3NzUHJvY2Vzc29yLnByb2Nlc3MoaHRtbCwge1xuICAgICAgICAgIG91dHB1dFBhdGgsXG4gICAgICAgIH0pO1xuICAgICAgICBodG1sID0gY29udGVudDtcblxuICAgICAgICBpZiAod2FybmluZ3MubGVuZ3RoIHx8IGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICBzcGlubmVyLnN0b3AoKTtcbiAgICAgICAgICB3YXJuaW5ncy5mb3JFYWNoKChtKSA9PiBjb250ZXh0LmxvZ2dlci53YXJuKG0pKTtcbiAgICAgICAgICBlcnJvcnMuZm9yRWFjaCgobSkgPT4gY29udGV4dC5sb2dnZXIuZXJyb3IobSkpO1xuICAgICAgICAgIHNwaW5uZXIuc3RhcnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUob3V0cHV0SW5kZXhQYXRoLCBodG1sKTtcblxuICAgICAgaWYgKGJyb3dzZXJPcHRpb25zLnNlcnZpY2VXb3JrZXIpIHtcbiAgICAgICAgYXdhaXQgYXVnbWVudEFwcFdpdGhTZXJ2aWNlV29ya2VyKFxuICAgICAgICAgIHByb2plY3RSb290LFxuICAgICAgICAgIHJvb3QsXG4gICAgICAgICAgb3V0cHV0UGF0aCxcbiAgICAgICAgICBiYXNlSHJlZiA/PyAnLycsXG4gICAgICAgICAgYnJvd3Nlck9wdGlvbnMubmdzd0NvbmZpZ1BhdGgsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHJlbmRlcldvcmtlci5kZXN0cm95KCk7XG4gIH1cblxuICByZXR1cm4gYnJvd3NlclJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2dldFNlcnZlck1vZHVsZUJ1bmRsZVBhdGgoXG4gIG9wdGlvbnM6IEJ1aWxkV2VicGFja0FwcFNoZWxsU2NoZW1hLFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgc2VydmVyUmVzdWx0OiBTZXJ2ZXJCdWlsZGVyT3V0cHV0LFxuICBicm93c2VyTG9jYWxlRGlyZWN0b3J5OiBzdHJpbmcsXG4pIHtcbiAgaWYgKG9wdGlvbnMuYXBwTW9kdWxlQnVuZGxlKSB7XG4gICAgcmV0dXJuIHBhdGguam9pbihjb250ZXh0LndvcmtzcGFjZVJvb3QsIG9wdGlvbnMuYXBwTW9kdWxlQnVuZGxlKTtcbiAgfVxuXG4gIGNvbnN0IHsgYmFzZU91dHB1dFBhdGggPSAnJyB9ID0gc2VydmVyUmVzdWx0O1xuICBjb25zdCBvdXRwdXRQYXRoID0gcGF0aC5qb2luKGJhc2VPdXRwdXRQYXRoLCBicm93c2VyTG9jYWxlRGlyZWN0b3J5KTtcblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3V0cHV0UGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHNlcnZlciBvdXRwdXQgZGlyZWN0b3J5OiAke291dHB1dFBhdGh9LmApO1xuICB9XG5cbiAgY29uc3QgcmUgPSAvXm1haW5cXC4oPzpbYS16QS1aMC05XXsxNn1cXC4pP2pzJC87XG4gIGNvbnN0IG1heWJlTWFpbiA9IGZzLnJlYWRkaXJTeW5jKG91dHB1dFBhdGgpLmZpbmQoKHgpID0+IHJlLnRlc3QoeCkpO1xuXG4gIGlmICghbWF5YmVNYWluKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCB0aGUgbWFpbiBidW5kbGUuJyk7XG4gIH1cblxuICByZXR1cm4gcGF0aC5qb2luKG91dHB1dFBhdGgsIG1heWJlTWFpbik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIF9hcHBTaGVsbEJ1aWxkZXIoXG4gIG9wdGlvbnM6IEJ1aWxkV2VicGFja0FwcFNoZWxsU2NoZW1hLFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbik6IFByb21pc2U8QnVpbGRlck91dHB1dD4ge1xuICBjb25zdCBicm93c2VyVGFyZ2V0ID0gdGFyZ2V0RnJvbVRhcmdldFN0cmluZyhvcHRpb25zLmJyb3dzZXJUYXJnZXQpO1xuICBjb25zdCBzZXJ2ZXJUYXJnZXQgPSB0YXJnZXRGcm9tVGFyZ2V0U3RyaW5nKG9wdGlvbnMuc2VydmVyVGFyZ2V0KTtcblxuICAvLyBOZXZlciBydW4gdGhlIGJyb3dzZXIgdGFyZ2V0IGluIHdhdGNoIG1vZGUuXG4gIC8vIElmIHNlcnZpY2Ugd29ya2VyIGlzIG5lZWRlZCwgaXQgd2lsbCBiZSBhZGRlZCBpbiBfcmVuZGVyVW5pdmVyc2FsKCk7XG4gIGNvbnN0IGJyb3dzZXJPcHRpb25zID0gKGF3YWl0IGNvbnRleHQuZ2V0VGFyZ2V0T3B0aW9ucyhicm93c2VyVGFyZ2V0KSkgYXMgSnNvbk9iamVjdCAmXG4gICAgQnJvd3NlckJ1aWxkZXJTY2hlbWE7XG5cbiAgY29uc3Qgb3B0aW1pemF0aW9uID0gbm9ybWFsaXplT3B0aW1pemF0aW9uKGJyb3dzZXJPcHRpb25zLm9wdGltaXphdGlvbik7XG4gIG9wdGltaXphdGlvbi5zdHlsZXMuaW5saW5lQ3JpdGljYWwgPSBmYWxzZTtcblxuICBjb25zdCBicm93c2VyVGFyZ2V0UnVuID0gYXdhaXQgY29udGV4dC5zY2hlZHVsZVRhcmdldChicm93c2VyVGFyZ2V0LCB7XG4gICAgd2F0Y2g6IGZhbHNlLFxuICAgIHNlcnZpY2VXb3JrZXI6IGZhbHNlLFxuICAgIG9wdGltaXphdGlvbjogb3B0aW1pemF0aW9uIGFzIHVua25vd24gYXMgSnNvbk9iamVjdCxcbiAgfSk7XG4gIGNvbnN0IHNlcnZlclRhcmdldFJ1biA9IGF3YWl0IGNvbnRleHQuc2NoZWR1bGVUYXJnZXQoc2VydmVyVGFyZ2V0LCB7XG4gICAgd2F0Y2g6IGZhbHNlLFxuICB9KTtcblxuICBsZXQgc3Bpbm5lcjogU3Bpbm5lciB8IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIGNvbnN0IFticm93c2VyUmVzdWx0LCBzZXJ2ZXJSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgYnJvd3NlclRhcmdldFJ1bi5yZXN1bHQgYXMgUHJvbWlzZTxCcm93c2VyQnVpbGRlck91dHB1dD4sXG4gICAgICBzZXJ2ZXJUYXJnZXRSdW4ucmVzdWx0IGFzIFByb21pc2U8U2VydmVyQnVpbGRlck91dHB1dD4sXG4gICAgXSk7XG5cbiAgICBpZiAoYnJvd3NlclJlc3VsdC5zdWNjZXNzID09PSBmYWxzZSB8fCBicm93c2VyUmVzdWx0LmJhc2VPdXRwdXRQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBicm93c2VyUmVzdWx0O1xuICAgIH0gZWxzZSBpZiAoc2VydmVyUmVzdWx0LnN1Y2Nlc3MgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gc2VydmVyUmVzdWx0O1xuICAgIH1cblxuICAgIHNwaW5uZXIgPSBuZXcgU3Bpbm5lcigpO1xuICAgIHNwaW5uZXIuc3RhcnQoJ0dlbmVyYXRpbmcgYXBwbGljYXRpb24gc2hlbGwuLi4nKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBfcmVuZGVyVW5pdmVyc2FsKG9wdGlvbnMsIGNvbnRleHQsIGJyb3dzZXJSZXN1bHQsIHNlcnZlclJlc3VsdCwgc3Bpbm5lcik7XG4gICAgc3Bpbm5lci5zdWNjZWVkKCdBcHBsaWNhdGlvbiBzaGVsbCBnZW5lcmF0aW9uIGNvbXBsZXRlLicpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgc3Bpbm5lcj8uZmFpbCgnQXBwbGljYXRpb24gc2hlbGwgZ2VuZXJhdGlvbiBmYWlsZWQuJyk7XG4gICAgYXNzZXJ0SXNFcnJvcihlcnIpO1xuXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnIubWVzc2FnZSB9O1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFticm93c2VyVGFyZ2V0UnVuLnN0b3AoKSwgc2VydmVyVGFyZ2V0UnVuLnN0b3AoKV0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUJ1aWxkZXIoX2FwcFNoZWxsQnVpbGRlcik7XG4iXX0=
@@ -6,12 +6,8 @@
6
6
  * Use of this source code is governed by an MIT-style license that can be
7
7
  * found in the LICENSE file at https://angular.io/license
8
8
  */
9
- var __importDefault = (this && this.__importDefault) || function (mod) {
10
- return (mod && mod.__esModule) ? mod : { "default": mod };
11
- };
12
9
  Object.defineProperty(exports, "__esModule", { value: true });
13
10
  exports.executeBuild = void 0;
14
- const node_assert_1 = __importDefault(require("node:assert"));
15
11
  const source_file_cache_1 = require("../../tools/esbuild/angular/source-file-cache");
16
12
  const application_code_bundle_1 = require("../../tools/esbuild/application-code-bundle");
17
13
  const budget_stats_1 = require("../../tools/esbuild/budget-stats");
@@ -20,26 +16,23 @@ const bundler_execution_result_1 = require("../../tools/esbuild/bundler-executio
20
16
  const commonjs_checker_1 = require("../../tools/esbuild/commonjs-checker");
21
17
  const global_scripts_1 = require("../../tools/esbuild/global-scripts");
22
18
  const global_styles_1 = require("../../tools/esbuild/global-styles");
23
- const index_html_generator_1 = require("../../tools/esbuild/index-html-generator");
24
19
  const license_extractor_1 = require("../../tools/esbuild/license-extractor");
25
20
  const utils_1 = require("../../tools/esbuild/utils");
26
21
  const bundle_calculator_1 = require("../../utils/bundle-calculator");
27
22
  const copy_assets_1 = require("../../utils/copy-assets");
28
- const environment_options_1 = require("../../utils/environment-options");
29
- const prerender_1 = require("../../utils/server-rendering/prerender");
30
- const service_worker_1 = require("../../utils/service-worker");
31
23
  const supported_browsers_1 = require("../../utils/supported-browsers");
24
+ const execute_post_bundle_1 = require("./execute-post-bundle");
32
25
  const i18n_1 = require("./i18n");
33
26
  // eslint-disable-next-line max-lines-per-function
34
27
  async function executeBuild(options, context, rebuildState) {
35
28
  const startTime = process.hrtime.bigint();
36
- const { projectRoot, workspaceRoot, serviceWorker, optimizationOptions, serverEntryPoint, assets, indexHtmlOptions, cacheOptions, prerenderOptions, appShellOptions, ssrOptions, verbose, } = options;
29
+ const { projectRoot, workspaceRoot, i18nOptions, optimizationOptions, serverEntryPoint, assets, cacheOptions, prerenderOptions, appShellOptions, ssrOptions, } = options;
37
30
  const browsers = (0, supported_browsers_1.getSupportedBrowsers)(projectRoot, context.logger);
38
31
  const target = (0, utils_1.transformSupportedBrowsersToTargets)(browsers);
39
32
  // Load active translations if inlining
40
33
  // TODO: Integrate into watch mode and only load changed translations
41
- if (options.i18nOptions.shouldInline) {
42
- await (0, i18n_1.loadActiveTranslations)(context, options.i18nOptions);
34
+ if (i18nOptions.shouldInline) {
35
+ await (0, i18n_1.loadActiveTranslations)(context, i18nOptions);
43
36
  }
44
37
  // Reuse rebuild state or create new bundle contexts for code and global stylesheets
45
38
  let bundlerContexts = rebuildState?.rebuildContexts;
@@ -49,6 +42,11 @@ async function executeBuild(options, context, rebuildState) {
49
42
  bundlerContexts = [];
50
43
  // Browser application code
51
44
  bundlerContexts.push(new bundler_context_1.BundlerContext(workspaceRoot, !!options.watch, (0, application_code_bundle_1.createBrowserCodeBundleOptions)(options, target, codeBundleCache)));
45
+ // Browser polyfills code
46
+ const polyfillBundleOptions = (0, application_code_bundle_1.createBrowserPolyfillBundleOptions)(options, target, codeBundleCache);
47
+ if (polyfillBundleOptions) {
48
+ bundlerContexts.push(new bundler_context_1.BundlerContext(workspaceRoot, !!options.watch, polyfillBundleOptions));
49
+ }
52
50
  // Global Stylesheets
53
51
  if (options.globalStyles.length > 0) {
54
52
  for (const initial of [true, false]) {
@@ -68,7 +66,7 @@ async function executeBuild(options, context, rebuildState) {
68
66
  }
69
67
  }
70
68
  // Server application code
71
- // Skip server build when non of the features are enabled.
69
+ // Skip server build when none of the features are enabled.
72
70
  if (serverEntryPoint && (prerenderOptions || appShellOptions || ssrOptions)) {
73
71
  const nodeTargets = (0, utils_1.getSupportedNodeTargets)();
74
72
  bundlerContexts.push(new bundler_context_1.BundlerContext(workspaceRoot, !!options.watch, (0, application_code_bundle_1.createServerCodeBundleOptions)(options, [...target, ...nodeTargets], codeBundleCache), () => false));
@@ -80,6 +78,7 @@ async function executeBuild(options, context, rebuildState) {
80
78
  const executionResult = new bundler_execution_result_1.ExecutionResult(bundlerContexts, codeBundleCache);
81
79
  // Return if the bundling has errors
82
80
  if (bundlingResult.errors) {
81
+ executionResult.addErrors(bundlingResult.errors);
83
82
  return executionResult;
84
83
  }
85
84
  const { metafile, initialFiles, outputFiles } = bundlingResult;
@@ -89,39 +88,6 @@ async function executeBuild(options, context, rebuildState) {
89
88
  const messages = (0, commonjs_checker_1.checkCommonJSModules)(metafile, options.allowedCommonJsDependencies);
90
89
  await (0, utils_1.logMessages)(context, { warnings: messages });
91
90
  }
92
- /**
93
- * Index HTML content without CSS inlining to be used for server rendering (AppShell, SSG and SSR).
94
- *
95
- * NOTE: we don't perform critical CSS inlining as this will be done during server rendering.
96
- */
97
- let indexContentOutputNoCssInlining;
98
- // Generate index HTML file
99
- // If localization is enabled, index generation is handled in the inlining process.
100
- // NOTE: Localization with SSR is not currently supported.
101
- if (indexHtmlOptions && !options.i18nOptions.shouldInline) {
102
- const { content, contentWithoutCriticalCssInlined, errors, warnings } = await (0, index_html_generator_1.generateIndexHtml)(initialFiles, executionResult.outputFiles, {
103
- ...options,
104
- optimizationOptions,
105
- },
106
- // Set lang attribute to the defined source locale if present
107
- options.i18nOptions.hasDefinedSourceLocale ? options.i18nOptions.sourceLocale : undefined);
108
- indexContentOutputNoCssInlining = contentWithoutCriticalCssInlined;
109
- printWarningsAndErrorsToConsole(context, warnings, errors);
110
- executionResult.addOutputFile(indexHtmlOptions.output, content, bundler_context_1.BuildOutputFileType.Browser);
111
- if (ssrOptions) {
112
- executionResult.addOutputFile('index.server.html', contentWithoutCriticalCssInlined, bundler_context_1.BuildOutputFileType.Server);
113
- }
114
- }
115
- // Pre-render (SSG) and App-shell
116
- // If localization is enabled, prerendering is handled in the inlining process.
117
- if ((prerenderOptions || appShellOptions) && !options.i18nOptions.shouldInline) {
118
- (0, node_assert_1.default)(indexContentOutputNoCssInlining, 'The "index" option is required when using the "ssg" or "appShell" options.');
119
- const { output, warnings, errors } = await (0, prerender_1.prerenderPages)(workspaceRoot, appShellOptions, prerenderOptions, executionResult.outputFiles, indexContentOutputNoCssInlining, optimizationOptions.styles.inlineCritical, environment_options_1.maxWorkers, verbose);
120
- printWarningsAndErrorsToConsole(context, warnings, errors);
121
- for (const [path, content] of Object.entries(output)) {
122
- executionResult.addOutputFile(path, content, bundler_context_1.BuildOutputFileType.Browser);
123
- }
124
- }
125
91
  // Copy assets
126
92
  if (assets) {
127
93
  // The webpack copy assets helper is used with no base paths defined. This prevents the helper
@@ -132,19 +98,6 @@ async function executeBuild(options, context, rebuildState) {
132
98
  if (options.extractLicenses) {
133
99
  executionResult.addOutputFile('3rdpartylicenses.txt', await (0, license_extractor_1.extractLicenses)(metafile, workspaceRoot), bundler_context_1.BuildOutputFileType.Root);
134
100
  }
135
- // Augment the application with service worker support
136
- // If localization is enabled, service worker is handled in the inlining process.
137
- if (serviceWorker && !options.i18nOptions.shouldInline) {
138
- try {
139
- const serviceWorkerResult = await (0, service_worker_1.augmentAppWithServiceWorkerEsbuild)(workspaceRoot, serviceWorker, options.baseHref || '/', executionResult.outputFiles, executionResult.assetFiles);
140
- executionResult.addOutputFile('ngsw.json', serviceWorkerResult.manifest, bundler_context_1.BuildOutputFileType.Browser);
141
- executionResult.addAssets(serviceWorkerResult.assetFiles);
142
- }
143
- catch (error) {
144
- context.logger.error(error instanceof Error ? error.message : `${error}`);
145
- return executionResult;
146
- }
147
- }
148
101
  // Analyze files for bundle budget failures if present
149
102
  let budgetFailures;
150
103
  if (options.budgets) {
@@ -164,14 +117,33 @@ async function executeBuild(options, context, rebuildState) {
164
117
  if (optimizationOptions.scripts || optimizationOptions.styles.minify) {
165
118
  estimatedTransferSizes = await (0, utils_1.calculateEstimatedTransferSizes)(executionResult.outputFiles);
166
119
  }
120
+ // Perform i18n translation inlining if enabled
121
+ let prerenderedRoutes;
122
+ let errors;
123
+ let warnings;
124
+ if (i18nOptions.shouldInline) {
125
+ const result = await (0, i18n_1.inlineI18n)(options, executionResult, initialFiles);
126
+ errors = result.errors;
127
+ warnings = result.warnings;
128
+ prerenderedRoutes = result.prerenderedRoutes;
129
+ }
130
+ else {
131
+ const result = await (0, execute_post_bundle_1.executePostBundleSteps)(options, executionResult.outputFiles, executionResult.assetFiles, initialFiles,
132
+ // Set lang attribute to the defined source locale if present
133
+ i18nOptions.hasDefinedSourceLocale ? i18nOptions.sourceLocale : undefined);
134
+ errors = result.errors;
135
+ warnings = result.warnings;
136
+ prerenderedRoutes = result.prerenderedRoutes;
137
+ executionResult.outputFiles.push(...result.additionalOutputFiles);
138
+ executionResult.assetFiles.push(...result.additionalAssets);
139
+ }
140
+ if (prerenderOptions) {
141
+ executionResult.addOutputFile('prerendered-routes.json', JSON.stringify({ routes: prerenderedRoutes.sort((a, b) => a.localeCompare(b)) }, null, 2), bundler_context_1.BuildOutputFileType.Root);
142
+ }
143
+ printWarningsAndErrorsToConsole(context, warnings, errors);
167
144
  (0, utils_1.logBuildStats)(context, metafile, initialFiles, budgetFailures, estimatedTransferSizes);
168
145
  const buildTime = Number(process.hrtime.bigint() - startTime) / 10 ** 9;
169
146
  context.logger.info(`Application bundle generation complete. [${buildTime.toFixed(3)} seconds]`);
170
- // Perform i18n translation inlining if enabled
171
- if (options.i18nOptions.shouldInline) {
172
- const { errors, warnings } = await (0, i18n_1.inlineI18n)(options, executionResult, initialFiles);
173
- printWarningsAndErrorsToConsole(context, warnings, errors);
174
- }
175
147
  // Write metafile if stats option is enabled
176
148
  if (options.stats) {
177
149
  executionResult.addOutputFile('stats.json', JSON.stringify(metafile, null, 2), bundler_context_1.BuildOutputFileType.Root);
@@ -187,4 +159,4 @@ function printWarningsAndErrorsToConsole(context, warnings, errors) {
187
159
  context.logger.warn(warning);
188
160
  }
189
161
  }
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS1idWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2J1aWxkZXJzL2FwcGxpY2F0aW9uL2V4ZWN1dGUtYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7O0FBR0gsOERBQWlDO0FBQ2pDLHFGQUFnRjtBQUNoRix5RkFHcUQ7QUFDckQsbUVBQXVFO0FBQ3ZFLHlFQUEwRjtBQUMxRiwyRkFBNkY7QUFDN0YsMkVBQTRFO0FBQzVFLHVFQUFzRjtBQUN0RixxRUFBb0Y7QUFDcEYsbUZBQTZFO0FBQzdFLDZFQUF3RTtBQUN4RSxxREFNbUM7QUFDbkMscUVBQTZEO0FBQzdELHlEQUFxRDtBQUNyRCx5RUFBNkQ7QUFDN0Qsc0VBQXdFO0FBQ3hFLCtEQUFnRjtBQUNoRix1RUFBc0U7QUFDdEUsaUNBQTREO0FBRzVELGtEQUFrRDtBQUMzQyxLQUFLLFVBQVUsWUFBWSxDQUNoQyxPQUEwQyxFQUMxQyxPQUF1QixFQUN2QixZQUEyQjtJQUUzQixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBRTFDLE1BQU0sRUFDSixXQUFXLEVBQ1gsYUFBYSxFQUNiLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsVUFBVSxFQUNWLE9BQU8sR0FDUixHQUFHLE9BQU8sQ0FBQztJQUVaLE1BQU0sUUFBUSxHQUFHLElBQUEseUNBQW9CLEVBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFBLDJDQUFtQyxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTdELHVDQUF1QztJQUN2Qyxx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S0FBSyxFQUFFO1FBQ2pCLGVBQWUsQ0FBQyxhQUFhLENBQzNCLFlBQVksRUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQ2pDLHFDQUFtQixDQUFDLElBQUksQ0FDekIsQ0FBQztLQUNIO0lBRUQsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQztBQWpRRCxvQ0FpUUM7QUFFRCxTQUFTLCtCQUErQixDQUN0QyxPQUF1QixFQUN2QixRQUFrQixFQUNsQixNQUFnQjtJQUVoQixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtRQUMxQixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM3QjtJQUNELEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1FBQzlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzlCO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBCdWlsZGVyQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9hcmNoaXRlY3QnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydCc7XG5pbXBvcnQgeyBTb3VyY2VGaWxlQ2FjaGUgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2FuZ3VsYXIvc291cmNlLWZpbGUtY2FjaGUnO1xuaW1wb3J0IHtcbiAgY3JlYXRlQnJvd3NlckNvZGVCdW5kbGVPcHRpb25zLFxuICBjcmVhdGVTZXJ2ZXJDb2RlQnVuZGxlT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9hcHBsaWNhdGlvbi1jb2RlLWJ1bmRsZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZUJ1ZGdldFN0YXRzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9idWRnZXQtc3RhdHMnO1xuaW1wb3J0IHsgQnVpbGRPdXRwdXRGaWxlVHlwZSwgQnVuZGxlckNvbnRleHQgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2J1bmRsZXItY29udGV4dCc7XG5pbXBvcnQgeyBFeGVjdXRpb25SZXN1bHQsIFJlYnVpbGRTdGF0ZSB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvYnVuZGxlci1leGVjdXRpb24tcmVzdWx0JztcbmltcG9ydCB7IGNoZWNrQ29tbW9uSlNNb2R1bGVzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9jb21tb25qcy1jaGVja2VyJztcbmltcG9ydCB7IGNyZWF0ZUdsb2JhbFNjcmlwdHNCdW5kbGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9nbG9iYWwtc2NyaXB0cyc7XG5pbXBvcnQgeyBjcmVhdGVHbG9iYWxTdHlsZXNCdW5kbGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9nbG9iYWwtc3R5bGVzJztcbmltcG9ydCB7IGdlbmVyYXRlSW5kZXhIdG1sIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9pbmRleC1odG1sLWdlbmVyYXRvcic7XG5pbXBvcnQgeyBleHRyYWN0TGljZW5zZXMgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2xpY2Vuc2UtZXh0cmFjdG9yJztcbmltcG9ydCB7XG4gIGNhbGN1bGF0ZUVzdGltYXRlZFRyYW5zZmVyU2l6ZXMsXG4gIGdldFN1cHBvcnRlZE5vZGVUYXJnZXRzLFxuICBsb2dCdWlsZFN0YXRzLFxuICBsb2dNZXNzYWdlcyxcbiAgdHJhbnNmb3JtU3VwcG9ydGVkQnJvd3NlcnNUb1RhcmdldHMsXG59IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvdXRpbHMnO1xuaW1wb3J0IHsgY2hlY2tCdWRnZXRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvYnVuZGxlLWNhbGN1bGF0b3InO1xuaW1wb3J0IHsgY29weUFzc2V0cyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvcHktYXNzZXRzJztcbmltcG9ydCB7IG1heFdvcmtlcnMgfSBmcm9tICcuLi8uLi91dGlscy9lbnZpcm9ubWVudC1vcHRpb25zJztcbmltcG9ydCB7IHByZXJlbmRlclBhZ2VzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2VydmVyLXJlbmRlcmluZy9wcmVyZW5kZXInO1xuaW1wb3J0IHsgYXVnbWVudEFwcFdpdGhTZXJ2aWNlV29ya2VyRXNidWlsZCB9IGZyb20gJy4uLy4uL3V0aWxzL3NlcnZpY2Utd29ya2VyJztcbmltcG9ydCB7IGdldFN1cHBvcnRlZEJyb3dzZXJzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3VwcG9ydGVkLWJyb3dzZXJzJztcbmltcG9ydCB7IGlubGluZUkxOG4sIGxvYWRBY3RpdmVUcmFuc2xhdGlvbnMgfSBmcm9tICcuL2kxOG4nO1xuaW1wb3J0IHsgTm9ybWFsaXplZEFwcGxpY2F0aW9uQnVpbGRPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1saW5lcy1wZXItZnVuY3Rpb25cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlQnVpbGQoXG4gIG9wdGlvbnM6IE5vcm1hbGl6ZWRBcHBsaWNhdGlvbkJ1aWxkT3B0aW9ucyxcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gIHJlYnVpbGRTdGF0ZT86IFJlYnVpbGRTdGF0ZSxcbik6IFByb21pc2U8RXhlY3V0aW9uUmVzdWx0PiB7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpO1xuXG4gIGNvbnN0IHtcbiAgICBwcm9qZWN0Um9vdCxcbiAgICB3b3Jrc3BhY2VSb290LFxuICAgIHNlcnZpY2VXb3JrZXIsXG4gICAgb3B0aW1pemF0aW9uT3B0aW9ucyxcbiAgICBzZXJ2ZXJFbnRyeVBvaW50LFxuICAgIGFzc2V0cyxcbiAgICBpbmRleEh0bWxPcHRpb25zLFxuICAgIGNhY2hlT3B0aW9ucyxcbiAgICBwcmVyZW5kZXJPcHRpb25zLFxuICAgIGFwcFNoZWxsT3B0aW9ucyxcbiAgICBzc3JPcHRpb25zLFxuICAgIHZlcmJvc2UsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGJyb3dzZXJzID0gZ2V0U3VwcG9ydGVkQnJvd3NlcnMocHJvamVjdFJvb3QsIGNvbnRleHQubG9nZ2VyKTtcbiAgY29uc3QgdGFyZ2V0ID0gdHJhbnNmb3JtU3VwcG9ydGVkQnJvd3NlcnNUb1RhcmdldHMoYnJvd3NlcnMpO1xuXG4gIC8vIExvYWQgYWN0aXZlIHRyYW5zbGF0aW9ucyBpZiBpbmxpbmluZ1xuICAvLyBUT0RPOiBJbnRlZ3JhdGUgaW50byB3YXRjaCBtb2RlIGFuZCBvbmx5IGxvYWQgY2hhbmdlZCB0cmFuc2xhdGlvbnNcbiAgaWYgKG9wdGlvbnMuaTE4bk9wdGlvbnMuc2hvdWxkSW5saW5lKSB7XG4gICAgYXdhaXQgbG9hZEFjdGl2ZVRyYW5zbGF0aW9ucyhjb250ZXh0LCBvcHRpb25zLmkxOG5PcHRpb25zKTtcbiAgfVxuXG4gIC8vIFJldXNlIHJlYnVpbGQgc3RhdGUgb3IgY3JlYXRlIG5ldyBidW5kbGUgY29udGV4dHMgZm9yIGNvZGUgYW5kIGdsb2JhbCBzdHlsZXNoZWV0c1xuICBsZXQgYnVuZGxlckNvbnRleHRzID0gcmVidWlsZFN0YXRlPy5yZWJ1aWxkQ29udGV4dHM7XG4gIGNvbnN0IGNvZGVCdW5kbGVDYWNoZSA9XG4gICAgcmVidWlsZFN0YXRlPy5jb2RlQnVuZGxlQ2FjaGUgPz9cbiAgICBuZXcgU291cmNlRmlsZUNhY2hlKGNhY2hlT3B0aW9ucy5lbmFibGVkID8gY2FjaGVPcHRpb25zLnBhdGggOiB1bmRlZmluZWQpO1xuICBpZiAoYnVuZGxlckNvbnRleHRzID09PSB1bmRlZmluZWQpIHtcbiAgICBidW5kbGVyQ29udGV4dHMgPSBbXTtcblxuICAgIC8vIEJyb3dzZXIgYXBwbGljYXRpb24gY29kZVxuICAgIGJ1bmRsZXJDb250ZXh0cy5wdXNoKFxuICAgICAgbmV3IEJ1bmRsZXJDb250ZXh0KFxuICAgICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgICAhIW9wdGlvbnMud2F0Y2gsXG4gICAgICAgIGNyZWF0ZUJyb3dzZXJDb2RlQnVuZGxlT3B0aW9ucyhvcHRpb25zLCB0YXJnZXQsIGNvZGVCdW5kbGVDYWNoZSksXG4gICAgICApLFxuICAgICk7XG5cbiAgICAvLyBHbG9iYWwgU3R5bGVzaGVldHNcbiAgICBpZiAob3B0aW9ucy5nbG9iYWxTdHlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBpbml0aWFsIG9mIFt0cnVlLCBmYWxzZV0pIHtcbiAgICAgICAgY29uc3QgYnVuZGxlT3B0aW9ucyA9IGNyZWF0ZUdsb2JhbFN0eWxlc0J1bmRsZU9wdGlvbnMoXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgaW5pdGlhbCxcbiAgICAgICAgICBjb2RlQnVuZGxlQ2FjaGU/LmxvYWRSZXN1bHRDYWNoZSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGJ1bmRsZU9wdGlvbnMpIHtcbiAgICAgICAgICBidW5kbGVyQ29udGV4dHMucHVzaChcbiAgICAgICAgICAgIG5ldyBCdW5kbGVyQ29udGV4dCh3b3Jrc3BhY2VSb290LCAhIW9wdGlvbnMud2F0Y2gsIGJ1bmRsZU9wdGlvbnMsICgpID0+IGluaXRpYWwpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHbG9iYWwgU2NyaXB0c1xuICAgIGlmIChvcHRpb25zLmdsb2JhbFNjcmlwdHMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBpbml0aWFsIG9mIFt0cnVlLCBmYWxzZV0pIHtcbiAgICAgICAgY29uc3QgYnVuZGxlT3B0aW9ucyA9IGNyZWF0ZUdsb2JhbFNjcmlwdHNCdW5kbGVPcHRpb25zKG9wdGlvbnMsIGluaXRpYWwpO1xuICAgICAgICBpZiAoYnVuZGxlT3B0aW9ucykge1xuICAgICAgICAgIGJ1bmRsZXJDb250ZXh0cy5wdXNoKFxuICAgICAgICAgICAgbmV3IEJ1bmRsZXJDb250ZXh0KHdvcmtzcGFjZVJvb3QsICEhb3B0aW9ucy53YXRjaCwgYnVuZGxlT3B0aW9ucywgKCkgPT4gaW5pdGlhbCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlcnZlciBhcHBsaWNhdGlvbiBjb2RlXG4gICAgLy8gU2tpcCBzZXJ2ZXIgYnVpbGQgd2hlbiBub24gb2YgdGhlIGZlYXR1cmVzIGFyZSBlbmFibGVkLlxuICAgIGlmIChzZXJ2ZXJFbnRyeVBvaW50ICYmIChwcmVyZW5kZXJPcHRpb25zIHx8IGFwcFNoZWxsT3B0aW9ucyB8fCBzc3JPcHRpb25zKSkge1xuICAgICAgY29uc3Qgbm9kZVRhcmdldHMgPSBnZXRTdXBwb3J0ZWROb2RlVGFyZ2V0cygpO1xuICAgICAgYnVuZGxlckNvbnRleHRzLnB1c2goXG4gICAgICAgIG5ldyBCdW5kbGVyQ29udGV4dChcbiAgICAgICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgICAgICEhb3B0aW9ucy53YXRjaCxcbiAgICAgICAgICBjcmVhdGVTZXJ2ZXJDb2RlQnVuZGxlT3B0aW9ucyhvcHRpb25zLCBbLi4udGFyZ2V0LCAuLi5ub2RlVGFyZ2V0c10sIGNvZGVCdW5kbGVDYWNoZSksXG4gICAgICAgICAgKCkgPT4gZmFsc2UsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGJ1bmRsaW5nUmVzdWx0ID0gYXdhaXQgQnVuZGxlckNvbnRleHQuYnVuZGxlQWxsKGJ1bmRsZXJDb250ZXh0cyk7XG5cbiAgLy8gTG9nIGFsbCB3YXJuaW5ncyBhbmQgZXJyb3JzIGdlbmVyYXRlZCBkdXJpbmcgYnVuZGxpbmdcbiAgYXdhaXQgbG9nTWVzc2FnZXMoY29udGV4dCwgYnVuZGxpbmdSZXN1bHQpO1xuXG4gIGNvbnN0IGV4ZWN1dGlvblJlc3VsdCA9IG5ldyBFeGVjdXRpb25SZXN1bHQoYnVuZGxlckNvbnRleHRzLCBjb2RlQnVuZGxlQ2FjaGUpO1xuXG4gIC8vIFJldHVybiBpZiB0aGUgYnVuZGxpbmcgaGFzIGVycm9yc1xuICBpZiAoYnVuZGxpbmdSZXN1bHQuZXJyb3JzKSB7XG4gICAgcmV0dXJuIGV4ZWN1dGlvblJlc3VsdDtcbiAgfVxuXG4gIGNvbnN0IHsgbWV0YWZpbGUsIGluaXRpYWxGaWxlcywgb3V0cHV0RmlsZXMgfSA9IGJ1bmRsaW5nUmVzdWx0O1xuXG4gIGV4ZWN1dGlvblJlc3VsdC5vdXRwdXRGaWxlcy5wdXNoKC4uLm91dHB1dEZpbGVzKTtcblxuICAvLyBDaGVjayBtZXRhZmlsZSBmb3IgQ29tbW9uSlMgbW9kdWxlIHVzYWdlIGlmIG9wdGltaXppbmcgc2NyaXB0c1xuICBpZiAob3B0aW1pemF0aW9uT3B0aW9ucy5zY3JpcHRzKSB7XG4gICAgY29uc3QgbWVzc2FnZXMgPSBjaGVja0NvbW1vbkpTTW9kdWxlcyhtZXRhZmlsZSwgb3B0aW9ucy5hbGxvd2VkQ29tbW9uSnNEZXBlbmRlbmNpZXMpO1xuICAgIGF3YWl0IGxvZ01lc3NhZ2VzKGNvbnRleHQsIHsgd2FybmluZ3M6IG1lc3NhZ2VzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGV4IEhUTUwgY29udGVudCB3aXRob3V0IENTUyBpbmxpbmluZyB0byBiZSB1c2VkIGZvciBzZXJ2ZXIgcmVuZGVyaW5nIChBcHBTaGVsbCwgU1NHIGFuZCBTU1IpLlxuICAgKlxuICAgKiBOT1RFOiB3ZSBkb24ndCBwZXJmb3JtIGNyaXRpY2FsIENTUyBpbmxpbmluZyBhcyB0aGlzIHdpbGwgYmUgZG9uZSBkdXJpbmcgc2VydmVyIHJlbmRlcmluZy5cbiAgICovXG4gIGxldCBpbmRleENvbnRlbnRPdXRwdXROb0Nzc0lubGluaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLy8gR2VuZXJhdGUgaW5kZXggSFRNTCBmaWxlXG4gIC8vIElmIGxvY2FsaXphdGlvbiBpcyBlbmFibGVkLCBpbmRleCBnZW5lcmF0aW9uIGlzIGhhbmRsZWQgaW4gdGhlIGlubGluaW5nIHByb2Nlc3MuXG4gIC8vIE5PVEU6IExvY2FsaXphdGlvbiB3aXRoIFNTUiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC5cbiAgaWYgKGluZGV4SHRtbE9wdGlvbnMgJiYgIW9wdGlvbnMuaTE4bk9wdGlvbnMuc2hvdWxkSW5saW5lKSB7XG4gICAgY29uc3QgeyBjb250ZW50LCBjb250ZW50V2l0aG91dENyaXRpY2FsQ3NzSW5saW5lZCwgZXJyb3JzLCB3YXJuaW5ncyB9ID0gYXdhaXQgZ2VuZXJhdGVJbmRleEh0bWwoXG4gICAgICBpbml0aWFsRmlsZXMsXG4gICAgICBleGVjdXRpb25SZXN1bHQub3V0cHV0RmlsZXMsXG4gICAgICB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG9wdGltaXphdGlvbk9wdGlvbnMsXG4gICAgICB9LFxuICAgICAgLy8gU2V0IGxhbmcgYXR0cmlidXRlIHRvIHRoZSBkZWZpbmVkIHNvdXJjZSBsb2NhbGUgaWYgcHJlc2VudFxuICAgICAgb3B0aW9ucy5pMThuT3B0aW9ucy5oYXNEZWZpbmVkU291cmNlTG9jYWxlID8gb3B0aW9ucy5pMThuT3B0aW9ucy5zb3VyY2VMb2NhbGUgOiB1bmRlZmluZWQsXG4gICAgKTtcblxuICAgIGluZGV4Q29udGVudE91dHB1dE5vQ3NzSW5saW5pbmcgPSBjb250ZW50V2l0aG91dENyaXRpY2FsQ3NzSW5saW5lZDtcbiAgICBwcmludFdhcm5pbmdzQW5kRXJyb3JzVG9Db25zb2xlKGNvbnRleHQsIHdhcm5pbmdzLCBlcnJvcnMpO1xuXG4gICAgZXhlY3V0aW9uUmVzdWx0LmFkZE91dHB1dEZpbGUoaW5kZXhIdG1sT3B0aW9ucy5vdXRwdXQsIGNvbnRlbnQsIEJ1aWxkT3V0cHV0RmlsZVR5cGUuQnJvd3Nlcik7XG5cbiAgICBpZiAoc3NyT3B0aW9ucykge1xuICAgICAgZXhlY3V0aW9uUmVzdWx0LmFkZE91dHB1dEZpbGUoXG4gICAgICAgICdpbmRleC5zZXJ2ZXIuaHRtbCcsXG4gICAgICAgIGNvbnRlbnRXaXRob3V0Q3JpdGljYWxDc3NJbmxpbmVkLFxuICAgICAgICBCdWlsZE91dHB1dEZpbGVUeXBlLlNlcnZlcixcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHJlLXJlbmRlciAoU1NHKSBhbmQgQXBwLXNoZWxsXG4gIC8vIElmIGxvY2FsaXphdGlvbiBpcyBlbmFibGVkLCBwcmVyZW5kZXJpbmcgaXMgaGFuZGxlZCBpbiB0aGUgaW5saW5pbmcgcHJvY2Vzcy5cbiAgaWYgKChwcmVyZW5kZXJPcHRpb25zIHx8IGFwcFNoZWxsT3B0aW9ucykgJiYgIW9wdGlvbnMuaTE4bk9wdGlvbnMuc2hvdWxkSW5saW5lKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgaW5kZXhDb250ZW50T3V0cHV0Tm9Dc3NJbmxpbmluZyxcbiAgICAgICdUaGUgXCJpbmRleFwiIG9wdGlvbiBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIHRoZSBcInNzZ1wiIG9yIFwiYXBwU2hlbGxcIiBvcHRpb25zLicsXG4gICAgKTtcblxuICAgIGNvbnN0IHsgb3V0cHV0LCB3YXJuaW5ncywgZXJyb3JzIH0gPSBhd2FpdCBwcmVyZW5kZXJQYWdlcyhcbiAgICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgICBhcHBTaGVsbE9wdGlvbnMsXG4gICAgICBwcmVyZW5kZXJPcHRpb25zLFxuICAgICAgZXhlY3V0aW9uUmVzdWx0Lm91dHB1dEZpbGVzLFxuICAgICAgaW5kZXhDb250ZW50T3V0cHV0Tm9Dc3NJbmxpbmluZyxcbiAgICAgIG9wdGltaXphdGlvbk9wdGlvbnMuc3R5bGVzLmlubGluZUNyaXRpY2FsLFxuICAgICAgbWF4V29ya2VycyxcbiAgICAgIHZlcmJvc2UsXG4gICAgKTtcblxuICAgIHByaW50V2FybmluZ3NBbmRFcnJvcnNUb0NvbnNvbGUoY29udGV4dCwgd2FybmluZ3MsIGVycm9ycyk7XG5cbiAgICBmb3IgKGNvbnN0IFtwYXRoLCBjb250ZW50XSBvZiBPYmplY3QuZW50cmllcyhvdXRwdXQpKSB7XG4gICAgICBleGVjdXRpb25SZXN1bHQuYWRkT3V0cHV0RmlsZShwYXRoLCBjb250ZW50LCBCdWlsZE91dHB1dEZpbGVUeXBlLkJyb3dzZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvcHkgYXNzZXRzXG4gIGlmIChhc3NldHMpIHtcbiAgICAvLyBUaGUgd2VicGFjayBjb3B5IGFzc2V0cyBoZWxwZXIgaXMgdXNlZCB3aXRoIG5vIGJhc2UgcGF0aHMgZGVmaW5lZC4gVGhpcyBwcmV2ZW50cyB0aGUgaGVscGVyXG4gICAgLy8gZnJvbSBkaXJlY3RseSB3cml0aW5nIHRvIGRpc2suIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVwbGFjZWQgd2l0aCBhIG1vcmUgb3B0aW1pemVkIGhlbHBlci5cbiAgICBleGVjdXRpb25SZXN1bHQuYWRkQXNzZXRzKGF3YWl0IGNvcHlBc3NldHMoYXNzZXRzLCBbXSwgd29ya3NwYWNlUm9vdCkpO1xuICB9XG5cbiAgLy8gRXh0cmFjdCBhbmQgd3JpdGUgbGljZW5zZXMgZm9yIHVzZWQgcGFja2FnZXNcbiAgaWYgKG9wdGlvbnMuZXh0cmFjdExpY2Vuc2VzKSB7XG4gICAgZXhlY3V0aW9uUmVzdWx0LmFkZE91dHB1dEZpbGUoXG4gICAgICAnM3JkcGFydHlsaWNlbnNlcy50eHQnLFxuICAgICAgYXdhaXQgZXh0cmFjdExpY2Vuc2VzKG1ldGFmaWxlLCB3b3Jrc3BhY2VSb290KSxcbiAgICAgIEJ1aWxkT3V0cHV0RmlsZVR5cGUuUm9vdCxcbiAgICApO1xuICB9XG5cbiAgLy8gQXVnbWVudCB0aGUgYXBwbGljYXRpb24gd2l0aCBzZXJ2aWNlIHdvcmtlciBzdXBwb3J0XG4gIC8vIElmIGxvY2FsaXphdGlvbiBpcyBlbmFibGVkLCBzZXJ2aWNlIHdvcmtlciBpcyBoYW5kbGVkIGluIHRoZSBpbmxpbmluZyBwcm9jZXNzLlxuICBpZiAoc2VydmljZVdvcmtlciAmJiAhb3B0aW9ucy5pMThuT3B0aW9ucy5zaG91bGRJbmxpbmUpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2VydmljZVdvcmtlclJlc3VsdCA9IGF3YWl0IGF1Z21lbnRBcHBXaXRoU2VydmljZVdvcmtlckVzYnVpbGQoXG4gICAgICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgICAgIHNlcnZpY2VXb3JrZXIsXG4gICAgICAgIG9wdGlvbnMuYmFzZUhyZWYgfHwgJy8nLFxuICAgICAgICBleGVjdXRpb25SZXN1bHQub3V0cHV0RmlsZXMsXG4gICAgICAgIGV4ZWN1dGlvblJlc3VsdC5hc3NldEZpbGVzLFxuICAgICAgKTtcbiAgICAgIGV4ZWN1dGlvblJlc3VsdC5hZGRPdXRwdXRGaWxlKFxuICAgICAgICAnbmdzdy5qc29uJyxcbiAgICAgICAgc2VydmljZVdvcmtlclJlc3VsdC5tYW5pZmVzdCxcbiAgICAgICAgQnVpbGRPdXRwdXRGaWxlVHlwZS5Ccm93c2VyLFxuICAgICAgKTtcbiAgICAgIGV4ZWN1dGlvblJlc3VsdC5hZGRBc3NldHMoc2VydmljZVdvcmtlclJlc3VsdC5hc3NldEZpbGVzKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29udGV4dC5sb2dnZXIuZXJyb3IoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBgJHtlcnJvcn1gKTtcblxuICAgICAgcmV0dXJuIGV4ZWN1dGlvblJlc3VsdDtcbiAgICB9XG4gIH1cblxuICAvLyBBbmFseXplIGZpbGVzIGZvciBidW5kbGUgYnVkZ2V0IGZhaWx1cmVzIGlmIHByZXNlbnRcbiAgbGV0IGJ1ZGdldEZhaWx1cmVzO1xuICBpZiAob3B0aW9ucy5idWRnZXRzKSB7XG4gICAgY29uc3QgY29tcGF0U3RhdHMgPSBnZW5lcmF0ZUJ1ZGdldFN0YXRzKG1ldGFmaWxlLCBpbml0aWFsRmlsZXMpO1xuICAgIGJ1ZGdldEZhaWx1cmVzID0gWy4uLmNoZWNrQnVkZ2V0cyhvcHRpb25zLmJ1ZGdldHMsIGNvbXBhdFN0YXRzLCB0cnVlKV07XG4gICAgZm9yIChjb25zdCB7IHNldmVyaXR5LCBtZXNzYWdlIH0gb2YgYnVkZ2V0RmFpbHVyZXMpIHtcbiAgICAgIGlmIChzZXZlcml0eSA9PT0gJ2Vycm9yJykge1xuICAgICAgICBjb250ZXh0LmxvZ2dlci5lcnJvcihtZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm4obWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIGVzdGltYXRlZCB0cmFuc2ZlciBzaXplIGlmIHNjcmlwdHMgYXJlIG9wdGltaXplZFxuICBsZXQgZXN0aW1hdGVkVHJhbnNmZXJTaXplcztcbiAgaWYgKG9wdGltaXphdGlvbk9wdGlvbnMuc2NyaXB0cyB8fCBvcHRpbWl6YXRpb25PcHRpb25zLnN0eWxlcy5taW5pZnkpIHtcbiAgICBlc3RpbWF0ZWRUcmFuc2ZlclNpemVzID0gYXdhaXQgY2FsY3VsYXRlRXN0aW1hdGVkVHJhbnNmZXJTaXplcyhleGVjdXRpb25SZXN1bHQub3V0cHV0RmlsZXMpO1xuICB9XG5cbiAgbG9nQnVpbGRTdGF0cyhjb250ZXh0LCBtZXRhZmlsZSwgaW5pdGlhbEZpbGVzLCBidWRnZXRGYWlsdXJlcywgZXN0aW1hdGVkVHJhbnNmZXJTaXplcyk7XG5cbiAgY29uc3QgYnVpbGRUaW1lID0gTnVtYmVyKHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpIC0gc3RhcnRUaW1lKSAvIDEwICoqIDk7XG4gIGNvbnRleHQubG9nZ2VyLmluZm8oYEFwcGxpY2F0aW9uIGJ1bmRsZSBnZW5lcmF0aW9uIGNvbXBsZXRlLiBbJHtidWlsZFRpbWUudG9GaXhlZCgzKX0gc2Vjb25kc11gKTtcblxuICAvLyBQZXJmb3JtIGkxOG4gdHJhbnNsYXRpb24gaW5saW5pbmcgaWYgZW5hYmxlZFxuICBpZiAob3B0aW9ucy5pMThuT3B0aW9ucy5zaG91bGRJbmxpbmUpIHtcbiAgICBjb25zdCB7IGVycm9ycywgd2FybmluZ3MgfSA9IGF3YWl0IGlubGluZUkxOG4ob3B0aW9ucywgZXhlY3V0aW9uUmVzdWx0LCBpbml0aWFsRmlsZXMpO1xuICAgIHByaW50V2FybmluZ3NBbmRFcnJvcnNUb0NvbnNvbGUoY29udGV4dCwgd2FybmluZ3MsIGVycm9ycyk7XG4gIH1cblxuICAvLyBXcml0ZSBtZXRhZmlsZSBpZiBzdGF0cyBvcHRpb24gaXMgZW5hYmxlZFxuICBpZiAob3B0aW9ucy5zdGF0cykge1xuICAgIGV4ZWN1dGlvblJlc3VsdC5hZGRPdXRwdXRGaWxlKFxuICAgICAgJ3N0YXRzLmpzb24nLFxuICAgICAgSlNPTi5zdHJpbmdpZnkobWV0YWZpbGUsIG51bGwsIDIpLFxuICAgICAgQnVpbGRPdXRwdXRGaWxlVHlwZS5Sb290LFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZXhlY3V0aW9uUmVzdWx0O1xufVxuXG5mdW5jdGlvbiBwcmludFdhcm5pbmdzQW5kRXJyb3JzVG9Db25zb2xlKFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgd2FybmluZ3M6IHN0cmluZ1tdLFxuICBlcnJvcnM6IHN0cmluZ1tdLFxuKTogdm9pZCB7XG4gIGZvciAoY29uc3QgZXJyb3Igb2YgZXJyb3JzKSB7XG4gICAgY29udGV4dC5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICB9XG4gIGZvciAoY29uc3Qgd2FybmluZyBvZiB3YXJuaW5ncykge1xuICAgIGNvbnRleHQubG9nZ2VyLndhcm4od2FybmluZyk7XG4gIH1cbn1cbiJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS1idWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2J1aWxkZXJzL2FwcGxpY2F0aW9uL2V4ZWN1dGUtYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBR0gscUZBQWdGO0FBQ2hGLHlGQUlxRDtBQUNyRCxtRUFBdUU7QUFDdkUseUVBQTBGO0FBQzFGLDJGQUE2RjtBQUM3RiwyRUFBNEU7QUFDNUUsdUVBQXNGO0FBQ3RGLHFFQUFvRjtBQUNwRiw2RUFBd0U7QUFDeEUscURBTW1DO0FBQ25DLHFFQUE2RDtBQUM3RCx5REFBcUQ7QUFDckQsdUVBQXNFO0FBQ3RFLCtEQUErRDtBQUMvRCxpQ0FBNEQ7QUFHNUQsa0RBQWtEO0FBQzNDLEtBQUssVUFBVSxZQUFZLENBQ2hDLE9BQTBDLEVBQzFDLE9BQXVCLEVBQ3ZCLFlBQTJCO0lBRTNCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFMUMsTUFBTSxFQUNKLFdBQVcsRUFDWCxhQUFhLEVBQ2IsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFVBQVUsR0FDWCxHQUFHLE9BQU8sQ0FBQztJQUVaLE1BQU0sUUFBUSxHQUFHLElBQUEseUNBQW9CLEVBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFBLDJDQUFtQyxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTdELHVDQUF1QztJQUN2QyxxRUFBcUU7SUFDckUsSUFBSSxXQUFXLENBQUMsWUFBWSxFQUFFO1FBQzVCLE1BQU0sSUFBQSw2QkFBc0IsRUFBQyxPQUFPLEVBQUUsV0FB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SUFBSSxDQUFDLENBQUM7SUFDeEUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNENBQTRDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pHLDRDQUE0QztJQUM1QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDakIsZUFBZSxDQUFDLGFBQWEsQ0FDM0IsWUFBWSxFQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFDakMscUNBQW1CLENBQUMsSUFBSSxDQUN6QixDQUFDO0tBQ0g7SUFFRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBcE5ELG9DQW9OQztBQUVELFNBQVMsK0JBQStCLENBQ3RDLE9BQXVCLEVBQ3ZCLFFBQWtCLEVBQ2xCLE1BQWdCO0lBRWhCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFO1FBQzFCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzdCO0lBQ0QsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7UUFDOUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDOUI7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEJ1aWxkZXJDb250ZXh0IH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2FyY2hpdGVjdCc7XG5pbXBvcnQgeyBTb3VyY2VGaWxlQ2FjaGUgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2FuZ3VsYXIvc291cmNlLWZpbGUtY2FjaGUnO1xuaW1wb3J0IHtcbiAgY3JlYXRlQnJvd3NlckNvZGVCdW5kbGVPcHRpb25zLFxuICBjcmVhdGVCcm93c2VyUG9seWZpbGxCdW5kbGVPcHRpb25zLFxuICBjcmVhdGVTZXJ2ZXJDb2RlQnVuZGxlT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9hcHBsaWNhdGlvbi1jb2RlLWJ1bmRsZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZUJ1ZGdldFN0YXRzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9idWRnZXQtc3RhdHMnO1xuaW1wb3J0IHsgQnVpbGRPdXRwdXRGaWxlVHlwZSwgQnVuZGxlckNvbnRleHQgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2J1bmRsZXItY29udGV4dCc7XG5pbXBvcnQgeyBFeGVjdXRpb25SZXN1bHQsIFJlYnVpbGRTdGF0ZSB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvYnVuZGxlci1leGVjdXRpb24tcmVzdWx0JztcbmltcG9ydCB7IGNoZWNrQ29tbW9uSlNNb2R1bGVzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9jb21tb25qcy1jaGVja2VyJztcbmltcG9ydCB7IGNyZWF0ZUdsb2JhbFNjcmlwdHNCdW5kbGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9nbG9iYWwtc2NyaXB0cyc7XG5pbXBvcnQgeyBjcmVhdGVHbG9iYWxTdHlsZXNCdW5kbGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9nbG9iYWwtc3R5bGVzJztcbmltcG9ydCB7IGV4dHJhY3RMaWNlbnNlcyB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvbGljZW5zZS1leHRyYWN0b3InO1xuaW1wb3J0IHtcbiAgY2FsY3VsYXRlRXN0aW1hdGVkVHJhbnNmZXJTaXplcyxcbiAgZ2V0U3VwcG9ydGVkTm9kZVRhcmdldHMsXG4gIGxvZ0J1aWxkU3RhdHMsXG4gIGxvZ01lc3NhZ2VzLFxuICB0cmFuc2Zvcm1TdXBwb3J0ZWRCcm93c2Vyc1RvVGFyZ2V0cyxcbn0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC91dGlscyc7XG5pbXBvcnQgeyBjaGVja0J1ZGdldHMgfSBmcm9tICcuLi8uLi91dGlscy9idW5kbGUtY2FsY3VsYXRvcic7XG5pbXBvcnQgeyBjb3B5QXNzZXRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29weS1hc3NldHMnO1xuaW1wb3J0IHsgZ2V0U3VwcG9ydGVkQnJvd3NlcnMgfSBmcm9tICcuLi8uLi91dGlscy9zdXBwb3J0ZWQtYnJvd3NlcnMnO1xuaW1wb3J0IHsgZXhlY3V0ZVBvc3RCdW5kbGVTdGVwcyB9IGZyb20gJy4vZXhlY3V0ZS1wb3N0LWJ1bmRsZSc7XG5pbXBvcnQgeyBpbmxpbmVJMThuLCBsb2FkQWN0aXZlVHJhbnNsYXRpb25zIH0gZnJvbSAnLi9pMThuJztcbmltcG9ydCB7IE5vcm1hbGl6ZWRBcHBsaWNhdGlvbkJ1aWxkT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGluZXMtcGVyLWZ1bmN0aW9uXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUJ1aWxkKFxuICBvcHRpb25zOiBOb3JtYWxpemVkQXBwbGljYXRpb25CdWlsZE9wdGlvbnMsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICByZWJ1aWxkU3RhdGU/OiBSZWJ1aWxkU3RhdGUsXG4pOiBQcm9taXNlPEV4ZWN1dGlvblJlc3VsdD4ge1xuICBjb25zdCBzdGFydFRpbWUgPSBwcm9jZXNzLmhydGltZS5iaWdpbnQoKTtcblxuICBjb25zdCB7XG4gICAgcHJvamVjdFJvb3QsXG4gICAgd29ya3NwYWNlUm9vdCxcbiAgICBpMThuT3B0aW9ucyxcbiAgICBvcHRpbWl6YXRpb25PcHRpb25zLFxuICAgIHNlcnZlckVudHJ5UG9pbnQsXG4gICAgYXNzZXRzLFxuICAgIGNhY2hlT3B0aW9ucyxcbiAgICBwcmVyZW5kZXJPcHRpb25zLFxuICAgIGFwcFNoZWxsT3B0aW9ucyxcbiAgICBzc3JPcHRpb25zLFxuICB9ID0gb3B0aW9ucztcblxuICBjb25zdCBicm93c2VycyA9IGdldFN1cHBvcnRlZEJyb3dzZXJzKHByb2plY3RSb290LCBjb250ZXh0LmxvZ2dlcik7XG4gIGNvbnN0IHRhcmdldCA9IHRyYW5zZm9ybVN1cHBvcnRlZEJyb3dzZXJzVG9UYXJnZXRzKGJyb3dzZXJzKTtcblxuICAvLyBMb2FkIGFjdGl2ZSB0cmFuc2xhdGlvbnMgaWYgaW5saW5pbmdcbiAgLy8gVE9ETzogSW50ZWdyYXRlIGludG8gd2F0Y2ggbW9kZSBhbmQgb25seSBsb2FkIGNoYW5nZWQgdHJhbnNsYXRpb25zXG4gIGlmIChpMThuT3B0aW9ucy5zaG91bGRJbmxpbmUpIHtcbiAgICBhd2FpdCBsb2FkQWN0aXZlVHJhbnNsYXRpb25zKGNvbnRleHQsIGkxOG5PcHRpb25zKTtcbiAgfVxuXG4gIC8vIFJldXNlIHJlYnVpbGQgc3RhdGUgb3IgY3JlYXRlIG5ldyBidW5kbGUgY29udGV4dHMgZm9yIGNvZGUgYW5kIGdsb2JhbCBzdHlsZXNoZWV0c1xuICBsZXQgYnVuZGxlckNvbnRleHRzID0gcmVidWlsZFN0YXRlPy5yZWJ1aWxkQ29udGV4dHM7XG4gIGNvbnN0IGNvZGVCdW5kbGVDYWNoZSA9XG4gICAgcmVidWlsZFN0YXRlPy5jb2RlQnVuZGxlQ2FjaGUgPz9cbiAgICBuZXcgU291cmNlRmlsZUNhY2hlKGNhY2hlT3B0aW9ucy5lbmFibGVkID8gY2FjaGVPcHRpb25zLnBhdGggOiB1bmRlZmluZWQpO1xuICBpZiAoYnVuZGxlckNvbnRleHRzID09PSB1bmRlZmluZWQpIHtcbiAgICBidW5kbGVyQ29udGV4dHMgPSBbXTtcblxuICAgIC8vIEJyb3dzZXIgYXBwbGljYXRpb24gY29kZVxuICAgIGJ1bmRsZXJDb250ZXh0cy5wdXNoKFxuICAgICAgbmV3IEJ1bmRsZXJDb250ZXh0KFxuICAgICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgICAhIW9wdGlvbnMud2F0Y2gsXG4gICAgICAgIGNyZWF0ZUJyb3dzZXJDb2RlQnVuZGxlT3B0aW9ucyhvcHRpb25zLCB0YXJnZXQsIGNvZGVCdW5kbGVDYWNoZSksXG4gICAgICApLFxuICAgICk7XG5cbiAgICAvLyBCcm93c2VyIHBvbHlmaWxscyBjb2RlXG4gICAgY29uc3QgcG9seWZpbGxCdW5kbGVPcHRpb25zID0gY3JlYXRlQnJvd3NlclBvbHlmaWxsQnVuZGxlT3B0aW9ucyhcbiAgICAgIG9wdGlvbnMsXG4gICAgICB0YXJnZXQsXG4gICAgICBjb2RlQnVuZGxlQ2FjaGUsXG4gICAgKTtcbiAgICBpZiAocG9seWZpbGxCdW5kbGVPcHRpb25zKSB7XG4gICAgICBidW5kbGVyQ29udGV4dHMucHVzaChcbiAgICAgICAgbmV3IEJ1bmRsZXJDb250ZXh0KHdvcmtzcGFjZVJvb3QsICEhb3B0aW9ucy53YXRjaCwgcG9seWZpbGxCdW5kbGVPcHRpb25zKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gR2xvYmFsIFN0eWxlc2hlZXRzXG4gICAgaWYgKG9wdGlvbnMuZ2xvYmFsU3R5bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgaW5pdGlhbCBvZiBbdHJ1ZSwgZmFsc2VdKSB7XG4gICAgICAgIGNvbnN0IGJ1bmRsZU9wdGlvbnMgPSBjcmVhdGVHbG9iYWxTdHlsZXNCdW5kbGVPcHRpb25zKFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIGluaXRpYWwsXG4gICAgICAgICAgY29kZUJ1bmRsZUNhY2hlPy5sb2FkUmVzdWx0Q2FjaGUsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChidW5kbGVPcHRpb25zKSB7XG4gICAgICAgICAgYnVuZGxlckNvbnRleHRzLnB1c2goXG4gICAgICAgICAgICBuZXcgQnVuZGxlckNvbnRleHQod29ya3NwYWNlUm9vdCwgISFvcHRpb25zLndhdGNoLCBidW5kbGVPcHRpb25zLCAoKSA9PiBpbml0aWFsKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2xvYmFsIFNjcmlwdHNcbiAgICBpZiAob3B0aW9ucy5nbG9iYWxTY3JpcHRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgaW5pdGlhbCBvZiBbdHJ1ZSwgZmFsc2VdKSB7XG4gICAgICAgIGNvbnN0IGJ1bmRsZU9wdGlvbnMgPSBjcmVhdGVHbG9iYWxTY3JpcHRzQnVuZGxlT3B0aW9ucyhvcHRpb25zLCBpbml0aWFsKTtcbiAgICAgICAgaWYgKGJ1bmRsZU9wdGlvbnMpIHtcbiAgICAgICAgICBidW5kbGVyQ29udGV4dHMucHVzaChcbiAgICAgICAgICAgIG5ldyBCdW5kbGVyQ29udGV4dCh3b3Jrc3BhY2VSb290LCAhIW9wdGlvbnMud2F0Y2gsIGJ1bmRsZU9wdGlvbnMsICgpID0+IGluaXRpYWwpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXJ2ZXIgYXBwbGljYXRpb24gY29kZVxuICAgIC8vIFNraXAgc2VydmVyIGJ1aWxkIHdoZW4gbm9uZSBvZiB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQuXG4gICAgaWYgKHNlcnZlckVudHJ5UG9pbnQgJiYgKHByZXJlbmRlck9wdGlvbnMgfHwgYXBwU2hlbGxPcHRpb25zIHx8IHNzck9wdGlvbnMpKSB7XG4gICAgICBjb25zdCBub2RlVGFyZ2V0cyA9IGdldFN1cHBvcnRlZE5vZGVUYXJnZXRzKCk7XG4gICAgICBidW5kbGVyQ29udGV4dHMucHVzaChcbiAgICAgICAgbmV3IEJ1bmRsZXJDb250ZXh0KFxuICAgICAgICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgICAgICAgISFvcHRpb25zLndhdGNoLFxuICAgICAgICAgIGNyZWF0ZVNlcnZlckNvZGVCdW5kbGVPcHRpb25zKG9wdGlvbnMsIFsuLi50YXJnZXQsIC4uLm5vZGVUYXJnZXRzXSwgY29kZUJ1bmRsZUNhY2hlKSxcbiAgICAgICAgICAoKSA9PiBmYWxzZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYnVuZGxpbmdSZXN1bHQgPSBhd2FpdCBCdW5kbGVyQ29udGV4dC5idW5kbGVBbGwoYnVuZGxlckNvbnRleHRzKTtcblxuICAvLyBMb2cgYWxsIHdhcm5pbmdzIGFuZCBlcnJvcnMgZ2VuZXJhdGVkIGR1cmluZyBidW5kbGluZ1xuICBhd2FpdCBsb2dNZXNzYWdlcyhjb250ZXh0LCBidW5kbGluZ1Jlc3VsdCk7XG5cbiAgY29uc3QgZXhlY3V0aW9uUmVzdWx0ID0gbmV3IEV4ZWN1dGlvblJlc3VsdChidW5kbGVyQ29udGV4dHMsIGNvZGVCdW5kbGVDYWNoZSk7XG5cbiAgLy8gUmV0dXJuIGlmIHRoZSBidW5kbGluZyBoYXMgZXJyb3JzXG4gIGlmIChidW5kbGluZ1Jlc3VsdC5lcnJvcnMpIHtcbiAgICBleGVjdXRpb25SZXN1bHQuYWRkRXJyb3JzKGJ1bmRsaW5nUmVzdWx0LmVycm9ycyk7XG5cbiAgICByZXR1cm4gZXhlY3V0aW9uUmVzdWx0O1xuICB9XG5cbiAgY29uc3QgeyBtZXRhZmlsZSwgaW5pdGlhbEZpbGVzLCBvdXRwdXRGaWxlcyB9ID0gYnVuZGxpbmdSZXN1bHQ7XG5cbiAgZXhlY3V0aW9uUmVzdWx0Lm91dHB1dEZpbGVzLnB1c2goLi4ub3V0cHV0RmlsZXMpO1xuXG4gIC8vIENoZWNrIG1ldGFmaWxlIGZvciBDb21tb25KUyBtb2R1bGUgdXNhZ2UgaWYgb3B0aW1pemluZyBzY3JpcHRzXG4gIGlmIChvcHRpbWl6YXRpb25PcHRpb25zLnNjcmlwdHMpIHtcbiAgICBjb25zdCBtZXNzYWdlcyA9IGNoZWNrQ29tbW9uSlNNb2R1bGVzKG1ldGFmaWxlLCBvcHRpb25zLmFsbG93ZWRDb21tb25Kc0RlcGVuZGVuY2llcyk7XG4gICAgYXdhaXQgbG9nTWVzc2FnZXMoY29udGV4dCwgeyB3YXJuaW5nczogbWVzc2FnZXMgfSk7XG4gIH1cblxuICAvLyBDb3B5IGFzc2V0c1xuICBpZiAoYXNzZXRzKSB7XG4gICAgLy8gVGhlIHdlYnBhY2sgY29weSBhc3NldHMgaGVscGVyIGlzIHVzZWQgd2l0aCBubyBiYXNlIHBhdGhzIGRlZmluZWQuIFRoaXMgcHJldmVudHMgdGhlIGhlbHBlclxuICAgIC8vIGZyb20gZGlyZWN0bHkgd3JpdGluZyB0byBkaXNrLiBUaGlzIHNob3VsZCBldmVudHVhbGx5IGJlIHJlcGxhY2VkIHdpdGggYSBtb3JlIG9wdGltaXplZCBoZWxwZXIuXG4gICAgZXhlY3V0aW9uUmVzdWx0LmFkZEFzc2V0cyhhd2FpdCBjb3B5QXNzZXRzKGFzc2V0cywgW10sIHdvcmtzcGFjZVJvb3QpKTtcbiAgfVxuXG4gIC8vIEV4dHJhY3QgYW5kIHdyaXRlIGxpY2Vuc2VzIGZvciB1c2VkIHBhY2thZ2VzXG4gIGlmIChvcHRpb25zLmV4dHJhY3RMaWNlbnNlcykge1xuICAgIGV4ZWN1dGlvblJlc3VsdC5hZGRPdXRwdXRGaWxlKFxuICAgICAgJzNyZHBhcnR5bGljZW5zZXMudHh0JyxcbiAgICAgIGF3YWl0IGV4dHJhY3RMaWNlbnNlcyhtZXRhZmlsZSwgd29ya3NwYWNlUm9vdCksXG4gICAgICBCdWlsZE91dHB1dEZpbGVUeXBlLlJvb3QsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEFuYWx5emUgZmlsZXMgZm9yIGJ1bmRsZSBidWRnZXQgZmFpbHVyZXMgaWYgcHJlc2VudFxuICBsZXQgYnVkZ2V0RmFpbHVyZXM7XG4gIGlmIChvcHRpb25zLmJ1ZGdldHMpIHtcbiAgICBjb25zdCBjb21wYXRTdGF0cyA9IGdlbmVyYXRlQnVkZ2V0U3RhdHMobWV0YWZpbGUsIGluaXRpYWxGaWxlcyk7XG4gICAgYnVkZ2V0RmFpbHVyZXMgPSBbLi4uY2hlY2tCdWRnZXRzKG9wdGlvbnMuYnVkZ2V0cywgY29tcGF0U3RhdHMsIHRydWUpXTtcbiAgICBmb3IgKGNvbnN0IHsgc2V2ZXJpdHksIG1lc3NhZ2UgfSBvZiBidWRnZXRGYWlsdXJlcykge1xuICAgICAgaWYgKHNldmVyaXR5ID09PSAnZXJyb3InKSB7XG4gICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5sb2dnZXIud2FybihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgZXN0aW1hdGVkIHRyYW5zZmVyIHNpemUgaWYgc2NyaXB0cyBhcmUgb3B0aW1pemVkXG4gIGxldCBlc3RpbWF0ZWRUcmFuc2ZlclNpemVzO1xuICBpZiAob3B0aW1pemF0aW9uT3B0aW9ucy5zY3JpcHRzIHx8IG9wdGltaXphdGlvbk9wdGlvbnMuc3R5bGVzLm1pbmlmeSkge1xuICAgIGVzdGltYXRlZFRyYW5zZmVyU2l6ZXMgPSBhd2FpdCBjYWxjdWxhdGVFc3RpbWF0ZWRUcmFuc2ZlclNpemVzKGV4ZWN1dGlvblJlc3VsdC5vdXRwdXRGaWxlcyk7XG4gIH1cblxuICAvLyBQZXJmb3JtIGkxOG4gdHJhbnNsYXRpb24gaW5saW5pbmcgaWYgZW5hYmxlZFxuICBsZXQgcHJlcmVuZGVyZWRSb3V0ZXM6IHN0cmluZ1tdO1xuICBsZXQgZXJyb3JzOiBzdHJpbmdbXTtcbiAgbGV0IHdhcm5pbmdzOiBzdHJpbmdbXTtcbiAgaWYgKGkxOG5PcHRpb25zLnNob3VsZElubGluZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGlubGluZUkxOG4ob3B0aW9ucywgZXhlY3V0aW9uUmVzdWx0LCBpbml0aWFsRmlsZXMpO1xuICAgIGVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgd2FybmluZ3MgPSByZXN1bHQud2FybmluZ3M7XG4gICAgcHJlcmVuZGVyZWRSb3V0ZXMgPSByZXN1bHQucHJlcmVuZGVyZWRSb3V0ZXM7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY3V0ZVBvc3RCdW5kbGVTdGVwcyhcbiAgICAgIG9wdGlvbnMsXG4gICAgICBleGVjdXRpb25SZXN1bHQub3V0cHV0RmlsZXMsXG4gICAgICBleGVjdXRpb25SZXN1bHQuYXNzZXRGaWxlcyxcbiAgICAgIGluaXRpYWxGaWxlcyxcbiAgICAgIC8vIFNldCBsYW5nIGF0dHJpYnV0ZSB0byB0aGUgZGVmaW5lZCBzb3VyY2UgbG9jYWxlIGlmIHByZXNlbnRcbiAgICAgIGkxOG5PcHRpb25zLmhhc0RlZmluZWRTb3VyY2VMb2NhbGUgPyBpMThuT3B0aW9ucy5zb3VyY2VMb2NhbGUgOiB1bmRlZmluZWQsXG4gICAgKTtcblxuICAgIGVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgd2FybmluZ3MgPSByZXN1bHQud2FybmluZ3M7XG4gICAgcHJlcmVuZGVyZWRSb3V0ZXMgPSByZXN1bHQucHJlcmVuZGVyZWRSb3V0ZXM7XG4gICAgZXhlY3V0aW9uUmVzdWx0Lm91dHB1dEZpbGVzLnB1c2goLi4ucmVzdWx0LmFkZGl0aW9uYWxPdXRwdXRGaWxlcyk7XG4gICAgZXhlY3V0aW9uUmVzdWx0LmFzc2V0RmlsZXMucHVzaCguLi5yZXN1bHQuYWRkaXRpb25hbEFzc2V0cyk7XG4gIH1cblxuICBpZiAocHJlcmVuZGVyT3B0aW9ucykge1xuICAgIGV4ZWN1dGlvblJlc3VsdC5hZGRPdXRwdXRGaWxlKFxuICAgICAgJ3ByZXJlbmRlcmVkLXJvdXRlcy5qc29uJyxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgcm91dGVzOiBwcmVyZW5kZXJlZFJvdXRlcy5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpIH0sIG51bGwsIDIpLFxuICAgICAgQnVpbGRPdXRwdXRGaWxlVHlwZS5Sb290LFxuICAgICk7XG4gIH1cblxuICBwcmludFdhcm5pbmdzQW5kRXJyb3JzVG9Db25zb2xlKGNvbnRleHQsIHdhcm5pbmdzLCBlcnJvcnMpO1xuXG4gIGxvZ0J1aWxkU3RhdHMoY29udGV4dCwgbWV0YWZpbGUsIGluaXRpYWxGaWxlcywgYnVkZ2V0RmFpbHVyZXMsIGVzdGltYXRlZFRyYW5zZmVyU2l6ZXMpO1xuXG4gIGNvbnN0IGJ1aWxkVGltZSA9IE51bWJlcihwcm9jZXNzLmhydGltZS5iaWdpbnQoKSAtIHN0YXJ0VGltZSkgLyAxMCAqKiA5O1xuICBjb250ZXh0LmxvZ2dlci5pbmZvKGBBcHBsaWNhdGlvbiBidW5kbGUgZ2VuZXJhdGlvbiBjb21wbGV0ZS4gWyR7YnVpbGRUaW1lLnRvRml4ZWQoMyl9IHNlY29uZHNdYCk7XG4gIC8vIFdyaXRlIG1ldGFmaWxlIGlmIHN0YXRzIG9wdGlvbiBpcyBlbmFibGVkXG4gIGlmIChvcHRpb25zLnN0YXRzKSB7XG4gICAgZXhlY3V0aW9uUmVzdWx0LmFkZE91dHB1dEZpbGUoXG4gICAgICAnc3RhdHMuanNvbicsXG4gICAgICBKU09OLnN0cmluZ2lmeShtZXRhZmlsZSwgbnVsbCwgMiksXG4gICAgICBCdWlsZE91dHB1dEZpbGVUeXBlLlJvb3QsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBleGVjdXRpb25SZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHByaW50V2FybmluZ3NBbmRFcnJvcnNUb0NvbnNvbGUoXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuICB3YXJuaW5nczogc3RyaW5nW10sXG4gIGVycm9yczogc3RyaW5nW10sXG4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBlcnJvciBvZiBlcnJvcnMpIHtcbiAgICBjb250ZXh0LmxvZ2dlci5lcnJvcihlcnJvcik7XG4gIH1cbiAgZm9yIChjb25zdCB3YXJuaW5nIG9mIHdhcm5pbmdzKSB7XG4gICAgY29udGV4dC5sb2dnZXIud2Fybih3YXJuaW5nKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { BuildOutputFile, InitialFileRecord } from '../../tools/esbuild/bundler-context';
9
+ import { BuildOutputAsset } from '../../tools/esbuild/bundler-execution-result';
10
+ import { NormalizedApplicationBuildOptions } from './options';
11
+ /**
12
+ * Run additional builds steps including SSG, AppShell, Index HTML file and Service worker generation.
13
+ * @param options The normalized application builder options used to create the build.
14
+ * @param outputFiles The output files of an executed build.
15
+ * @param assetFiles The assets of an executed build.
16
+ * @param initialFiles A map containing initial file information for the executed build.
17
+ * @param locale A language locale to insert in the index.html.
18
+ */
19
+ export declare function executePostBundleSteps(options: NormalizedApplicationBuildOptions, outputFiles: BuildOutputFile[], assetFiles: BuildOutputAsset[], initialFiles: Map<string, InitialFileRecord>, locale: string | undefined): Promise<{
20
+ errors: string[];
21
+ warnings: string[];
22
+ additionalOutputFiles: BuildOutputFile[];
23
+ additionalAssets: BuildOutputAsset[];
24
+ prerenderedRoutes: string[];
25
+ }>;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.executePostBundleSteps = void 0;
14
+ const node_assert_1 = __importDefault(require("node:assert"));
15
+ const bundler_context_1 = require("../../tools/esbuild/bundler-context");
16
+ const index_html_generator_1 = require("../../tools/esbuild/index-html-generator");
17
+ const utils_1 = require("../../tools/esbuild/utils");
18
+ const environment_options_1 = require("../../utils/environment-options");
19
+ const prerender_1 = require("../../utils/server-rendering/prerender");
20
+ const service_worker_1 = require("../../utils/service-worker");
21
+ /**
22
+ * Run additional builds steps including SSG, AppShell, Index HTML file and Service worker generation.
23
+ * @param options The normalized application builder options used to create the build.
24
+ * @param outputFiles The output files of an executed build.
25
+ * @param assetFiles The assets of an executed build.
26
+ * @param initialFiles A map containing initial file information for the executed build.
27
+ * @param locale A language locale to insert in the index.html.
28
+ */
29
+ async function executePostBundleSteps(options, outputFiles, assetFiles, initialFiles, locale) {
30
+ const additionalAssets = [];
31
+ const additionalOutputFiles = [];
32
+ const allErrors = [];
33
+ const allWarnings = [];
34
+ const prerenderedRoutes = [];
35
+ const { serviceWorker, indexHtmlOptions, optimizationOptions, sourcemapOptions, ssrOptions, prerenderOptions, appShellOptions, workspaceRoot, verbose, } = options;
36
+ /**
37
+ * Index HTML content without CSS inlining to be used for server rendering (AppShell, SSG and SSR).
38
+ *
39
+ * NOTE: we don't perform critical CSS inlining as this will be done during server rendering.
40
+ */
41
+ let indexContentOutputNoCssInlining;
42
+ // Generate index HTML file
43
+ // If localization is enabled, index generation is handled in the inlining process.
44
+ // NOTE: Localization with SSR is not currently supported.
45
+ if (indexHtmlOptions) {
46
+ const { content, contentWithoutCriticalCssInlined, errors, warnings } = await (0, index_html_generator_1.generateIndexHtml)(initialFiles, outputFiles, {
47
+ ...options,
48
+ optimizationOptions,
49
+ }, locale);
50
+ indexContentOutputNoCssInlining = contentWithoutCriticalCssInlined;
51
+ allErrors.push(...errors);
52
+ allWarnings.push(...warnings);
53
+ additionalOutputFiles.push((0, utils_1.createOutputFileFromText)(indexHtmlOptions.output, content, bundler_context_1.BuildOutputFileType.Browser));
54
+ if (ssrOptions) {
55
+ additionalOutputFiles.push((0, utils_1.createOutputFileFromText)('index.server.html', contentWithoutCriticalCssInlined, bundler_context_1.BuildOutputFileType.Server));
56
+ }
57
+ }
58
+ // Pre-render (SSG) and App-shell
59
+ // If localization is enabled, prerendering is handled in the inlining process.
60
+ if (prerenderOptions || appShellOptions) {
61
+ (0, node_assert_1.default)(indexContentOutputNoCssInlining, 'The "index" option is required when using the "ssg" or "appShell" options.');
62
+ const { output, warnings, errors, prerenderedRoutes: generatedRoutes, } = await (0, prerender_1.prerenderPages)(workspaceRoot, appShellOptions, prerenderOptions, outputFiles, indexContentOutputNoCssInlining, sourcemapOptions.scripts, optimizationOptions.styles.inlineCritical, environment_options_1.maxWorkers, verbose);
63
+ allErrors.push(...errors);
64
+ allWarnings.push(...warnings);
65
+ prerenderedRoutes.push(...Array.from(generatedRoutes));
66
+ for (const [path, content] of Object.entries(output)) {
67
+ additionalOutputFiles.push((0, utils_1.createOutputFileFromText)(path, content, bundler_context_1.BuildOutputFileType.Browser));
68
+ }
69
+ }
70
+ // Augment the application with service worker support
71
+ // If localization is enabled, service worker is handled in the inlining process.
72
+ if (serviceWorker) {
73
+ try {
74
+ const serviceWorkerResult = await (0, service_worker_1.augmentAppWithServiceWorkerEsbuild)(workspaceRoot, serviceWorker, options.baseHref || '/', outputFiles, assetFiles);
75
+ additionalOutputFiles.push((0, utils_1.createOutputFileFromText)('ngsw.json', serviceWorkerResult.manifest, bundler_context_1.BuildOutputFileType.Browser));
76
+ additionalAssets.push(...serviceWorkerResult.assetFiles);
77
+ }
78
+ catch (error) {
79
+ allErrors.push(error instanceof Error ? error.message : `${error}`);
80
+ }
81
+ }
82
+ return {
83
+ errors: allErrors,
84
+ warnings: allWarnings,
85
+ additionalAssets,
86
+ prerenderedRoutes,
87
+ additionalOutputFiles,
88
+ };
89
+ }
90
+ exports.executePostBundleSteps = executePostBundleSteps;
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS1wb3N0LWJ1bmRsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2J1aWxkZXJzL2FwcGxpY2F0aW9uL2V4ZWN1dGUtcG9zdC1idW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7O0FBRUgsOERBQWlDO0FBQ2pDLHlFQUk2QztBQUU3QyxtRkFBNkU7QUFDN0UscURBQXFFO0FBQ3JFLHlFQUE2RDtBQUM3RCxzRUFBd0U7QUFDeEUsK0RBQWdGO0FBR2hGOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLE9BQTBDLEVBQzFDLFdBQThCLEVBQzlCLFVBQThCLEVBQzlCLFlBQTRDLEVBQzVDLE1BQTBCO0lBUTFCLE1BQU0sZ0JBQWdCLEdBQXVCLEVBQUUsQ0FBQztJQUNoRCxNQUFNLHFCQUFxQixHQUFzQixFQUFFLENBQUM7SUFDcEQsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO0lBQy9CLE1BQU0sV0FBVyxHQUFhLEVBQUUsQ0FBQztJQUNqQyxNQUFNLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUV2QyxNQUFNLEVBQ0osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGFBQWEsRUFDYixPQUFPLEdBQ1IsR0FBRyxPQUFPLENBQUM7SUFFWjs7OztPQUlHO0lBQ0gsSUFBSSwrQkFBbUQsQ0FBQztJQUV4RCwyQkFBMkI7SUFDM0IsbUZBQW1GO0lBQ25GLDBEQUEwRDtJQUMxRCxJQUFJLGdCQUFnQixFQUFFO1FBQ3BCLE1BQU0sRUFBRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sSUFBQSx3Q0FBaUIsRUFDN0Ys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b3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydCc7XG5pbXBvcnQge1xuICBCdWlsZE91dHB1dEZpbGUsXG4gIEJ1aWxkT3V0cHV0RmlsZVR5cGUsXG4gIEluaXRpYWxGaWxlUmVjb3JkLFxufSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2J1bmRsZXItY29udGV4dCc7XG5pbXBvcnQgeyBCdWlsZE91dHB1dEFzc2V0IH0gZnJvbSAnLi4vLi4vdG9vbHMvZXNidWlsZC9idW5kbGVyLWV4ZWN1dGlvbi1yZXN1bHQnO1xuaW1wb3J0IHsgZ2VuZXJhdGVJbmRleEh0bWwgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2luZGV4LWh0bWwtZ2VuZXJhdG9yJztcbmltcG9ydCB7IGNyZWF0ZU91dHB1dEZpbGVGcm9tVGV4dCB9IGZyb20gJy4uLy4uL3Rvb2xzL2VzYnVpbGQvdXRpbHMnO1xuaW1wb3J0IHsgbWF4V29ya2VycyB9IGZyb20gJy4uLy4uL3V0aWxzL2Vudmlyb25tZW50LW9wdGlvbnMnO1xuaW1wb3J0IHsgcHJlcmVuZGVyUGFnZXMgfSBmcm9tICcuLi8uLi91dGlscy9zZXJ2ZXItcmVuZGVyaW5nL3ByZXJlbmRlcic7XG5pbXBvcnQgeyBhdWdtZW50QXBwV2l0aFNlcnZpY2VXb3JrZXJFc2J1aWxkIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2VydmljZS13b3JrZXInO1xuaW1wb3J0IHsgTm9ybWFsaXplZEFwcGxpY2F0aW9uQnVpbGRPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcblxuLyoqXG4gKiBSdW4gYWRkaXRpb25hbCBidWlsZHMgc3RlcHMgaW5jbHVkaW5nIFNTRywgQXBwU2hlbGwsIEluZGV4IEhUTUwgZmlsZSBhbmQgU2VydmljZSB3b3JrZXIgZ2VuZXJhdGlvbi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBub3JtYWxpemVkIGFwcGxpY2F0aW9uIGJ1aWxkZXIgb3B0aW9ucyB1c2VkIHRvIGNyZWF0ZSB0aGUgYnVpbGQuXG4gKiBAcGFyYW0gb3V0cHV0RmlsZXMgVGhlIG91dHB1dCBmaWxlcyBvZiBhbiBleGVjdXRlZCBidWlsZC5cbiAqIEBwYXJhbSBhc3NldEZpbGVzIFRoZSBhc3NldHMgb2YgYW4gZXhlY3V0ZWQgYnVpbGQuXG4gKiBAcGFyYW0gaW5pdGlhbEZpbGVzIEEgbWFwIGNvbnRhaW5pbmcgaW5pdGlhbCBmaWxlIGluZm9ybWF0aW9uIGZvciB0aGUgZXhlY3V0ZWQgYnVpbGQuXG4gKiBAcGFyYW0gbG9jYWxlIEEgbGFuZ3VhZ2UgbG9jYWxlIHRvIGluc2VydCBpbiB0aGUgaW5kZXguaHRtbC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVQb3N0QnVuZGxlU3RlcHMoXG4gIG9wdGlvbnM6IE5vcm1hbGl6ZWRBcHBsaWNhdGlvbkJ1aWxkT3B0aW9ucyxcbiAgb3V0cHV0RmlsZXM6IEJ1aWxkT3V0cHV0RmlsZVtdLFxuICBhc3NldEZpbGVzOiBCdWlsZE91dHB1dEFzc2V0W10sXG4gIGluaXRpYWxGaWxlczogTWFwPHN0cmluZywgSW5pdGlhbEZpbGVSZWNvcmQ+LFxuICBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IFByb21pc2U8e1xuICBlcnJvcnM6IHN0cmluZ1tdO1xuICB3YXJuaW5nczogc3RyaW5nW107XG4gIGFkZGl0aW9uYWxPdXRwdXRGaWxlczogQnVpbGRPdXRwdXRGaWxlW107XG4gIGFkZGl0aW9uYWxBc3NldHM6IEJ1aWxkT3V0cHV0QXNzZXRbXTtcbiAgcHJlcmVuZGVyZWRSb3V0ZXM6IHN0cmluZ1tdO1xufT4ge1xuICBjb25zdCBhZGRpdGlvbmFsQXNzZXRzOiBCdWlsZE91dHB1dEFzc2V0W10gPSBbXTtcbiAgY29uc3QgYWRkaXRpb25hbE91dHB1dEZpbGVzOiBCdWlsZE91dHB1dEZpbGVbXSA9IFtdO1xuICBjb25zdCBhbGxFcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGFsbFdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBwcmVyZW5kZXJlZFJvdXRlczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCB7XG4gICAgc2VydmljZVdvcmtlcixcbiAgICBpbmRleEh0bWxPcHRpb25zLFxuICAgIG9wdGltaXphdGlvbk9wdGlvbnMsXG4gICAgc291cmNlbWFwT3B0aW9ucyxcbiAgICBzc3JPcHRpb25zLFxuICAgIHByZXJlbmRlck9wdGlvbnMsXG4gICAgYXBwU2hlbGxPcHRpb25zLFxuICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgdmVyYm9zZSxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEluZGV4IEhUTUwgY29udGVudCB3aXRob3V0IENTUyBpbmxpbmluZyB0byBiZSB1c2VkIGZvciBzZXJ2ZXIgcmVuZGVyaW5nIChBcHBTaGVsbCwgU1NHIGFuZCBTU1IpLlxuICAgKlxuICAgKiBOT1RFOiB3ZSBkb24ndCBwZXJmb3JtIGNyaXRpY2FsIENTUyBpbmxpbmluZyBhcyB0aGlzIHdpbGwgYmUgZG9uZSBkdXJpbmcgc2VydmVyIHJlbmRlcmluZy5cbiAgICovXG4gIGxldCBpbmRleENvbnRlbnRPdXRwdXROb0Nzc0lubGluaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLy8gR2VuZXJhdGUgaW5kZXggSFRNTCBmaWxlXG4gIC8vIElmIGxvY2FsaXphdGlvbiBpcyBlbmFibGVkLCBpbmRleCBnZW5lcmF0aW9uIGlzIGhhbmRsZWQgaW4gdGhlIGlubGluaW5nIHByb2Nlc3MuXG4gIC8vIE5PVEU6IExvY2FsaXphdGlvbiB3aXRoIFNTUiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC5cbiAgaWYgKGluZGV4SHRtbE9wdGlvbnMpIHtcbiAgICBjb25zdCB7IGNvbnRlbnQsIGNvbnRlbnRXaXRob3V0Q3JpdGljYWxDc3NJbmxpbmVkLCBlcnJvcnMsIHdhcm5pbmdzIH0gPSBhd2FpdCBnZW5lcmF0ZUluZGV4SHRtbChcbiAgICAgIGluaXRpYWxGaWxlcyxcbiAgICAgIG91dHB1dEZpbGVzLFxuICAgICAge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBvcHRpbWl6YXRpb25PcHRpb25zLFxuICAgICAgfSxcbiAgICAgIGxvY2FsZSxcbiAgICApO1xuXG4gICAgaW5kZXhDb250ZW50T3V0cHV0Tm9Dc3NJbmxpbmluZyA9IGNvbnRlbnRXaXRob3V0Q3JpdGljYWxDc3NJbmxpbmVkO1xuICAgIGFsbEVycm9ycy5wdXNoKC4uLmVycm9ycyk7XG4gICAgYWxsV2FybmluZ3MucHVzaCguLi53YXJuaW5ncyk7XG5cbiAgICBhZGRpdGlvbmFsT3V0cHV0RmlsZXMucHVzaChcbiAgICAgIGNyZWF0ZU91dHB1dEZpbGVGcm9tVGV4dChpbmRleEh0bWxPcHRpb25zLm91dHB1dCwgY29udGVudCwgQnVpbGRPdXRwdXRGaWxlVHlwZS5Ccm93c2VyKSxcbiAgICApO1xuXG4gICAgaWYgKHNzck9wdGlvbnMpIHtcbiAgICAgIGFkZGl0aW9uYWxPdXRwdXRGaWxlcy5wdXNoKFxuICAgICAgICBjcmVhdGVPdXRwdXRGaWxlRnJvbVRleHQoXG4gICAgICAgICAgJ2luZGV4LnNlcnZlci5odG1sJyxcbiAgICAgICAgICBjb250ZW50V2l0aG91dENyaXRpY2FsQ3NzSW5saW5lZCxcbiAgICAgICAgICBCdWlsZE91dHB1dEZpbGVUeXBlLlNlcnZlcixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHJlLXJlbmRlciAoU1NHKSBhbmQgQXBwLXNoZWxsXG4gIC8vIElmIGxvY2FsaXphdGlvbiBpcyBlbmFibGVkLCBwcmVyZW5kZXJpbmcgaXMgaGFuZGxlZCBpbiB0aGUgaW5saW5pbmcgcHJvY2Vzcy5cbiAgaWYgKHByZXJlbmRlck9wdGlvbnMgfHwgYXBwU2hlbGxPcHRpb25zKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgaW5kZXhDb250ZW50T3V0cHV0Tm9Dc3NJbmxpbmluZyxcbiAgICAgICdUaGUgXCJpbmRleFwiIG9wdGlvbiBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIHRoZSBcInNzZ1wiIG9yIFwiYXBwU2hlbGxcIiBvcHRpb25zLicsXG4gICAgKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIG91dHB1dCxcbiAgICAgIHdhcm5pbmdzLFxuICAgICAgZXJyb3JzLFxuICAgICAgcHJlcmVuZGVyZWRSb3V0ZXM6IGdlbmVyYXRlZFJvdXRlcyxcbiAgICB9ID0gYXdhaXQgcHJlcmVuZGVyUGFnZXMoXG4gICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgYXBwU2hlbGxPcHRpb25zLFxuICAgICAgcHJlcmVuZGVyT3B0aW9ucyxcbiAgICAgIG91dHB1dEZpbGVzLFxuICAgICAgaW5kZXhDb250ZW50T3V0cHV0Tm9Dc3NJbmxpbmluZyxcbiAgICAgIHNvdXJjZW1hcE9wdGlvbnMuc2NyaXB0cyxcbiAgICAgIG9wdGltaXphdGlvbk9wdGlvbnMuc3R5bGVzLmlubGluZUNyaXRpY2FsLFxuICAgICAgbWF4V29ya2VycyxcbiAgICAgIHZlcmJvc2UsXG4gICAgKTtcblxuICAgIGFsbEVycm9ycy5wdXNoKC4uLmVycm9ycyk7XG4gICAgYWxsV2FybmluZ3MucHVzaCguLi53YXJuaW5ncyk7XG4gICAgcHJlcmVuZGVyZWRSb3V0ZXMucHVzaCguLi5BcnJheS5mcm9tKGdlbmVyYXRlZFJvdXRlcykpO1xuXG4gICAgZm9yIChjb25zdCBbcGF0aCwgY29udGVudF0gb2YgT2JqZWN0LmVudHJpZXMob3V0cHV0KSkge1xuICAgICAgYWRkaXRpb25hbE91dHB1dEZpbGVzLnB1c2goXG4gICAgICAgIGNyZWF0ZU91dHB1dEZpbGVGcm9tVGV4dChwYXRoLCBjb250ZW50LCBCdWlsZE91dHB1dEZpbGVUeXBlLkJyb3dzZXIpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBBdWdtZW50IHRoZSBhcHBsaWNhdGlvbiB3aXRoIHNlcnZpY2Ugd29ya2VyIHN1cHBvcnRcbiAgLy8gSWYgbG9jYWxpemF0aW9uIGlzIGVuYWJsZWQsIHNlcnZpY2Ugd29ya2VyIGlzIGhhbmRsZWQgaW4gdGhlIGlubGluaW5nIHByb2Nlc3MuXG4gIGlmIChzZXJ2aWNlV29ya2VyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNlcnZpY2VXb3JrZXJSZXN1bHQgPSBhd2FpdCBhdWdtZW50QXBwV2l0aFNlcnZpY2VXb3JrZXJFc2J1aWxkKFxuICAgICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgICBzZXJ2aWNlV29ya2VyLFxuICAgICAgICBvcHRpb25zLmJhc2VIcmVmIHx8ICcvJyxcbiAgICAgICAgb3V0cHV0RmlsZXMsXG4gICAgICAgIGFzc2V0RmlsZXMsXG4gICAgICApO1xuICAgICAgYWRkaXRpb25hbE91dHB1dEZpbGVzLnB1c2goXG4gICAgICAgIGNyZWF0ZU91dHB1dEZpbGVGcm9tVGV4dChcbiAgICAgICAgICAnbmdzdy5qc29uJyxcbiAgICAgICAgICBzZXJ2aWNlV29ya2VyUmVzdWx0Lm1hbmlmZXN0LFxuICAgICAgICAgIEJ1aWxkT3V0cHV0RmlsZVR5cGUuQnJvd3NlcixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICBhZGRpdGlvbmFsQXNzZXRzLnB1c2goLi4uc2VydmljZVdvcmtlclJlc3VsdC5hc3NldEZpbGVzKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgYWxsRXJyb3JzLnB1c2goZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBgJHtlcnJvcn1gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVycm9yczogYWxsRXJyb3JzLFxuICAgIHdhcm5pbmdzOiBhbGxXYXJuaW5ncyxcbiAgICBhZGRpdGlvbmFsQXNzZXRzLFxuICAgIHByZXJlbmRlcmVkUm91dGVzLFxuICAgIGFkZGl0aW9uYWxPdXRwdXRGaWxlcyxcbiAgfTtcbn1cbiJdfQ==
@@ -19,6 +19,7 @@ import { NormalizedApplicationBuildOptions } from './options';
19
19
  export declare function inlineI18n(options: NormalizedApplicationBuildOptions, executionResult: ExecutionResult, initialFiles: Map<string, InitialFileRecord>): Promise<{
20
20
  errors: string[];
21
21
  warnings: string[];
22
+ prerenderedRoutes: string[];
22
23
  }>;
23
24
  /**
24
25
  * Loads all active translations using the translation loaders from the `@angular/localize` package.