@angular-devkit/build-angular 17.0.0-next.6 → 17.0.0-next.8

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 (90) hide show
  1. package/package.json +16 -16
  2. package/src/builders/application/build-action.d.ts +3 -0
  3. package/src/builders/application/build-action.js +68 -53
  4. package/src/builders/application/execute-build.js +41 -23
  5. package/src/builders/application/i18n.d.ts +4 -1
  6. package/src/builders/application/i18n.js +34 -4
  7. package/src/builders/application/index.d.ts +6 -4
  8. package/src/builders/application/index.js +11 -13
  9. package/src/builders/application/options.d.ts +7 -0
  10. package/src/builders/application/options.js +5 -2
  11. package/src/builders/application/schema.d.ts +4 -0
  12. package/src/builders/application/schema.js +1 -1
  13. package/src/builders/application/schema.json +5 -0
  14. package/src/builders/browser-esbuild/builder-status-warnings.js +2 -7
  15. package/src/builders/browser-esbuild/index.d.ts +2 -2
  16. package/src/builders/browser-esbuild/index.js +45 -3
  17. package/src/builders/dev-server/builder.js +2 -2
  18. package/src/builders/dev-server/load-proxy-config.js +3 -2
  19. package/src/builders/dev-server/options.d.ts +1 -1
  20. package/src/builders/dev-server/options.js +4 -3
  21. package/src/builders/dev-server/schema.d.ts +8 -1
  22. package/src/builders/dev-server/schema.js +1 -1
  23. package/src/builders/dev-server/schema.json +7 -1
  24. package/src/builders/dev-server/vite-server.d.ts +2 -1
  25. package/src/builders/dev-server/vite-server.js +30 -5
  26. package/src/builders/dev-server/webpack-server.js +2 -2
  27. package/src/builders/extract-i18n/application-extraction.js +3 -3
  28. package/src/builders/extract-i18n/builder.js +4 -3
  29. package/src/builders/extract-i18n/options.d.ts +1 -1
  30. package/src/builders/extract-i18n/options.js +4 -3
  31. package/src/builders/extract-i18n/schema.d.ts +8 -1
  32. package/src/builders/extract-i18n/schema.js +1 -1
  33. package/src/builders/extract-i18n/schema.json +7 -1
  34. package/src/builders/extract-i18n/webpack-extraction.js +2 -2
  35. package/src/builders/jest/index.js +2 -2
  36. package/src/builders/protractor/index.js +2 -2
  37. package/src/tools/esbuild/angular/compilation/aot-compilation.js +16 -7
  38. package/src/tools/esbuild/angular/compilation-state.d.ts +15 -0
  39. package/src/tools/esbuild/angular/compilation-state.js +43 -0
  40. package/src/tools/esbuild/angular/compiler-plugin.d.ts +2 -12
  41. package/src/tools/esbuild/angular/compiler-plugin.js +34 -52
  42. package/src/tools/esbuild/angular/component-stylesheets.d.ts +47 -0
  43. package/src/tools/esbuild/angular/component-stylesheets.js +147 -0
  44. package/src/tools/esbuild/angular/jit-plugin-callbacks.d.ts +2 -5
  45. package/src/tools/esbuild/angular/jit-plugin-callbacks.js +11 -6
  46. package/src/tools/esbuild/angular/source-file-cache.d.ts +19 -0
  47. package/src/tools/esbuild/angular/source-file-cache.js +67 -0
  48. package/src/tools/esbuild/angular/uri.d.ts +1 -1
  49. package/src/tools/esbuild/application-code-bundle.d.ts +1 -1
  50. package/src/tools/esbuild/application-code-bundle.js +68 -10
  51. package/src/tools/esbuild/budget-stats.d.ts +19 -0
  52. package/src/tools/esbuild/budget-stats.js +55 -0
  53. package/src/tools/esbuild/bundler-context.d.ts +12 -1
  54. package/src/tools/esbuild/bundler-context.js +29 -3
  55. package/src/tools/esbuild/bundler-execution-result.d.ts +9 -6
  56. package/src/tools/esbuild/bundler-execution-result.js +6 -3
  57. package/src/tools/esbuild/compiler-plugin-options.d.ts +2 -1
  58. package/src/tools/esbuild/compiler-plugin-options.js +2 -1
  59. package/src/tools/esbuild/global-styles.js +2 -1
  60. package/src/tools/esbuild/i18n-inliner.d.ts +3 -3
  61. package/src/tools/esbuild/i18n-inliner.js +13 -4
  62. package/src/tools/esbuild/index-html-generator.d.ts +2 -3
  63. package/src/tools/esbuild/index-html-generator.js +5 -2
  64. package/src/tools/esbuild/stylesheets/bundle-options.d.ts +2 -24
  65. package/src/tools/esbuild/stylesheets/bundle-options.js +3 -105
  66. package/src/tools/esbuild/utils.d.ts +12 -6
  67. package/src/tools/esbuild/utils.js +85 -34
  68. package/src/utils/build-options.d.ts +1 -1
  69. package/src/utils/build-options.js +1 -1
  70. package/src/utils/bundle-calculator.d.ts +16 -3
  71. package/src/utils/bundle-calculator.js +21 -10
  72. package/src/utils/routes-extractor/extractor.js +3 -4
  73. package/src/utils/server-rendering/{esm-in-memory-file-loader.d.ts → esm-in-memory-loader/loader-hooks.d.ts} +1 -0
  74. package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js +82 -0
  75. package/src/utils/server-rendering/esm-in-memory-loader/node-18-utils.d.ts +10 -0
  76. package/src/utils/server-rendering/esm-in-memory-loader/node-18-utils.js +39 -0
  77. package/src/utils/server-rendering/esm-in-memory-loader/register-hooks.d.ts +8 -0
  78. package/src/utils/server-rendering/esm-in-memory-loader/register-hooks.js +16 -0
  79. package/src/utils/server-rendering/main-bundle-exports.d.ts +1 -0
  80. package/src/utils/server-rendering/main-bundle-exports.js +1 -1
  81. package/src/utils/server-rendering/prerender.d.ts +2 -2
  82. package/src/utils/server-rendering/prerender.js +10 -18
  83. package/src/utils/server-rendering/render-page.js +6 -2
  84. package/src/utils/server-rendering/render-worker.d.ts +1 -1
  85. package/src/utils/server-rendering/render-worker.js +1 -1
  86. package/src/utils/server-rendering/routes-extractor-worker.d.ts +1 -1
  87. package/src/utils/server-rendering/routes-extractor-worker.js +1 -1
  88. package/src/utils/service-worker.d.ts +2 -2
  89. package/src/utils/service-worker.js +5 -2
  90. package/src/utils/server-rendering/esm-in-memory-file-loader.js +0 -76
@@ -79,16 +79,12 @@ exports.calculateThresholds = calculateThresholds;
79
79
  * Calculates the sizes for bundles in the budget type provided.
80
80
  */
81
81
  function calculateSizes(budget, stats) {
82
- if (budget.type === schema_1.Type.AnyComponentStyle) {
83
- // Component style size information is not available post-build, this must
84
- // be checked mid-build via the `AnyComponentStyleBudgetChecker` plugin.
85
- throw new Error('Can not calculate size of AnyComponentStyle. Use `AnyComponentStyleBudgetChecker` instead.');
86
- }
87
82
  const calculatorMap = {
88
83
  all: AllCalculator,
89
84
  allScript: AllScriptCalculator,
90
85
  any: AnyCalculator,
91
86
  anyScript: AnyScriptCalculator,
87
+ anyComponentStyle: AnyComponentStyleCalculator,
92
88
  bundle: BundleCalculator,
93
89
  initial: InitialCalculator,
94
90
  };
@@ -215,6 +211,19 @@ class AnyCalculator extends Calculator {
215
211
  }));
216
212
  }
217
213
  }
214
+ /**
215
+ * Any compoonent stylesheet
216
+ */
217
+ class AnyComponentStyleCalculator extends Calculator {
218
+ calculate() {
219
+ return this.assets
220
+ .filter((asset) => asset.componentStyle)
221
+ .map((asset) => ({
222
+ size: this.getAssetSize(asset),
223
+ label: asset.name,
224
+ }));
225
+ }
226
+ }
218
227
  /**
219
228
  * Calculate the bytes given a string value.
220
229
  */
@@ -244,11 +253,13 @@ function calculateBytes(input, baseline, factor = 1) {
244
253
  }
245
254
  return baselineBytes + value * factor;
246
255
  }
247
- function* checkBudgets(budgets, webpackStats) {
248
- // Ignore AnyComponentStyle budgets as these are handled in `AnyComponentStyleBudgetChecker`.
249
- const computableBudgets = budgets.filter((budget) => budget.type !== schema_1.Type.AnyComponentStyle);
256
+ function* checkBudgets(budgets, stats, checkComponentStyles) {
257
+ // Ignore AnyComponentStyle budgets as these are handled in `AnyComponentStyleBudgetChecker` unless requested
258
+ const computableBudgets = checkComponentStyles
259
+ ? budgets
260
+ : budgets.filter((budget) => budget.type !== schema_1.Type.AnyComponentStyle);
250
261
  for (const budget of computableBudgets) {
251
- const sizes = calculateSizes(budget, webpackStats);
262
+ const sizes = calculateSizes(budget, stats);
252
263
  for (const { size, label } of sizes) {
253
264
  yield* checkThresholds(calculateThresholds(budget), size, label);
254
265
  }
@@ -289,4 +300,4 @@ function* checkThresholds(thresholds, size, label) {
289
300
  }
290
301
  }
291
302
  exports.checkThresholds = checkThresholds;
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLWNhbGN1bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy91dGlscy9idW5kbGUtY2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFHSCx1REFBMEQ7QUFDMUQsd0RBQTBEO0FBYTFELElBQUssYUFHSjtBQUhELFdBQUssYUFBYTtJQUNoQixnQ0FBZSxDQUFBO0lBQ2YsZ0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSEksYUFBYSxLQUFiLGFBQWEsUUFHakI7QUFFRCxJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDM0Isd0NBQW1CLENBQUE7SUFDbkIsb0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFHNUI7QUFRRCxRQUFlLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFjO0lBQ2pELElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtRQUN6QixNQUFNO1lBQ0osS0FBSyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLElBQUksRUFBRSxhQUFhLENBQUMsR0FBRztZQUN2QixRQUFRLEVBQUUsaUJBQWlCLENBQUMsT0FBTztTQUNwQyxDQUFDO0tBQ0g7SUFFRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUU7UUFDdkIsTUFBTTtZQUNKLEtBQUssRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM5RCxJQUFJLEVBQUUsYUFBYSxDQUFDLEdBQUc7WUFDdkIsUUFBUSxFQUFFLGlCQUFpQixDQUFDLEtBQUs7U0FDbEMsQ0FBQztLQUNIO0lBRUQsSUFBSSxNQUFNLENBQUMsY0FBYyxF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QUExQ0QsMENBMENDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IFN0YXRzQXNzZXQsIFN0YXRzQ2h1bmssIFN0YXRzQ29tcGlsYXRpb24gfSBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB7IEJ1ZGdldCwgVHlwZSB9IGZyb20gJy4uL2J1aWxkZXJzL2Jyb3dzZXIvc2NoZW1hJztcbmltcG9ydCB7IGZvcm1hdFNpemUgfSBmcm9tICcuLi90b29scy93ZWJwYWNrL3V0aWxzL3N0YXRzJztcblxuaW50ZXJmYWNlIFNpemUge1xuICBzaXplOiBudW1iZXI7XG4gIGxhYmVsPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVGhyZXNob2xkIHtcbiAgbGltaXQ6IG51bWJlcjtcbiAgdHlwZTogVGhyZXNob2xkVHlwZTtcbiAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5O1xufVxuXG5lbnVtIFRocmVzaG9sZFR5cGUge1xuICBNYXggPSAnbWF4aW11bScsXG4gIE1pbiA9ICdtaW5pbXVtJyxcbn1cblxuZXhwb3J0IGVudW0gVGhyZXNob2xkU2V2ZXJpdHkge1xuICBXYXJuaW5nID0gJ3dhcm5pbmcnLFxuICBFcnJvciA9ICdlcnJvcicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVkZ2V0Q2FsY3VsYXRvclJlc3VsdCB7XG4gIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eTtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjYWxjdWxhdGVUaHJlc2hvbGRzKGJ1ZGdldDogQnVkZ2V0KTogSXRlcmFibGVJdGVyYXRvcjxUaHJlc2hvbGQ+IHtcbiAgaWYgKGJ1ZGdldC5tYXhpbXVtV2FybmluZykge1xuICAgIHlpZWxkIHtcbiAgICAgIGxpbWl0OiBjYWxjdWxhdGVCeXRlcyhidWRnZXQubWF4aW11bVdhcm5pbmcsIGJ1ZGdldC5iYXNlbGluZSwgMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1heCxcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5XYXJuaW5nLFxuICAgIH07XG4gIH1cblxuICBpZiAoYnVkZ2V0Lm1heGltdW1FcnJvcikge1xuICAgIHlpZWxkIHtcbiAgICAgIGxpbWl0OiBjYWxjdWxhdGVCeXRlcyhidWRnZXQubWF4aW11bUVycm9yLCBidWRnZXQuYmFzZWxpbmUsIDEpLFxuICAgICAgdHlwZTogVGhyZXNob2xkVHlwZS5NYXgsXG4gICAgICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHkuRXJyb3IsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChidWRnZXQubWluaW11bVdhcm5pbmcpIHtcbiAgICB5aWVsZCB7XG4gICAgICBsaW1pdDogY2FsY3VsYXRlQnl0ZXMoYnVkZ2V0Lm1pbmltdW1XYXJuaW5nLCBidWRnZXQuYmFzZWxpbmUsIC0xKSxcbiAgICAgIHR5cGU6IFRocmVzaG9sZFR5cGUuTWluLFxuICAgICAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5Lldhcm5pbmcsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChidWRnZXQubWluaW11bUVycm9yKSB7XG4gICAgeWllbGQge1xuICAgICAgbGltaXQ6IGNhbGN1bGF0ZUJ5dGVzKGJ1ZGdldC5taW5pbXVtRXJyb3IsIGJ1ZGdldC5iYXNlbGluZSwgLTEpLFxuICAgICAgdHlwZTogVGhyZXNob2xkVHlwZS5NaW4sXG4gICAgICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHkuRXJyb3IsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChidWRnZXQud2FybmluZykge1xuICAgIHlpZWxkIHtcbiAgICAgIGxpbWl0OiBjYWxjdWxhdGVCeXRlcyhidWRnZXQud2FybmluZywgYnVkZ2V0LmJhc2VsaW5lLCAtMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1pbixcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5XYXJuaW5nLFxuICAgIH07XG5cbiAgICB5aWVsZCB7XG4gICAgICBsaW1pdDogY2FsY3VsYXRlQnl0ZXMoYnVkZ2V0Lndhcm5pbmcsIGJ1ZGdldC5iYXNlbGluZSwgMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1heCxcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5XYXJuaW5nLFxuICAgIH07XG4gIH1cblxuICBpZiAoYnVkZ2V0LmVycm9yKSB7XG4gICAgeWllbGQge1xuICAgICAgbGltaXQ6IGNhbGN1bGF0ZUJ5dGVzKGJ1ZGdldC5lcnJvciwgYnVkZ2V0LmJhc2VsaW5lLCAtMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1pbixcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5FcnJvcixcbiAgICB9O1xuXG4gICAgeWllbGQge1xuICAgICAgbGltaXQ6IGNhbGN1bGF0ZUJ5dGVzKGJ1ZGdldC5lcnJvciwgYnVkZ2V0LmJhc2VsaW5lLCAxKSxcbiAgICAgIHR5cGU6IFRocmVzaG9sZFR5cGUuTWF4LFxuICAgICAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5LkVycm9yLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBzaXplcyBmb3IgYnVuZGxlcyBpbiB0aGUgYnVkZ2V0IHR5cGUgcHJvdmlkZWQuXG4gKi9cbmZ1bmN0aW9uIGNhbGN1bGF0ZVNpemVzKGJ1ZGdldDogQnVkZ2V0LCBzdGF0czogU3RhdHNDb21waWxhdGlvbik6IFNpemVbXSB7XG4gIGlmIChidWRnZXQudHlwZSA9PT0gVHlwZS5BbnlDb21wb25lbnRTdHlsZSkge1xuICAgIC8vIENvbXBvbmVudCBzdHlsZSBzaXplIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgcG9zdC1idWlsZCwgdGhpcyBtdXN0XG4gICAgLy8gYmUgY2hlY2tlZCBtaWQtYnVpbGQgdmlhIHRoZSBgQW55Q29tcG9uZW50U3R5bGVCdWRnZXRDaGVja2VyYCBwbHVnaW4uXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0NhbiBub3QgY2FsY3VsYXRlIHNpemUgb2YgQW55Q29tcG9uZW50U3R5bGUuIFVzZSBgQW55Q29tcG9uZW50U3R5bGVCdWRnZXRDaGVja2VyYCBpbnN0ZWFkLicsXG4gICAgKTtcbiAgfVxuXG4gIHR5cGUgTm9uQ29tcG9uZW50U3R5bGVCdWRnZXRUeXBlcyA9IEV4Y2x1ZGU8QnVkZ2V0Wyd0eXBlJ10sIFR5cGUuQW55Q29tcG9uZW50U3R5bGU+O1xuICB0eXBlIENhbGN1bGF0b3JUeXBlcyA9IHtcbiAgICBuZXcgKGJ1ZGdldDogQnVkZ2V0LCBjaHVua3M6IFN0YXRzQ2h1bmtbXSwgYXNzZXRzOiBTdGF0c0Fzc2V0W10pOiBDYWxjdWxhdG9yO1xuICB9O1xuICBjb25zdCBjYWxjdWxhdG9yTWFwOiBSZWNvcmQ8Tm9uQ29tcG9uZW50U3R5bGVCdWRnZXRUeXBlcywgQ2FsY3VsYXRvclR5cGVzPiA9IHtcbiAgICBhbGw6IEFsbENhbGN1bGF0b3IsXG4gICAgYWxsU2NyaXB0OiBBbGxTY3JpcHRDYWxjdWxhdG9yLFxuICAgIGFueTogQW55Q2FsY3VsYXRvcixcbiAgICBhbnlTY3JpcHQ6IEFueVNjcmlwdENhbGN1bGF0b3IsXG4gICAgYnVuZGxlOiBCdW5kbGVDYWxjdWxhdG9yLFxuICAgIGluaXRpYWw6IEluaXRpYWxDYWxjdWxhdG9yLFxuICB9O1xuXG4gIGNvbnN0IGN0b3IgPSBjYWxjdWxhdG9yTWFwW2J1ZGdldC50eXBlXTtcbiAgY29uc3QgeyBjaHVua3MsIGFzc2V0cyB9ID0gc3RhdHM7XG4gIGlmICghY2h1bmtzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXZWJwYWNrIHN0YXRzIG91dHB1dCBkaWQgbm90IGluY2x1ZGUgY2h1bmsgaW5mb3JtYXRpb24uJyk7XG4gIH1cbiAgaWYgKCFhc3NldHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dlYnBhY2sgc3RhdHMgb3V0cHV0IGRpZCBub3QgaW5jbHVkZSBhc3NldCBpbmZvcm1hdGlvbi4nKTtcbiAgfVxuXG4gIGNvbnN0IGNhbGN1bGF0b3IgPSBuZXcgY3RvcihidWRnZXQsIGNodW5rcywgYXNzZXRzKTtcblxuICByZXR1cm4gY2FsY3VsYXRvci5jYWxjdWxhdGUoKTtcbn1cblxuYWJzdHJhY3QgY2xhc3MgQ2FsY3VsYXRvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBidWRnZXQ6IEJ1ZGdldCxcbiAgICBwcm90ZWN0ZWQgY2h1bmtzOiBTdGF0c0NodW5rW10sXG4gICAgcHJvdGVjdGVkIGFzc2V0czogU3RhdHNBc3NldFtdLFxuICApIHt9XG5cbiAgYWJzdHJhY3QgY2FsY3VsYXRlKCk6IFNpemVbXTtcblxuICAvKiogQ2FsY3VsYXRlcyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gY2h1bmsgZm9yIHRoZSBwcm92aWRlZCBidWlsZCB0eXBlLiAqL1xuICBwcm90ZWN0ZWQgY2FsY3VsYXRlQ2h1bmtTaXplKGNodW5rOiBTdGF0c0NodW5rKTogbnVtYmVyIHtcbiAgICAvLyBObyBkaWZmZXJlbnRpYWwgYnVpbGRzLCBnZXQgdGhlIGNodW5rIHNpemUgYnkgc3VtbWluZyBpdHMgYXNzZXRzLlxuICAgIGlmICghY2h1bmsuZmlsZXMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBjaHVuay5maWxlc1xuICAgICAgLmZpbHRlcigoZmlsZSkgPT4gIWZpbGUuZW5kc1dpdGgoJy5tYXAnKSlcbiAgICAgIC5tYXAoKGZpbGUpID0+IHtcbiAgICAgICAgY29uc3QgYXNzZXQgPSB0aGlzLmFzc2V0cy5maW5kKChhc3NldCkgPT4gYXNzZXQubmFtZSA9PT0gZmlsZSk7XG4gICAgICAgIGlmICghYXNzZXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGFzc2V0IGZvciBmaWxlOiAke2ZpbGV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXNzZXQuc2l6ZTtcbiAgICAgIH0pXG4gICAgICAucmVkdWNlKChsLCByKSA9PiBsICsgciwgMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QXNzZXRTaXplKGFzc2V0OiBTdGF0c0Fzc2V0KTogbnVtYmVyIHtcbiAgICByZXR1cm4gYXNzZXQuc2l6ZTtcbiAgfVxufVxuXG4vKipcbiAqIEEgbmFtZWQgYnVuZGxlLlxuICovXG5jbGFzcyBCdW5kbGVDYWxjdWxhdG9yIGV4dGVuZHMgQ2FsY3VsYXRvciB7XG4gIGNhbGN1bGF0ZSgpIHtcbiAgICBjb25zdCBidWRnZXROYW1lID0gdGhpcy5idWRnZXQubmFtZTtcbiAgICBpZiAoIWJ1ZGdldE5hbWUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBzaXplID0gdGhpcy5jaHVua3NcbiAgICAgIC5maWx0ZXIoKGNodW5rKSA9PiBjaHVuaz8ubmFtZXM/LmluY2x1ZGVzKGJ1ZGdldE5hbWUpKVxuICAgICAgLm1hcCgoY2h1bmspID0+IHRoaXMuY2FsY3VsYXRlQ2h1bmtTaXplKGNodW5rKSlcbiAgICAgIC5yZWR1Y2UoKGwsIHIpID0+IGwgKyByLCAwKTtcblxuICAgIHJldHVybiBbeyBzaXplLCBsYWJlbDogdGhpcy5idWRnZXQubmFtZSB9XTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzdW0gb2YgYWxsIGluaXRpYWwgY2h1bmtzIChtYXJrZWQgYXMgaW5pdGlhbCkuXG4gKi9cbmNsYXNzIEluaXRpYWxDYWxjdWxhdG9yIGV4dGVuZHMgQ2FsY3VsYXRvciB7XG4gIGNhbGN1bGF0ZSgpIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBsYWJlbDogYGJ1bmRsZSBpbml0aWFsYCxcbiAgICAgICAgc2l6ZTogdGhpcy5jaHVua3NcbiAgICAgICAgICAuZmlsdGVyKChjaHVuaykgPT4gY2h1bmsuaW5pdGlhbClcbiAgICAgICAgICAubWFwKChjaHVuaykgPT4gdGhpcy5jYWxjdWxhdGVDaHVua1NpemUoY2h1bmspKVxuICAgICAgICAgIC5yZWR1Y2UoKGwsIHIpID0+IGwgKyByLCAwKSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzdW0gb2YgYWxsIHRoZSBzY3JpcHRzIHBvcnRpb25zLlxuICovXG5jbGFzcyBBbGxTY3JpcHRDYWxjdWxhdG9yIGV4dGVuZHMgQ2FsY3VsYXRvciB7XG4gIGNhbGN1bGF0ZSgpIHtcbiAgICBjb25zdCBzaXplID0gdGhpcy5hc3NldHNcbiAgICAgIC5maWx0ZXIoKGFzc2V0KSA9PiBhc3NldC5uYW1lLmVuZHNXaXRoKCcuanMnKSlcbiAgICAgIC5tYXAoKGFzc2V0KSA9PiB0aGlzLmdldEFzc2V0U2l6ZShhc3NldCkpXG4gICAgICAucmVkdWNlKCh0b3RhbDogbnVtYmVyLCBzaXplOiBudW1iZXIpID0+IHRvdGFsICsgc2l6ZSwgMCk7XG5cbiAgICByZXR1cm4gW3sgc2l6ZSwgbGFiZWw6ICd0b3RhbCBzY3JpcHRzJyB9XTtcbiAgfVxufVxuXG4vKipcbiAqIEFsbCBzY3JpcHRzIGFuZCBhc3NldHMgYWRkZWQgdG9nZXRoZXIuXG4gKi9cbmNsYXNzIEFsbENhbGN1bGF0b3IgZXh0ZW5kcyBDYWxjdWxhdG9yIHtcbiAgY2FsY3VsYXRlKCkge1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLmFzc2V0c1xuICAgICAgLmZpbHRlcigoYXNzZXQpID0+ICFhc3NldC5uYW1lLmVuZHNXaXRoKCcubWFwJykpXG4gICAgICAubWFwKChhc3NldCkgPT4gdGhpcy5nZXRBc3NldFNpemUoYXNzZXQpKVxuICAgICAgLnJlZHVjZSgodG90YWw6IG51bWJlciwgc2l6ZTogbnVtYmVyKSA9PiB0b3RhbCArIHNpemUsIDApO1xuXG4gICAgcmV0dXJuIFt7IHNpemUsIGxhYmVsOiAndG90YWwnIH1dO1xuICB9XG59XG5cbi8qKlxuICogQW55IHNjcmlwdCwgaW5kaXZpZHVhbGx5LlxuICovXG5jbGFzcyBBbnlTY3JpcHRDYWxjdWxhdG9yIGV4dGVuZHMgQ2FsY3VsYXRvciB7XG4gIGNhbGN1bGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5hc3NldHNcbiAgICAgIC5maWx0ZXIoKGFzc2V0KSA9PiBhc3NldC5uYW1lLmVuZHNXaXRoKCcuanMnKSlcbiAgICAgIC5tYXAoKGFzc2V0KSA9PiAoe1xuICAgICAgICBzaXplOiB0aGlzLmdldEFzc2V0U2l6ZShhc3NldCksXG4gICAgICAgIGxhYmVsOiBhc3NldC5uYW1lLFxuICAgICAgfSkpO1xuICB9XG59XG5cbi8qKlxuICogQW55IHNjcmlwdCBvciBhc3NldCAoaW1hZ2VzLCBjc3MsIGV0YykuXG4gKi9cbmNsYXNzIEFueUNhbGN1bGF0b3IgZXh0ZW5kcyBDYWxjdWxhdG9yIHtcbiAgY2FsY3VsYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmFzc2V0c1xuICAgICAgLmZpbHRlcigoYXNzZXQpID0+ICFhc3NldC5uYW1lLmVuZHNXaXRoKCcubWFwJykpXG4gICAgICAubWFwKChhc3NldCkgPT4gKHtcbiAgICAgICAgc2l6ZTogdGhpcy5nZXRBc3NldFNpemUoYXNzZXQpLFxuICAgICAgICBsYWJlbDogYXNzZXQubmFtZSxcbiAgICAgIH0pKTtcbiAgfVxufVxuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgYnl0ZXMgZ2l2ZW4gYSBzdHJpbmcgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGNhbGN1bGF0ZUJ5dGVzKGlucHV0OiBzdHJpbmcsIGJhc2VsaW5lPzogc3RyaW5nLCBmYWN0b3I6IDEgfCAtMSA9IDEpOiBudW1iZXIge1xuICBjb25zdCBtYXRjaGVzID0gaW5wdXQubWF0Y2goL15cXHMqKFxcZCsoPzpcXC5cXGQrKT8pXFxzKiglfCg/OlttTV18W2tLXXxbZ0ddKT9bYkJdKT9cXHMqJC8pO1xuICBpZiAoIW1hdGNoZXMpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG5cbiAgY29uc3QgYmFzZWxpbmVCeXRlcyA9IChiYXNlbGluZSAmJiBjYWxjdWxhdGVCeXRlcyhiYXNlbGluZSkpIHx8IDA7XG5cbiAgbGV0IHZhbHVlID0gTnVtYmVyKG1hdGNoZXNbMV0pO1xuICBzd2l0Y2ggKG1hdGNoZXNbMl0gJiYgbWF0Y2hlc1syXS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnJSc6XG4gICAgICB2YWx1ZSA9IChiYXNlbGluZUJ5dGVzICogdmFsdWUpIC8gMTAwO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAna2InOlxuICAgICAgdmFsdWUgKj0gMTAyNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ21iJzpcbiAgICAgIHZhbHVlICo9IDEwMjQgKiAxMDI0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZ2InOlxuICAgICAgdmFsdWUgKj0gMTAyNCAqIDEwMjQgKiAxMDI0O1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoYmFzZWxpbmVCeXRlcyA9PT0gMCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBiYXNlbGluZUJ5dGVzICsgdmFsdWUgKiBmYWN0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogY2hlY2tCdWRnZXRzKFxuICBidWRnZXRzOiBCdWRnZXRbXSxcbiAgd2VicGFja1N0YXRzOiBTdGF0c0NvbXBpbGF0aW9uLFxuKTogSXRlcmFibGVJdGVyYXRvcjxCdWRnZXRDYWxjdWxhdG9yUmVzdWx0PiB7XG4gIC8vIElnbm9yZSBBbnlDb21wb25lbnRTdHlsZSBidWRnZXRzIGFzIHRoZXNlIGFyZSBoYW5kbGVkIGluIGBBbnlDb21wb25lbnRTdHlsZUJ1ZGdldENoZWNrZXJgLlxuICBjb25zdCBjb21wdXRhYmxlQnVkZ2V0cyA9IGJ1ZGdldHMuZmlsdGVyKChidWRnZXQpID0+IGJ1ZGdldC50eXBlICE9PSBUeXBlLkFueUNvbXBvbmVudFN0eWxlKTtcblxuICBmb3IgKGNvbnN0IGJ1ZGdldCBvZiBjb21wdXRhYmxlQnVkZ2V0cykge1xuICAgIGNvbnN0IHNpemVzID0gY2FsY3VsYXRlU2l6ZXMoYnVkZ2V0LCB3ZWJwYWNrU3RhdHMpO1xuICAgIGZvciAoY29uc3QgeyBzaXplLCBsYWJlbCB9IG9mIHNpemVzKSB7XG4gICAgICB5aWVsZCogY2hlY2tUaHJlc2hvbGRzKGNhbGN1bGF0ZVRocmVzaG9sZHMoYnVkZ2V0KSwgc2l6ZSwgbGFiZWwpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGNoZWNrVGhyZXNob2xkcyhcbiAgdGhyZXNob2xkczogSXRlcmFibGVJdGVyYXRvcjxUaHJlc2hvbGQ+LFxuICBzaXplOiBudW1iZXIsXG4gIGxhYmVsPzogc3RyaW5nLFxuKTogSXRlcmFibGVJdGVyYXRvcjxCdWRnZXRDYWxjdWxhdG9yUmVzdWx0PiB7XG4gIGZvciAoY29uc3QgdGhyZXNob2xkIG9mIHRocmVzaG9sZHMpIHtcbiAgICBzd2l0Y2ggKHRocmVzaG9sZC50eXBlKSB7XG4gICAgICBjYXNlIFRocmVzaG9sZFR5cGUuTWF4OiB7XG4gICAgICAgIGlmIChzaXplIDw9IHRocmVzaG9sZC5saW1pdCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2l6ZURpZmZlcmVuY2UgPSBmb3JtYXRTaXplKHNpemUgLSB0aHJlc2hvbGQubGltaXQpO1xuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgc2V2ZXJpdHk6IHRocmVzaG9sZC5zZXZlcml0eSxcbiAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICBtZXNzYWdlOiBgJHtsYWJlbH0gZXhjZWVkZWQgbWF4aW11bSBidWRnZXQuIEJ1ZGdldCAke2Zvcm1hdFNpemUoXG4gICAgICAgICAgICB0aHJlc2hvbGQubGltaXQsXG4gICAgICAgICAgKX0gd2FzIG5vdCBtZXQgYnkgJHtzaXplRGlmZmVyZW5jZX0gd2l0aCBhIHRvdGFsIG9mICR7Zm9ybWF0U2l6ZShzaXplKX0uYCxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFRocmVzaG9sZFR5cGUuTWluOiB7XG4gICAgICAgIGlmIChzaXplID49IHRocmVzaG9sZC5saW1pdCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2l6ZURpZmZlcmVuY2UgPSBmb3JtYXRTaXplKHRocmVzaG9sZC5saW1pdCAtIHNpemUpO1xuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgc2V2ZXJpdHk6IHRocmVzaG9sZC5zZXZlcml0eSxcbiAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICBtZXNzYWdlOiBgJHtsYWJlbH0gZmFpbGVkIHRvIG1lZXQgbWluaW11bSBidWRnZXQuIEJ1ZGdldCAke2Zvcm1hdFNpemUoXG4gICAgICAgICAgICB0aHJlc2hvbGQubGltaXQsXG4gICAgICAgICAgKX0gd2FzIG5vdCBtZXQgYnkgJHtzaXplRGlmZmVyZW5jZX0gd2l0aCBhIHRvdGFsIG9mICR7Zm9ybWF0U2l6ZShzaXplKX0uYCxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB0aHJlc2hvbGQgdHlwZTogJHtUaHJlc2hvbGRUeXBlW3RocmVzaG9sZC50eXBlXX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLWNhbGN1bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy91dGlscy9idW5kbGUtY2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCx1REFBMEQ7QUFDMUQsd0RBQTBEO0FBYTFELElBQUssYUFHSjtBQUhELFdBQUssYUFBYTtJQUNoQixnQ0FBZSxDQUFBO0lBQ2YsZ0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSEksYUFBYSxLQUFiLGFBQWEsUUFHakI7QUFFRCxJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDM0Isd0NBQW1CLENBQUE7SUFDbkIsb0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFHNUI7QUF5QkQsUUFBZSxDQUFDLENBQUMsbUJBQW1CLENBQUMsTUFBYztJQUNqRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUU7UUFDekIsTUFBTTtZQUNKLEtBQUssRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNoRSxJQUFJLEVBQUUsYUFBYSxDQUFDLEdBQUc7WUFDdkIsUUFBUSxFQUFFLGlCQUFpQixDQUFDLE9BQU87U0FDcEMsQ0FBQztLQUNIO0lBRUQsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQ3ZCLE1BQU07WUFDSixLQUFLLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDOUQsSUFBSSxFQUFFLGFBQWEsQ0FBQyxHQUFHO1lBQ3ZCLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxLQUFLO1NBQ2xDLENBQUM7S0FDSDtJQUVELElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtRQUN6QixNQUFNO1lBQ0osS0FBSyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxHQUFHO1lBQ3ZCLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO1NBQ3BDLENBQUM7S0FDSDtJQUVELElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtRQUN2QixNQUFNO1lBQ0osS0FBSyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxFQUFFLGFBQWEsQ0FBQyxHQUFHO1lBQ3ZCLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxLQUFLO1NBQ2xDLENBQUM7S0FDSDtJQUVELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNsQixNQUFNO1lBQ0osS0FBSyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUQsSUFBSSxFQUFFLGFBQWEsQ0FBQyxHQUFHO1lBQ3ZCLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO1NBQ3BDLENBQUM7UUFFRixNQUFNO1lBQ0osS0FBSyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELElBQUksRUFBRSxhQUFhLENBQUMsR0FBRztZQUN2QixRQUFRLEVBQUUsaUJBQWlCLENBQUMsT0FBTztTQUNwQyxDQUFDO0tBQ0g7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDaEIsTUFBTTtZQUNKLEtBQUssRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hELElBQUksRUFBRSxhQUFhLENBQUMsR0FBRztZQUN2QixRQUFRLEVBQUUsaUJBQWlCLENBQUMsS0FBSztTQUNsQyxDQUFDO1FBRUYsTUFBTTtZQUNKLEtBQUssRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN2RCxJQUFJLEVBQUUsYUFBYSxDQUFDLEdBQUc7WUFDdkIsUUFBUSxFQUFFLGlCQUFpQixDQUFDLEtBQUs7U0FDbEMsQ0FBQztLQUNIO0FBQ0gsQ0FBQztBQTVERCxrREE0REM7QUFFRDs7R0FFRztBQUNILFNBQVMsY0FBYyxDQUFDLE1BQWMsRUFBRSxLQUFrQjtJQUl4RCxNQUFNLGFBQWEsR0FBNEM7UUFDN0QsR0FBRyxFQUFFLGFBQWE7UUFDbEIsU0FBUyxFQUFFLG1CQUFtQjtRQUM5QixHQUFHLEVBQUUsYUFBYTtRQUNsQixTQUFTLEVBQUUsbUJBQW1CO1FBQzlCLGlCQUFpQixFQUFFLDJCQUEyQjtRQUM5QyxNQUFNLEVBQUUsZ0JBQWdCO1FBQ3hCLE9BQU8sRUFBRSxpQkFBaUI7S0FDM0IsQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDakMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztLQUM1RTtJQUNELElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7S0FDNUU7SUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXBELE9BQU8sVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2hDLENBQUM7QUFFRCxNQUFlLFVBQVU7SUFFWDtJQUNBO0lBQ0E7SUFIWixZQUNZLE1BQWMsRUFDZCxNQUFxQixFQUNyQixNQUFxQjtRQUZyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFlO0lBQzlCLENBQUM7SUFJSiwwRUFBMEU7SUFDaEUsa0JBQWtCLENBQUMsS0FBa0I7UUFDN0Msb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxPQUFPLEtBQUssQ0FBQyxLQUFLO2FBQ2YsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDeEMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLElBQUksRUFBRSxDQUFDLENBQUM7YUFDM0Q7WUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRVMsWUFBWSxDQUFDLEtBQWtCO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sZ0JBQWlCLFNBQVEsVUFBVTtJQUN2QyxTQUFTO1FBQ1AsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTTthQUNyQixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3JELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFOUIsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLGlCQUFrQixTQUFRLFVBQVU7SUFDeEMsU0FBUztRQUNQLE9BQU87WUFDTDtnQkFDRSxLQUFLLEVBQUUsZ0JBQWdCO2dCQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU07cUJBQ2QsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO3FCQUNoQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDOUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDOUI7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLG1CQUFvQixTQUFRLFVBQVU7SUFDMUMsU0FBUztRQUNQLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNO2FBQ3JCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0MsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hDLE1BQU0sQ0FBQyxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFNUQsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxhQUFjLFNBQVEsVUFBVTtJQUNwQyxTQUFTO1FBQ1AsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU07YUFDckIsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQy9DLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN4QyxNQUFNLENBQUMsQ0FBQyxLQUFhLEVBQUUsSUFBWSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTVELE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsVUFBVTtJQUMxQyxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTTthQUNmLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0MsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQzlCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxhQUFjLFNBQVEsVUFBVTtJQUNwQyxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTTthQUNmLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUMvQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDOUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO1NBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLDJCQUE0QixTQUFRLFVBQVU7SUFDbEQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDZixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7YUFDdkMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQzlCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsU0FBUyxjQUFjLENBQUMsS0FBYSxFQUFFLFFBQWlCLEVBQUUsU0FBaUIsQ0FBQztJQUMxRSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7SUFDdEYsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEUsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtRQUM5QyxLQUFLLEdBQUc7WUFDTixLQUFLLEdBQUcsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ3RDLE1BQU07UUFDUixLQUFLLElBQUk7WUFDUCxLQUFLLElBQUksSUFBSSxDQUFDO1lBQ2QsTUFBTTtRQUNSLEtBQUssSUFBSTtZQUNQLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE1BQU07UUFDUixLQUFLLElBQUk7WUFDUCxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7WUFDNUIsTUFBTTtLQUNUO0lBRUQsSUFBSSxhQUFhLEtBQUssQ0FBQyxFQUFFO1FBQ3ZCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLGFBQWEsR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ3hDLENBQUM7QUFFRCxRQUFlLENBQUMsQ0FBQyxZQUFZLENBQzNCLE9BQWlCLEVBQ2pCLEtBQWtCLEVBQ2xCLG9CQUE4QjtJQUU5Qiw2R0FBNkc7SUFDN0csTUFBTSxpQkFBaUIsR0FBRyxvQkFBb0I7UUFDNUMsQ0FBQyxDQUFDLE9BQU87UUFDVCxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxhQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUV2RSxLQUFLLE1BQU0sTUFBTSxJQUFJLGlCQUFpQixFQUFFO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsS0FBSyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssRUFBRTtZQUNuQyxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2xFO0tBQ0Y7QUFDSCxDQUFDO0FBaEJELG9DQWdCQztBQUVELFFBQWUsQ0FBQyxDQUFDLGVBQWUsQ0FDOUIsVUFBdUMsRUFDdkMsSUFBWSxFQUNaLEtBQWM7SUFFZCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtRQUNsQyxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUFDdEIsS0FBSyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7b0JBQzNCLFNBQVM7aUJBQ1Y7Z0JBRUQsTUFBTSxjQUFjLEdBQUcsSUFBQSxrQkFBVSxFQUFDLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFELE1BQU07b0JBQ0osUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO29CQUM1QixLQUFLO29CQUNMLE9BQU8sRUFBRSxHQUFHLEtBQUssb0NBQW9DLElBQUEsa0JBQVUsRUFDN0QsU0FBUyxDQUFDLEtBQUssQ0FDaEIsbUJBQW1CLGNBQWMsb0JBQW9CLElBQUEsa0JBQVUsRUFBQyxJQUFJLENBQUMsR0FBRztpQkFDMUUsQ0FBQztnQkFDRixNQUFNO2FBQ1A7WUFDRCxLQUFLLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxJQUFJLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtvQkFDM0IsU0FBUztpQkFDVjtnQkFFRCxNQUFNLGNBQWMsR0FBRyxJQUFBLGtCQUFVLEVBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDMUQsTUFBTTtvQkFDSixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7b0JBQzVCLEtBQUs7b0JBQ0wsT0FBTyxFQUFFLEdBQUcsS0FBSywwQ0FBMEMsSUFBQSxrQkFBVSxFQUNuRSxTQUFTLENBQUMsS0FBSyxDQUNoQixtQkFBbUIsY0FBYyxvQkFBb0IsSUFBQSxrQkFBVSxFQUFDLElBQUksQ0FBQyxHQUFHO2lCQUMxRSxDQUFDO2dCQUNGLE1BQU07YUFDUDtZQUNELE9BQU8sQ0FBQyxDQUFDO2dCQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2hGO1NBQ0Y7S0FDRjtBQUNILENBQUM7QUExQ0QsMENBMENDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEJ1ZGdldCwgVHlwZSB9IGZyb20gJy4uL2J1aWxkZXJzL2Jyb3dzZXIvc2NoZW1hJztcbmltcG9ydCB7IGZvcm1hdFNpemUgfSBmcm9tICcuLi90b29scy93ZWJwYWNrL3V0aWxzL3N0YXRzJztcblxuaW50ZXJmYWNlIFNpemUge1xuICBzaXplOiBudW1iZXI7XG4gIGxhYmVsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRocmVzaG9sZCB7XG4gIGxpbWl0OiBudW1iZXI7XG4gIHR5cGU6IFRocmVzaG9sZFR5cGU7XG4gIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eTtcbn1cblxuZW51bSBUaHJlc2hvbGRUeXBlIHtcbiAgTWF4ID0gJ21heGltdW0nLFxuICBNaW4gPSAnbWluaW11bScsXG59XG5cbmV4cG9ydCBlbnVtIFRocmVzaG9sZFNldmVyaXR5IHtcbiAgV2FybmluZyA9ICd3YXJuaW5nJyxcbiAgRXJyb3IgPSAnZXJyb3InLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1ZGdldENhbGN1bGF0b3JSZXN1bHQge1xuICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHk7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVkZ2V0Q2h1bmsge1xuICBmaWxlcz86IHN0cmluZ1tdO1xuICBuYW1lcz86IHN0cmluZ1tdO1xuICBpbml0aWFsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWRnZXRBc3NldCB7XG4gIG5hbWU6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xuICBjb21wb25lbnRTdHlsZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVkZ2V0U3RhdHMge1xuICBjaHVua3M/OiBCdWRnZXRDaHVua1tdO1xuICBhc3NldHM/OiBCdWRnZXRBc3NldFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24qIGNhbGN1bGF0ZVRocmVzaG9sZHMoYnVkZ2V0OiBCdWRnZXQpOiBJdGVyYWJsZUl0ZXJhdG9yPFRocmVzaG9sZD4ge1xuICBpZiAoYnVkZ2V0Lm1heGltdW1XYXJuaW5nKSB7XG4gICAgeWllbGQge1xuICAgICAgbGltaXQ6IGNhbGN1bGF0ZUJ5dGVzKGJ1ZGdldC5tYXhpbXVtV2FybmluZywgYnVkZ2V0LmJhc2VsaW5lLCAxKSxcbiAgICAgIHR5cGU6IFRocmVzaG9sZFR5cGUuTWF4LFxuICAgICAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5Lldhcm5pbmcsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChidWRnZXQubWF4aW11bUVycm9yKSB7XG4gICAgeWllbGQge1xuICAgICAgbGltaXQ6IGNhbGN1bGF0ZUJ5dGVzKGJ1ZGdldC5tYXhpbXVtRXJyb3IsIGJ1ZGdldC5iYXNlbGluZSwgMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1heCxcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5FcnJvcixcbiAgICB9O1xuICB9XG5cbiAgaWYgKGJ1ZGdldC5taW5pbXVtV2FybmluZykge1xuICAgIHlpZWxkIHtcbiAgICAgIGxpbWl0OiBjYWxjdWxhdGVCeXRlcyhidWRnZXQubWluaW11bVdhcm5pbmcsIGJ1ZGdldC5iYXNlbGluZSwgLTEpLFxuICAgICAgdHlwZTogVGhyZXNob2xkVHlwZS5NaW4sXG4gICAgICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHkuV2FybmluZyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGJ1ZGdldC5taW5pbXVtRXJyb3IpIHtcbiAgICB5aWVsZCB7XG4gICAgICBsaW1pdDogY2FsY3VsYXRlQnl0ZXMoYnVkZ2V0Lm1pbmltdW1FcnJvciwgYnVkZ2V0LmJhc2VsaW5lLCAtMSksXG4gICAgICB0eXBlOiBUaHJlc2hvbGRUeXBlLk1pbixcbiAgICAgIHNldmVyaXR5OiBUaHJlc2hvbGRTZXZlcml0eS5FcnJvcixcbiAgICB9O1xuICB9XG5cbiAgaWYgKGJ1ZGdldC53YXJuaW5nKSB7XG4gICAgeWllbGQge1xuICAgICAgbGltaXQ6IGNhbGN1bGF0ZUJ5dGVzKGJ1ZGdldC53YXJuaW5nLCBidWRnZXQuYmFzZWxpbmUsIC0xKSxcbiAgICAgIHR5cGU6IFRocmVzaG9sZFR5cGUuTWluLFxuICAgICAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5Lldhcm5pbmcsXG4gICAgfTtcblxuICAgIHlpZWxkIHtcbiAgICAgIGxpbWl0OiBjYWxjdWxhdGVCeXRlcyhidWRnZXQud2FybmluZywgYnVkZ2V0LmJhc2VsaW5lLCAxKSxcbiAgICAgIHR5cGU6IFRocmVzaG9sZFR5cGUuTWF4LFxuICAgICAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5Lldhcm5pbmcsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChidWRnZXQuZXJyb3IpIHtcbiAgICB5aWVsZCB7XG4gICAgICBsaW1pdDogY2FsY3VsYXRlQnl0ZXMoYnVkZ2V0LmVycm9yLCBidWRnZXQuYmFzZWxpbmUsIC0xKSxcbiAgICAgIHR5cGU6IFRocmVzaG9sZFR5cGUuTWluLFxuICAgICAgc2V2ZXJpdHk6IFRocmVzaG9sZFNldmVyaXR5LkVycm9yLFxuICAgIH07XG5cbiAgICB5aWVsZCB7XG4gICAgICBsaW1pdDogY2FsY3VsYXRlQnl0ZXMoYnVkZ2V0LmVycm9yLCBidWRnZXQuYmFzZWxpbmUsIDEpLFxuICAgICAgdHlwZTogVGhyZXNob2xkVHlwZS5NYXgsXG4gICAgICBzZXZlcml0eTogVGhyZXNob2xkU2V2ZXJpdHkuRXJyb3IsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHNpemVzIGZvciBidW5kbGVzIGluIHRoZSBidWRnZXQgdHlwZSBwcm92aWRlZC5cbiAqL1xuZnVuY3Rpb24gY2FsY3VsYXRlU2l6ZXMoYnVkZ2V0OiBCdWRnZXQsIHN0YXRzOiBCdWRnZXRTdGF0cyk6IFNpemVbXSB7XG4gIHR5cGUgQ2FsY3VsYXRvclR5cGVzID0ge1xuICAgIG5ldyAoYnVkZ2V0OiBCdWRnZXQsIGNodW5rczogQnVkZ2V0Q2h1bmtbXSwgYXNzZXRzOiBCdWRnZXRBc3NldFtdKTogQ2FsY3VsYXRvcjtcbiAgfTtcbiAgY29uc3QgY2FsY3VsYXRvck1hcDogUmVjb3JkPEJ1ZGdldFsndHlwZSddLCBDYWxjdWxhdG9yVHlwZXM+ID0ge1xuICAgIGFsbDogQWxsQ2FsY3VsYXRvcixcbiAgICBhbGxTY3JpcHQ6IEFsbFNjcmlwdENhbGN1bGF0b3IsXG4gICAgYW55OiBBbnlDYWxjdWxhdG9yLFxuICAgIGFueVNjcmlwdDogQW55U2NyaXB0Q2FsY3VsYXRvcixcbiAgICBhbnlDb21wb25lbnRTdHlsZTogQW55Q29tcG9uZW50U3R5bGVDYWxjdWxhdG9yLFxuICAgIGJ1bmRsZTogQnVuZGxlQ2FsY3VsYXRvcixcbiAgICBpbml0aWFsOiBJbml0aWFsQ2FsY3VsYXRvcixcbiAgfTtcblxuICBjb25zdCBjdG9yID0gY2FsY3VsYXRvck1hcFtidWRnZXQudHlwZV07XG4gIGNvbnN0IHsgY2h1bmtzLCBhc3NldHMgfSA9IHN0YXRzO1xuICBpZiAoIWNodW5rcykge1xuICAgIHRocm93IG5ldyBFcnJvcignV2VicGFjayBzdGF0cyBvdXRwdXQgZGlkIG5vdCBpbmNsdWRlIGNodW5rIGluZm9ybWF0aW9uLicpO1xuICB9XG4gIGlmICghYXNzZXRzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXZWJwYWNrIHN0YXRzIG91dHB1dCBkaWQgbm90IGluY2x1ZGUgYXNzZXQgaW5mb3JtYXRpb24uJyk7XG4gIH1cblxuICBjb25zdCBjYWxjdWxhdG9yID0gbmV3IGN0b3IoYnVkZ2V0LCBjaHVua3MsIGFzc2V0cyk7XG5cbiAgcmV0dXJuIGNhbGN1bGF0b3IuY2FsY3VsYXRlKCk7XG59XG5cbmFic3RyYWN0IGNsYXNzIENhbGN1bGF0b3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgYnVkZ2V0OiBCdWRnZXQsXG4gICAgcHJvdGVjdGVkIGNodW5rczogQnVkZ2V0Q2h1bmtbXSxcbiAgICBwcm90ZWN0ZWQgYXNzZXRzOiBCdWRnZXRBc3NldFtdLFxuICApIHt9XG5cbiAgYWJzdHJhY3QgY2FsY3VsYXRlKCk6IFNpemVbXTtcblxuICAvKiogQ2FsY3VsYXRlcyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gY2h1bmsgZm9yIHRoZSBwcm92aWRlZCBidWlsZCB0eXBlLiAqL1xuICBwcm90ZWN0ZWQgY2FsY3VsYXRlQ2h1bmtTaXplKGNodW5rOiBCdWRnZXRDaHVuayk6IG51bWJlciB7XG4gICAgLy8gTm8gZGlmZmVyZW50aWFsIGJ1aWxkcywgZ2V0IHRoZSBjaHVuayBzaXplIGJ5IHN1bW1pbmcgaXRzIGFzc2V0cy5cbiAgICBpZiAoIWNodW5rLmZpbGVzKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2h1bmsuZmlsZXNcbiAgICAgIC5maWx0ZXIoKGZpbGUpID0+ICFmaWxlLmVuZHNXaXRoKCcubWFwJykpXG4gICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc2V0ID0gdGhpcy5hc3NldHMuZmluZCgoYXNzZXQpID0+IGFzc2V0Lm5hbWUgPT09IGZpbGUpO1xuICAgICAgICBpZiAoIWFzc2V0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhc3NldCBmb3IgZmlsZTogJHtmaWxlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFzc2V0LnNpemU7XG4gICAgICB9KVxuICAgICAgLnJlZHVjZSgobCwgcikgPT4gbCArIHIsIDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEFzc2V0U2l6ZShhc3NldDogQnVkZ2V0QXNzZXQpOiBudW1iZXIge1xuICAgIHJldHVybiBhc3NldC5zaXplO1xuICB9XG59XG5cbi8qKlxuICogQSBuYW1lZCBidW5kbGUuXG4gKi9cbmNsYXNzIEJ1bmRsZUNhbGN1bGF0b3IgZXh0ZW5kcyBDYWxjdWxhdG9yIHtcbiAgY2FsY3VsYXRlKCkge1xuICAgIGNvbnN0IGJ1ZGdldE5hbWUgPSB0aGlzLmJ1ZGdldC5uYW1lO1xuICAgIGlmICghYnVkZ2V0TmFtZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHNpemUgPSB0aGlzLmNodW5rc1xuICAgICAgLmZpbHRlcigoY2h1bmspID0+IGNodW5rPy5uYW1lcz8uaW5jbHVkZXMoYnVkZ2V0TmFtZSkpXG4gICAgICAubWFwKChjaHVuaykgPT4gdGhpcy5jYWxjdWxhdGVDaHVua1NpemUoY2h1bmspKVxuICAgICAgLnJlZHVjZSgobCwgcikgPT4gbCArIHIsIDApO1xuXG4gICAgcmV0dXJuIFt7IHNpemUsIGxhYmVsOiB0aGlzLmJ1ZGdldC5uYW1lIH1dO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHN1bSBvZiBhbGwgaW5pdGlhbCBjaHVua3MgKG1hcmtlZCBhcyBpbml0aWFsKS5cbiAqL1xuY2xhc3MgSW5pdGlhbENhbGN1bGF0b3IgZXh0ZW5kcyBDYWxjdWxhdG9yIHtcbiAgY2FsY3VsYXRlKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiBgYnVuZGxlIGluaXRpYWxgLFxuICAgICAgICBzaXplOiB0aGlzLmNodW5rc1xuICAgICAgICAgIC5maWx0ZXIoKGNodW5rKSA9PiBjaHVuay5pbml0aWFsKVxuICAgICAgICAgIC5tYXAoKGNodW5rKSA9PiB0aGlzLmNhbGN1bGF0ZUNodW5rU2l6ZShjaHVuaykpXG4gICAgICAgICAgLnJlZHVjZSgobCwgcikgPT4gbCArIHIsIDApLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHN1bSBvZiBhbGwgdGhlIHNjcmlwdHMgcG9ydGlvbnMuXG4gKi9cbmNsYXNzIEFsbFNjcmlwdENhbGN1bGF0b3IgZXh0ZW5kcyBDYWxjdWxhdG9yIHtcbiAgY2FsY3VsYXRlKCkge1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLmFzc2V0c1xuICAgICAgLmZpbHRlcigoYXNzZXQpID0+IGFzc2V0Lm5hbWUuZW5kc1dpdGgoJy5qcycpKVxuICAgICAgLm1hcCgoYXNzZXQpID0+IHRoaXMuZ2V0QXNzZXRTaXplKGFzc2V0KSlcbiAgICAgIC5yZWR1Y2UoKHRvdGFsOiBudW1iZXIsIHNpemU6IG51bWJlcikgPT4gdG90YWwgKyBzaXplLCAwKTtcblxuICAgIHJldHVybiBbeyBzaXplLCBsYWJlbDogJ3RvdGFsIHNjcmlwdHMnIH1dO1xuICB9XG59XG5cbi8qKlxuICogQWxsIHNjcmlwdHMgYW5kIGFzc2V0cyBhZGRlZCB0b2dldGhlci5cbiAqL1xuY2xhc3MgQWxsQ2FsY3VsYXRvciBleHRlbmRzIENhbGN1bGF0b3Ige1xuICBjYWxjdWxhdGUoKSB7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuYXNzZXRzXG4gICAgICAuZmlsdGVyKChhc3NldCkgPT4gIWFzc2V0Lm5hbWUuZW5kc1dpdGgoJy5tYXAnKSlcbiAgICAgIC5tYXAoKGFzc2V0KSA9PiB0aGlzLmdldEFzc2V0U2l6ZShhc3NldCkpXG4gICAgICAucmVkdWNlKCh0b3RhbDogbnVtYmVyLCBzaXplOiBudW1iZXIpID0+IHRvdGFsICsgc2l6ZSwgMCk7XG5cbiAgICByZXR1cm4gW3sgc2l6ZSwgbGFiZWw6ICd0b3RhbCcgfV07XG4gIH1cbn1cblxuLyoqXG4gKiBBbnkgc2NyaXB0LCBpbmRpdmlkdWFsbHkuXG4gKi9cbmNsYXNzIEFueVNjcmlwdENhbGN1bGF0b3IgZXh0ZW5kcyBDYWxjdWxhdG9yIHtcbiAgY2FsY3VsYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmFzc2V0c1xuICAgICAgLmZpbHRlcigoYXNzZXQpID0+IGFzc2V0Lm5hbWUuZW5kc1dpdGgoJy5qcycpKVxuICAgICAgLm1hcCgoYXNzZXQpID0+ICh7XG4gICAgICAgIHNpemU6IHRoaXMuZ2V0QXNzZXRTaXplKGFzc2V0KSxcbiAgICAgICAgbGFiZWw6IGFzc2V0Lm5hbWUsXG4gICAgICB9KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBbnkgc2NyaXB0IG9yIGFzc2V0IChpbWFnZXMsIGNzcywgZXRjKS5cbiAqL1xuY2xhc3MgQW55Q2FsY3VsYXRvciBleHRlbmRzIENhbGN1bGF0b3Ige1xuICBjYWxjdWxhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXRzXG4gICAgICAuZmlsdGVyKChhc3NldCkgPT4gIWFzc2V0Lm5hbWUuZW5kc1dpdGgoJy5tYXAnKSlcbiAgICAgIC5tYXAoKGFzc2V0KSA9PiAoe1xuICAgICAgICBzaXplOiB0aGlzLmdldEFzc2V0U2l6ZShhc3NldCksXG4gICAgICAgIGxhYmVsOiBhc3NldC5uYW1lLFxuICAgICAgfSkpO1xuICB9XG59XG5cbi8qKlxuICogQW55IGNvbXBvb25lbnQgc3R5bGVzaGVldFxuICovXG5jbGFzcyBBbnlDb21wb25lbnRTdHlsZUNhbGN1bGF0b3IgZXh0ZW5kcyBDYWxjdWxhdG9yIHtcbiAgY2FsY3VsYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmFzc2V0c1xuICAgICAgLmZpbHRlcigoYXNzZXQpID0+IGFzc2V0LmNvbXBvbmVudFN0eWxlKVxuICAgICAgLm1hcCgoYXNzZXQpID0+ICh7XG4gICAgICAgIHNpemU6IHRoaXMuZ2V0QXNzZXRTaXplKGFzc2V0KSxcbiAgICAgICAgbGFiZWw6IGFzc2V0Lm5hbWUsXG4gICAgICB9KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGJ5dGVzIGdpdmVuIGEgc3RyaW5nIHZhbHVlLlxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVCeXRlcyhpbnB1dDogc3RyaW5nLCBiYXNlbGluZT86IHN0cmluZywgZmFjdG9yOiAxIHwgLTEgPSAxKTogbnVtYmVyIHtcbiAgY29uc3QgbWF0Y2hlcyA9IGlucHV0Lm1hdGNoKC9eXFxzKihcXGQrKD86XFwuXFxkKyk/KVxccyooJXwoPzpbbU1dfFtrS118W2dHXSk/W2JCXSk/XFxzKiQvKTtcbiAgaWYgKCFtYXRjaGVzKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIGNvbnN0IGJhc2VsaW5lQnl0ZXMgPSAoYmFzZWxpbmUgJiYgY2FsY3VsYXRlQnl0ZXMoYmFzZWxpbmUpKSB8fCAwO1xuXG4gIGxldCB2YWx1ZSA9IE51bWJlcihtYXRjaGVzWzFdKTtcbiAgc3dpdGNoIChtYXRjaGVzWzJdICYmIG1hdGNoZXNbMl0udG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJyUnOlxuICAgICAgdmFsdWUgPSAoYmFzZWxpbmVCeXRlcyAqIHZhbHVlKSAvIDEwMDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2tiJzpcbiAgICAgIHZhbHVlICo9IDEwMjQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdtYic6XG4gICAgICB2YWx1ZSAqPSAxMDI0ICogMTAyNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2diJzpcbiAgICAgIHZhbHVlICo9IDEwMjQgKiAxMDI0ICogMTAyNDtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGJhc2VsaW5lQnl0ZXMgPT09IDApIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gYmFzZWxpbmVCeXRlcyArIHZhbHVlICogZmFjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24qIGNoZWNrQnVkZ2V0cyhcbiAgYnVkZ2V0czogQnVkZ2V0W10sXG4gIHN0YXRzOiBCdWRnZXRTdGF0cyxcbiAgY2hlY2tDb21wb25lbnRTdHlsZXM/OiBib29sZWFuLFxuKTogSXRlcmFibGVJdGVyYXRvcjxCdWRnZXRDYWxjdWxhdG9yUmVzdWx0PiB7XG4gIC8vIElnbm9yZSBBbnlDb21wb25lbnRTdHlsZSBidWRnZXRzIGFzIHRoZXNlIGFyZSBoYW5kbGVkIGluIGBBbnlDb21wb25lbnRTdHlsZUJ1ZGdldENoZWNrZXJgIHVubGVzcyByZXF1ZXN0ZWRcbiAgY29uc3QgY29tcHV0YWJsZUJ1ZGdldHMgPSBjaGVja0NvbXBvbmVudFN0eWxlc1xuICAgID8gYnVkZ2V0c1xuICAgIDogYnVkZ2V0cy5maWx0ZXIoKGJ1ZGdldCkgPT4gYnVkZ2V0LnR5cGUgIT09IFR5cGUuQW55Q29tcG9uZW50U3R5bGUpO1xuXG4gIGZvciAoY29uc3QgYnVkZ2V0IG9mIGNvbXB1dGFibGVCdWRnZXRzKSB7XG4gICAgY29uc3Qgc2l6ZXMgPSBjYWxjdWxhdGVTaXplcyhidWRnZXQsIHN0YXRzKTtcbiAgICBmb3IgKGNvbnN0IHsgc2l6ZSwgbGFiZWwgfSBvZiBzaXplcykge1xuICAgICAgeWllbGQqIGNoZWNrVGhyZXNob2xkcyhjYWxjdWxhdGVUaHJlc2hvbGRzKGJ1ZGdldCksIHNpemUsIGxhYmVsKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjaGVja1RocmVzaG9sZHMoXG4gIHRocmVzaG9sZHM6IEl0ZXJhYmxlSXRlcmF0b3I8VGhyZXNob2xkPixcbiAgc2l6ZTogbnVtYmVyLFxuICBsYWJlbD86IHN0cmluZyxcbik6IEl0ZXJhYmxlSXRlcmF0b3I8QnVkZ2V0Q2FsY3VsYXRvclJlc3VsdD4ge1xuICBmb3IgKGNvbnN0IHRocmVzaG9sZCBvZiB0aHJlc2hvbGRzKSB7XG4gICAgc3dpdGNoICh0aHJlc2hvbGQudHlwZSkge1xuICAgICAgY2FzZSBUaHJlc2hvbGRUeXBlLk1heDoge1xuICAgICAgICBpZiAoc2l6ZSA8PSB0aHJlc2hvbGQubGltaXQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNpemVEaWZmZXJlbmNlID0gZm9ybWF0U2l6ZShzaXplIC0gdGhyZXNob2xkLmxpbWl0KTtcbiAgICAgICAgeWllbGQge1xuICAgICAgICAgIHNldmVyaXR5OiB0aHJlc2hvbGQuc2V2ZXJpdHksXG4gICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgbWVzc2FnZTogYCR7bGFiZWx9IGV4Y2VlZGVkIG1heGltdW0gYnVkZ2V0LiBCdWRnZXQgJHtmb3JtYXRTaXplKFxuICAgICAgICAgICAgdGhyZXNob2xkLmxpbWl0LFxuICAgICAgICAgICl9IHdhcyBub3QgbWV0IGJ5ICR7c2l6ZURpZmZlcmVuY2V9IHdpdGggYSB0b3RhbCBvZiAke2Zvcm1hdFNpemUoc2l6ZSl9LmAsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBUaHJlc2hvbGRUeXBlLk1pbjoge1xuICAgICAgICBpZiAoc2l6ZSA+PSB0aHJlc2hvbGQubGltaXQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNpemVEaWZmZXJlbmNlID0gZm9ybWF0U2l6ZSh0aHJlc2hvbGQubGltaXQgLSBzaXplKTtcbiAgICAgICAgeWllbGQge1xuICAgICAgICAgIHNldmVyaXR5OiB0aHJlc2hvbGQuc2V2ZXJpdHksXG4gICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgbWVzc2FnZTogYCR7bGFiZWx9IGZhaWxlZCB0byBtZWV0IG1pbmltdW0gYnVkZ2V0LiBCdWRnZXQgJHtmb3JtYXRTaXplKFxuICAgICAgICAgICAgdGhyZXNob2xkLmxpbWl0LFxuICAgICAgICAgICl9IHdhcyBub3QgbWV0IGJ5ICR7c2l6ZURpZmZlcmVuY2V9IHdpdGggYSB0b3RhbCBvZiAke2Zvcm1hdFNpemUoc2l6ZSl9LmAsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdGhyZXNob2xkIHR5cGU6ICR7VGhyZXNob2xkVHlwZVt0aHJlc2hvbGQudHlwZV19YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -5,10 +5,9 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- import { ApplicationRef, Compiler, createPlatformFactory, platformCore, } from '@angular/core';
8
+ import { ApplicationRef, Compiler, createPlatformFactory, platformCore, ɵwhenStable as whenStable, } from '@angular/core';
9
9
  import { INITIAL_CONFIG, ɵINTERNAL_SERVER_PLATFORM_PROVIDERS as INTERNAL_SERVER_PLATFORM_PROVIDERS, } from '@angular/platform-server';
10
10
  import { Router, ɵloadChildren as loadChildrenHelper } from '@angular/router';
11
- import { first } from 'rxjs/operators'; // Import from `/operators` to support rxjs 6 which is still supported by the Framework.
12
11
  async function* getRoutesFromRouterConfig(routes, compiler, parentInjector, parentRoute = '') {
13
12
  for (const route of routes) {
14
13
  const { path, redirectTo, loadChildren, children } = route;
@@ -59,7 +58,7 @@ export async function* extractRoutes(bootstrapAppFnOrModule, document) {
59
58
  applicationRef = moduleRef.injector.get(ApplicationRef);
60
59
  }
61
60
  // Wait until the application is stable.
62
- await applicationRef.isStable.pipe(first((isStable) => isStable)).toPromise();
61
+ await whenStable(applicationRef);
63
62
  const injector = applicationRef.injector;
64
63
  const router = injector.get(Router);
65
64
  const compiler = injector.get(Compiler);
@@ -77,4 +76,4 @@ function isBootstrapFn(value) {
77
76
  function buildRoutePath(...routeParts) {
78
77
  return routeParts.filter(Boolean).join('/');
79
78
  }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvcm91dGVzLWV4dHJhY3Rvci9leHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUNMLGNBQWMsRUFDZCxRQUFRLEVBR1IscUJBQXFCLEVBQ3JCLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsY0FBYyxFQUNkLG1DQUFtQyxJQUFJLGtDQUFrQyxHQUMxRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBUyxNQUFNLEVBQUUsYUFBYSxJQUFJLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDLENBQUMsd0ZBQXdGO0FBUWhJLEtBQUssU0FBUyxDQUFDLENBQUMseUJBQXlCLENBQ3ZDLE1BQWUsRUFDZixRQUFrQixFQUNsQixjQUF3QixFQUN4QixXQUFXLEdBQUcsRUFBRTtJQUVoQixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtRQUMxQixNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzNELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixTQUFTO1NBQ1Y7UUFFRCxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFM0QsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQzVCLDZCQUE2QjtZQUM3QixNQUFNLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2xF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SUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIENvbXBpbGVyLFxuICBJbmplY3RvcixcbiAgVHlwZSxcbiAgY3JlYXRlUGxhdGZvcm1GYWN0b3J5LFxuICBwbGF0Zm9ybUNvcmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSU5JVElBTF9DT05GSUcsXG4gIMm1SU5URVJOQUxfU0VSVkVSX1BMQVRGT1JNX1BST1ZJREVSUyBhcyBJTlRFUk5BTF9TRVJWRVJfUExBVEZPUk1fUFJPVklERVJTLFxufSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXInO1xuaW1wb3J0IHsgUm91dGUsIFJvdXRlciwgybVsb2FkQ2hpbGRyZW4gYXMgbG9hZENoaWxkcmVuSGVscGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnOyAvLyBJbXBvcnQgZnJvbSBgL29wZXJhdG9yc2AgdG8gc3VwcG9ydCByeGpzIDYgd2hpY2ggaXMgc3RpbGwgc3VwcG9ydGVkIGJ5IHRoZSBGcmFtZXdvcmsuXG5cbmludGVyZmFjZSBSb3V0ZXJSZXN1bHQge1xuICByb3V0ZTogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICByZWRpcmVjdDogYm9vbGVhbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24qIGdldFJvdXRlc0Zyb21Sb3V0ZXJDb25maWcoXG4gIHJvdXRlczogUm91dGVbXSxcbiAgY29tcGlsZXI6IENvbXBpbGVyLFxuICBwYXJlbnRJbmplY3RvcjogSW5qZWN0b3IsXG4gIHBhcmVudFJvdXRlID0gJycsXG4pOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8Um91dGVyUmVzdWx0PiB7XG4gIGZvciAoY29uc3Qgcm91dGUgb2Ygcm91dGVzKSB7XG4gICAgY29uc3QgeyBwYXRoLCByZWRpcmVjdFRvLCBsb2FkQ2hpbGRyZW4sIGNoaWxkcmVuIH0gPSByb3V0ZTtcbiAgICBpZiAocGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Um91dGVQYXRoID0gYnVpbGRSb3V0ZVBhdGgocGFyZW50Um91dGUsIHBhdGgpO1xuXG4gICAgaWYgKHJlZGlyZWN0VG8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gVE9ETzogaGFuZGxlIGByZWRpcmVjdFRvYC5cbiAgICAgIHlpZWxkIHsgcm91dGU6IGN1cnJlbnRSb3V0ZVBhdGgsIHN1Y2Nlc3M6IGZhbHNlLCByZWRpcmVjdDogdHJ1ZSB9O1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKC9bOipdLy50ZXN0KHBhdGgpKSB7XG4gICAgICAvLyBUT0RPOiBoYW5kbGUgcGFyYW1ldGVyaXplZCByb3V0ZXMgcG9wdWxhdGlvbi5cbiAgICAgIHlpZWxkIHsgcm91dGU6IGN1cnJlbnRSb3V0ZVBhdGgsIHN1Y2Nlc3M6IGZhbHNlLCByZWRpcmVjdDogZmFsc2UgfTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHlpZWxkIHsgcm91dGU6IGN1cnJlbnRSb3V0ZVBhdGgsIHN1Y2Nlc3M6IHRydWUsIHJlZGlyZWN0OiBmYWxzZSB9O1xuXG4gICAgaWYgKGNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIHlpZWxkKiBnZXRSb3V0ZXNGcm9tUm91dGVyQ29uZmlnKGNoaWxkcmVuLCBjb21waWxlciwgcGFyZW50SW5qZWN0b3IsIGN1cnJlbnRSb3V0ZVBhdGgpO1xuICAgIH1cblxuICAgIGlmIChsb2FkQ2hpbGRyZW4pIHtcbiAgICAgIGNvbnN0IGxvYWRlZENoaWxkUm91dGVzID0gYXdhaXQgbG9hZENoaWxkcmVuSGVscGVyKFxuICAgICAgICByb3V0ZSxcbiAgICAgICAgY29tcGlsZXIsXG4gICAgICAgIHBhcmVudEluamVjdG9yLFxuICAgICAgKS50b1Byb21pc2UoKTtcblxuICAgICAgaWYgKGxvYWRlZENoaWxkUm91dGVzKSB7XG4gICAgICAgIGNvbnN0IHsgcm91dGVzOiBjaGlsZFJvdXRlcywgaW5qZWN0b3IgPSBwYXJlbnRJbmplY3RvciB9ID0gbG9hZGVkQ2hpbGRSb3V0ZXM7XG4gICAgICAgIHlpZWxkKiBnZXRSb3V0ZXNGcm9tUm91dGVyQ29uZmlnKGNoaWxkUm91dGVzLCBjb21waWxlciwgaW5qZWN0b3IsIGN1cnJlbnRSb3V0ZVBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIGV4dHJhY3RSb3V0ZXMoXG4gIGJvb3RzdHJhcEFwcEZuT3JNb2R1bGU6ICgoKSA9PiBQcm9taXNlPEFwcGxpY2F0aW9uUmVmPikgfCBUeXBlPHVua25vd24+LFxuICBkb2N1bWVudDogc3RyaW5nLFxuKTogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPFJvdXRlclJlc3VsdD4ge1xuICBjb25zdCBwbGF0Zm9ybVJlZiA9IGNyZWF0ZVBsYXRmb3JtRmFjdG9yeShwbGF0Zm9ybUNvcmUsICdzZXJ2ZXInLCBbXG4gICAgW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBJTklUSUFMX0NPTkZJRyxcbiAgICAgICAgdXNlVmFsdWU6IHsgZG9jdW1lbnQsIHVybDogJycgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICAuLi5JTlRFUk5BTF9TRVJWRVJfUExBVEZPUk1fUFJPVklERVJTLFxuICBdKSgpO1xuXG4gIHRyeSB7XG4gICAgbGV0IGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZjtcbiAgICBpZiAoaXNCb290c3RyYXBGbihib290c3RyYXBBcHBGbk9yTW9kdWxlKSkge1xuICAgICAgYXBwbGljYXRpb25SZWYgPSBhd2FpdCBib290c3RyYXBBcHBGbk9yTW9kdWxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1vZHVsZVJlZiA9IGF3YWl0IHBsYXRmb3JtUmVmLmJvb3RzdHJhcE1vZHVsZShib290c3RyYXBBcHBGbk9yTW9kdWxlKTtcbiAgICAgIGFwcGxpY2F0aW9uUmVmID0gbW9kdWxlUmVmLmluamVjdG9yLmdldChBcHBsaWNhdGlvblJlZik7XG4gICAgfVxuXG4gICAgLy8gV2FpdCB1bnRpbCB0aGUgYXBwbGljYXRpb24gaXMgc3RhYmxlLlxuICAgIGF3YWl0IGFwcGxpY2F0aW9uUmVmLmlzU3RhYmxlLnBpcGUoZmlyc3QoKGlzU3RhYmxlKSA9PiBpc1N0YWJsZSkpLnRvUHJvbWlzZSgpO1xuXG4gICAgY29uc3QgaW5qZWN0b3IgPSBhcHBsaWNhdGlvblJlZi5pbmplY3RvcjtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3Rvci5nZXQoUm91dGVyKTtcbiAgICBjb25zdCBjb21waWxlciA9IGluamVjdG9yLmdldChDb21waWxlcik7XG5cbiAgICAvLyBFeHRyYWN0IGFsbCB0aGUgcm91dGVzIGZyb20gdGhlIGNvbmZpZy5cbiAgICB5aWVsZCogZ2V0Um91dGVzRnJvbVJvdXRlckNvbmZpZyhyb3V0ZXIuY29uZmlnLCBjb21waWxlciwgaW5qZWN0b3IpO1xuICB9IGZpbmFsbHkge1xuICAgIHBsYXRmb3JtUmVmLmRlc3Ryb3koKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0Jvb3RzdHJhcEZuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgKCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvblJlZj4ge1xuICAvLyBXZSBjYW4gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGEgbW9kdWxlIGFuZCBhIGJvb3RzdHJhcCBmdW5jdGlvbiBieSByZWFkaW5nIGNvbXBpbGVyLWdlbmVyYXRlZCBgybVtb2RgIHN0YXRpYyBwcm9wZXJ0eTpcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiAhKCfJtW1vZCcgaW4gdmFsdWUpO1xufVxuXG5mdW5jdGlvbiBidWlsZFJvdXRlUGF0aCguLi5yb3V0ZVBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiByb3V0ZVBhcnRzLmZpbHRlcihCb29sZWFuKS5qb2luKCcvJyk7XG59XG4iXX0=
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvcm91dGVzLWV4dHJhY3Rvci9leHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUNMLGNBQWMsRUFDZCxRQUFRLEVBR1IscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixXQUFXLElBQUksVUFBVSxHQUMxQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsY0FBYyxFQUNkLG1DQUFtQyxJQUFJLGtDQUFrQyxHQUMxRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBUyxNQUFNLEVBQUUsYUFBYSxJQUFJLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFRckYsS0FBSyxTQUFTLENBQUMsQ0FBQyx5QkFBeUIsQ0FDdkMsTUFBZSxFQUNmLFFBQWtCLEVBQ2xCLGNBQXdCLEVBQ3hCLFdBQVcsR0FBRyxFQUFFO0lBRWhCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFO1FBQzFCLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDM0QsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RCLFNBQVM7U0FDVjtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzRCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDNUIsNkJBQTZCO1lBQzdCLE1BQU0sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDbEUsU0FBUztTQUNWO1FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JCLGdEQUFnRDtZQUNoRCxNQUFNLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ25FLFNBQVM7U0FDVjtRQUVELE1BQU0sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFbEUsSUFBSSxRQUFRLEVBQUUsTUFBTSxFQUFFO1lBQ3BCLEtBQUssQ0FBQyxDQUFDLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDeEY7UUFFRCxJQUFJLFlBQVksRUFBRTtZQUNoQixNQUFNLGlCQUFpQixHQUFHLE1BQU0sa0JBQWtCLENBQ2hELEtBQUssRUFDTCxRQUFRLEVBQ1IsY0FBYyxDQUNmLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFZCxJQUFJLGlCQUFpQixFQUFFO2dCQUNyQixNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEdBQUcsY0FBYyxFQUFFLEdBQUcsaUJBQWlCLENBQUM7Z0JBQzdFLEtBQUssQ0FBQyxDQUFDLHlCQUF5QixDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7YUFDckY7U0FDRjtLQUNGO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FDbEMsc0JBQXVFLEVBQ3ZFLFFBQWdCO0lBRWhCLE1BQU0sV0FBVyxHQUFHLHFCQUFxQixDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUU7UUFDaEU7WUFDRTtnQkFDRSxPQUFPLEVBQUUsY0FBYztnQkFDdkIsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7YUFDaEM7U0FDRjtRQUNELEdBQUcsa0NBQWtDO0tBQ3RDLENBQUMsRUFBRSxDQUFDO0lBRUwsSUFBSTtRQUNGLElBQUksY0FBOEIsQ0FBQztRQUNuQyxJQUFJLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1lBQ3pDLGNBQWMsR0FBRyxNQUFNLHNCQUFzQixFQUFFLENBQUM7U0FDakQ7YUFBTTtZQUNMLE1BQU0sU0FBUyxHQUFHLE1BQU0sV0FBVyxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQzVFLGNBQWMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN6RDtRQUVELHdDQUF3QztRQUN4QyxNQUFNLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVqQyxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV4QywwQ0FBMEM7UUFDMUMsS0FBSyxDQUFDLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDckU7WUFBUztRQUNSLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUN2QjtBQUNILENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUFjO0lBQ25DLHVIQUF1SDtJQUN2SCxPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxHQUFHLFVBQW9CO0lBQzdDLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcGlsZXIsXG4gIEluamVjdG9yLFxuICBUeXBlLFxuICBjcmVhdGVQbGF0Zm9ybUZhY3RvcnksXG4gIHBsYXRmb3JtQ29yZSxcbiAgybV3aGVuU3RhYmxlIGFzIHdoZW5TdGFibGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSU5JVElBTF9DT05GSUcsXG4gIMm1SU5URVJOQUxfU0VSVkVSX1BMQVRGT1JNX1BST1ZJREVSUyBhcyBJTlRFUk5BTF9TRVJWRVJfUExBVEZPUk1fUFJPVklERVJTLFxufSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXInO1xuaW1wb3J0IHsgUm91dGUsIFJvdXRlciwgybVsb2FkQ2hpbGRyZW4gYXMgbG9hZENoaWxkcmVuSGVscGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW50ZXJmYWNlIFJvdXRlclJlc3VsdCB7XG4gIHJvdXRlOiBzdHJpbmc7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHJlZGlyZWN0OiBib29sZWFuO1xufVxuXG5hc3luYyBmdW5jdGlvbiogZ2V0Um91dGVzRnJvbVJvdXRlckNvbmZpZyhcbiAgcm91dGVzOiBSb3V0ZVtdLFxuICBjb21waWxlcjogQ29tcGlsZXIsXG4gIHBhcmVudEluamVjdG9yOiBJbmplY3RvcixcbiAgcGFyZW50Um91dGUgPSAnJyxcbik6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxSb3V0ZXJSZXN1bHQ+IHtcbiAgZm9yIChjb25zdCByb3V0ZSBvZiByb3V0ZXMpIHtcbiAgICBjb25zdCB7IHBhdGgsIHJlZGlyZWN0VG8sIGxvYWRDaGlsZHJlbiwgY2hpbGRyZW4gfSA9IHJvdXRlO1xuICAgIGlmIChwYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRSb3V0ZVBhdGggPSBidWlsZFJvdXRlUGF0aChwYXJlbnRSb3V0ZSwgcGF0aCk7XG5cbiAgICBpZiAocmVkaXJlY3RUbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBUT0RPOiBoYW5kbGUgYHJlZGlyZWN0VG9gLlxuICAgICAgeWllbGQgeyByb3V0ZTogY3VycmVudFJvdXRlUGF0aCwgc3VjY2VzczogZmFsc2UsIHJlZGlyZWN0OiB0cnVlIH07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoL1s6Kl0vLnRlc3QocGF0aCkpIHtcbiAgICAgIC8vIFRPRE86IGhhbmRsZSBwYXJhbWV0ZXJpemVkIHJvdXRlcyBwb3B1bGF0aW9uLlxuICAgICAgeWllbGQgeyByb3V0ZTogY3VycmVudFJvdXRlUGF0aCwgc3VjY2VzczogZmFsc2UsIHJlZGlyZWN0OiBmYWxzZSB9O1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgeWllbGQgeyByb3V0ZTogY3VycmVudFJvdXRlUGF0aCwgc3VjY2VzczogdHJ1ZSwgcmVkaXJlY3Q6IGZhbHNlIH07XG5cbiAgICBpZiAoY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgeWllbGQqIGdldFJvdXRlc0Zyb21Sb3V0ZXJDb25maWcoY2hpbGRyZW4sIGNvbXBpbGVyLCBwYXJlbnRJbmplY3RvciwgY3VycmVudFJvdXRlUGF0aCk7XG4gICAgfVxuXG4gICAgaWYgKGxvYWRDaGlsZHJlbikge1xuICAgICAgY29uc3QgbG9hZGVkQ2hpbGRSb3V0ZXMgPSBhd2FpdCBsb2FkQ2hpbGRyZW5IZWxwZXIoXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBjb21waWxlcixcbiAgICAgICAgcGFyZW50SW5qZWN0b3IsXG4gICAgICApLnRvUHJvbWlzZSgpO1xuXG4gICAgICBpZiAobG9hZGVkQ2hpbGRSb3V0ZXMpIHtcbiAgICAgICAgY29uc3QgeyByb3V0ZXM6IGNoaWxkUm91dGVzLCBpbmplY3RvciA9IHBhcmVudEluamVjdG9yIH0gPSBsb2FkZWRDaGlsZFJvdXRlcztcbiAgICAgICAgeWllbGQqIGdldFJvdXRlc0Zyb21Sb3V0ZXJDb25maWcoY2hpbGRSb3V0ZXMsIGNvbXBpbGVyLCBpbmplY3RvciwgY3VycmVudFJvdXRlUGF0aCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZXh0cmFjdFJvdXRlcyhcbiAgYm9vdHN0cmFwQXBwRm5Pck1vZHVsZTogKCgpID0+IFByb21pc2U8QXBwbGljYXRpb25SZWY+KSB8IFR5cGU8dW5rbm93bj4sXG4gIGRvY3VtZW50OiBzdHJpbmcsXG4pOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8Um91dGVyUmVzdWx0PiB7XG4gIGNvbnN0IHBsYXRmb3JtUmVmID0gY3JlYXRlUGxhdGZvcm1GYWN0b3J5KHBsYXRmb3JtQ29yZSwgJ3NlcnZlcicsIFtcbiAgICBbXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IElOSVRJQUxfQ09ORklHLFxuICAgICAgICB1c2VWYWx1ZTogeyBkb2N1bWVudCwgdXJsOiAnJyB9LFxuICAgICAgfSxcbiAgICBdLFxuICAgIC4uLklOVEVSTkFMX1NFUlZFUl9QTEFURk9STV9QUk9WSURFUlMsXG4gIF0pKCk7XG5cbiAgdHJ5IHtcbiAgICBsZXQgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmO1xuICAgIGlmIChpc0Jvb3RzdHJhcEZuKGJvb3RzdHJhcEFwcEZuT3JNb2R1bGUpKSB7XG4gICAgICBhcHBsaWNhdGlvblJlZiA9IGF3YWl0IGJvb3RzdHJhcEFwcEZuT3JNb2R1bGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbW9kdWxlUmVmID0gYXdhaXQgcGxhdGZvcm1SZWYuYm9vdHN0cmFwTW9kdWxlKGJvb3RzdHJhcEFwcEZuT3JNb2R1bGUpO1xuICAgICAgYXBwbGljYXRpb25SZWYgPSBtb2R1bGVSZWYuaW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uUmVmKTtcbiAgICB9XG5cbiAgICAvLyBXYWl0IHVudGlsIHRoZSBhcHBsaWNhdGlvbiBpcyBzdGFibGUuXG4gICAgYXdhaXQgd2hlblN0YWJsZShhcHBsaWNhdGlvblJlZik7XG5cbiAgICBjb25zdCBpbmplY3RvciA9IGFwcGxpY2F0aW9uUmVmLmluamVjdG9yO1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgIGNvbnN0IGNvbXBpbGVyID0gaW5qZWN0b3IuZ2V0KENvbXBpbGVyKTtcblxuICAgIC8vIEV4dHJhY3QgYWxsIHRoZSByb3V0ZXMgZnJvbSB0aGUgY29uZmlnLlxuICAgIHlpZWxkKiBnZXRSb3V0ZXNGcm9tUm91dGVyQ29uZmlnKHJvdXRlci5jb25maWcsIGNvbXBpbGVyLCBpbmplY3Rvcik7XG4gIH0gZmluYWxseSB7XG4gICAgcGxhdGZvcm1SZWYuZGVzdHJveSgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQm9vdHN0cmFwRm4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyAoKSA9PiBQcm9taXNlPEFwcGxpY2F0aW9uUmVmPiB7XG4gIC8vIFdlIGNhbiBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYSBtb2R1bGUgYW5kIGEgYm9vdHN0cmFwIGZ1bmN0aW9uIGJ5IHJlYWRpbmcgY29tcGlsZXItZ2VuZXJhdGVkIGDJtW1vZGAgc3RhdGljIHByb3BlcnR5OlxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmICEoJ8m1bW9kJyBpbiB2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkUm91dGVQYXRoKC4uLnJvdXRlUGFydHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJvdXRlUGFydHMuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy8nKTtcbn1cbiJdfQ==
@@ -13,6 +13,7 @@ export interface ESMInMemoryFileLoaderWorkerData {
13
13
  outputFiles: Record<string, string>;
14
14
  workspaceRoot: string;
15
15
  }
16
+ export declare function initialize(data: ESMInMemoryFileLoaderWorkerData): void;
16
17
  export declare function resolve(specifier: string, context: {
17
18
  parentURL: undefined | string;
18
19
  }, nextResolve: Function): any;
@@ -0,0 +1,82 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.load = exports.resolve = exports.initialize = void 0;
11
+ const node_path_1 = require("node:path");
12
+ const node_url_1 = require("node:url");
13
+ const url_1 = require("url");
14
+ const javascript_transformer_1 = require("../../../tools/esbuild/javascript-transformer");
15
+ const node_18_utils_1 = require("./node-18-utils");
16
+ const TRANSFORMED_FILES = {};
17
+ const CHUNKS_REGEXP = /file:\/\/\/(main\.server|chunk-\w+)\.mjs/;
18
+ let workspaceRootFile;
19
+ let outputFiles;
20
+ const javascriptTransformer = new javascript_transformer_1.JavaScriptTransformer(
21
+ // Always enable JIT linking to support applications built with and without AOT.
22
+ // In a development environment the additional scope information does not
23
+ // have a negative effect unlike production where final output size is relevant.
24
+ { sourcemap: true, jit: true }, 1);
25
+ (0, node_18_utils_1.callInitializeIfNeeded)(initialize);
26
+ function initialize(data) {
27
+ workspaceRootFile = (0, node_url_1.pathToFileURL)((0, node_path_1.join)(data.workspaceRoot, 'index.mjs')).href;
28
+ outputFiles = data.outputFiles;
29
+ }
30
+ exports.initialize = initialize;
31
+ function resolve(specifier, context, nextResolve) {
32
+ if (!isFileProtocol(specifier)) {
33
+ const normalizedSpecifier = specifier.replace(/^\.\//, '');
34
+ if (normalizedSpecifier in outputFiles) {
35
+ return {
36
+ format: 'module',
37
+ shortCircuit: true,
38
+ // File URLs need to absolute. In Windows these also need to include the drive.
39
+ // The `/` will be resolved to the drive letter.
40
+ url: (0, node_url_1.pathToFileURL)('/' + normalizedSpecifier).href,
41
+ };
42
+ }
43
+ }
44
+ // Defer to the next hook in the chain, which would be the
45
+ // Node.js default resolve if this is the last user-specified loader.
46
+ return nextResolve(specifier, isBundleEntryPointOrChunk(context) ? { ...context, parentURL: workspaceRootFile } : context);
47
+ }
48
+ exports.resolve = resolve;
49
+ async function load(url, context, nextLoad) {
50
+ if (isFileProtocol(url)) {
51
+ const filePath = (0, url_1.fileURLToPath)(url);
52
+ // Remove '/' or drive letter for Windows that was added in the above 'resolve'.
53
+ let source = outputFiles[(0, node_path_1.relative)('/', filePath)] ?? TRANSFORMED_FILES[filePath];
54
+ if (source === undefined) {
55
+ source = TRANSFORMED_FILES[filePath] = Buffer.from(await javascriptTransformer.transformFile(filePath)).toString('utf-8');
56
+ }
57
+ if (source !== undefined) {
58
+ const { format } = context;
59
+ return {
60
+ format,
61
+ shortCircuit: true,
62
+ source,
63
+ };
64
+ }
65
+ }
66
+ // Let Node.js handle all other URLs.
67
+ return nextLoad(url);
68
+ }
69
+ exports.load = load;
70
+ function isFileProtocol(url) {
71
+ return url.startsWith('file://');
72
+ }
73
+ function handleProcessExit() {
74
+ void javascriptTransformer.close();
75
+ }
76
+ function isBundleEntryPointOrChunk(context) {
77
+ return !!context.parentURL && CHUNKS_REGEXP.test(context.parentURL);
78
+ }
79
+ process.once('exit', handleProcessExit);
80
+ process.once('SIGINT', handleProcessExit);
81
+ process.once('uncaughtException', handleProcessExit);
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLWhvb2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvc2VydmVyLXJlbmRlcmluZy9lc20taW4tbWVtb3J5LWxvYWRlci9sb2FkZXItaG9va3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgseUNBQTJDO0FBQzNDLHVDQUF5QztBQUN6Qyw2QkFBb0M7QUFDcEMsMEZBQXNGO0FBQ3RGLG1EQUF5RDtBQVl6RCxNQUFNLGlCQUFpQixHQUEyQixFQUFFLENBQUM7QUFDckQsTUFBTSxhQUFhLEdBQUcsMENBQTBDLENBQUM7QUFDakUsSUFBSSxpQkFBeUIsQ0FBQztBQUM5QixJQUFJLFdBQW1DLENBQUM7QUFFeEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLDhDQUFxQjtBQUNyRCxnRkFBZ0Y7QUFDaEYseUVBQXlFO0FBQ3pFLGdGQUFnRjtBQUNoRixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUM5QixDQUFDLENBQ0YsQ0FBQztBQUVGLElBQUEsc0NBQXNCLEVBQUMsVUFBVSxDQUFDLENBQUM7QUFFbkMsU0FBZ0IsVUFBVSxDQUFDLElBQXFDO0lBQzlELGlCQUFpQixHQUFHLElBQUEsd0JBQWEsRUFBQyxJQUFBLGdCQUFJLEVBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM5RSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUNqQyxDQUFDO0FBSEQsZ0NBR0M7QUFFRCxTQUFnQixPQUFPLENBQ3JCLFNBQWlCLEVBQ2pCLE9BQTBDLEVBQzFDLFdBQXFCO0lBRXJCLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRCxJQUFJLG1CQUFtQixJQUFJLFdBQVcsRUFBRTtZQUN0QyxPQUFPO2dCQUNMLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsK0VBQStFO2dCQUMvRSxnREFBZ0Q7Z0JBQ2hELEdBQUcsRUFBRSxJQUFBLHdCQUFhLEVBQUMsR0FBRyxHQUFHLG1CQUFtQixDQUFDLENBQUMsSUFBSTthQUNuRCxDQUFDO1NBQ0g7S0FDRjtJQUVELDBEQUEwRDtJQUMxRCxxRUFBcUU7SUFDckUsT0FBTyxXQUFXLENBQ2hCLFNBQVMsRUFDVCx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUM1RixDQUFDO0FBQ0osQ0FBQztBQXhCRCwwQkF3QkM7QUFFTSxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQVcsRUFBRSxPQUFtQyxFQUFFLFFBQWtCO0lBQzdGLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUEsbUJBQWEsRUFBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxnRkFBZ0Y7UUFDaEYsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUEsb0JBQVEsRUFBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVqRixJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDeEIsTUFBTSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ2hELE1BQU0scUJBQXFCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUNwRCxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNyQjtRQUVELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUN4QixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBRTNCLE9BQU87Z0JBQ0wsTUFBTTtnQkFDTixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsTUFBTTthQUNQLENBQUM7U0FDSDtLQUNGO0lBRUQscUNBQXFDO0lBQ3JDLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUF6QkQsb0JBeUJDO0FBRUQsU0FBUyxjQUFjLENBQUMsR0FBVztJQUNqQyxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVELFNBQVMsaUJBQWlCO0lBQ3hCLEtBQUsscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVELFNBQVMseUJBQXlCLENBQUMsT0FBMEM7SUFDM0UsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUN4QyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBqb2luLCByZWxhdGl2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgeyBKYXZhU2NyaXB0VHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi8uLi90b29scy9lc2J1aWxkL2phdmFzY3JpcHQtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgY2FsbEluaXRpYWxpemVJZk5lZWRlZCB9IGZyb20gJy4vbm9kZS0xOC11dGlscyc7XG5cbi8qKlxuICogTm9kZS5qcyBFU00gbG9hZGVyIHRvIHJlZGlyZWN0IGltcG9ydHMgdG8gaW4gbWVtb3J5IGZpbGVzLlxuICogQHNlZTogaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9lc20uaHRtbCNsb2FkZXJzIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGxvYWRlcnMuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBFU01Jbk1lbW9yeUZpbGVMb2FkZXJXb3JrZXJEYXRhIHtcbiAgb3V0cHV0RmlsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHdvcmtzcGFjZVJvb3Q6IHN0cmluZztcbn1cblxuY29uc3QgVFJBTlNGT1JNRURfRklMRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbmNvbnN0IENIVU5LU19SRUdFWFAgPSAvZmlsZTpcXC9cXC9cXC8obWFpblxcLnNlcnZlcnxjaHVuay1cXHcrKVxcLm1qcy87XG5sZXQgd29ya3NwYWNlUm9vdEZpbGU6IHN0cmluZztcbmxldCBvdXRwdXRGaWxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuY29uc3QgamF2YXNjcmlwdFRyYW5zZm9ybWVyID0gbmV3IEphdmFTY3JpcHRUcmFuc2Zvcm1lcihcbiAgLy8gQWx3YXlzIGVuYWJsZSBKSVQgbGlua2luZyB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyBidWlsdCB3aXRoIGFuZCB3aXRob3V0IEFPVC5cbiAgLy8gSW4gYSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0aGUgYWRkaXRpb25hbCBzY29wZSBpbmZvcm1hdGlvbiBkb2VzIG5vdFxuICAvLyBoYXZlIGEgbmVnYXRpdmUgZWZmZWN0IHVubGlrZSBwcm9kdWN0aW9uIHdoZXJlIGZpbmFsIG91dHB1dCBzaXplIGlzIHJlbGV2YW50LlxuICB7IHNvdXJjZW1hcDogdHJ1ZSwgaml0OiB0cnVlIH0sXG4gIDEsXG4pO1xuXG5jYWxsSW5pdGlhbGl6ZUlmTmVlZGVkKGluaXRpYWxpemUpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZShkYXRhOiBFU01Jbk1lbW9yeUZpbGVMb2FkZXJXb3JrZXJEYXRhKSB7XG4gIHdvcmtzcGFjZVJvb3RGaWxlID0gcGF0aFRvRmlsZVVSTChqb2luKGRhdGEud29ya3NwYWNlUm9vdCwgJ2luZGV4Lm1qcycpKS5ocmVmO1xuICBvdXRwdXRGaWxlcyA9IGRhdGEub3V0cHV0RmlsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKFxuICBzcGVjaWZpZXI6IHN0cmluZyxcbiAgY29udGV4dDogeyBwYXJlbnRVUkw6IHVuZGVmaW5lZCB8IHN0cmluZyB9LFxuICBuZXh0UmVzb2x2ZTogRnVuY3Rpb24sXG4pIHtcbiAgaWYgKCFpc0ZpbGVQcm90b2NvbChzcGVjaWZpZXIpKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFNwZWNpZmllciA9IHNwZWNpZmllci5yZXBsYWNlKC9eXFwuXFwvLywgJycpO1xuICAgIGlmIChub3JtYWxpemVkU3BlY2lmaWVyIGluIG91dHB1dEZpbGVzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmb3JtYXQ6ICdtb2R1bGUnLFxuICAgICAgICBzaG9ydENpcmN1aXQ6IHRydWUsXG4gICAgICAgIC8vIEZpbGUgVVJMcyBuZWVkIHRvIGFic29sdXRlLiBJbiBXaW5kb3dzIHRoZXNlIGFsc28gbmVlZCB0byBpbmNsdWRlIHRoZSBkcml2ZS5cbiAgICAgICAgLy8gVGhlIGAvYCB3aWxsIGJlIHJlc29sdmVkIHRvIHRoZSBkcml2ZSBsZXR0ZXIuXG4gICAgICAgIHVybDogcGF0aFRvRmlsZVVSTCgnLycgKyBub3JtYWxpemVkU3BlY2lmaWVyKS5ocmVmLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZlciB0byB0aGUgbmV4dCBob29rIGluIHRoZSBjaGFpbiwgd2hpY2ggd291bGQgYmUgdGhlXG4gIC8vIE5vZGUuanMgZGVmYXVsdCByZXNvbHZlIGlmIHRoaXMgaXMgdGhlIGxhc3QgdXNlci1zcGVjaWZpZWQgbG9hZGVyLlxuICByZXR1cm4gbmV4dFJlc29sdmUoXG4gICAgc3BlY2lmaWVyLFxuICAgIGlzQnVuZGxlRW50cnlQb2ludE9yQ2h1bmsoY29udGV4dCkgPyB7IC4uLmNvbnRleHQsIHBhcmVudFVSTDogd29ya3NwYWNlUm9vdEZpbGUgfSA6IGNvbnRleHQsXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkKHVybDogc3RyaW5nLCBjb250ZXh0OiB7IGZvcm1hdD86IHN0cmluZyB8IG51bGwgfSwgbmV4dExvYWQ6IEZ1bmN0aW9uKSB7XG4gIGlmIChpc0ZpbGVQcm90b2NvbCh1cmwpKSB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBmaWxlVVJMVG9QYXRoKHVybCk7XG4gICAgLy8gUmVtb3ZlICcvJyBvciBkcml2ZSBsZXR0ZXIgZm9yIFdpbmRvd3MgdGhhdCB3YXMgYWRkZWQgaW4gdGhlIGFib3ZlICdyZXNvbHZlJy5cbiAgICBsZXQgc291cmNlID0gb3V0cHV0RmlsZXNbcmVsYXRpdmUoJy8nLCBmaWxlUGF0aCldID8/IFRSQU5TRk9STUVEX0ZJTEVTW2ZpbGVQYXRoXTtcblxuICAgIGlmIChzb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc291cmNlID0gVFJBTlNGT1JNRURfRklMRVNbZmlsZVBhdGhdID0gQnVmZmVyLmZyb20oXG4gICAgICAgIGF3YWl0IGphdmFzY3JpcHRUcmFuc2Zvcm1lci50cmFuc2Zvcm1GaWxlKGZpbGVQYXRoKSxcbiAgICAgICkudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB7IGZvcm1hdCB9ID0gY29udGV4dDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9ybWF0LFxuICAgICAgICBzaG9ydENpcmN1aXQ6IHRydWUsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gTGV0IE5vZGUuanMgaGFuZGxlIGFsbCBvdGhlciBVUkxzLlxuICByZXR1cm4gbmV4dExvYWQodXJsKTtcbn1cblxuZnVuY3Rpb24gaXNGaWxlUHJvdG9jb2wodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHVybC5zdGFydHNXaXRoKCdmaWxlOi8vJyk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVByb2Nlc3NFeGl0KCk6IHZvaWQge1xuICB2b2lkIGphdmFzY3JpcHRUcmFuc2Zvcm1lci5jbG9zZSgpO1xufVxuXG5mdW5jdGlvbiBpc0J1bmRsZUVudHJ5UG9pbnRPckNodW5rKGNvbnRleHQ6IHsgcGFyZW50VVJMOiB1bmRlZmluZWQgfCBzdHJpbmcgfSk6IGJvb2xlYW4ge1xuICByZXR1cm4gISFjb250ZXh0LnBhcmVudFVSTCAmJiBDSFVOS1NfUkVHRVhQLnRlc3QoY29udGV4dC5wYXJlbnRVUkwpO1xufVxuXG5wcm9jZXNzLm9uY2UoJ2V4aXQnLCBoYW5kbGVQcm9jZXNzRXhpdCk7XG5wcm9jZXNzLm9uY2UoJ1NJR0lOVCcsIGhhbmRsZVByb2Nlc3NFeGl0KTtcbnByb2Nlc3Mub25jZSgndW5jYXVnaHRFeGNlcHRpb24nLCBoYW5kbGVQcm9jZXNzRXhpdCk7XG4iXX0=
@@ -0,0 +1,10 @@
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
+ /** Call the initialize hook when running on Node.js 18 */
9
+ export declare function callInitializeIfNeeded(initialize: (typeof import('./loader-hooks'))['initialize']): void;
10
+ export declare function getESMLoaderArgs(): string[];
@@ -0,0 +1,39 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getESMLoaderArgs = exports.callInitializeIfNeeded = void 0;
11
+ const node_path_1 = require("node:path");
12
+ const node_url_1 = require("node:url");
13
+ const node_worker_threads_1 = require("node:worker_threads");
14
+ let IS_NODE_18;
15
+ function isNode18() {
16
+ return (IS_NODE_18 ??= process.versions.node.startsWith('18.'));
17
+ }
18
+ /** Call the initialize hook when running on Node.js 18 */
19
+ function callInitializeIfNeeded(initialize) {
20
+ if (isNode18()) {
21
+ initialize(node_worker_threads_1.workerData);
22
+ }
23
+ }
24
+ exports.callInitializeIfNeeded = callInitializeIfNeeded;
25
+ function getESMLoaderArgs() {
26
+ if (isNode18()) {
27
+ return [
28
+ '--no-warnings',
29
+ '--loader',
30
+ (0, node_url_1.pathToFileURL)((0, node_path_1.join)(__dirname, 'loader-hooks.js')).href, // Loader cannot be an absolute path on Windows.
31
+ ];
32
+ }
33
+ return [
34
+ '--import',
35
+ (0, node_url_1.pathToFileURL)((0, node_path_1.join)(__dirname, 'register-hooks.js')).href, // Loader cannot be an absolute path on Windows.
36
+ ];
37
+ }
38
+ exports.getESMLoaderArgs = getESMLoaderArgs;
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS0xOC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3V0aWxzL3NlcnZlci1yZW5kZXJpbmcvZXNtLWluLW1lbW9yeS1sb2FkZXIvbm9kZS0xOC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCx5Q0FBaUM7QUFDakMsdUNBQXlDO0FBQ3pDLDZEQUFpRDtBQUVqRCxJQUFJLFVBQStCLENBQUM7QUFDcEMsU0FBUyxRQUFRO0lBQ2YsT0FBTyxDQUFDLFVBQVUsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsMERBQTBEO0FBQzFELFNBQWdCLHNCQUFzQixDQUNwQyxVQUEyRDtJQUUzRCxJQUFJLFFBQVEsRUFBRSxFQUFFO1FBQ2QsVUFBVSxDQUFDLGdDQUFVLENBQUMsQ0FBQztLQUN4QjtBQUNILENBQUM7QUFORCx3REFNQztBQUVELFNBQWdCLGdCQUFnQjtJQUM5QixJQUFJLFFBQVEsRUFBRSxFQUFFO1FBQ2QsT0FBTztZQUNMLGVBQWU7WUFDZixVQUFVO1lBQ1YsSUFBQSx3QkFBYSxFQUFDLElBQUEsZ0JBQUksRUFBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxnREFBZ0Q7U0FDekcsQ0FBQztLQUNIO0lBRUQsT0FBTztRQUNMLFVBQVU7UUFDVixJQUFBLHdCQUFhLEVBQUMsSUFBQSxnQkFBSSxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLGdEQUFnRDtLQUMzRyxDQUFDO0FBQ0osQ0FBQztBQWJELDRDQWFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7IHdvcmtlckRhdGEgfSBmcm9tICdub2RlOndvcmtlcl90aHJlYWRzJztcblxubGV0IElTX05PREVfMTg6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5mdW5jdGlvbiBpc05vZGUxOCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIChJU19OT0RFXzE4ID8/PSBwcm9jZXNzLnZlcnNpb25zLm5vZGUuc3RhcnRzV2l0aCgnMTguJykpO1xufVxuXG4vKiogQ2FsbCB0aGUgaW5pdGlhbGl6ZSBob29rIHdoZW4gcnVubmluZyBvbiBOb2RlLmpzIDE4ICovXG5leHBvcnQgZnVuY3Rpb24gY2FsbEluaXRpYWxpemVJZk5lZWRlZChcbiAgaW5pdGlhbGl6ZTogKHR5cGVvZiBpbXBvcnQoJy4vbG9hZGVyLWhvb2tzJykpWydpbml0aWFsaXplJ10sXG4pOiB2b2lkIHtcbiAgaWYgKGlzTm9kZTE4KCkpIHtcbiAgICBpbml0aWFsaXplKHdvcmtlckRhdGEpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFU01Mb2FkZXJBcmdzKCk6IHN0cmluZ1tdIHtcbiAgaWYgKGlzTm9kZTE4KCkpIHtcbiAgICByZXR1cm4gW1xuICAgICAgJy0tbm8td2FybmluZ3MnLCAvLyBTdXBwcmVzcyBgRXhwZXJpbWVudGFsV2FybmluZzogQ3VzdG9tIEVTTSBMb2FkZXJzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlLi4uYC5cbiAgICAgICctLWxvYWRlcicsXG4gICAgICBwYXRoVG9GaWxlVVJMKGpvaW4oX19kaXJuYW1lLCAnbG9hZGVyLWhvb2tzLmpzJykpLmhyZWYsIC8vIExvYWRlciBjYW5ub3QgYmUgYW4gYWJzb2x1dGUgcGF0aCBvbiBXaW5kb3dzLlxuICAgIF07XG4gIH1cblxuICByZXR1cm4gW1xuICAgICctLWltcG9ydCcsXG4gICAgcGF0aFRvRmlsZVVSTChqb2luKF9fZGlybmFtZSwgJ3JlZ2lzdGVyLWhvb2tzLmpzJykpLmhyZWYsIC8vIExvYWRlciBjYW5ub3QgYmUgYW4gYWJzb2x1dGUgcGF0aCBvbiBXaW5kb3dzLlxuICBdO1xufVxuIl19
@@ -0,0 +1,8 @@
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
+ export {};
@@ -0,0 +1,16 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ // TODO: remove the below once @types/node are version 20.x.x
11
+ // @ts-expect-error "node:module"' has no exported member 'register'.ts(2305)
12
+ const node_module_1 = require("node:module");
13
+ const node_url_1 = require("node:url");
14
+ const node_worker_threads_1 = require("node:worker_threads");
15
+ (0, node_module_1.register)('./loader-hooks.js', (0, node_url_1.pathToFileURL)(__filename), { data: node_worker_threads_1.workerData });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy91dGlscy9zZXJ2ZXItcmVuZGVyaW5nL2VzbS1pbi1tZW1vcnktbG9hZGVyL3JlZ2lzdGVyLWhvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsNkRBQTZEO0FBQzdELDZFQUE2RTtBQUM3RSw2Q0FBdUM7QUFDdkMsdUNBQXlDO0FBQ3pDLDZEQUFpRDtBQUVqRCxJQUFBLHNCQUFRLEVBQUMsbUJBQW1CLEVBQUUsSUFBQSx3QkFBYSxFQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdDQUFVLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8vIFRPRE86IHJlbW92ZSB0aGUgYmVsb3cgb25jZSBAdHlwZXMvbm9kZSBhcmUgdmVyc2lvbiAyMC54Lnhcbi8vIEB0cy1leHBlY3QtZXJyb3IgXCJub2RlOm1vZHVsZVwiJyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICdyZWdpc3RlcicudHMoMjMwNSlcbmltcG9ydCB7IHJlZ2lzdGVyIH0gZnJvbSAnbm9kZTptb2R1bGUnO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7IHdvcmtlckRhdGEgfSBmcm9tICdub2RlOndvcmtlcl90aHJlYWRzJztcblxucmVnaXN0ZXIoJy4vbG9hZGVyLWhvb2tzLmpzJywgcGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKSwgeyBkYXRhOiB3b3JrZXJEYXRhIH0pO1xuIl19
@@ -19,4 +19,5 @@ export interface MainServerBundleExports {
19
19
  default: (() => Promise<ApplicationRef>) | Type<unknown>;
20
20
  /** Method to extract routes from the router config. */
21
21
  extractRoutes: typeof extractRoutes;
22
+ ɵresetCompiledComponents?: () => void;
22
23
  }
@@ -7,4 +7,4 @@
7
7
  * found in the LICENSE file at https://angular.io/license
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1idW5kbGUtZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3V0aWxzL3NlcnZlci1yZW5kZXJpbmcvbWFpbi1idW5kbGUtZXhwb3J0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwbGljYXRpb25SZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgcmVuZGVyQXBwbGljYXRpb24sIHJlbmRlck1vZHVsZSwgybVTRVJWRVJfQ09OVEVYVCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLXNlcnZlcic7XG5pbXBvcnQgdHlwZSB7IGV4dHJhY3RSb3V0ZXMgfSBmcm9tICcuLi9yb3V0ZXMtZXh0cmFjdG9yL2V4dHJhY3Rvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFpblNlcnZlckJ1bmRsZUV4cG9ydHMge1xuICAvKiogQW4gaW50ZXJuYWwgdG9rZW4gdGhhdCBhbGxvd3MgcHJvdmlkaW5nIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZXJ2ZXIgY29udGV4dC4gKi9cbiAgybVTRVJWRVJfQ09OVEVYVDogdHlwZW9mIMm1U0VSVkVSX0NPTlRFWFQ7XG5cbiAgLyoqIFJlbmRlciBhbiBOZ01vZHVsZSBhcHBsaWNhdGlvbi4gKi9cbiAgcmVuZGVyTW9kdWxlOiB0eXBlb2YgcmVuZGVyTW9kdWxlO1xuXG4gIC8qKiBNZXRob2QgdG8gcmVuZGVyIGEgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbi4gKi9cbiAgcmVuZGVyQXBwbGljYXRpb246IHR5cGVvZiByZW5kZXJBcHBsaWNhdGlvbjtcblxuICAvKiogU3RhbmRhbG9uZSBhcHBsaWNhdGlvbiBib290c3RyYXBwaW5nIGZ1bmN0aW9uLiAqL1xuICBkZWZhdWx0OiAoKCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvblJlZj4pIHwgVHlwZTx1bmtub3duPjtcblxuICAvKiogTWV0aG9kIHRvIGV4dHJhY3Qgcm91dGVzIGZyb20gdGhlIHJvdXRlciBjb25maWcuICovXG4gIGV4dHJhY3RSb3V0ZXM6IHR5cGVvZiBleHRyYWN0Um91dGVzO1xufVxuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1idW5kbGUtZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3V0aWxzL3NlcnZlci1yZW5kZXJpbmcvbWFpbi1idW5kbGUtZXhwb3J0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwbGljYXRpb25SZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgcmVuZGVyQXBwbGljYXRpb24sIHJlbmRlck1vZHVsZSwgybVTRVJWRVJfQ09OVEVYVCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLXNlcnZlcic7XG5pbXBvcnQgdHlwZSB7IGV4dHJhY3RSb3V0ZXMgfSBmcm9tICcuLi9yb3V0ZXMtZXh0cmFjdG9yL2V4dHJhY3Rvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFpblNlcnZlckJ1bmRsZUV4cG9ydHMge1xuICAvKiogQW4gaW50ZXJuYWwgdG9rZW4gdGhhdCBhbGxvd3MgcHJvdmlkaW5nIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZXJ2ZXIgY29udGV4dC4gKi9cbiAgybVTRVJWRVJfQ09OVEVYVDogdHlwZW9mIMm1U0VSVkVSX0NPTlRFWFQ7XG5cbiAgLyoqIFJlbmRlciBhbiBOZ01vZHVsZSBhcHBsaWNhdGlvbi4gKi9cbiAgcmVuZGVyTW9kdWxlOiB0eXBlb2YgcmVuZGVyTW9kdWxlO1xuXG4gIC8qKiBNZXRob2QgdG8gcmVuZGVyIGEgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbi4gKi9cbiAgcmVuZGVyQXBwbGljYXRpb246IHR5cGVvZiByZW5kZXJBcHBsaWNhdGlvbjtcblxuICAvKiogU3RhbmRhbG9uZSBhcHBsaWNhdGlvbiBib290c3RyYXBwaW5nIGZ1bmN0aW9uLiAqL1xuICBkZWZhdWx0OiAoKCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvblJlZj4pIHwgVHlwZTx1bmtub3duPjtcblxuICAvKiogTWV0aG9kIHRvIGV4dHJhY3Qgcm91dGVzIGZyb20gdGhlIHJvdXRlciBjb25maWcuICovXG4gIGV4dHJhY3RSb3V0ZXM6IHR5cGVvZiBleHRyYWN0Um91dGVzO1xuXG4gIMm1cmVzZXRDb21waWxlZENvbXBvbmVudHM/OiAoKSA9PiB2b2lkO1xufVxuIl19
@@ -5,7 +5,7 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- import { OutputFile } from 'esbuild';
8
+ import { BuildOutputFile } from '../../tools/esbuild/bundler-context';
9
9
  interface PrerenderOptions {
10
10
  routesFile?: string;
11
11
  discoverRoutes?: boolean;
@@ -13,7 +13,7 @@ interface PrerenderOptions {
13
13
  interface AppShellOptions {
14
14
  route?: string;
15
15
  }
16
- export declare function prerenderPages(workspaceRoot: string, appShellOptions: AppShellOptions | undefined, prerenderOptions: PrerenderOptions | undefined, outputFiles: Readonly<OutputFile[]>, document: string, inlineCriticalCss?: boolean, maxThreads?: number, verbose?: boolean): Promise<{
16
+ export declare function prerenderPages(workspaceRoot: string, appShellOptions: AppShellOptions | undefined, prerenderOptions: PrerenderOptions | undefined, outputFiles: Readonly<BuildOutputFile[]>, document: string, inlineCriticalCss?: boolean, maxThreads?: number, verbose?: boolean): Promise<{
17
17
  output: Record<string, string>;
18
18
  warnings: string[];
19
19
  errors: string[];
@@ -13,19 +13,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.prerenderPages = void 0;
14
14
  const promises_1 = require("node:fs/promises");
15
15
  const node_path_1 = require("node:path");
16
- const node_url_1 = require("node:url");
17
16
  const piscina_1 = __importDefault(require("piscina"));
17
+ const bundler_context_1 = require("../../tools/esbuild/bundler-context");
18
+ const node_18_utils_1 = require("./esm-in-memory-loader/node-18-utils");
18
19
  async function prerenderPages(workspaceRoot, appShellOptions = {}, prerenderOptions = {}, outputFiles, document, inlineCriticalCss, maxThreads = 1, verbose = false) {
19
20
  const output = {};
20
21
  const warnings = [];
21
22
  const errors = [];
22
23
  const outputFilesForWorker = {};
23
- for (const { text, path } of outputFiles) {
24
- switch ((0, node_path_1.extname)(path)) {
25
- case '.mjs': // Contains the server runnable application code.
26
- case '.css': // Global styles for critical CSS inlining.
27
- outputFilesForWorker[path] = text;
28
- break;
24
+ for (const { text, path, type } of outputFiles) {
25
+ if (type === bundler_context_1.BuildOutputFileType.Server || // Contains the server runnable application code
26
+ (type === bundler_context_1.BuildOutputFileType.Browser && (0, node_path_1.extname)(path) === '.css') // Global styles for critical CSS inlining.
27
+ ) {
28
+ outputFilesForWorker[path] = text;
29
29
  }
30
30
  }
31
31
  const { routes: allRoutes, warnings: routesWarnings } = await getAllRoutes(workspaceRoot, outputFilesForWorker, document, appShellOptions, prerenderOptions, verbose);
@@ -48,11 +48,7 @@ async function prerenderPages(workspaceRoot, appShellOptions = {}, prerenderOpti
48
48
  inlineCriticalCss,
49
49
  document,
50
50
  },
51
- execArgv: [
52
- '--no-warnings',
53
- '--loader',
54
- (0, node_url_1.pathToFileURL)((0, node_path_1.join)(__dirname, 'esm-in-memory-file-loader.js')).href, // Loader cannot be an absolute path on Windows.
55
- ],
51
+ execArgv: (0, node_18_utils_1.getESMLoaderArgs)(),
56
52
  });
57
53
  try {
58
54
  const renderingPromises = [];
@@ -117,11 +113,7 @@ async function getAllRoutes(workspaceRoot, outputFilesForWorker, document, appSh
117
113
  document,
118
114
  verbose,
119
115
  },
120
- execArgv: [
121
- '--no-warnings',
122
- '--loader',
123
- (0, node_url_1.pathToFileURL)((0, node_path_1.join)(__dirname, 'esm-in-memory-file-loader.js')).href, // Loader cannot be an absolute path on Windows.
124
- ],
116
+ execArgv: (0, node_18_utils_1.getESMLoaderArgs)(),
125
117
  });
126
118
  const { routes: extractedRoutes, warnings } = await renderWorker
127
119
  .run({})
@@ -134,4 +126,4 @@ async function getAllRoutes(workspaceRoot, outputFilesForWorker, document, appSh
134
126
  function removeLeadingSlash(value) {
135
127
  return value.charAt(0) === '/' ? value.slice(1) : value;
136
128
  }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvc2VydmVyLXJlbmRlcmluZy9wcmVyZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7O0FBR0gsK0NBQTRDO0FBQzVDLHlDQUFpRDtBQUNqRCx1Q0FBeUM7QUFDekMsc0RBQThCO0FBaUJ2QixLQUFLLFVBQVUsY0FBYyxDQUNsQyxhQUFxQixFQUNyQixrQkFBbUMsRUFBRSxFQUNyQyxtQkFBcUMsRUFBRSxFQUN2QyxXQUFtQyxFQUNuQyxRQUFnQixFQUNoQixpQkFBMkIsRUFDM0IsVUFBVSxHQUFHLENBQUMsRUFDZCxPQUFPLEdBQUcsS0FBSztJQU1mLE1BQU0sTUFBTSxHQUEyQixFQUFFLENBQUM7SUFDMUMsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO0lBQzlCLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixNQUFNLG9CQUFvQixHQUEyQixFQUFFLENBQUM7SUFFeEQsS0FBSyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLFdBQVcsRUFBRTtRQUN4QyxRQUFRLElBQUEsbUJBQU8sRUFBQyxJQUFJLENBQUMsRUFBRTtZQUNyQixLQUFLLE1BQU0sQ0FBQyxDQUFDLGlEQUFpRDtZQUM5RCxLQUFLLE1BQU0sRUFBRSwyQ0FBMkM7Z0JBQ3RELG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDbEMsTUFBTTtTQUNUO0tBQ0Y7SUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxZQUFZLENBQ3hFLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsUUFBUSxFQUNSLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsT0FB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QUMsRUFBRSxDQUFDO1NBQ1AsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFOUMsS0FBSyxNQUFNLEtBQUssSUFBSSxlQUFlLEVBQUU7UUFDbkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNuQjtJQUVELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDOUIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsS0FBYTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBPdXRwdXRGaWxlIH0gZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgZXh0bmFtZSwgam9pbiwgcG9zaXggfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCBQaXNjaW5hIGZyb20gJ3Bpc2NpbmEnO1xuaW1wb3J0IHR5cGUgeyBSZW5kZXJSZXN1bHQsIFNlcnZlckNvbnRleHQgfSBmcm9tICcuL3JlbmRlci1wYWdlJztcbmltcG9ydCB0eXBlIHsgUmVuZGVyV29ya2VyRGF0YSB9IGZyb20gJy4vcmVuZGVyLXdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlcnNFeHRyYWN0b3JXb3JrZXJSZXN1bHQsXG4gIFJvdXRlc0V4dHJhY3RvcldvcmtlckRhdGEsXG59IGZyb20gJy4vcm91dGVzLWV4dHJhY3Rvci13b3JrZXInO1xuXG5pbnRlcmZhY2UgUHJlcmVuZGVyT3B0aW9ucyB7XG4gIHJvdXRlc0ZpbGU/OiBzdHJpbmc7XG4gIGRpc2NvdmVyUm91dGVzPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEFwcFNoZWxsT3B0aW9ucyB7XG4gIHJvdXRlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcmVuZGVyUGFnZXMoXG4gIHdvcmtzcGFjZVJvb3Q6IHN0cmluZyxcbiAgYXBwU2hlbGxPcHRpb25zOiBBcHBTaGVsbE9wdGlvbnMgPSB7fSxcbiAgcHJlcmVuZGVyT3B0aW9uczogUHJlcmVuZGVyT3B0aW9ucyA9IHt9LFxuICBvdXRwdXRGaWxlczogUmVhZG9ubHk8T3V0cHV0RmlsZVtdPixcbiAgZG9jdW1lbnQ6IHN0cmluZyxcbiAgaW5saW5lQ3JpdGljYWxDc3M/OiBib29sZWFuLFxuICBtYXhUaHJlYWRzID0gMSxcbiAgdmVyYm9zZSA9IGZhbHNlLFxuKTogUHJvbWlzZTx7XG4gIG91dHB1dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgd2FybmluZ3M6IHN0cmluZ1tdO1xuICBlcnJvcnM6IHN0cmluZ1tdO1xufT4ge1xuICBjb25zdCBvdXRwdXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgb3V0cHV0RmlsZXNGb3JXb3JrZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICBmb3IgKGNvbnN0IHsgdGV4dCwgcGF0aCB9IG9mIG91dHB1dEZpbGVzKSB7XG4gICAgc3dpdGNoIChleHRuYW1lKHBhdGgpKSB7XG4gICAgICBjYXNlICcubWpzJzogLy8gQ29udGFpbnMgdGhlIHNlcnZlciBydW5uYWJsZSBhcHBsaWNhdGlvbiBjb2RlLlxuICAgICAgY2FzZSAnLmNzcyc6IC8vIEdsb2JhbCBzdHlsZXMgZm9yIGNyaXRpY2FsIENTUyBpbmxpbmluZy5cbiAgICAgICAgb3V0cHV0RmlsZXNGb3JXb3JrZXJbcGF0aF0gPSB0ZXh0O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjb25zdCB7IHJvdXRlczogYWxsUm91dGVzLCB3YXJuaW5nczogcm91dGVzV2FybmluZ3MgfSA9IGF3YWl0IGdldEFsbFJvdXRlcyhcbiAgICB3b3Jrc3BhY2VSb290LFxuICAgIG91dHB1dEZpbGVzRm9yV29ya2VyLFxuICAgIGRvY3VtZW50LFxuICAgIGFwcFNoZWxsT3B0aW9ucyxcbiAgICBwcmVyZW5kZXJPcHRpb25zLFxuICAgIHZlcmJvc2UsXG4gICk7XG5cbiAgaWYgKHJvdXRlc1dhcm5pbmdzPy5sZW5ndGgpIHtcbiAgICB3YXJuaW5ncy5wdXNoKC4uLnJvdXRlc1dhcm5pbmdzKTtcbiAgfVxuXG4gIGlmIChhbGxSb3V0ZXMuc2l6ZSA8IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzLFxuICAgICAgd2FybmluZ3MsXG4gICAgICBvdXRwdXQsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHJlbmRlcldvcmtlciA9IG5ldyBQaXNjaW5hKHtcbiAgICBmaWxlbmFtZTogcmVxdWlyZS5yZXNvbHZlKCcuL3JlbmRlci13b3JrZXInKSxcbiAgICBtYXhUaHJlYWRzOiBNYXRoLm1pbihhbGxSb3V0ZXMuc2l6ZSwgbWF4VGhyZWFkcyksXG4gICAgd29ya2VyRGF0YToge1xuICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgIG91dHB1dEZpbGVzOiBvdXRwdXRGaWxlc0ZvcldvcmtlcixcbiAgICAgIGlubGluZUNyaXRpY2FsQ3NzLFxuICAgICAgZG9jdW1lbnQsXG4gICAgfSBhcyBSZW5kZXJXb3JrZXJEYXRhLFxuICAgIGV4ZWNBcmd2OiBbXG4gICAgICAnLS1uby13YXJuaW5ncycsIC8vIFN1cHByZXNzIGBFeHBlcmltZW50YWxXYXJuaW5nOiBDdXN0b20gRVNNIExvYWRlcnMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUuLi5gLlxuICAgICAgJy0tbG9hZGVyJyxcbiAgICAgIHBhdGhUb0ZpbGVVUkwoam9pbihfX2Rpcm5hbWUsICdlc20taW4tbWVtb3J5LWZpbGUtbG9hZGVyLmpzJykpLmhyZWYsIC8vIExvYWRlciBjYW5ub3QgYmUgYW4gYWJzb2x1dGUgcGF0aCBvbiBXaW5kb3dzLlxuICAgIF0sXG4gIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVuZGVyaW5nUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuICAgIGNvbnN0IGFwcFNoZWxsUm91dGUgPSBhcHBTaGVsbE9wdGlvbnMucm91dGUgJiYgcmVtb3ZlTGVhZGluZ1NsYXNoKGFwcFNoZWxsT3B0aW9ucy5yb3V0ZSk7XG5cbiAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIGFsbFJvdXRlcykge1xuICAgICAgY29uc3QgaXNBcHBTaGVsbFJvdXRlID0gYXBwU2hlbGxSb3V0ZSA9PT0gcm91dGU7XG4gICAgICBjb25zdCBzZXJ2ZXJDb250ZXh0OiBTZXJ2ZXJDb250ZXh0ID0gaXNBcHBTaGVsbFJvdXRlID8gJ2FwcC1zaGVsbCcgOiAnc3NnJztcblxuICAgICAgY29uc3QgcmVuZGVyOiBQcm9taXNlPFJlbmRlclJlc3VsdD4gPSByZW5kZXJXb3JrZXIucnVuKHsgcm91dGUsIHNlcnZlckNvbnRleHQgfSk7XG4gICAgICBjb25zdCByZW5kZXJSZXN1bHQ6IFByb21pc2U8dm9pZD4gPSByZW5kZXIudGhlbigoeyBjb250ZW50LCB3YXJuaW5ncywgZXJyb3JzIH0pID0+IHtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG91dFBhdGggPSBpc0FwcFNoZWxsUm91dGUgPyAnaW5kZXguaHRtbCcgOiBwb3NpeC5qb2luKHJvdXRlLCAnaW5kZXguaHRtbCcpO1xuICAgICAgICAgIG91dHB1dFtvdXRQYXRoXSA9IGNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod2FybmluZ3MpIHtcbiAgICAgICAgICB3YXJuaW5ncy5wdXNoKC4uLndhcm5pbmdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaCguLi5lcnJvcnMpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmVuZGVyaW5nUHJvbWlzZXMucHVzaChyZW5kZXJSZXN1bHQpO1xuICAgIH1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKHJlbmRlcmluZ1Byb21pc2VzKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB2b2lkIHJlbmRlcldvcmtlci5kZXN0cm95KCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVycm9ycyxcbiAgICB3YXJuaW5ncyxcbiAgICBvdXRwdXQsXG4gIH07XG59XG5cbmNsYXNzIFJvdXRlc1NldCBleHRlbmRzIFNldDxzdHJpbmc+IHtcbiAgb3ZlcnJpZGUgYWRkKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICByZXR1cm4gc3VwZXIuYWRkKHJlbW92ZUxlYWRpbmdTbGFzaCh2YWx1ZSkpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbFJvdXRlcyhcbiAgd29ya3NwYWNlUm9vdDogc3RyaW5nLFxuICBvdXRwdXRGaWxlc0ZvcldvcmtlcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgZG9jdW1lbnQ6IHN0cmluZyxcbiAgYXBwU2hlbGxPcHRpb25zOiBBcHBTaGVsbE9wdGlvbnMsXG4gIHByZXJlbmRlck9wdGlvbnM6IFByZXJlbmRlck9wdGlvbnMsXG4gIHZlcmJvc2U6IGJvb2xlYW4sXG4pOiBQcm9taXNlPHsgcm91dGVzOiBTZXQ8c3RyaW5nPjsgd2FybmluZ3M/OiBzdHJpbmdbXSB9PiB7XG4gIGNvbnN0IHsgcm91dGVzRmlsZSwgZGlzY292ZXJSb3V0ZXMgfSA9IHByZXJlbmRlck9wdGlvbnM7XG4gIGNvbnN0IHJvdXRlcyA9IG5ldyBSb3V0ZXNTZXQoKTtcblxuICBjb25zdCB7IHJvdXRlOiBhcHBTaGVsbFJvdXRlIH0gPSBhcHBTaGVsbE9wdGlvbnM7XG4gIGlmIChhcHBTaGVsbFJvdXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICByb3V0ZXMuYWRkKGFwcFNoZWxsUm91dGUpO1xuICB9XG5cbiAgaWYgKHJvdXRlc0ZpbGUpIHtcbiAgICBjb25zdCByb3V0ZXNGcm9tRmlsZSA9IChhd2FpdCByZWFkRmlsZShyb3V0ZXNGaWxlLCAndXRmOCcpKS5zcGxpdCgvXFxyP1xcbi8pO1xuICAgIGZvciAoY29uc3Qgcm91dGUgb2Ygcm91dGVzRnJvbUZpbGUpIHtcbiAgICAgIHJvdXRlcy5hZGQocm91dGUudHJpbSgpKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWRpc2NvdmVyUm91dGVzKSB7XG4gICAgcmV0dXJuIHsgcm91dGVzIH07XG4gIH1cblxuICBjb25zdCByZW5kZXJXb3JrZXIgPSBuZXcgUGlzY2luYSh7XG4gICAgZmlsZW5hbWU6IHJlcXVpcmUucmVzb2x2ZSgnLi9yb3V0ZXMtZXh0cmFjdG9yLXdvcmtlcicpLFxuICAgIG1heFRocmVhZHM6IDEsXG4gICAgd29ya2VyRGF0YToge1xuICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgIG91dHB1dEZpbGVzOiBvdXRwdXRGaWxlc0ZvcldvcmtlcixcbiAgICAgIGRvY3VtZW50LFxuICAgICAgdmVyYm9zZSxcbiAgICB9IGFzIFJvdXRlc0V4dHJhY3RvcldvcmtlckRhdGEsXG4gICAgZXhlY0FyZ3Y6IFtcbiAgICAgICctLW5vLXdhcm5pbmdzJywgLy8gU3VwcHJlc3MgYEV4cGVyaW1lbnRhbFdhcm5pbmc6IEN1c3RvbSBFU00gTG9hZGVycyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZS4uLmAuXG4gICAgICAnLS1sb2FkZXInLFxuICAgICAgcGF0aFRvRmlsZVVSTChqb2luKF9fZGlybmFtZSwgJ2VzbS1pbi1tZW1vcnktZmlsZS1sb2FkZXIuanMnKSkuaHJlZiwgLy8gTG9hZGVyIGNhbm5vdCBiZSBhbiBhYnNvbHV0ZSBwYXRoIG9uIFdpbmRvd3MuXG4gICAgXSxcbiAgfSk7XG5cbiAgY29uc3QgeyByb3V0ZXM6IGV4dHJhY3RlZFJvdXRlcywgd2FybmluZ3MgfTogUm91dGVyc0V4dHJhY3RvcldvcmtlclJlc3VsdCA9IGF3YWl0IHJlbmRlcldvcmtlclxuICAgIC5ydW4oe30pXG4gICAgLmZpbmFsbHkoKCkgPT4gdm9pZCByZW5kZXJXb3JrZXIuZGVzdHJveSgpKTtcblxuICBmb3IgKGNvbnN0IHJvdXRlIG9mIGV4dHJhY3RlZFJvdXRlcykge1xuICAgIHJvdXRlcy5hZGQocm91dGUpO1xuICB9XG5cbiAgcmV0dXJuIHsgcm91dGVzLCB3YXJuaW5ncyB9O1xufVxuXG5mdW5jdGlvbiByZW1vdmVMZWFkaW5nU2xhc2godmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZS5jaGFyQXQoMCkgPT09ICcvJyA/IHZhbHVlLnNsaWNlKDEpIDogdmFsdWU7XG59XG4iXX0=
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdXRpbHMvc2VydmVyLXJlbmRlcmluZy9wcmVyZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7O0FBRUgsK0NBQTRDO0FBQzVDLHlDQUEyQztBQUMzQyxzREFBOEI7QUFDOUIseUVBQTJGO0FBQzNGLHdFQUF3RTtBQWlCakUsS0FBSyxVQUFVLGNBQWMsQ0FDbEMsYUFBcUIsRUFDckIsa0JBQW1DLEVBQUUsRUFDckMsbUJBQXFDLEVBQUUsRUFDdkMsV0FBd0MsRUFDeEMsUUFBZ0IsRUFDaEIsaUJBQTJCLEVBQzNCLFVBQVUsR0FBRyxDQUFDLEVBQ2QsT0FBTyxHQUFHLEtBQUs7SUFNZixNQUFNLE1BQU0sR0FBMkIsRUFBRSxDQUFDO0lBQzFDLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUM5QixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFDNUIsTUFBTSxvQkFBb0IsR0FBMkIsRUFBRSxDQUFDO0lBRXhELEtBQUssTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksV0FBVyxFQUFFO1FBQzlDLElBQ0UsSUFBSSxLQUFLLHFDQUFtQixDQUFDLE1BQU0sSUFBSSxnREFBZ0Q7WUFDdkYsQ0FBQyxJQUFJLEtBQUsscUNBQW1CLENBQUMsT0FBTyxJQUFJLElBQUEsbUJBQU8sRUFBQyxJQUFJLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQywyQ0FBMkM7VUFDOUc7WUFDQSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDbkM7S0FDRjtJQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLFlBQVksQ0FDeEUs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LEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNuQjtJQUVELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDOUIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsS0FBYTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgZXh0bmFtZSwgcG9zaXggfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IFBpc2NpbmEgZnJvbSAncGlzY2luYSc7XG5pbXBvcnQgeyBCdWlsZE91dHB1dEZpbGUsIEJ1aWxkT3V0cHV0RmlsZVR5cGUgfSBmcm9tICcuLi8uLi90b29scy9lc2J1aWxkL2J1bmRsZXItY29udGV4dCc7XG5pbXBvcnQgeyBnZXRFU01Mb2FkZXJBcmdzIH0gZnJvbSAnLi9lc20taW4tbWVtb3J5LWxvYWRlci9ub2RlLTE4LXV0aWxzJztcbmltcG9ydCB0eXBlIHsgUmVuZGVyUmVzdWx0LCBTZXJ2ZXJDb250ZXh0IH0gZnJvbSAnLi9yZW5kZXItcGFnZSc7XG5pbXBvcnQgdHlwZSB7IFJlbmRlcldvcmtlckRhdGEgfSBmcm9tICcuL3JlbmRlci13b3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBSb3V0ZXJzRXh0cmFjdG9yV29ya2VyUmVzdWx0LFxuICBSb3V0ZXNFeHRyYWN0b3JXb3JrZXJEYXRhLFxufSBmcm9tICcuL3JvdXRlcy1leHRyYWN0b3Itd29ya2VyJztcblxuaW50ZXJmYWNlIFByZXJlbmRlck9wdGlvbnMge1xuICByb3V0ZXNGaWxlPzogc3RyaW5nO1xuICBkaXNjb3ZlclJvdXRlcz86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBBcHBTaGVsbE9wdGlvbnMge1xuICByb3V0ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZXJlbmRlclBhZ2VzKFxuICB3b3Jrc3BhY2VSb290OiBzdHJpbmcsXG4gIGFwcFNoZWxsT3B0aW9uczogQXBwU2hlbGxPcHRpb25zID0ge30sXG4gIHByZXJlbmRlck9wdGlvbnM6IFByZXJlbmRlck9wdGlvbnMgPSB7fSxcbiAgb3V0cHV0RmlsZXM6IFJlYWRvbmx5PEJ1aWxkT3V0cHV0RmlsZVtdPixcbiAgZG9jdW1lbnQ6IHN0cmluZyxcbiAgaW5saW5lQ3JpdGljYWxDc3M/OiBib29sZWFuLFxuICBtYXhUaHJlYWRzID0gMSxcbiAgdmVyYm9zZSA9IGZhbHNlLFxuKTogUHJvbWlzZTx7XG4gIG91dHB1dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgd2FybmluZ3M6IHN0cmluZ1tdO1xuICBlcnJvcnM6IHN0cmluZ1tdO1xufT4ge1xuICBjb25zdCBvdXRwdXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgb3V0cHV0RmlsZXNGb3JXb3JrZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICBmb3IgKGNvbnN0IHsgdGV4dCwgcGF0aCwgdHlwZSB9IG9mIG91dHB1dEZpbGVzKSB7XG4gICAgaWYgKFxuICAgICAgdHlwZSA9PT0gQnVpbGRPdXRwdXRGaWxlVHlwZS5TZXJ2ZXIgfHwgLy8gQ29udGFpbnMgdGhlIHNlcnZlciBydW5uYWJsZSBhcHBsaWNhdGlvbiBjb2RlXG4gICAgICAodHlwZSA9PT0gQnVpbGRPdXRwdXRGaWxlVHlwZS5Ccm93c2VyICYmIGV4dG5hbWUocGF0aCkgPT09ICcuY3NzJykgLy8gR2xvYmFsIHN0eWxlcyBmb3IgY3JpdGljYWwgQ1NTIGlubGluaW5nLlxuICAgICkge1xuICAgICAgb3V0cHV0RmlsZXNGb3JXb3JrZXJbcGF0aF0gPSB0ZXh0O1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHsgcm91dGVzOiBhbGxSb3V0ZXMsIHdhcm5pbmdzOiByb3V0ZXNXYXJuaW5ncyB9ID0gYXdhaXQgZ2V0QWxsUm91dGVzKFxuICAgIHdvcmtzcGFjZVJvb3QsXG4gICAgb3V0cHV0RmlsZXNGb3JXb3JrZXIsXG4gICAgZG9jdW1lbnQsXG4gICAgYXBwU2hlbGxPcHRpb25zLFxuICAgIHByZXJlbmRlck9wdGlvbnMsXG4gICAgdmVyYm9zZSxcbiAgKTtcblxuICBpZiAocm91dGVzV2FybmluZ3M/Lmxlbmd0aCkge1xuICAgIHdhcm5pbmdzLnB1c2goLi4ucm91dGVzV2FybmluZ3MpO1xuICB9XG5cbiAgaWYgKGFsbFJvdXRlcy5zaXplIDwgMSkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcnMsXG4gICAgICB3YXJuaW5ncyxcbiAgICAgIG91dHB1dCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcmVuZGVyV29ya2VyID0gbmV3IFBpc2NpbmEoe1xuICAgIGZpbGVuYW1lOiByZXF1aXJlLnJlc29sdmUoJy4vcmVuZGVyLXdvcmtlcicpLFxuICAgIG1heFRocmVhZHM6IE1hdGgubWluKGFsbFJvdXRlcy5zaXplLCBtYXhUaHJlYWRzKSxcbiAgICB3b3JrZXJEYXRhOiB7XG4gICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgb3V0cHV0RmlsZXM6IG91dHB1dEZpbGVzRm9yV29ya2VyLFxuICAgICAgaW5saW5lQ3JpdGljYWxDc3MsXG4gICAgICBkb2N1bWVudCxcbiAgICB9IGFzIFJlbmRlcldvcmtlckRhdGEsXG4gICAgZXhlY0FyZ3Y6IGdldEVTTUxvYWRlckFyZ3MoKSxcbiAgfSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZW5kZXJpbmdQcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW107XG4gICAgY29uc3QgYXBwU2hlbGxSb3V0ZSA9IGFwcFNoZWxsT3B0aW9ucy5yb3V0ZSAmJiByZW1vdmVMZWFkaW5nU2xhc2goYXBwU2hlbGxPcHRpb25zLnJvdXRlKTtcblxuICAgIGZvciAoY29uc3Qgcm91dGUgb2YgYWxsUm91dGVzKSB7XG4gICAgICBjb25zdCBpc0FwcFNoZWxsUm91dGUgPSBhcHBTaGVsbFJvdXRlID09PSByb3V0ZTtcbiAgICAgIGNvbnN0IHNlcnZlckNvbnRleHQ6IFNlcnZlckNvbnRleHQgPSBpc0FwcFNoZWxsUm91dGUgPyAnYXBwLXNoZWxsJyA6ICdzc2cnO1xuXG4gICAgICBjb25zdCByZW5kZXI6IFByb21pc2U8UmVuZGVyUmVzdWx0PiA9IHJlbmRlcldvcmtlci5ydW4oeyByb3V0ZSwgc2VydmVyQ29udGV4dCB9KTtcbiAgICAgIGNvbnN0IHJlbmRlclJlc3VsdDogUHJvbWlzZTx2b2lkPiA9IHJlbmRlci50aGVuKCh7IGNvbnRlbnQsIHdhcm5pbmdzLCBlcnJvcnMgfSkgPT4ge1xuICAgICAgICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb3V0UGF0aCA9IGlzQXBwU2hlbGxSb3V0ZSA/ICdpbmRleC5odG1sJyA6IHBvc2l4LmpvaW4ocm91dGUsICdpbmRleC5odG1sJyk7XG4gICAgICAgICAgb3V0cHV0W291dFBhdGhdID0gY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh3YXJuaW5ncykge1xuICAgICAgICAgIHdhcm5pbmdzLnB1c2goLi4ud2FybmluZ3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9ycykge1xuICAgICAgICAgIGVycm9ycy5wdXNoKC4uLmVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZW5kZXJpbmdQcm9taXNlcy5wdXNoKHJlbmRlclJlc3VsdCk7XG4gICAgfVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocmVuZGVyaW5nUHJvbWlzZXMpO1xuICB9IGZpbmFsbHkge1xuICAgIHZvaWQgcmVuZGVyV29ya2VyLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXJyb3JzLFxuICAgIHdhcm5pbmdzLFxuICAgIG91dHB1dCxcbiAgfTtcbn1cblxuY2xhc3MgUm91dGVzU2V0IGV4dGVuZHMgU2V0PHN0cmluZz4ge1xuICBvdmVycmlkZSBhZGQodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgIHJldHVybiBzdXBlci5hZGQocmVtb3ZlTGVhZGluZ1NsYXNoKHZhbHVlKSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWxsUm91dGVzKFxuICB3b3Jrc3BhY2VSb290OiBzdHJpbmcsXG4gIG91dHB1dEZpbGVzRm9yV29ya2VyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBkb2N1bWVudDogc3RyaW5nLFxuICBhcHBTaGVsbE9wdGlvbnM6IEFwcFNoZWxsT3B0aW9ucyxcbiAgcHJlcmVuZGVyT3B0aW9uczogUHJlcmVuZGVyT3B0aW9ucyxcbiAgdmVyYm9zZTogYm9vbGVhbixcbik6IFByb21pc2U8eyByb3V0ZXM6IFNldDxzdHJpbmc+OyB3YXJuaW5ncz86IHN0cmluZ1tdIH0+IHtcbiAgY29uc3QgeyByb3V0ZXNGaWxlLCBkaXNjb3ZlclJvdXRlcyB9ID0gcHJlcmVuZGVyT3B0aW9ucztcbiAgY29uc3Qgcm91dGVzID0gbmV3IFJvdXRlc1NldCgpO1xuXG4gIGNvbnN0IHsgcm91dGU6IGFwcFNoZWxsUm91dGUgfSA9IGFwcFNoZWxsT3B0aW9ucztcbiAgaWYgKGFwcFNoZWxsUm91dGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJvdXRlcy5hZGQoYXBwU2hlbGxSb3V0ZSk7XG4gIH1cblxuICBpZiAocm91dGVzRmlsZSkge1xuICAgIGNvbnN0IHJvdXRlc0Zyb21GaWxlID0gKGF3YWl0IHJlYWRGaWxlKHJvdXRlc0ZpbGUsICd1dGY4JykpLnNwbGl0KC9cXHI/XFxuLyk7XG4gICAgZm9yIChjb25zdCByb3V0ZSBvZiByb3V0ZXNGcm9tRmlsZSkge1xuICAgICAgcm91dGVzLmFkZChyb3V0ZS50cmltKCkpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZGlzY292ZXJSb3V0ZXMpIHtcbiAgICByZXR1cm4geyByb3V0ZXMgfTtcbiAgfVxuXG4gIGNvbnN0IHJlbmRlcldvcmtlciA9IG5ldyBQaXNjaW5hKHtcbiAgICBmaWxlbmFtZTogcmVxdWlyZS5yZXNvbHZlKCcuL3JvdXRlcy1leHRyYWN0b3Itd29ya2VyJyksXG4gICAgbWF4VGhyZWFkczogMSxcbiAgICB3b3JrZXJEYXRhOiB7XG4gICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgb3V0cHV0RmlsZXM6IG91dHB1dEZpbGVzRm9yV29ya2VyLFxuICAgICAgZG9jdW1lbnQsXG4gICAgICB2ZXJib3NlLFxuICAgIH0gYXMgUm91dGVzRXh0cmFjdG9yV29ya2VyRGF0YSxcbiAgICBleGVjQXJndjogZ2V0RVNNTG9hZGVyQXJncygpLFxuICB9KTtcblxuICBjb25zdCB7IHJvdXRlczogZXh0cmFjdGVkUm91dGVzLCB3YXJuaW5ncyB9OiBSb3V0ZXJzRXh0cmFjdG9yV29ya2VyUmVzdWx0ID0gYXdhaXQgcmVuZGVyV29ya2VyXG4gICAgLnJ1bih7fSlcbiAgICAuZmluYWxseSgoKSA9PiB2b2lkIHJlbmRlcldvcmtlci5kZXN0cm95KCkpO1xuXG4gIGZvciAoY29uc3Qgcm91dGUgb2YgZXh0cmFjdGVkUm91dGVzKSB7XG4gICAgcm91dGVzLmFkZChyb3V0ZSk7XG4gIH1cblxuICByZXR1cm4geyByb3V0ZXMsIHdhcm5pbmdzIH07XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUxlYWRpbmdTbGFzaCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlLmNoYXJBdCgwKSA9PT0gJy8nID8gdmFsdWUuc2xpY2UoMSkgOiB2YWx1ZTtcbn1cbiJdfQ==