@angular-devkit/build-angular 17.0.0-rc.0 → 17.0.0-rc.2

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 (235) hide show
  1. package/package.json +7 -7
  2. package/plugins/karma.js +0 -1
  3. package/src/builders/app-shell/index.js +2 -1
  4. package/src/builders/app-shell/render-worker.js +0 -1
  5. package/src/builders/app-shell/schema.js +0 -1
  6. package/src/builders/application/build-action.js +0 -1
  7. package/src/builders/application/execute-build.js +18 -12
  8. package/src/builders/application/execute-post-bundle.js +1 -2
  9. package/src/builders/application/i18n.js +0 -1
  10. package/src/builders/application/index.js +8 -2
  11. package/src/builders/application/options.js +0 -1
  12. package/src/builders/application/schema.d.ts +4 -2
  13. package/src/builders/application/schema.js +0 -1
  14. package/src/builders/application/schema.json +2 -2
  15. package/src/builders/browser/index.js +0 -1
  16. package/src/builders/browser/schema.js +0 -1
  17. package/src/builders/browser-esbuild/builder-status-warnings.js +0 -1
  18. package/src/builders/browser-esbuild/index.js +9 -2
  19. package/src/builders/browser-esbuild/schema.js +0 -1
  20. package/src/builders/dev-server/builder.js +0 -1
  21. package/src/builders/dev-server/index.js +0 -1
  22. package/src/builders/dev-server/load-proxy-config.js +0 -1
  23. package/src/builders/dev-server/options.js +0 -1
  24. package/src/builders/dev-server/schema.js +0 -1
  25. package/src/builders/dev-server/vite-server.d.ts +5 -2
  26. package/src/builders/dev-server/vite-server.js +67 -37
  27. package/src/builders/dev-server/webpack-server.js +0 -1
  28. package/src/builders/extract-i18n/application-extraction.js +0 -1
  29. package/src/builders/extract-i18n/builder.js +0 -1
  30. package/src/builders/extract-i18n/empty-loader.js +0 -1
  31. package/src/builders/extract-i18n/index.js +0 -1
  32. package/src/builders/extract-i18n/ivy-extract-loader.js +0 -1
  33. package/src/builders/extract-i18n/options.js +0 -1
  34. package/src/builders/extract-i18n/schema.js +0 -1
  35. package/src/builders/extract-i18n/webpack-extraction.js +0 -1
  36. package/src/builders/jest/index.js +0 -1
  37. package/src/builders/jest/options.js +0 -1
  38. package/src/builders/jest/schema.js +0 -1
  39. package/src/builders/jest/test-files.js +0 -1
  40. package/src/builders/karma/find-tests-plugin.js +0 -1
  41. package/src/builders/karma/index.js +0 -1
  42. package/src/builders/karma/schema.js +0 -1
  43. package/src/builders/ng-packagr/index.js +0 -1
  44. package/src/builders/ng-packagr/schema.js +0 -1
  45. package/src/builders/prerender/index.js +2 -1
  46. package/src/builders/prerender/render-worker.js +0 -1
  47. package/src/builders/prerender/routes-extractor-worker.js +1 -2
  48. package/src/builders/prerender/schema.d.ts +4 -2
  49. package/src/builders/prerender/schema.js +0 -1
  50. package/src/builders/prerender/schema.json +2 -2
  51. package/src/builders/protractor/index.js +0 -1
  52. package/src/builders/protractor/schema.js +0 -1
  53. package/src/builders/server/index.js +0 -1
  54. package/src/builders/server/platform-server-exports-loader.js +0 -1
  55. package/src/builders/server/schema.js +0 -1
  56. package/src/builders/ssr-dev-server/index.js +0 -1
  57. package/src/builders/ssr-dev-server/schema.js +0 -1
  58. package/src/builders/ssr-dev-server/utils.js +0 -1
  59. package/src/index.js +0 -1
  60. package/src/tools/babel/plugins/adjust-static-class-members.js +0 -1
  61. package/src/tools/babel/plugins/adjust-typescript-enums.js +0 -1
  62. package/src/tools/babel/plugins/elide-angular-metadata.js +0 -1
  63. package/src/tools/babel/plugins/pure-toplevel-functions.js +0 -1
  64. package/src/tools/babel/presets/application.js +0 -1
  65. package/src/tools/babel/webpack-loader.js +0 -1
  66. package/src/tools/esbuild/angular/angular-host.js +0 -1
  67. package/src/tools/esbuild/angular/compilation/angular-compilation.d.ts +2 -1
  68. package/src/tools/esbuild/angular/compilation/angular-compilation.js +32 -6
  69. package/src/tools/esbuild/angular/compilation/aot-compilation.js +0 -1
  70. package/src/tools/esbuild/angular/compilation/factory.js +0 -1
  71. package/src/tools/esbuild/angular/compilation/index.js +0 -1
  72. package/src/tools/esbuild/angular/compilation/jit-compilation.js +0 -1
  73. package/src/tools/esbuild/angular/compilation/noop-compilation.d.ts +1 -1
  74. package/src/tools/esbuild/angular/compilation/noop-compilation.js +0 -1
  75. package/src/tools/esbuild/angular/compilation/parallel-compilation.js +0 -1
  76. package/src/tools/esbuild/angular/compilation/parallel-worker.js +0 -1
  77. package/src/tools/esbuild/angular/compilation-state.js +0 -1
  78. package/src/tools/esbuild/angular/compiler-plugin.js +13 -6
  79. package/src/tools/esbuild/angular/component-stylesheets.d.ts +2 -3
  80. package/src/tools/esbuild/angular/component-stylesheets.js +45 -32
  81. package/src/tools/esbuild/angular/diagnostics.d.ts +2 -2
  82. package/src/tools/esbuild/angular/diagnostics.js +9 -11
  83. package/src/tools/esbuild/angular/file-reference-tracker.js +0 -1
  84. package/src/tools/esbuild/angular/jit-plugin-callbacks.js +0 -1
  85. package/src/tools/esbuild/angular/jit-resource-transformer.js +0 -1
  86. package/src/tools/esbuild/angular/source-file-cache.d.ts +1 -1
  87. package/src/tools/esbuild/angular/source-file-cache.js +0 -1
  88. package/src/tools/esbuild/angular/uri.js +0 -1
  89. package/src/tools/esbuild/angular/web-worker-transformer.js +0 -1
  90. package/src/tools/esbuild/application-code-bundle.d.ts +1 -0
  91. package/src/tools/esbuild/application-code-bundle.js +185 -179
  92. package/src/tools/esbuild/budget-stats.js +0 -1
  93. package/src/tools/esbuild/bundler-context.d.ts +13 -2
  94. package/src/tools/esbuild/bundler-context.js +112 -12
  95. package/src/tools/esbuild/bundler-execution-result.d.ts +15 -0
  96. package/src/tools/esbuild/bundler-execution-result.js +11 -1
  97. package/src/tools/esbuild/commonjs-checker.js +3 -1
  98. package/src/tools/esbuild/compiler-plugin-options.js +0 -1
  99. package/src/tools/esbuild/global-scripts.d.ts +2 -3
  100. package/src/tools/esbuild/global-scripts.js +72 -70
  101. package/src/tools/esbuild/global-styles.d.ts +2 -3
  102. package/src/tools/esbuild/global-styles.js +35 -34
  103. package/src/tools/esbuild/i18n-inliner-worker.js +0 -1
  104. package/src/tools/esbuild/i18n-inliner.js +2 -1
  105. package/src/tools/esbuild/i18n-locale-plugin.js +0 -1
  106. package/src/tools/esbuild/index-html-generator.js +0 -1
  107. package/src/tools/esbuild/javascript-transformer-worker.js +3 -3
  108. package/src/tools/esbuild/javascript-transformer.d.ts +1 -1
  109. package/src/tools/esbuild/javascript-transformer.js +5 -1
  110. package/src/tools/esbuild/license-extractor.js +0 -1
  111. package/src/tools/esbuild/load-result-cache.d.ts +2 -0
  112. package/src/tools/esbuild/load-result-cache.js +3 -1
  113. package/src/tools/esbuild/profiling.js +0 -1
  114. package/src/tools/esbuild/rxjs-esm-resolution-plugin.js +0 -1
  115. package/src/tools/esbuild/sourcemap-ignorelist-plugin.js +0 -1
  116. package/src/tools/esbuild/stylesheets/bundle-options.js +0 -1
  117. package/src/tools/esbuild/stylesheets/css-language.js +0 -1
  118. package/src/tools/esbuild/stylesheets/css-resource-plugin.js +25 -7
  119. package/src/tools/esbuild/stylesheets/less-language.js +0 -1
  120. package/src/tools/esbuild/stylesheets/sass-language.js +6 -20
  121. package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js +0 -1
  122. package/src/tools/esbuild/utils.d.ts +1 -0
  123. package/src/tools/esbuild/utils.js +20 -2
  124. package/src/tools/esbuild/virtual-module-plugin.d.ts +3 -0
  125. package/src/tools/esbuild/virtual-module-plugin.js +3 -3
  126. package/src/tools/esbuild/watcher.d.ts +1 -0
  127. package/src/tools/esbuild/watcher.js +3 -1
  128. package/src/tools/sass/lexer.js +0 -1
  129. package/src/tools/sass/rebasing-importer.d.ts +3 -8
  130. package/src/tools/sass/rebasing-importer.js +3 -52
  131. package/src/tools/sass/sass-service-legacy.js +0 -1
  132. package/src/tools/sass/sass-service.d.ts +1 -17
  133. package/src/tools/sass/sass-service.js +4 -6
  134. package/src/tools/sass/worker-legacy.js +0 -1
  135. package/src/tools/sass/worker.js +8 -2
  136. package/src/tools/vite/i18n-locale-plugin.js +0 -1
  137. package/src/tools/webpack/configs/common.js +0 -1
  138. package/src/tools/webpack/configs/dev-server.js +0 -1
  139. package/src/tools/webpack/configs/index.js +0 -1
  140. package/src/tools/webpack/configs/styles.js +6 -12
  141. package/src/tools/webpack/plugins/any-component-style-budget-checker.js +0 -1
  142. package/src/tools/webpack/plugins/builder-watch-plugin.js +0 -1
  143. package/src/tools/webpack/plugins/common-js-usage-warn-plugin.js +0 -1
  144. package/src/tools/webpack/plugins/css-optimizer-plugin.js +0 -1
  145. package/src/tools/webpack/plugins/dedupe-module-resolve-plugin.js +0 -1
  146. package/src/tools/webpack/plugins/devtools-ignore-plugin.js +0 -1
  147. package/src/tools/webpack/plugins/esbuild-executor.js +0 -1
  148. package/src/tools/webpack/plugins/hmr/hmr-accept.js +0 -1
  149. package/src/tools/webpack/plugins/hmr/hmr-loader.js +0 -1
  150. package/src/tools/webpack/plugins/index-html-webpack-plugin.js +0 -1
  151. package/src/tools/webpack/plugins/index.js +0 -1
  152. package/src/tools/webpack/plugins/javascript-optimizer-plugin.js +2 -1
  153. package/src/tools/webpack/plugins/javascript-optimizer-worker.js +0 -1
  154. package/src/tools/webpack/plugins/json-stats-plugin.js +0 -1
  155. package/src/tools/webpack/plugins/karma/karma.js +0 -1
  156. package/src/tools/webpack/plugins/named-chunks-plugin.js +0 -1
  157. package/src/tools/webpack/plugins/occurrences-plugin.js +0 -1
  158. package/src/tools/webpack/plugins/postcss-cli-resources.js +0 -1
  159. package/src/tools/webpack/plugins/progress-plugin.js +0 -1
  160. package/src/tools/webpack/plugins/remove-hash-plugin.js +0 -1
  161. package/src/tools/webpack/plugins/scripts-webpack-plugin.js +0 -1
  162. package/src/tools/webpack/plugins/service-worker-plugin.js +0 -1
  163. package/src/tools/webpack/plugins/styles-webpack-plugin.js +0 -1
  164. package/src/tools/webpack/plugins/suppress-entry-chunks-webpack-plugin.js +0 -1
  165. package/src/tools/webpack/plugins/transfer-size-plugin.js +0 -1
  166. package/src/tools/webpack/plugins/typescript.js +0 -1
  167. package/src/tools/webpack/plugins/watch-files-logs-plugin.js +0 -1
  168. package/src/tools/webpack/utils/async-chunks.js +0 -1
  169. package/src/tools/webpack/utils/helpers.js +0 -1
  170. package/src/tools/webpack/utils/stats.js +0 -1
  171. package/src/transforms.js +0 -1
  172. package/src/utils/action-executor.js +5 -2
  173. package/src/utils/build-options.js +0 -1
  174. package/src/utils/bundle-calculator.js +0 -1
  175. package/src/utils/bundle-inline-options.js +0 -1
  176. package/src/utils/check-port.js +3 -2
  177. package/src/utils/color.js +0 -1
  178. package/src/utils/copy-assets.js +0 -1
  179. package/src/utils/default-progress.js +0 -1
  180. package/src/utils/delete-output-dir.js +0 -1
  181. package/src/utils/environment-options.js +0 -1
  182. package/src/utils/error.js +0 -1
  183. package/src/utils/i18n-inlining.js +0 -1
  184. package/src/utils/i18n-options.js +0 -1
  185. package/src/utils/index-file/augment-index-html.js +0 -1
  186. package/src/utils/index-file/html-rewriting-stream.js +0 -1
  187. package/src/utils/index-file/index-html-generator.js +0 -1
  188. package/src/utils/index-file/inline-critical-css.js +0 -1
  189. package/src/utils/index-file/inline-fonts.js +0 -1
  190. package/src/utils/index-file/style-nonce.js +0 -1
  191. package/src/utils/index.js +0 -1
  192. package/src/utils/load-esm.d.ts +0 -2
  193. package/src/utils/load-esm.js +0 -1
  194. package/src/utils/load-translations.js +0 -1
  195. package/src/utils/normalize-asset-patterns.js +0 -1
  196. package/src/utils/normalize-builder-schema.js +0 -1
  197. package/src/utils/normalize-cache.js +0 -1
  198. package/src/utils/normalize-file-replacements.js +0 -1
  199. package/src/utils/normalize-optimization.js +0 -1
  200. package/src/utils/normalize-polyfills.js +0 -1
  201. package/src/utils/normalize-source-maps.js +0 -1
  202. package/src/utils/output-paths.js +0 -1
  203. package/src/utils/package-chunk-sort.js +0 -1
  204. package/src/utils/package-version.js +0 -1
  205. package/src/utils/process-bundle.js +0 -1
  206. package/src/utils/purge-cache.js +0 -1
  207. package/src/utils/read-tsconfig.js +0 -1
  208. package/src/utils/routes-extractor/extractor.d.ts +1 -1
  209. package/src/utils/routes-extractor/extractor.js +2 -3
  210. package/src/utils/run-module-as-observable-fork.js +0 -1
  211. package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js +0 -1
  212. package/src/utils/server-rendering/esm-in-memory-loader/node-18-utils.js +0 -1
  213. package/src/utils/server-rendering/esm-in-memory-loader/register-hooks.js +0 -1
  214. package/src/utils/server-rendering/main-bundle-exports.d.ts +4 -2
  215. package/src/utils/server-rendering/main-bundle-exports.js +0 -1
  216. package/src/utils/server-rendering/prerender-server.d.ts +21 -0
  217. package/src/utils/server-rendering/prerender-server.js +102 -0
  218. package/src/utils/server-rendering/prerender.d.ts +2 -1
  219. package/src/utils/server-rendering/prerender.js +49 -19
  220. package/src/utils/server-rendering/render-page.d.ts +2 -2
  221. package/src/utils/server-rendering/render-page.js +2 -2
  222. package/src/utils/server-rendering/render-worker.d.ts +2 -0
  223. package/src/utils/server-rendering/render-worker.js +9 -3
  224. package/src/utils/server-rendering/routes-extractor-worker.d.ts +2 -0
  225. package/src/utils/server-rendering/routes-extractor-worker.js +4 -4
  226. package/src/utils/service-worker.js +0 -1
  227. package/src/utils/spinner.js +0 -1
  228. package/src/utils/strip-bom.js +0 -1
  229. package/src/utils/supported-browsers.js +0 -1
  230. package/src/utils/tailwind.js +0 -1
  231. package/src/utils/tty.js +0 -1
  232. package/src/utils/url.js +0 -1
  233. package/src/utils/version.js +0 -1
  234. package/src/utils/webpack-browser-config.js +0 -1
  235. package/src/utils/webpack-diagnostics.js +0 -1
@@ -38,7 +38,6 @@ const node_assert_1 = __importDefault(require("node:assert"));
38
38
  const promises_1 = require("node:fs/promises");
39
39
  const path = __importStar(require("node:path"));
40
40
  const node_url_1 = require("node:url");
41
- const typescript_1 = __importDefault(require("typescript"));
42
41
  const environment_options_1 = require("../../../utils/environment-options");
43
42
  const javascript_transformer_1 = require("../javascript-transformer");
44
43
  const profiling_1 = require("../profiling");
@@ -82,7 +81,7 @@ function createCompilerPlugin(pluginOptions, styleOptions) {
82
81
  // Determines if TypeScript should process JavaScript files based on tsconfig `allowJs` option
83
82
  let shouldTsIgnoreJs = true;
84
83
  // Track incremental component stylesheet builds
85
- const stylesheetBundler = new component_stylesheets_1.ComponentStylesheetBundler(styleOptions, pluginOptions.incremental, pluginOptions.loadResultCache);
84
+ const stylesheetBundler = new component_stylesheets_1.ComponentStylesheetBundler(styleOptions, pluginOptions.incremental);
86
85
  let sharedTSCompilationState;
87
86
  // To fully invalidate files, track resource referenced files and their referencing source
88
87
  const referencedFileTracker = new file_reference_tracker_1.FileReferenceTracker();
@@ -107,6 +106,7 @@ function createCompilerPlugin(pluginOptions, styleOptions) {
107
106
  // TODO: Differentiate between changed input files and stale output files
108
107
  modifiedFiles = referencedFileTracker.update(pluginOptions.sourceFileCache.modifiedFiles);
109
108
  pluginOptions.sourceFileCache.invalidate(modifiedFiles);
109
+ stylesheetBundler.invalidate(modifiedFiles);
110
110
  }
111
111
  if (!pluginOptions.noopTypeScriptCompilation &&
112
112
  compilation.update &&
@@ -178,12 +178,12 @@ function createCompilerPlugin(pluginOptions, styleOptions) {
178
178
  // Initialize the Angular compilation for the current build.
179
179
  // In watch mode, previous build state will be reused.
180
180
  const { compilerOptions: { allowJs }, referencedFiles, } = await compilation.initialize(tsconfigPath, hostOptions, (compilerOptions) => {
181
- if (compilerOptions.target === undefined ||
182
- compilerOptions.target < typescript_1.default.ScriptTarget.ES2022) {
181
+ // target of 9 is ES2022 (using the number avoids an expensive import of typescript just for an enum)
182
+ if (compilerOptions.target === undefined || compilerOptions.target < 9) {
183
183
  // If 'useDefineForClassFields' is already defined in the users project leave the value as is.
184
184
  // Otherwise fallback to false due to https://github.com/microsoft/TypeScript/issues/45995
185
185
  // which breaks the deprecated `@Effects` NGRX decorator and potentially other existing code as well.
186
- compilerOptions.target = typescript_1.default.ScriptTarget.ES2022;
186
+ compilerOptions.target = 9;
187
187
  compilerOptions.useDefineForClassFields ??= false;
188
188
  // Only add the warning on the initial build
189
189
  setupWarnings?.push({
@@ -198,6 +198,14 @@ function createCompilerPlugin(pluginOptions, styleOptions) {
198
198
  ],
199
199
  });
200
200
  }
201
+ if (compilerOptions.compilationMode === 'partial') {
202
+ setupWarnings?.push({
203
+ text: 'Angular partial compilation mode is not supported when building applications.',
204
+ location: null,
205
+ notes: [{ text: 'Full compilation mode will be used instead.' }],
206
+ });
207
+ compilerOptions.compilationMode = 'full';
208
+ }
201
209
  // Enable incremental compilation by default if caching is enabled
202
210
  if (pluginOptions.sourceFileCache?.persistentCachePath) {
203
211
  compilerOptions.incremental ??= true;
@@ -375,4 +383,3 @@ function createMissingFileError(request, original, root) {
375
383
  }
376
384
  return error;
377
385
  }
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXItcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdG9vbHMvZXNidWlsZC9hbmd1bGFyL2NvbXBpbGVyLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdILDhEQUFpQztBQUNqQywrQ0FBNEM7QUFDNUMsZ0RBQWtDO0FBQ2xDLHVDQUF5QztBQUN6Qyw0REFBNEI7QUFDNUIsNEVBQWdFO0FBQ2hFLHNFQUFrRTtBQUVsRSw0Q0FBOEY7QUFHOUYsK0NBQThGO0FBQzlGLDJEQUEwRjtBQUMxRixtRUFBcUU7QUFDckUscUVBQWdFO0FBQ2hFLGlFQUFpRTtBQWlCakUsa0RBQWtEO0FBQ2xELFNBQWdCLG9CQUFvQixDQUNsQyxhQUFvQyxFQUNwQyxZQUF1RTtJQUV2RSxPQUFPO1FBQ0wsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixrREFBa0Q7UUFDbEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFrQjtZQUM1QixJQUFJLGFBQWEsR0FBaUMsRUFBRSxDQUFDO1lBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUUvRCxJQUFJLFlBQVksR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDO1lBQzFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDckIsZ0VBQWdFO2dCQUNoRSx5RkFBeUY7Z0JBQ3pGLElBQUk7b0JBQ0YsWUFBWSxHQUFHLE1BQU0sSUFBQSxtQkFBUSxFQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUM3QztnQkFBQyxNQUFNLEdBQUU7YUFDWDtZQUVELDBEQUEwRDtZQUMxRCxNQUFNLHFCQUFxQixHQUFHLElBQUksOENBQXFCLENBQUMsYUFBYSxFQUFFLGdDQUFVLENB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QUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNmLElBQUksRUFBRSxpREFBaUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7U0FDekYsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBCdWlsZEZhaWx1cmUsXG4gIE1ldGFmaWxlLFxuICBPblN0YXJ0UmVzdWx0LFxuICBPdXRwdXRGaWxlLFxuICBQYXJ0aWFsTWVzc2FnZSxcbiAgUGx1Z2luLFxuICBQbHVnaW5CdWlsZCxcbn0gZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ25vZGU6YXNzZXJ0JztcbmltcG9ydCB7IHJlYWxwYXRoIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgbWF4V29ya2VycyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2Vudmlyb25tZW50LW9wdGlvbnMnO1xuaW1wb3J0IHsgSmF2YVNjcmlwdFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vamF2YXNjcmlwdC10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBMb2FkUmVzdWx0Q2FjaGUgfSBmcm9tICcuLi9sb2FkLXJlc3VsdC1jYWNoZSc7XG5pbXBvcnQgeyBsb2dDdW11bGF0aXZlRHVyYXRpb25zLCBwcm9maWxlQXN5bmMsIHJlc2V0Q3VtdWxhdGl2ZUR1cmF0aW9ucyB9IGZyb20gJy4uL3Byb2ZpbGluZyc7XG5pbXBvcnQgeyBCdW5kbGVTdHlsZXNoZWV0T3B0aW9ucyB9IGZyb20gJy4uL3N0eWxlc2hlZXRzL2J1bmRsZS1vcHRpb25zJztcbmltcG9ydCB7IEFuZ3VsYXJIb3N0T3B0aW9ucyB9IGZyb20gJy4vYW5ndWxhci1ob3N0JztcbmltcG9ydCB7IEFuZ3VsYXJDb21waWxhdGlvbiwgTm9vcENvbXBpbGF0aW9uLCBjcmVhdGVBbmd1bGFyQ29tcGlsYXRpb24gfSBmcm9tICcuL2NvbXBpbGF0aW9uJztcbmltcG9ydCB7IFNoYXJlZFRTQ29tcGlsYXRpb25TdGF0ZSwgZ2V0U2hhcmVkQ29tcGlsYXRpb25TdGF0ZSB9IGZyb20gJy4vY29tcGlsYXRpb24tc3RhdGUnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3R5bGVzaGVldEJ1bmRsZXIgfSBmcm9tICcuL2NvbXBvbmVudC1zdHlsZXNoZWV0cyc7XG5pbXBvcnQgeyBGaWxlUmVmZXJlbmNlVHJhY2tlciB9IGZyb20gJy4vZmlsZS1yZWZlcmVuY2UtdHJhY2tlcic7XG5pbXBvcnQgeyBzZXR1cEppdFBsdWdpbkNhbGxiYWNrcyB9IGZyb20gJy4vaml0LXBsdWdpbi1jYWxsYmFja3MnO1xuaW1wb3J0IHsgU291cmNlRmlsZUNhY2hlIH0gZnJvbSAnLi9zb3VyY2UtZmlsZS1jYWNoZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZXJQbHVnaW5PcHRpb25zIHtcbiAgc291cmNlbWFwOiBib29sZWFuO1xuICB0c2NvbmZpZzogc3RyaW5nO1xuICBqaXQ/OiBib29sZWFuO1xuICAvKiogU2tpcCBUeXBlU2NyaXB0IGNvbXBpbGF0aW9uIHNldHVwLiBUaGlzIGlzIHVzZWZ1bCB0byByZS11c2UgdGhlIFR5cGVTY3JpcHQgY29tcGlsYXRpb24gZnJvbSBhbm90aGVyIHBsdWdpbi4gKi9cbiAgbm9vcFR5cGVTY3JpcHRDb21waWxhdGlvbj86IGJvb2xlYW47XG4gIGFkdmFuY2VkT3B0aW1pemF0aW9ucz86IGJvb2xlYW47XG4gIHRoaXJkUGFydHlTb3VyY2VtYXBzPzogYm9vbGVhbjtcbiAgZmlsZVJlcGxhY2VtZW50cz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHNvdXJjZUZpbGVDYWNoZT86IFNvdXJjZUZpbGVDYWNoZTtcbiAgbG9hZFJlc3VsdENhY2hlPzogTG9hZFJlc3VsdENhY2hlO1xuICBpbmNyZW1lbnRhbDogYm9vbGVhbjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1saW5lcy1wZXItZnVuY3Rpb25cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb21waWxlclBsdWdpbihcbiAgcGx1Z2luT3B0aW9uczogQ29tcGlsZXJQbHVnaW5PcHRpb25zLFxuICBzdHlsZU9wdGlvbnM6IEJ1bmRsZVN0eWxlc2hlZXRPcHRpb25zICYgeyBpbmxpbmVTdHlsZUxhbmd1YWdlOiBzdHJpbmcgfSxcbik6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2FuZ3VsYXItY29tcGlsZXInLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGluZXMtcGVyLWZ1bmN0aW9uXG4gICAgYXN5bmMgc2V0dXAoYnVpbGQ6IFBsdWdpbkJ1aWxkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBsZXQgc2V0dXBXYXJuaW5nczogUGFydGlhbE1lc3NhZ2VbXSB8IHVuZGVmaW5lZCA9IFtdO1xuICAgICAgY29uc3QgcHJlc2VydmVTeW1saW5rcyA9IGJ1aWxkLmluaXRpYWxPcHRpb25zLnByZXNlcnZlU3ltbGlua3M7XG5cbiAgICAgIGxldCB0c2NvbmZpZ1BhdGggPSBwbHVnaW5PcHRpb25zLnRzY29uZmlnO1xuICAgICAgaWYgKCFwcmVzZXJ2ZVN5bWxpbmtzKSB7XG4gICAgICAgIC8vIFVzZSB0aGUgcmVhbCBwYXRoIG9mIHRoZSB0c2NvbmZpZyBpZiBub3QgcHJlc2VydmluZyBzeW1saW5rcy5cbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoZSBUUyBzb3VyY2UgZmlsZSBwYXRocyBhcmUgYmFzZWQgb24gdGhlIHJlYWwgcGF0aCBvZiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0c2NvbmZpZ1BhdGggPSBhd2FpdCByZWFscGF0aCh0c2NvbmZpZ1BhdGgpO1xuICAgICAgICB9IGNhdGNoIHt9XG4gICAgICB9XG5cbiAgICAgIC8vIEluaXRpYWxpemUgYSB3b3JrZXIgcG9vbCBmb3IgSmF2YVNjcmlwdCB0cmFuc2Zvcm1hdGlvbnNcbiAgICAgIGNvbnN0IGphdmFzY3JpcHRUcmFuc2Zvcm1lciA9IG5ldyBKYXZhU2NyaXB0VHJhbnNmb3JtZXIocGx1Z2luT3B0aW9ucywgbWF4V29ya2Vycyk7XG5cbiAgICAgIC8vIFNldHVwIGRlZmluZXMgYmFzZWQgb24gdGhlIHZhbHVlcyB1c2VkIGJ5IHRoZSBBbmd1bGFyIGNvbXBpbGVyLWNsaVxuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuZGVmaW5lID8/PSB7fTtcbiAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmRlZmluZVsnbmdJMThuQ2xvc3VyZU1vZGUnXSA/Pz0gJ2ZhbHNlJztcblxuICAgICAgLy8gVGhlIGluLW1lbW9yeSBjYWNoZSBvZiBUeXBlU2NyaXB0IGZpbGUgb3V0cHV0cyB3aWxsIGJlIHVzZWQgZHVyaW5nIHRoZSBidWlsZCBpbiBgb25Mb2FkYCBjYWxsYmFja3MgZm9yIFRTIGZpbGVzLlxuICAgICAgLy8gQSBzdHJpbmcgdmFsdWUgaW5kaWNhdGVzIGRpcmVjdCBUUy9ORyBvdXRwdXQgYW5kIGEgVWludDhBcnJheSBpbmRpY2F0ZXMgZnVsbHkgdHJhbnNmb3JtZWQgY29kZS5cbiAgICAgIGNvbnN0IHR5cGVTY3JpcHRGaWxlQ2FjaGUgPVxuICAgICAgICBwbHVnaW5PcHRpb25zLnNvdXJjZUZpbGVDYWNoZT8udHlwZVNjcmlwdEZpbGVDYWNoZSA/P1xuICAgICAgICBuZXcgTWFwPHN0cmluZywgc3RyaW5nIHwgVWludDhBcnJheT4oKTtcblxuICAgICAgLy8gVGhlIHJlc291cmNlcyBmcm9tIGNvbXBvbmVudCBzdHlsZXNoZWV0cyBhbmQgd2ViIHdvcmtlcnMgdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBidWlsZCByZXN1bHRzIG91dHB1dCBmaWxlc1xuICAgICAgY29uc3QgYWRkaXRpb25hbFJlc3VsdHMgPSBuZXcgTWFwPFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIHsgb3V0cHV0RmlsZXM/OiBPdXRwdXRGaWxlW107IG1ldGFmaWxlPzogTWV0YWZpbGU7IGVycm9ycz86IFBhcnRpYWxNZXNzYWdlW10gfVxuICAgICAgPigpO1xuXG4gICAgICAvLyBDcmVhdGUgbmV3IHJldXNhYmxlIGNvbXBpbGF0aW9uIGZvciB0aGUgYXBwcm9wcmlhdGUgbW9kZSBiYXNlZCBvbiB0aGUgYGppdGAgcGx1Z2luIG9wdGlvblxuICAgICAgY29uc3QgY29tcGlsYXRpb246IEFuZ3VsYXJDb21waWxhdGlvbiA9IHBsdWdpbk9wdGlvbnMubm9vcFR5cGVTY3JpcHRDb21waWxhdGlvblxuICAgICAgICA/IG5ldyBOb29wQ29tcGlsYXRpb24oKVxuICAgICAgICA6IGF3YWl0IGNyZWF0ZUFuZ3VsYXJDb21waWxhdGlvbighIXBsdWdpbk9wdGlvbnMuaml0KTtcblxuICAgICAgLy8gRGV0ZXJtaW5lcyBpZiBUeXBlU2NyaXB0IHNob3VsZCBwcm9jZXNzIEphdmFTY3JpcHQgZmlsZXMgYmFzZWQgb24gdHNjb25maWcgYGFsbG93SnNgIG9wdGlvblxuICAgICAgbGV0IHNob3VsZFRzSWdub3JlSnMgPSB0cnVlO1xuXG4gICAgICAvLyBUcmFjayBpbmNyZW1lbnRhbCBjb21wb25lbnQgc3R5bGVzaGVldCBidWlsZHNcbiAgICAgIGNvbnN0IHN0eWxlc2hlZXRCdW5kbGVyID0gbmV3IENvbXBvbmVudFN0eWxlc2hlZXRCdW5kbGVyKFxuICAgICAgICBzdHlsZU9wdGlvbnMsXG4gICAgICAgIHBsdWdpbk9wdGlvbnMuaW5jcmVtZW50YWwsXG4gICAgICAgIHBsdWdpbk9wdGlvbnMubG9hZFJlc3VsdENhY2hlLFxuICAgICAgKTtcbiAgICAgIGxldCBzaGFyZWRUU0NvbXBpbGF0aW9uU3RhdGU6IFNoYXJlZFRTQ29tcGlsYXRpb25TdGF0ZSB8IHVuZGVmaW5lZDtcblxuICAgICAgLy8gVG8gZnVsbHkgaW52YWxpZGF0ZSBmaWxlcywgdHJhY2sgcmVzb3VyY2UgcmVmZXJlbmNlZCBmaWxlcyBhbmQgdGhlaXIgcmVmZXJlbmNpbmcgc291cmNlXG4gICAgICBjb25zdCByZWZlcmVuY2VkRmlsZVRyYWNrZXIgPSBuZXcgRmlsZVJlZmVyZW5jZVRyYWNrZXIoKTtcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1saW5lcy1wZXItZnVuY3Rpb25cbiAgICAgIGJ1aWxkLm9uU3RhcnQoYXN5bmMgKCkgPT4ge1xuICAgICAgICBzaGFyZWRUU0NvbXBpbGF0aW9uU3RhdGUgPSBnZXRTaGFyZWRDb21waWxhdGlvblN0YXRlKCk7XG4gICAgICAgIGlmICghKGNvbXBpbGF0aW9uIGluc3RhbmNlb2YgTm9vcENvbXBpbGF0aW9uKSkge1xuICAgICAgICAgIHNoYXJlZFRTQ29tcGlsYXRpb25TdGF0ZS5tYXJrQXNJblByb2dyZXNzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQ6IE9uU3RhcnRSZXN1bHQgPSB7XG4gICAgICAgICAgd2FybmluZ3M6IHNldHVwV2FybmluZ3MsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUmVzZXQgZGVidWcgcGVyZm9ybWFuY2UgdHJhY2tpbmdcbiAgICAgICAgcmVzZXRDdW11bGF0aXZlRHVyYXRpb25zKCk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHRoZSByZWZlcmVuY2UgdHJhY2tlciBhbmQgZ2VuZXJhdGUgYSBmdWxsIHNldCBvZiBtb2RpZmllZCBmaWxlcyBmb3IgdGhlXG4gICAgICAgIC8vIEFuZ3VsYXIgY29tcGlsZXIgd2hpY2ggZG9lcyBub3QgaGF2ZSBkaXJlY3Qga25vd2xlZGdlIG9mIHRyYW5zaXRpdmUgcmVzb3VyY2VcbiAgICAgICAgLy8gZGVwZW5kZW5jaWVzIG9yIHdlYiB3b3JrZXIgcHJvY2Vzc2luZy5cbiAgICAgICAgbGV0IG1vZGlmaWVkRmlsZXM7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwbHVnaW5PcHRpb25zLnNvdXJjZUZpbGVDYWNoZT8ubW9kaWZpZWRGaWxlcy5zaXplICYmXG4gICAgICAgICAgcmVmZXJlbmNlZEZpbGVUcmFja2VyICYmXG4gICAgICAgICAgIXBsdWdpbk9wdGlvbnMubm9vcFR5cGVTY3JpcHRDb21waWxhdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBUT0RPOiBEaWZmZXJlbnRpYXRlIGJldHdlZW4gY2hhbmdlZCBpbnB1dCBmaWxlcyBhbmQgc3RhbGUgb3V0cHV0IGZpbGVzXG4gICAgICAgICAgbW9kaWZpZWRGaWxlcyA9IHJlZmVyZW5jZWRGaWxlVHJhY2tlci51cGRhdGUocGx1Z2luT3B0aW9ucy5zb3VyY2VGaWxlQ2FjaGUubW9kaWZpZWRGaWxlcyk7XG4gICAgICAgICAgcGx1Z2luT3B0aW9ucy5zb3VyY2VGaWxlQ2FjaGUuaW52YWxpZGF0ZShtb2RpZmllZEZpbGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhcGx1Z2luT3B0aW9ucy5ub29wVHlwZVNjcmlwdENvbXBpbGF0aW9uICYmXG4gICAgICAgICAgY29tcGlsYXRpb24udXBkYXRlICYmXG4gICAgICAgICAgcGx1Z2luT3B0aW9ucy5zb3VyY2VGaWxlQ2FjaGU/Lm1vZGlmaWVkRmlsZXMuc2l6ZVxuICAgICAgICApIHtcbiAgICAgICAgICBhd2FpdCBjb21waWxhdGlvbi51cGRhdGUobW9kaWZpZWRGaWxlcyA/PyBwbHVnaW5PcHRpb25zLnNvdXJjZUZpbGVDYWNoZS5tb2RpZmllZEZpbGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBBbmd1bGFyIGNvbXBpbGVyIGhvc3Qgb3B0aW9uc1xuICAgICAgICBjb25zdCBob3N0T3B0aW9uczogQW5ndWxhckhvc3RPcHRpb25zID0ge1xuICAgICAgICAgIGZpbGVSZXBsYWNlbWVudHM6IHBsdWdpbk9wdGlvbnMuZmlsZVJlcGxhY2VtZW50cyxcbiAgICAgICAgICBtb2RpZmllZEZpbGVzLFxuICAgICAgICAgIHNvdXJjZUZpbGVDYWNoZTogcGx1Z2luT3B0aW9ucy5zb3VyY2VGaWxlQ2FjaGUsXG4gICAgICAgICAgYXN5bmMgdHJhbnNmb3JtU3R5bGVzaGVldChkYXRhLCBjb250YWluaW5nRmlsZSwgc3R5bGVzaGVldEZpbGUpIHtcbiAgICAgICAgICAgIGxldCBzdHlsZXNoZWV0UmVzdWx0O1xuXG4gICAgICAgICAgICAvLyBTdHlsZXNoZWV0IGZpbGUgb25seSBleGlzdHMgZm9yIGV4dGVybmFsIHN0eWxlc2hlZXRzXG4gICAgICAgICAgICBpZiAoc3R5bGVzaGVldEZpbGUpIHtcbiAgICAgICAgICAgICAgc3R5bGVzaGVldFJlc3VsdCA9IGF3YWl0IHN0eWxlc2hlZXRCdW5kbGVyLmJ1bmRsZUZpbGUoc3R5bGVzaGVldEZpbGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3R5bGVzaGVldFJlc3VsdCA9IGF3YWl0IHN0eWxlc2hlZXRCdW5kbGVyLmJ1bmRsZUlubGluZShcbiAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdGaWxlLFxuICAgICAgICAgICAgICAgIHN0eWxlT3B0aW9ucy5pbmxpbmVTdHlsZUxhbmd1YWdlLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB7IGNvbnRlbnRzLCByZXNvdXJjZUZpbGVzLCByZWZlcmVuY2VkRmlsZXMsIGVycm9ycywgd2FybmluZ3MgfSA9IHN0eWxlc2hlZXRSZXN1bHQ7XG4gICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgIChyZXN1bHQuZXJyb3JzID8/PSBbXSkucHVzaCguLi5lcnJvcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKHJlc3VsdC53YXJuaW5ncyA/Pz0gW10pLnB1c2goLi4ud2FybmluZ3MpO1xuICAgICAgICAgICAgYWRkaXRpb25hbFJlc3VsdHMuc2V0KHN0eWxlc2hlZXRGaWxlID8/IGNvbnRhaW5pbmdGaWxlLCB7XG4gICAgICAgICAgICAgIG91dHB1dEZpbGVzOiByZXNvdXJjZUZpbGVzLFxuICAgICAgICAgICAgICBtZXRhZmlsZTogc3R5bGVzaGVldFJlc3VsdC5tZXRhZmlsZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAocmVmZXJlbmNlZEZpbGVzKSB7XG4gICAgICAgICAgICAgIHJlZmVyZW5jZWRGaWxlVHJhY2tlci5hZGQoY29udGFpbmluZ0ZpbGUsIHJlZmVyZW5jZWRGaWxlcyk7XG4gICAgICAgICAgICAgIGlmIChzdHlsZXNoZWV0RmlsZSkge1xuICAgICAgICAgICAgICAgIC8vIEFuZ3VsYXIgQU9UIGNvbXBpbGVyIG5lZWRzIG1vZGlmaWVkIGRpcmVjdCByZXNvdXJjZSBmaWxlcyB0byBjb3JyZWN0bHkgaW52YWxpZGF0ZSBpdHMgYW5hbHlzaXNcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VkRmlsZVRyYWNrZXIuYWRkKHN0eWxlc2hlZXRGaWxlLCByZWZlcmVuY2VkRmlsZXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250ZW50cztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByb2Nlc3NXZWJXb3JrZXIod29ya2VyRmlsZSwgY29udGFpbmluZ0ZpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxXb3JrZXJQYXRoID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShjb250YWluaW5nRmlsZSksIHdvcmtlckZpbGUpO1xuICAgICAgICAgICAgLy8gVGhlIHN5bmNocm9ub3VzIEFQSSBtdXN0IGJlIHVzZWQgZHVlIHRvIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGF0aW9uIGN1cnJlbnRseSBiZWluZ1xuICAgICAgICAgICAgLy8gZnVsbHkgc3luY2hyb25vdXMgYW5kIHRoaXMgcHJvY2VzcyBjYWxsYmFjayBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gYSBUeXBlU2NyaXB0XG4gICAgICAgICAgICAvLyB0cmFuc2Zvcm1lci5cbiAgICAgICAgICAgIGNvbnN0IHdvcmtlclJlc3VsdCA9IGJ1bmRsZVdlYldvcmtlcihidWlsZCwgcGx1Z2luT3B0aW9ucywgZnVsbFdvcmtlclBhdGgpO1xuXG4gICAgICAgICAgICAocmVzdWx0Lndhcm5pbmdzID8/PSBbXSkucHVzaCguLi53b3JrZXJSZXN1bHQud2FybmluZ3MpO1xuICAgICAgICAgICAgaWYgKHdvcmtlclJlc3VsdC5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAocmVzdWx0LmVycm9ycyA/Pz0gW10pLnB1c2goLi4ud29ya2VyUmVzdWx0LmVycm9ycyk7XG4gICAgICAgICAgICAgIC8vIFRyYWNrIHdvcmtlciBmaWxlIGVycm9ycyB0byBhbGxvdyByZWJ1aWxkcyBvbiBjaGFuZ2VzXG4gICAgICAgICAgICAgIHJlZmVyZW5jZWRGaWxlVHJhY2tlci5hZGQoXG4gICAgICAgICAgICAgICAgY29udGFpbmluZ0ZpbGUsXG4gICAgICAgICAgICAgICAgd29ya2VyUmVzdWx0LmVycm9yc1xuICAgICAgICAgICAgICAgICAgLm1hcCgoZXJyb3IpID0+IGVycm9yLmxvY2F0aW9uPy5maWxlKVxuICAgICAgICAgICAgICAgICAgLmZpbHRlcigoZmlsZSk6IGZpbGUgaXMgc3RyaW5nID0+ICEhZmlsZSlcbiAgICAgICAgICAgICAgICAgIC5tYXAoKGZpbGUpID0+IHBhdGguam9pbihidWlsZC5pbml0aWFsT3B0aW9ucy5hYnNXb3JraW5nRGlyID8/ICcnLCBmaWxlKSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGFkZGl0aW9uYWxSZXN1bHRzLnNldChmdWxsV29ya2VyUGF0aCwgeyBlcnJvcnM6IHJlc3VsdC5lcnJvcnMgfSk7XG5cbiAgICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBwYXRoIGlmIHRoZSBidWlsZCBmYWlsZWRcbiAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlckZpbGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFzc2VydCgnb3V0cHV0RmlsZXMnIGluIHdvcmtlclJlc3VsdCwgJ0ludmFsaWQgd2ViIHdvcmtlciBidW5kbGUgcmVzdWx0LicpO1xuICAgICAgICAgICAgYWRkaXRpb25hbFJlc3VsdHMuc2V0KGZ1bGxXb3JrZXJQYXRoLCB7XG4gICAgICAgICAgICAgIG91dHB1dEZpbGVzOiB3b3JrZXJSZXN1bHQub3V0cHV0RmlsZXMsXG4gICAgICAgICAgICAgIG1ldGFmaWxlOiB3b3JrZXJSZXN1bHQubWV0YWZpbGUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVmZXJlbmNlZEZpbGVUcmFja2VyLmFkZChcbiAgICAgICAgICAgICAgY29udGFpbmluZ0ZpbGUsXG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKHdvcmtlclJlc3VsdC5tZXRhZmlsZS5pbnB1dHMpLm1hcCgoaW5wdXQpID0+XG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKGJ1aWxkLmluaXRpYWxPcHRpb25zLmFic1dvcmtpbmdEaXIgPz8gJycsIGlucHV0KSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIFJldHVybiBidW5kbGVkIHdvcmtlciBmaWxlIGVudHJ5IG5hbWUgdG8gYmUgdXNlZCBpbiB0aGUgYnVpbHQgb3V0cHV0XG4gICAgICAgICAgICBjb25zdCB3b3JrZXJDb2RlRmlsZSA9IHdvcmtlclJlc3VsdC5vdXRwdXRGaWxlcy5maW5kKChmaWxlKSA9PlxuICAgICAgICAgICAgICBmaWxlLnBhdGguZW5kc1dpdGgoJy5qcycpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFzc2VydCh3b3JrZXJDb2RlRmlsZSwgJ1dlYiBXb3JrZXIgYnVuZGxlZCBjb2RlIGZpbGUgc2hvdWxkIGFsd2F5cyBiZSBwcmVzZW50LicpO1xuXG4gICAgICAgICAgICByZXR1cm4gcGF0aC5yZWxhdGl2ZShidWlsZC5pbml0aWFsT3B0aW9ucy5vdXRkaXIgPz8gJycsIHdvcmtlckNvZGVGaWxlLnBhdGgpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgQW5ndWxhciBjb21waWxhdGlvbiBmb3IgdGhlIGN1cnJlbnQgYnVpbGQuXG4gICAgICAgIC8vIEluIHdhdGNoIG1vZGUsIHByZXZpb3VzIGJ1aWxkIHN0YXRlIHdpbGwgYmUgcmV1c2VkLlxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7IGFsbG93SnMgfSxcbiAgICAgICAgICByZWZlcmVuY2VkRmlsZXMsXG4gICAgICAgIH0gPSBhd2FpdCBjb21waWxhdGlvbi5pbml0aWFsaXplKHRzY29uZmlnUGF0aCwgaG9zdE9wdGlvbnMsIChjb21waWxlck9wdGlvbnMpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb21waWxlck9wdGlvbnMudGFyZ2V0ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGNvbXBpbGVyT3B0aW9ucy50YXJnZXQgPCB0cy5TY3JpcHRUYXJnZXQuRVMyMDIyXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBJZiAndXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHMnIGlzIGFscmVhZHkgZGVmaW5lZCBpbiB0aGUgdXNlcnMgcHJvamVjdCBsZWF2ZSB0aGUgdmFsdWUgYXMgaXMuXG4gICAgICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2sgdG8gZmFsc2UgZHVlIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvNDU5OTVcbiAgICAgICAgICAgIC8vIHdoaWNoIGJyZWFrcyB0aGUgZGVwcmVjYXRlZCBgQEVmZmVjdHNgIE5HUlggZGVjb3JhdG9yIGFuZCBwb3RlbnRpYWxseSBvdGhlciBleGlzdGluZyBjb2RlIGFzIHdlbGwuXG4gICAgICAgICAgICBjb21waWxlck9wdGlvbnMudGFyZ2V0ID0gdHMuU2NyaXB0VGFyZ2V0LkVTMjAyMjtcbiAgICAgICAgICAgIGNvbXBpbGVyT3B0aW9ucy51c2VEZWZpbmVGb3JDbGFzc0ZpZWxkcyA/Pz0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIE9ubHkgYWRkIHRoZSB3YXJuaW5nIG9uIHRoZSBpbml0aWFsIGJ1aWxkXG4gICAgICAgICAgICBzZXR1cFdhcm5pbmdzPy5wdXNoKHtcbiAgICAgICAgICAgICAgdGV4dDpcbiAgICAgICAgICAgICAgICAnVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zIFwidGFyZ2V0XCIgYW5kIFwidXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHNcIiBhcmUgc2V0IHRvIFwiRVMyMDIyXCIgYW5kICcgK1xuICAgICAgICAgICAgICAgICdcImZhbHNlXCIgcmVzcGVjdGl2ZWx5IGJ5IHRoZSBBbmd1bGFyIENMSS4nLFxuICAgICAgICAgICAgICBsb2NhdGlvbjogeyBmaWxlOiBwbHVnaW5PcHRpb25zLnRzY29uZmlnIH0sXG4gICAgICAgICAgICAgIG5vdGVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdGV4dDpcbiAgICAgICAgICAgICAgICAgICAgJ1RvIGNvbnRyb2wgRUNNQSB2ZXJzaW9uIGFuZCBmZWF0dXJlcyB1c2UgdGhlIEJyb3dlcnNsaXN0IGNvbmZpZ3VyYXRpb24uICcgK1xuICAgICAgICAgICAgICAgICAgICAnRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvYnVpbGQjY29uZmlndXJpbmctYnJvd3Nlci1jb21wYXRpYmlsaXR5JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRW5hYmxlIGluY3JlbWVudGFsIGNvbXBpbGF0aW9uIGJ5IGRlZmF1bHQgaWYgY2FjaGluZyBpcyBlbmFibGVkXG4gICAgICAgICAgaWYgKHBsdWdpbk9wdGlvbnMuc291cmNlRmlsZUNhY2hlPy5wZXJzaXN0ZW50Q2FjaGVQYXRoKSB7XG4gICAgICAgICAgICBjb21waWxlck9wdGlvbnMuaW5jcmVtZW50YWwgPz89IHRydWU7XG4gICAgICAgICAgICAvLyBTZXQgdGhlIGJ1aWxkIGluZm8gZmlsZSBsb2NhdGlvbiB0byB0aGUgY29uZmlndXJlZCBjYWNoZSBkaXJlY3RvcnlcbiAgICAgICAgICAgIGNvbXBpbGVyT3B0aW9ucy50c0J1aWxkSW5mb0ZpbGUgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgIHBsdWdpbk9wdGlvbnMuc291cmNlRmlsZUNhY2hlPy5wZXJzaXN0ZW50Q2FjaGVQYXRoLFxuICAgICAgICAgICAgICAnLnRzYnVpbGRpbmZvJyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbXBpbGVyT3B0aW9ucy5pbmNyZW1lbnRhbCA9IGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb21waWxlck9wdGlvbnMsXG4gICAgICAgICAgICBub0VtaXRPbkVycm9yOiBmYWxzZSxcbiAgICAgICAgICAgIGlubGluZVNvdXJjZXM6IHBsdWdpbk9wdGlvbnMuc291cmNlbWFwLFxuICAgICAgICAgICAgaW5saW5lU291cmNlTWFwOiBwbHVnaW5PcHRpb25zLnNvdXJjZW1hcCxcbiAgICAgICAgICAgIG1hcFJvb3Q6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNvdXJjZVJvb3Q6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHByZXNlcnZlU3ltbGlua3MsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNob3VsZFRzSWdub3JlSnMgPSAhYWxsb3dKcztcblxuICAgICAgICBpZiAoY29tcGlsYXRpb24gaW5zdGFuY2VvZiBOb29wQ29tcGlsYXRpb24pIHtcbiAgICAgICAgICBhd2FpdCBzaGFyZWRUU0NvbXBpbGF0aW9uU3RhdGUud2FpdFVudGlsUmVhZHk7XG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlhZ25vc3RpY3MgPSBhd2FpdCBjb21waWxhdGlvbi5kaWFnbm9zZUZpbGVzKCk7XG4gICAgICAgIGlmIChkaWFnbm9zdGljcy5lcnJvcnMpIHtcbiAgICAgICAgICAocmVzdWx0LmVycm9ycyA/Pz0gW10pLnB1c2goLi4uZGlhZ25vc3RpY3MuZXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlhZ25vc3RpY3Mud2FybmluZ3MpIHtcbiAgICAgICAgICAocmVzdWx0Lndhcm5pbmdzID8/PSBbXSkucHVzaCguLi5kaWFnbm9zdGljcy53YXJuaW5ncyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGUgVHlwZVNjcmlwdCBmaWxlIG91dHB1dCBjYWNoZSBmb3IgYWxsIGFmZmVjdGVkIGZpbGVzXG4gICAgICAgIGF3YWl0IHByb2ZpbGVBc3luYygnTkdfRU1JVF9UUycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHsgZmlsZW5hbWUsIGNvbnRlbnRzIH0gb2YgYXdhaXQgY29tcGlsYXRpb24uZW1pdEFmZmVjdGVkRmlsZXMoKSkge1xuICAgICAgICAgICAgdHlwZVNjcmlwdEZpbGVDYWNoZS5zZXQocGF0aFRvRmlsZVVSTChmaWxlbmFtZSkuaHJlZiwgY29udGVudHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWRkIGVycm9ycyBmcm9tIGZhaWxlZCBhZGRpdGlvbmFsIHJlc3VsdHMuXG4gICAgICAgIC8vIFRoaXMgbXVzdCBiZSBkb25lIGFmdGVyIGVtaXQgdG8gY2FwdHVyZSBsYXRlc3Qgd2ViIHdvcmtlciByZXN1bHRzLlxuICAgICAgICBmb3IgKGNvbnN0IHsgZXJyb3JzIH0gb2YgYWRkaXRpb25hbFJlc3VsdHMudmFsdWVzKCkpIHtcbiAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAocmVzdWx0LmVycm9ycyA/Pz0gW10pLnB1c2goLi4uZXJyb3JzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdG9yZSByZWZlcmVuY2VkIGZpbGVzIGZvciB1cGRhdGVkIGZpbGUgd2F0Y2hpbmcgaWYgZW5hYmxlZFxuICAgICAgICBpZiAocGx1Z2luT3B0aW9ucy5zb3VyY2VGaWxlQ2FjaGUpIHtcbiAgICAgICAgICBwbHVnaW5PcHRpb25zLnNvdXJjZUZpbGVDYWNoZS5yZWZlcmVuY2VkRmlsZXMgPSBbXG4gICAgICAgICAgICAuLi5yZWZlcmVuY2VkRmlsZXMsXG4gICAgICAgICAgICAuLi5yZWZlcmVuY2VkRmlsZVRyYWNrZXIucmVmZXJlbmNlZEZpbGVzLFxuICAgICAgICAgIF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXNldCB0aGUgc2V0dXAgd2FybmluZ3Mgc28gdGhhdCB0aGV5IGFyZSBvbmx5IHNob3duIGR1cmluZyB0aGUgZmlyc3QgYnVpbGQuXG4gICAgICAgIHNldHVwV2FybmluZ3MgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgc2hhcmVkVFNDb21waWxhdGlvblN0YXRlLm1hcmtBc1JlYWR5KCk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vbkxvYWQoeyBmaWx0ZXI6IC9cXC5bY21dP1tqdF1zeD8kLyB9LCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gcGx1Z2luT3B0aW9ucy5maWxlUmVwbGFjZW1lbnRzPy5bYXJncy5wYXRoXSA/PyBhcmdzLnBhdGg7XG5cbiAgICAgICAgLy8gU2tpcCBUUyBsb2FkIGF0dGVtcHQgaWYgSlMgVHlwZVNjcmlwdCBjb21waWxhdGlvbiBub3QgZW5hYmxlZCBhbmQgZmlsZSBpcyBKU1xuICAgICAgICBpZiAoc2hvdWxkVHNJZ25vcmVKcyAmJiAvXFwuW2NtXT9qcyQvLnRlc3QocmVxdWVzdCkpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGZpbGVuYW1lIGlzIGN1cnJlbnRseSB1c2VkIGFzIGEgY2FjaGUga2V5LiBTaW5jZSB0aGUgY2FjaGUgaXMgbWVtb3J5IG9ubHksXG4gICAgICAgIC8vIHRoZSBvcHRpb25zIGNhbm5vdCBjaGFuZ2UgYW5kIGRvIG5vdCBuZWVkIHRvIGJlIHJlcHJlc2VudGVkIGluIHRoZSBrZXkuIElmIHRoZVxuICAgICAgICAvLyBjYWNoZSBpcyBsYXRlciBzdG9yZWQgdG8gZGlzaywgdGhlbiB0aGUgb3B0aW9ucyB0aGF0IGFmZmVjdCB0cmFuc2Zvcm0gb3V0cHV0XG4gICAgICAgIC8vIHdvdWxkIG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIGtleSBhcyB3ZWxsIGFzIGEgY2hlY2sgZm9yIGFueSBjaGFuZ2Ugb2YgY29udGVudC5cbiAgICAgICAgbGV0IGNvbnRlbnRzID0gdHlwZVNjcmlwdEZpbGVDYWNoZS5nZXQocGF0aFRvRmlsZVVSTChyZXF1ZXN0KS5ocmVmKTtcblxuICAgICAgICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIE5vIFRTIHJlc3VsdCBpbmRpY2F0ZXMgdGhlIGZpbGUgaXMgbm90IHBhcnQgb2YgdGhlIFR5cGVTY3JpcHQgcHJvZ3JhbS5cbiAgICAgICAgICAvLyBJZiBhbGxvd0pzIGlzIGVuYWJsZWQgYW5kIHRoZSBmaWxlIGlzIEpTIHRoZW4gZGVmZXIgdG8gdGhlIG5leHQgbG9hZCBob29rLlxuICAgICAgICAgIGlmICghc2hvdWxkVHNJZ25vcmVKcyAmJiAvXFwuW2NtXT9qcyQvLnRlc3QocmVxdWVzdCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIHJldHVybiBhbiBlcnJvclxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlcnJvcnM6IFtcbiAgICAgICAgICAgICAgY3JlYXRlTWlzc2luZ0ZpbGVFcnJvcihyZXF1ZXN0LCBhcmdzLnBhdGgsIGJ1aWxkLmluaXRpYWxPcHRpb25zLmFic1dvcmtpbmdEaXIgPz8gJycpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb250ZW50cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvLyBBIHN0cmluZyBpbmRpY2F0ZXMgdW50cmFuc2Zvcm1lZCBvdXRwdXQgZnJvbSB0aGUgVFMvTkcgY29tcGlsZXJcbiAgICAgICAgICBjb250ZW50cyA9IGF3YWl0IGphdmFzY3JpcHRUcmFuc2Zvcm1lci50cmFuc2Zvcm1EYXRhKFxuICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgIGNvbnRlbnRzLFxuICAgICAgICAgICAgdHJ1ZSAvKiBza2lwTGlua2VyICovLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBTdG9yZSBhcyB0aGUgcmV0dXJuZWQgVWludDhBcnJheSB0byBhbGxvdyBjYWNoaW5nIHRoZSBmdWxseSB0cmFuc2Zvcm1lZCBjb2RlXG4gICAgICAgICAgdHlwZVNjcmlwdEZpbGVDYWNoZS5zZXQocGF0aFRvRmlsZVVSTChyZXF1ZXN0KS5ocmVmLCBjb250ZW50cyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnRzLFxuICAgICAgICAgIGxvYWRlcjogJ2pzJyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vbkxvYWQoeyBmaWx0ZXI6IC9cXC5bY21dP2pzJC8gfSwgKGFyZ3MpID0+XG4gICAgICAgIHByb2ZpbGVBc3luYyhcbiAgICAgICAgICAnTkdfRU1JVF9KUyonLFxuICAgICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIC8vIFRoZSBmaWxlbmFtZSBpcyBjdXJyZW50bHkgdXNlZCBhcyBhIGNhY2hlIGtleS4gU2luY2UgdGhlIGNhY2hlIGlzIG1lbW9yeSBvbmx5LFxuICAgICAgICAgICAgLy8gdGhlIG9wdGlvbnMgY2Fubm90IGNoYW5nZSBhbmQgZG8gbm90IG5lZWQgdG8gYmUgcmVwcmVzZW50ZWQgaW4gdGhlIGtleS4gSWYgdGhlXG4gICAgICAgICAgICAvLyBjYWNoZSBpcyBsYXRlciBzdG9yZWQgdG8gZGlzaywgdGhlbiB0aGUgb3B0aW9ucyB0aGF0IGFmZmVjdCB0cmFuc2Zvcm0gb3V0cHV0XG4gICAgICAgICAgICAvLyB3b3VsZCBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSBrZXkgYXMgd2VsbCBhcyBhIGNoZWNrIGZvciBhbnkgY2hhbmdlIG9mIGNvbnRlbnQuXG4gICAgICAgICAgICBsZXQgY29udGVudHMgPSBwbHVnaW5PcHRpb25zLnNvdXJjZUZpbGVDYWNoZT8uYmFiZWxGaWxlQ2FjaGUuZ2V0KGFyZ3MucGF0aCk7XG4gICAgICAgICAgICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjb250ZW50cyA9IGF3YWl0IGphdmFzY3JpcHRUcmFuc2Zvcm1lci50cmFuc2Zvcm1GaWxlKGFyZ3MucGF0aCwgcGx1Z2luT3B0aW9ucy5qaXQpO1xuICAgICAgICAgICAgICBwbHVnaW5PcHRpb25zLnNvdXJjZUZpbGVDYWNoZT8uYmFiZWxGaWxlQ2FjaGUuc2V0KGFyZ3MucGF0aCwgY29udGVudHMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBjb250ZW50cyxcbiAgICAgICAgICAgICAgbG9hZGVyOiAnanMnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICAvLyBTZXR1cCBidW5kbGluZyBvZiBjb21wb25lbnQgdGVtcGxhdGVzIGFuZCBzdHlsZXNoZWV0cyB3aGVuIGluIEpJVCBtb2RlXG4gICAgICBpZiAocGx1Z2luT3B0aW9ucy5qaXQpIHtcbiAgICAgICAgc2V0dXBKaXRQbHVnaW5DYWxsYmFja3MoXG4gICAgICAgICAgYnVpbGQsXG4gICAgICAgICAgc3R5bGVzaGVldEJ1bmRsZXIsXG4gICAgICAgICAgYWRkaXRpb25hbFJlc3VsdHMsXG4gICAgICAgICAgc3R5bGVPcHRpb25zLmlubGluZVN0eWxlTGFuZ3VhZ2UsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGJ1aWxkLm9uRW5kKChyZXN1bHQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCB7IG91dHB1dEZpbGVzLCBtZXRhZmlsZSB9IG9mIGFkZGl0aW9uYWxSZXN1bHRzLnZhbHVlcygpKSB7XG4gICAgICAgICAgLy8gQWRkIGFueSBhZGRpdGlvbmFsIG91dHB1dCBmaWxlcyB0byB0aGUgbWFpbiBvdXRwdXQgZmlsZXNcbiAgICAgICAgICBpZiAob3V0cHV0RmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmVzdWx0Lm91dHB1dEZpbGVzPy5wdXNoKC4uLm91dHB1dEZpbGVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDb21iaW5lIGFkZGl0aW9uYWwgbWV0YWZpbGVzIHdpdGggbWFpbiBtZXRhZmlsZVxuICAgICAgICAgIGlmIChyZXN1bHQubWV0YWZpbGUgJiYgbWV0YWZpbGUpIHtcbiAgICAgICAgICAgIHJlc3VsdC5tZXRhZmlsZS5pbnB1dHMgPSB7IC4uLnJlc3VsdC5tZXRhZmlsZS5pbnB1dHMsIC4uLm1ldGFmaWxlLmlucHV0cyB9O1xuICAgICAgICAgICAgcmVzdWx0Lm1ldGFmaWxlLm91dHB1dHMgPSB7IC4uLnJlc3VsdC5tZXRhZmlsZS5vdXRwdXRzLCAuLi5tZXRhZmlsZS5vdXRwdXRzIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbG9nQ3VtdWxhdGl2ZUR1cmF0aW9ucygpO1xuICAgICAgfSk7XG5cbiAgICAgIGJ1aWxkLm9uRGlzcG9zZSgoKSA9PiB7XG4gICAgICAgIHNoYXJlZFRTQ29tcGlsYXRpb25TdGF0ZT8uZGlzcG9zZSgpO1xuICAgICAgICB2b2lkIHN0eWxlc2hlZXRCdW5kbGVyLmRpc3Bvc2UoKTtcbiAgICAgICAgdm9pZCBjb21waWxhdGlvbi5jbG9zZT8uKCk7XG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBidW5kbGVXZWJXb3JrZXIoXG4gIGJ1aWxkOiBQbHVnaW5CdWlsZCxcbiAgcGx1Z2luT3B0aW9uczogQ29tcGlsZXJQbHVnaW5PcHRpb25zLFxuICB3b3JrZXJGaWxlOiBzdHJpbmcsXG4pIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYnVpbGQuZXNidWlsZC5idWlsZFN5bmMoe1xuICAgICAgcGxhdGZvcm06ICdicm93c2VyJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIG1ldGFmaWxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIG1haW5GaWVsZHM6IFsnZXMyMDIwJywgJ2VzMjAxNScsICdicm93c2VyJywgJ21vZHVsZScsICdtYWluJ10sXG4gICAgICBsb2dMZXZlbDogJ3NpbGVudCcsXG4gICAgICBzb3VyY2VtYXA6IHBsdWdpbk9wdGlvbnMuc291cmNlbWFwLFxuICAgICAgZW50cnlOYW1lczogJ3dvcmtlci1baGFzaF0nLFxuICAgICAgZW50cnlQb2ludHM6IFt3b3JrZXJGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IGJ1aWxkLmluaXRpYWxPcHRpb25zLmFic1dvcmtpbmdEaXIsXG4gICAgICBvdXRkaXI6IGJ1aWxkLmluaXRpYWxPcHRpb25zLm91dGRpcixcbiAgICAgIG1pbmlmeUlkZW50aWZpZXJzOiBidWlsZC5pbml0aWFsT3B0aW9ucy5taW5pZnlJZGVudGlmaWVycyxcbiAgICAgIG1pbmlmeVN5bnRheDogYnVpbGQuaW5pdGlhbE9wdGlvbnMubWluaWZ5U3ludGF4LFxuICAgICAgbWluaWZ5V2hpdGVzcGFjZTogYnVpbGQuaW5pdGlhbE9wdGlvbnMubWluaWZ5V2hpdGVzcGFjZSxcbiAgICAgIHRhcmdldDogYnVpbGQuaW5pdGlhbE9wdGlvbnMudGFyZ2V0LFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciAmJiB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmICdlcnJvcnMnIGluIGVycm9yICYmICd3YXJuaW5ncycgaW4gZXJyb3IpIHtcbiAgICAgIHJldHVybiBlcnJvciBhcyBCdWlsZEZhaWx1cmU7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1pc3NpbmdGaWxlRXJyb3IocmVxdWVzdDogc3RyaW5nLCBvcmlnaW5hbDogc3RyaW5nLCByb290OiBzdHJpbmcpOiBQYXJ0aWFsTWVzc2FnZSB7XG4gIGNvbnN0IGVycm9yID0ge1xuICAgIHRleHQ6IGBGaWxlICcke3BhdGgucmVsYXRpdmUocm9vdCwgcmVxdWVzdCl9JyBpcyBtaXNzaW5nIGZyb20gdGhlIFR5cGVTY3JpcHQgY29tcGlsYXRpb24uYCxcbiAgICBub3RlczogW1xuICAgICAge1xuICAgICAgICB0ZXh0OiBgRW5zdXJlIHRoZSBmaWxlIGlzIHBhcnQgb2YgdGhlIFR5cGVTY3JpcHQgcHJvZ3JhbSB2aWEgdGhlICdmaWxlcycgb3IgJ2luY2x1ZGUnIHByb3BlcnR5LmAsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgaWYgKHJlcXVlc3QgIT09IG9yaWdpbmFsKSB7XG4gICAgZXJyb3Iubm90ZXMucHVzaCh7XG4gICAgICB0ZXh0OiBgRmlsZSBpcyByZXF1ZXN0ZWQgZnJvbSBhIGZpbGUgcmVwbGFjZW1lbnQgb2YgJyR7cGF0aC5yZWxhdGl2ZShyb290LCBvcmlnaW5hbCl9Jy5gLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGVycm9yO1xufVxuIl19
@@ -6,7 +6,6 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  import { OutputFile } from 'esbuild';
9
- import { LoadResultCache } from '../load-result-cache';
10
9
  import { BundleStylesheetOptions } from '../stylesheets/bundle-options';
11
10
  /**
12
11
  * Bundles component stylesheets. A stylesheet can be either an inline stylesheet that
@@ -17,13 +16,12 @@ export declare class ComponentStylesheetBundler {
17
16
  #private;
18
17
  private readonly options;
19
18
  private readonly incremental;
20
- private readonly cache?;
21
19
  /**
22
20
  *
23
21
  * @param options An object containing the stylesheet bundling options.
24
22
  * @param cache A load result cache to use when bundling.
25
23
  */
26
- constructor(options: BundleStylesheetOptions, incremental: boolean, cache?: LoadResultCache | undefined);
24
+ constructor(options: BundleStylesheetOptions, incremental: boolean);
27
25
  bundleFile(entry: string): Promise<{
28
26
  errors: import("esbuild").Message[] | undefined;
29
27
  warnings: import("esbuild").Message[];
@@ -44,5 +42,6 @@ export declare class ComponentStylesheetBundler {
44
42
  metafile: import("esbuild").Metafile | undefined;
45
43
  referencedFiles: Set<string> | undefined;
46
44
  }>;
45
+ invalidate(files: Iterable<string>): void;
47
46
  dispose(): Promise<void>;
48
47
  }
@@ -33,7 +33,6 @@ class BundlerContextCache extends Map {
33
33
  class ComponentStylesheetBundler {
34
34
  options;
35
35
  incremental;
36
- cache;
37
36
  #fileContexts = new BundlerContextCache();
38
37
  #inlineContexts = new BundlerContextCache();
39
38
  /**
@@ -41,16 +40,17 @@ class ComponentStylesheetBundler {
41
40
  * @param options An object containing the stylesheet bundling options.
42
41
  * @param cache A load result cache to use when bundling.
43
42
  */
44
- constructor(options, incremental, cache) {
43
+ constructor(options, incremental) {
45
44
  this.options = options;
46
45
  this.incremental = incremental;
47
- this.cache = cache;
48
46
  }
49
47
  async bundleFile(entry) {
50
48
  const bundlerContext = this.#fileContexts.getOrCreate(entry, () => {
51
- const buildOptions = (0, bundle_options_1.createStylesheetBundleOptions)(this.options, this.cache);
52
- buildOptions.entryPoints = [entry];
53
- return new bundler_context_1.BundlerContext(this.options.workspaceRoot, this.incremental, buildOptions);
49
+ return new bundler_context_1.BundlerContext(this.options.workspaceRoot, this.incremental, (loadCache) => {
50
+ const buildOptions = (0, bundle_options_1.createStylesheetBundleOptions)(this.options, loadCache);
51
+ buildOptions.entryPoints = [entry];
52
+ return buildOptions;
53
+ });
54
54
  });
55
55
  return extractResult(await bundlerContext.bundle(), bundlerContext.watchFiles);
56
56
  }
@@ -62,36 +62,50 @@ class ComponentStylesheetBundler {
62
62
  const entry = [language, id, filename].join(';');
63
63
  const bundlerContext = this.#inlineContexts.getOrCreate(entry, () => {
64
64
  const namespace = 'angular:styles/component';
65
- const buildOptions = (0, bundle_options_1.createStylesheetBundleOptions)(this.options, this.cache, {
66
- [entry]: data,
67
- });
68
- buildOptions.entryPoints = [`${namespace};${entry}`];
69
- buildOptions.plugins.push({
70
- name: 'angular-component-styles',
71
- setup(build) {
72
- build.onResolve({ filter: /^angular:styles\/component;/ }, (args) => {
73
- if (args.kind !== 'entry-point') {
74
- return null;
75
- }
76
- return {
77
- path: entry,
78
- namespace,
79
- };
80
- });
81
- build.onLoad({ filter: /^css;/, namespace }, async () => {
82
- return {
83
- contents: data,
84
- loader: 'css',
85
- resolveDir: node_path_1.default.dirname(filename),
86
- };
87
- });
88
- },
65
+ return new bundler_context_1.BundlerContext(this.options.workspaceRoot, this.incremental, (loadCache) => {
66
+ const buildOptions = (0, bundle_options_1.createStylesheetBundleOptions)(this.options, loadCache, {
67
+ [entry]: data,
68
+ });
69
+ buildOptions.entryPoints = [`${namespace};${entry}`];
70
+ buildOptions.plugins.push({
71
+ name: 'angular-component-styles',
72
+ setup(build) {
73
+ build.onResolve({ filter: /^angular:styles\/component;/ }, (args) => {
74
+ if (args.kind !== 'entry-point') {
75
+ return null;
76
+ }
77
+ return {
78
+ path: entry,
79
+ namespace,
80
+ };
81
+ });
82
+ build.onLoad({ filter: /^css;/, namespace }, async () => {
83
+ return {
84
+ contents: data,
85
+ loader: 'css',
86
+ resolveDir: node_path_1.default.dirname(filename),
87
+ };
88
+ });
89
+ },
90
+ });
91
+ return buildOptions;
89
92
  });
90
- return new bundler_context_1.BundlerContext(this.options.workspaceRoot, this.incremental, buildOptions);
91
93
  });
92
94
  // Extract the result of the bundling from the output files
93
95
  return extractResult(await bundlerContext.bundle(), bundlerContext.watchFiles);
94
96
  }
97
+ invalidate(files) {
98
+ if (!this.incremental) {
99
+ return;
100
+ }
101
+ const normalizedFiles = [...files].map(node_path_1.default.normalize);
102
+ for (const bundler of this.#fileContexts.values()) {
103
+ bundler.invalidate(normalizedFiles);
104
+ }
105
+ for (const bundler of this.#inlineContexts.values()) {
106
+ bundler.invalidate(normalizedFiles);
107
+ }
108
+ }
95
109
  async dispose() {
96
110
  const contexts = [...this.#fileContexts.values(), ...this.#inlineContexts.values()];
97
111
  this.#fileContexts.clear();
@@ -146,4 +160,3 @@ function extractResult(result, referencedFiles) {
146
160
  referencedFiles,
147
161
  };
148
162
  }
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXN0eWxlc2hlZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdG9vbHMvZXNidWlsZC9hbmd1bGFyL2NvbXBvbmVudC1zdHlsZXNoZWV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7QUFHSCw2Q0FBeUM7QUFDekMsMERBQTZCO0FBQzdCLHdEQUE4RjtBQUU5RixrRUFHdUM7QUFFdkMsTUFBTSxtQkFBb0IsU0FBUSxHQUEyQjtJQUMzRCxXQUFXLENBQUMsR0FBVyxFQUFFLE9BQTZCO1FBQ3BELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFMUIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLEtBQUssR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN0QjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQWEsMEJBQTBCO0lBVWxCO0lBQ0E7SUFDQTtJQVhWLGFBQWEsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7SUFDMUMsZUFBZSxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztJQUVyRDs7OztPQUlHO0lBQ0gsWUFDbUIsT0FBZ0MsRUFDaEMsV0FBb0IsRUFDcEIsS0FBdUI7UUFGdkIsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQVM7UUFDcEIsVUFBSyxHQUFMLEtBQUssQ0FBa0I7SUFDdkMsQ0FBQztJQUVKLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBYTtRQUM1QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFD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QUFRLHFEQUFxRCxDQUNoRyxDQUFDO2FBQ0g7U0FDRjtLQUNGO0lBRUQsSUFBSSxRQUFRLENBQUM7SUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNsQixRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUMzQiw0RkFBNEY7UUFDNUYsNEZBQTRGO1FBQzVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2pELE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUN6Qiw4REFBOEQ7WUFDN0QsTUFBYyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztLQUNKO0lBRUQsT0FBTztRQUNMLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNyQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDekIsUUFBUTtRQUNSLEdBQUc7UUFDSCxJQUFJLEVBQUUsVUFBVTtRQUNoQixhQUFhO1FBQ2IsUUFBUTtRQUNSLGVBQWU7S0FDaEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgT3V0cHV0RmlsZSB9IGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBCdWlsZE91dHB1dEZpbGVUeXBlLCBCdW5kbGVDb250ZXh0UmVzdWx0LCBCdW5kbGVyQ29udGV4dCB9IGZyb20gJy4uL2J1bmRsZXItY29udGV4dCc7XG5pbXBvcnQgeyBMb2FkUmVzdWx0Q2FjaGUgfSBmcm9tICcuLi9sb2FkLXJlc3VsdC1jYWNoZSc7XG5pbXBvcnQge1xuICBCdW5kbGVTdHlsZXNoZWV0T3B0aW9ucyxcbiAgY3JlYXRlU3R5bGVzaGVldEJ1bmRsZU9wdGlvbnMsXG59IGZyb20gJy4uL3N0eWxlc2hlZXRzL2J1bmRsZS1vcHRpb25zJztcblxuY2xhc3MgQnVuZGxlckNvbnRleHRDYWNoZSBleHRlbmRzIE1hcDxzdHJpbmcsIEJ1bmRsZXJDb250ZXh0PiB7XG4gIGdldE9yQ3JlYXRlKGtleTogc3RyaW5nLCBjcmVhdG9yOiAoKSA9PiBCdW5kbGVyQ29udGV4dCk6IEJ1bmRsZXJDb250ZXh0IHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmdldChrZXkpO1xuXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbHVlID0gY3JlYXRvcigpO1xuICAgICAgdGhpcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQnVuZGxlcyBjb21wb25lbnQgc3R5bGVzaGVldHMuIEEgc3R5bGVzaGVldCBjYW4gYmUgZWl0aGVyIGFuIGlubGluZSBzdHlsZXNoZWV0IHRoYXRcbiAqIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIENvbXBvbmVudCdzIG1ldGFkYXRhIGRlZmluaXRpb24gb3IgYW4gZXh0ZXJuYWwgZmlsZSByZWZlcmVuY2VkXG4gKiBmcm9tIHRoZSBDb21wb25lbnQncyBtZXRhZGF0YSBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50U3R5bGVzaGVldEJ1bmRsZXIge1xuICByZWFkb25seSAjZmlsZUNvbnRleHRzID0gbmV3IEJ1bmRsZXJDb250ZXh0Q2FjaGUoKTtcbiAgcmVhZG9ubHkgI2lubGluZUNvbnRleHRzID0gbmV3IEJ1bmRsZXJDb250ZXh0Q2FjaGUoKTtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHN0eWxlc2hlZXQgYnVuZGxpbmcgb3B0aW9ucy5cbiAgICogQHBhcmFtIGNhY2hlIEEgbG9hZCByZXN1bHQgY2FjaGUgdG8gdXNlIHdoZW4gYnVuZGxpbmcuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEJ1bmRsZVN0eWxlc2hlZXRPcHRpb25zLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5jcmVtZW50YWw6IGJvb2xlYW4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWNoZT86IExvYWRSZXN1bHRDYWNoZSxcbiAgKSB7fVxuXG4gIGFzeW5jIGJ1bmRsZUZpbGUoZW50cnk6IHN0cmluZykge1xuICAgIGNvbnN0IGJ1bmRsZXJDb250ZXh0ID0gdGhpcy4jZmlsZUNvbnRleHRzLmdldE9yQ3JlYXRlKGVudHJ5LCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZE9wdGlvbnMgPSBjcmVhdGVTdHlsZXNoZWV0QnVuZGxlT3B0aW9ucyh0aGlzLm9wdGlvbnMsIHRoaXMuY2FjaGUpO1xuICAgICAgYnVpbGRPcHRpb25zLmVudHJ5UG9pbnRzID0gW2VudHJ5XTtcblxuICAgICAgcmV0dXJuIG5ldyBCdW5kbGVyQ29udGV4dCh0aGlzLm9wdGlvbnMud29ya3NwYWNlUm9vdCwgdGhpcy5pbmNyZW1lbnRhbCwgYnVpbGRPcHRpb25zKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBleHRyYWN0UmVzdWx0KGF3YWl0IGJ1bmRsZXJDb250ZXh0LmJ1bmRsZSgpLCBidW5kbGVyQ29udGV4dC53YXRjaEZpbGVzKTtcbiAgfVxuXG4gIGFzeW5jIGJ1bmRsZUlubGluZShkYXRhOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmcpIHtcbiAgICAvLyBVc2UgYSBoYXNoIG9mIHRoZSBpbmxpbmUgc3R5bGVzaGVldCBjb250ZW50IHRvIGVuc3VyZSBhIGNvbnNpc3RlbnQgaWRlbnRpZmllci4gRXh0ZXJuYWwgc3R5bGVzaGVldHMgd2lsbCByZXNvbHZlXG4gICAgLy8gdG8gdGhlIGFjdHVhbCBzdHlsZXNoZWV0IGZpbGUgcGF0aC5cbiAgICAvLyBUT0RPOiBDb25zaWRlciB4eGhhc2ggaW5zdGVhZCBmb3IgaGFzaGluZ1xuICAgIGNvbnN0IGlkID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGRhdGEpLmRpZ2VzdCgnaGV4Jyk7XG4gICAgY29uc3QgZW50cnkgPSBbbGFuZ3VhZ2UsIGlkLCBmaWxlbmFtZV0uam9pbignOycpO1xuXG4gICAgY29uc3QgYnVuZGxlckNvbnRleHQgPSB0aGlzLiNpbmxpbmVDb250ZXh0cy5nZXRPckNyZWF0ZShlbnRyeSwgKCkgPT4ge1xuICAgICAgY29uc3QgbmFtZXNwYWNlID0gJ2FuZ3VsYXI6c3R5bGVzL2NvbXBvbmVudCc7XG4gICAgICBjb25zdCBidWlsZE9wdGlvbnMgPSBjcmVhdGVTdHlsZXNoZWV0QnVuZGxlT3B0aW9ucyh0aGlzLm9wdGlvbnMsIHRoaXMuY2FjaGUsIHtcbiAgICAgICAgW2VudHJ5XTogZGF0YSxcbiAgICAgIH0pO1xuICAgICAgYnVpbGRPcHRpb25zLmVudHJ5UG9pbnRzID0gW2Ake25hbWVzcGFjZX07JHtlbnRyeX1gXTtcbiAgICAgIGJ1aWxkT3B0aW9ucy5wbHVnaW5zLnB1c2goe1xuICAgICAgICBuYW1lOiAnYW5ndWxhci1jb21wb25lbnQtc3R5bGVzJyxcbiAgICAgICAgc2V0dXAoYnVpbGQpIHtcbiAgICAgICAgICBidWlsZC5vblJlc29sdmUoeyBmaWx0ZXI6IC9eYW5ndWxhcjpzdHlsZXNcXC9jb21wb25lbnQ7LyB9LCAoYXJncykgPT4ge1xuICAgICAgICAgICAgaWYgKGFyZ3Mua2luZCAhPT0gJ2VudHJ5LXBvaW50Jykge1xuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcGF0aDogZW50cnksXG4gICAgICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnVpbGQub25Mb2FkKHsgZmlsdGVyOiAvXmNzczsvLCBuYW1lc3BhY2UgfSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY29udGVudHM6IGRhdGEsXG4gICAgICAgICAgICAgIGxvYWRlcjogJ2NzcycsXG4gICAgICAgICAgICAgIHJlc29sdmVEaXI6IHBhdGguZGlybmFtZShmaWxlbmFtZSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBuZXcgQnVuZGxlckNvbnRleHQodGhpcy5vcHRpb25zLndvcmtzcGFjZVJvb3QsIHRoaXMuaW5jcmVtZW50YWwsIGJ1aWxkT3B0aW9ucyk7XG4gICAgfSk7XG5cbiAgICAvLyBFeHRyYWN0IHRoZSByZXN1bHQgb2YgdGhlIGJ1bmRsaW5nIGZyb20gdGhlIG91dHB1dCBmaWxlc1xuICAgIHJldHVybiBleHRyYWN0UmVzdWx0KGF3YWl0IGJ1bmRsZXJDb250ZXh0LmJ1bmRsZSgpLCBidW5kbGVyQ29udGV4dC53YXRjaEZpbGVzKTtcbiAgfVxuXG4gIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29udGV4dHMgPSBbLi4udGhpcy4jZmlsZUNvbnRleHRzLnZhbHVlcygpLCAuLi50aGlzLiNpbmxpbmVDb250ZXh0cy52YWx1ZXMoKV07XG4gICAgdGhpcy4jZmlsZUNvbnRleHRzLmNsZWFyKCk7XG4gICAgdGhpcy4jaW5saW5lQ29udGV4dHMuY2xlYXIoKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChjb250ZXh0cy5tYXAoKGNvbnRleHQpID0+IGNvbnRleHQuZGlzcG9zZSgpKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdFJlc3VsdChyZXN1bHQ6IEJ1bmRsZUNvbnRleHRSZXN1bHQsIHJlZmVyZW5jZWRGaWxlcz86IFNldDxzdHJpbmc+KSB7XG4gIGxldCBjb250ZW50cyA9ICcnO1xuICBsZXQgbWFwO1xuICBsZXQgb3V0cHV0UGF0aDtcbiAgY29uc3QgcmVzb3VyY2VGaWxlczogT3V0cHV0RmlsZVtdID0gW107XG4gIGlmICghcmVzdWx0LmVycm9ycykge1xuICAgIGZvciAoY29uc3Qgb3V0cHV0RmlsZSBvZiByZXN1bHQub3V0cHV0RmlsZXMpIHtcbiAgICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShvdXRwdXRGaWxlLnBhdGgpO1xuICAgICAgaWYgKG91dHB1dEZpbGUudHlwZSA9PT0gQnVpbGRPdXRwdXRGaWxlVHlwZS5NZWRpYSkge1xuICAgICAgICAvLyBUaGUgb3V0cHV0IGZpbGVzIGNvdWxkIGFsc28gY29udGFpbiByZXNvdXJjZXMgKGltYWdlcy9mb250cy9ldGMuKSB0aGF0IHdlcmUgcmVmZXJlbmNlZFxuICAgICAgICByZXNvdXJjZUZpbGVzLnB1c2gob3V0cHV0RmlsZSk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcuY3NzJykpIHtcbiAgICAgICAgb3V0cHV0UGF0aCA9IG91dHB1dEZpbGUucGF0aDtcbiAgICAgICAgY29udGVudHMgPSBvdXRwdXRGaWxlLnRleHQ7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcuY3NzLm1hcCcpKSB7XG4gICAgICAgIG1hcCA9IG91dHB1dEZpbGUudGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVW5leHBlY3RlZCBub24gQ1NTL01lZGlhIGZpbGUgXCIke2ZpbGVuYW1lfVwiIG91dHB1dHRlZCBkdXJpbmcgY29tcG9uZW50IHN0eWxlc2hlZXQgcHJvY2Vzc2luZy5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBtZXRhZmlsZTtcbiAgaWYgKCFyZXN1bHQuZXJyb3JzKSB7XG4gICAgbWV0YWZpbGUgPSByZXN1bHQubWV0YWZpbGU7XG4gICAgLy8gUmVtb3ZlIGVudHJ5UG9pbnQgZmllbGRzIGZyb20gb3V0cHV0cyB0byBwcmV2ZW50IHRoZSBpbnRlcm5hbCBjb21wb25lbnQgc3R5bGVzIGZyb20gYmVpbmdcbiAgICAvLyB0cmVhdGVkIGFzIGluaXRpYWwgZmlsZXMuIEFsc28gbWFyayB0aGUgZW50cnkgYXMgYSBjb21wb25lbnQgcmVzb3VyY2UgZm9yIHN0YXQgcmVwb3J0aW5nLlxuICAgIE9iamVjdC52YWx1ZXMobWV0YWZpbGUub3V0cHV0cykuZm9yRWFjaCgob3V0cHV0KSA9PiB7XG4gICAgICBkZWxldGUgb3V0cHV0LmVudHJ5UG9pbnQ7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgKG91dHB1dCBhcyBhbnkpWyduZy1jb21wb25lbnQnXSA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVycm9yczogcmVzdWx0LmVycm9ycyxcbiAgICB3YXJuaW5nczogcmVzdWx0Lndhcm5pbmdzLFxuICAgIGNvbnRlbnRzLFxuICAgIG1hcCxcbiAgICBwYXRoOiBvdXRwdXRQYXRoLFxuICAgIHJlc291cmNlRmlsZXMsXG4gICAgbWV0YWZpbGUsXG4gICAgcmVmZXJlbmNlZEZpbGVzLFxuICB9O1xufVxuIl19
@@ -6,10 +6,10 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  import type { PartialMessage } from 'esbuild';
9
- import { Diagnostic } from 'typescript';
9
+ import type ts from 'typescript';
10
10
  /**
11
11
  * Converts a TypeScript Diagnostic message into an esbuild compatible message object.
12
12
  * @param diagnostic The TypeScript diagnostic to convert.
13
13
  * @returns An esbuild diagnostic message as a PartialMessage object
14
14
  */
15
- export declare function convertTypeScriptDiagnostic(diagnostic: Diagnostic): PartialMessage;
15
+ export declare function convertTypeScriptDiagnostic(typescript: typeof ts, diagnostic: ts.Diagnostic): PartialMessage;
@@ -9,7 +9,6 @@
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.convertTypeScriptDiagnostic = void 0;
11
11
  const node_os_1 = require("node:os");
12
- const typescript_1 = require("typescript");
13
12
  /**
14
13
  * Converts TypeScript Diagnostic related information into an esbuild compatible note object.
15
14
  * Related information is a subset of a full TypeScript Diagnostic and also used for diagnostic
@@ -17,9 +16,9 @@ const typescript_1 = require("typescript");
17
16
  * @param info The TypeScript diagnostic relative information to convert.
18
17
  * @returns An esbuild diagnostic message as a PartialMessage object
19
18
  */
20
- function convertTypeScriptDiagnosticInfo(info, textPrefix) {
19
+ function convertTypeScriptDiagnosticInfo(typescript, info, textPrefix) {
21
20
  const newLine = (0, node_os_1.platform)() === 'win32' ? '\r\n' : '\n';
22
- let text = (0, typescript_1.flattenDiagnosticMessageText)(info.messageText, newLine);
21
+ let text = typescript.flattenDiagnosticMessageText(info.messageText, newLine);
23
22
  if (textPrefix) {
24
23
  text = textPrefix + text;
25
24
  }
@@ -31,17 +30,17 @@ function convertTypeScriptDiagnosticInfo(info, textPrefix) {
31
30
  };
32
31
  // Calculate the line/column location and extract the full line text that has the diagnostic
33
32
  if (info.start) {
34
- const { line, character } = (0, typescript_1.getLineAndCharacterOfPosition)(info.file, info.start);
33
+ const { line, character } = typescript.getLineAndCharacterOfPosition(info.file, info.start);
35
34
  note.location.line = line + 1;
36
35
  note.location.column = character;
37
36
  // The start position for the slice is the first character of the error line
38
- const lineStartPosition = (0, typescript_1.getPositionOfLineAndCharacter)(info.file, line, 0);
37
+ const lineStartPosition = typescript.getPositionOfLineAndCharacter(info.file, line, 0);
39
38
  // The end position for the slice is the first character of the next line or the length of
40
39
  // the entire file if the line is the last line of the file (getPositionOfLineAndCharacter
41
40
  // will error if a nonexistent line is passed).
42
- const { line: lastLineOfFile } = (0, typescript_1.getLineAndCharacterOfPosition)(info.file, info.file.text.length - 1);
41
+ const { line: lastLineOfFile } = typescript.getLineAndCharacterOfPosition(info.file, info.file.text.length - 1);
43
42
  const lineEndPosition = line < lastLineOfFile
44
- ? (0, typescript_1.getPositionOfLineAndCharacter)(info.file, line + 1, 0)
43
+ ? typescript.getPositionOfLineAndCharacter(info.file, line + 1, 0)
45
44
  : info.file.text.length;
46
45
  note.location.lineText = info.file.text.slice(lineStartPosition, lineEndPosition).trimEnd();
47
46
  }
@@ -53,7 +52,7 @@ function convertTypeScriptDiagnosticInfo(info, textPrefix) {
53
52
  * @param diagnostic The TypeScript diagnostic to convert.
54
53
  * @returns An esbuild diagnostic message as a PartialMessage object
55
54
  */
56
- function convertTypeScriptDiagnostic(diagnostic) {
55
+ function convertTypeScriptDiagnostic(typescript, diagnostic) {
57
56
  let codePrefix = 'TS';
58
57
  let code = `${diagnostic.code}`;
59
58
  if (diagnostic.source === 'ngtsc') {
@@ -61,11 +60,10 @@ function convertTypeScriptDiagnostic(diagnostic) {
61
60
  // Remove `-99` Angular prefix from diagnostic code
62
61
  code = code.slice(3);
63
62
  }
64
- const message = convertTypeScriptDiagnosticInfo(diagnostic, `${codePrefix}${code}: `);
63
+ const message = convertTypeScriptDiagnosticInfo(typescript, diagnostic, `${codePrefix}${code}: `);
65
64
  if (diagnostic.relatedInformation?.length) {
66
- message.notes = diagnostic.relatedInformation.map((info) => convertTypeScriptDiagnosticInfo(info));
65
+ message.notes = diagnostic.relatedInformation.map((info) => convertTypeScriptDiagnosticInfo(typescript, info));
67
66
  }
68
67
  return message;
69
68
  }
70
69
  exports.convertTypeScriptDiagnostic = convertTypeScriptDiagnostic;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy9lc2J1aWxkL2FuZ3VsYXIvZGlhZ25vc3RpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBR0gscUNBQW1DO0FBQ25DLDJDQU1vQjtBQUVwQjs7Ozs7O0dBTUc7QUFDSCxTQUFTLCtCQUErQixDQUN0QyxJQUFrQyxFQUNsQyxVQUFtQjtJQUVuQixNQUFNLE9BQU8sR0FBRyxJQUFBLGtCQUFRLEdBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZELElBQUksSUFBSSxHQUFHLElBQUEseUNBQTRCLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRSxJQUFJLFVBQVUsRUFBRTtRQUNkLElBQUksR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDO0tBQzFCO0lBRUQsTUFBTSxJQUFJLEdBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNkLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUM7UUFFRiw0RkFBNEY7UUFDNUYsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLDBDQUE2QixFQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1lBRWpDLDRFQUE0RTtZQUM1RSxNQUFNLGlCQUFpQixHQUFHLElBQUEsMENBQTZCLEVBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFNUUsMEZBQTBGO1lBQzFGLDBGQUEwRjtZQUMxRiwrQ0FBK0M7WUFDL0MsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFBLDBDQUE2QixFQUM1RCxJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQzFCLENBQUM7WUFDRixNQUFNLGVBQWUsR0FDbkIsSUFBSSxHQUFHLGNBQWM7Z0JBQ25CLENBQUMsQ0FBQyxJQUFBLDBDQUE2QixFQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFFNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzdGO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsVUFBc0I7SUFDaEUsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLElBQUksSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUU7UUFDakMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixtREFBbUQ7UUFDbkQsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdEI7SUFFRCxNQUFNLE9BQU8sR0FBbUIsK0JBQStCLENBQzdELFVBQVUsRUFDVixHQUFHLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FDekIsQ0FBQztJQUVGLElBQUksVUFBVSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sRUFBRTtRQUN6QyxPQUFPLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN6RCwrQkFBK0IsQ0FBQyxJQUFJLENBQUMsQ0FDdEMsQ0FBQztLQUNIO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQXJCRCxrRUFxQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQYXJ0aWFsTWVzc2FnZSwgUGFydGlhbE5vdGUgfSBmcm9tICdlc2J1aWxkJztcbmltcG9ydCB7IHBsYXRmb3JtIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQge1xuICBEaWFnbm9zdGljLFxuICBEaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uLFxuICBmbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0LFxuICBnZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbixcbiAgZ2V0UG9zaXRpb25PZkxpbmVBbmRDaGFyYWN0ZXIsXG59IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIENvbnZlcnRzIFR5cGVTY3JpcHQgRGlhZ25vc3RpYyByZWxhdGVkIGluZm9ybWF0aW9uIGludG8gYW4gZXNidWlsZCBjb21wYXRpYmxlIG5vdGUgb2JqZWN0LlxuICogUmVsYXRlZCBpbmZvcm1hdGlvbiBpcyBhIHN1YnNldCBvZiBhIGZ1bGwgVHlwZVNjcmlwdCBEaWFnbm9zdGljIGFuZCBhbHNvIHVzZWQgZm9yIGRpYWdub3N0aWNcbiAqIG5vdGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWFpbiBEaWFnbm9zdGljLlxuICogQHBhcmFtIGluZm8gVGhlIFR5cGVTY3JpcHQgZGlhZ25vc3RpYyByZWxhdGl2ZSBpbmZvcm1hdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQW4gZXNidWlsZCBkaWFnbm9zdGljIG1lc3NhZ2UgYXMgYSBQYXJ0aWFsTWVzc2FnZSBvYmplY3RcbiAqL1xuZnVuY3Rpb24gY29udmVydFR5cGVTY3JpcHREaWFnbm9zdGljSW5mbyhcbiAgaW5mbzogRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbixcbiAgdGV4dFByZWZpeD86IHN0cmluZyxcbik6IFBhcnRpYWxOb3RlIHtcbiAgY29uc3QgbmV3TGluZSA9IHBsYXRmb3JtKCkgPT09ICd3aW4zMicgPyAnXFxyXFxuJyA6ICdcXG4nO1xuICBsZXQgdGV4dCA9IGZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoaW5mby5tZXNzYWdlVGV4dCwgbmV3TGluZSk7XG4gIGlmICh0ZXh0UHJlZml4KSB7XG4gICAgdGV4dCA9IHRleHRQcmVmaXggKyB0ZXh0O1xuICB9XG5cbiAgY29uc3Qgbm90ZTogUGFydGlhbE5vdGUgPSB7IHRleHQgfTtcblxuICBpZiAoaW5mby5maWxlKSB7XG4gICAgbm90ZS5sb2NhdGlvbiA9IHtcbiAgICAgIGZpbGU6IGluZm8uZmlsZS5maWxlTmFtZSxcbiAgICAgIGxlbmd0aDogaW5mby5sZW5ndGgsXG4gICAgfTtcblxuICAgIC8vIENhbGN1bGF0ZSB0aGUgbGluZS9jb2x1bW4gbG9jYXRpb24gYW5kIGV4dHJhY3QgdGhlIGZ1bGwgbGluZSB0ZXh0IHRoYXQgaGFzIHRoZSBkaWFnbm9zdGljXG4gICAgaWYgKGluZm8uc3RhcnQpIHtcbiAgICAgIGNvbnN0IHsgbGluZSwgY2hhcmFjdGVyIH0gPSBnZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihpbmZvLmZpbGUsIGluZm8uc3RhcnQpO1xuICAgICAgbm90ZS5sb2NhdGlvbi5saW5lID0gbGluZSArIDE7XG4gICAgICBub3RlLmxvY2F0aW9uLmNvbHVtbiA9IGNoYXJhY3RlcjtcblxuICAgICAgLy8gVGhlIHN0YXJ0IHBvc2l0aW9uIGZvciB0aGUgc2xpY2UgaXMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgZXJyb3IgbGluZVxuICAgICAgY29uc3QgbGluZVN0YXJ0UG9zaXRpb24gPSBnZXRQb3NpdGlvbk9mTGluZUFuZENoYXJhY3RlcihpbmZvLmZpbGUsIGxpbmUsIDApO1xuXG4gICAgICAvLyBUaGUgZW5kIHBvc2l0aW9uIGZvciB0aGUgc2xpY2UgaXMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgbmV4dCBsaW5lIG9yIHRoZSBsZW5ndGggb2ZcbiAgICAgIC8vIHRoZSBlbnRpcmUgZmlsZSBpZiB0aGUgbGluZSBpcyB0aGUgbGFzdCBsaW5lIG9mIHRoZSBmaWxlIChnZXRQb3NpdGlvbk9mTGluZUFuZENoYXJhY3RlclxuICAgICAgLy8gd2lsbCBlcnJvciBpZiBhIG5vbmV4aXN0ZW50IGxpbmUgaXMgcGFzc2VkKS5cbiAgICAgIGNvbnN0IHsgbGluZTogbGFzdExpbmVPZkZpbGUgfSA9IGdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKFxuICAgICAgICBpbmZvLmZpbGUsXG4gICAgICAgIGluZm8uZmlsZS50ZXh0Lmxlbmd0aCAtIDEsXG4gICAgICApO1xuICAgICAgY29uc3QgbGluZUVuZFBvc2l0aW9uID1cbiAgICAgICAgbGluZSA8IGxhc3RMaW5lT2ZGaWxlXG4gICAgICAgICAgPyBnZXRQb3NpdGlvbk9mTGluZUFuZENoYXJhY3RlcihpbmZvLmZpbGUsIGxpbmUgKyAxLCAwKVxuICAgICAgICAgIDogaW5mby5maWxlLnRleHQubGVuZ3RoO1xuXG4gICAgICBub3RlLmxvY2F0aW9uLmxpbmVUZXh0ID0gaW5mby5maWxlLnRleHQuc2xpY2UobGluZVN0YXJ0UG9zaXRpb24sIGxpbmVFbmRQb3NpdGlvbikudHJpbUVuZCgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub3RlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgVHlwZVNjcmlwdCBEaWFnbm9zdGljIG1lc3NhZ2UgaW50byBhbiBlc2J1aWxkIGNvbXBhdGlibGUgbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0gZGlhZ25vc3RpYyBUaGUgVHlwZVNjcmlwdCBkaWFnbm9zdGljIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBbiBlc2J1aWxkIGRpYWdub3N0aWMgbWVzc2FnZSBhcyBhIFBhcnRpYWxNZXNzYWdlIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFR5cGVTY3JpcHREaWFnbm9zdGljKGRpYWdub3N0aWM6IERpYWdub3N0aWMpOiBQYXJ0aWFsTWVzc2FnZSB7XG4gIGxldCBjb2RlUHJlZml4ID0gJ1RTJztcbiAgbGV0IGNvZGUgPSBgJHtkaWFnbm9zdGljLmNvZGV9YDtcbiAgaWYgKGRpYWdub3N0aWMuc291cmNlID09PSAnbmd0c2MnKSB7XG4gICAgY29kZVByZWZpeCA9ICdORyc7XG4gICAgLy8gUmVtb3ZlIGAtOTlgIEFuZ3VsYXIgcHJlZml4IGZyb20gZGlhZ25vc3RpYyBjb2RlXG4gICAgY29kZSA9IGNvZGUuc2xpY2UoMyk7XG4gIH1cblxuICBjb25zdCBtZXNzYWdlOiBQYXJ0aWFsTWVzc2FnZSA9IGNvbnZlcnRUeXBlU2NyaXB0RGlhZ25vc3RpY0luZm8oXG4gICAgZGlhZ25vc3RpYyxcbiAgICBgJHtjb2RlUHJlZml4fSR7Y29kZX06IGAsXG4gICk7XG5cbiAgaWYgKGRpYWdub3N0aWMucmVsYXRlZEluZm9ybWF0aW9uPy5sZW5ndGgpIHtcbiAgICBtZXNzYWdlLm5vdGVzID0gZGlhZ25vc3RpYy5yZWxhdGVkSW5mb3JtYXRpb24ubWFwKChpbmZvKSA9PlxuICAgICAgY29udmVydFR5cGVTY3JpcHREaWFnbm9zdGljSW5mbyhpbmZvKSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG1lc3NhZ2U7XG59XG4iXX0=
@@ -51,4 +51,3 @@ class FileReferenceTracker {
51
51
  }
52
52
  }
53
53
  exports.FileReferenceTracker = FileReferenceTracker;
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1yZWZlcmVuY2UtdHJhY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3Rvb2xzL2VzYnVpbGQvYW5ndWxhci9maWxlLXJlZmVyZW5jZS10cmFja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILE1BQWEsb0JBQW9CO0lBQy9CLGlCQUFpQixHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO0lBRW5ELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsR0FBRyxDQUFDLGNBQXNCLEVBQUUsZUFBaUM7UUFDM0QsS0FBSyxNQUFNLElBQUksSUFBSSxlQUFlLEVBQUU7WUFDbEMsSUFBSSxJQUFJLEtBQUssY0FBYyxFQUFFO2dCQUMzQix1REFBdUQ7Z0JBQ3ZELFNBQVM7YUFDVjtZQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO2dCQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3RDtpQkFBTTtnQkFDTCxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLE9BQW9CO1FBQ3pCLG1GQUFtRjtRQUNuRixJQUFJLGVBQXdDLENBQUM7UUFFN0MsdUZBQXVGO1FBQ3ZGLEtBQUssTUFBTSxZQUFZLElBQUksT0FBTyxFQUFFO1lBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDN0QsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsZUFBZSxLQUFLLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQyxLQUFLLE1BQU0sZUFBZSxJQUFJLFdBQVcsRUFBRTtvQkFDekMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDdEM7Z0JBQ0QsNEVBQTRFO2dCQUM1RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzdDO1NBQ0Y7UUFFRCxPQUFPLGVBQWUsSUFBSSxPQUFPLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBOUNELG9EQThDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQgY2xhc3MgRmlsZVJlZmVyZW5jZVRyYWNrZXIge1xuICAjcmVmZXJlbmNpbmdGaWxlcyA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKTtcblxuICBnZXQgcmVmZXJlbmNlZEZpbGVzKCkge1xuICAgIHJldHVybiB0aGlzLiNyZWZlcmVuY2luZ0ZpbGVzLmtleXMoKTtcbiAgfVxuXG4gIGFkZChjb250YWluaW5nRmlsZTogc3RyaW5nLCByZWZlcmVuY2VkRmlsZXM6IEl0ZXJhYmxlPHN0cmluZz4pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgcmVmZXJlbmNlZEZpbGVzKSB7XG4gICAgICBpZiAoZmlsZSA9PT0gY29udGFpbmluZ0ZpbGUpIHtcbiAgICAgICAgLy8gQ29udGFpbmluZyBmaWxlIGlzIGFscmVhZHkga25vd24gdG8gdGhlIEFPVCBjb21waWxlclxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVmZXJlbmNpbmcgPSB0aGlzLiNyZWZlcmVuY2luZ0ZpbGVzLmdldChmaWxlKTtcbiAgICAgIGlmIChyZWZlcmVuY2luZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuI3JlZmVyZW5jaW5nRmlsZXMuc2V0KGZpbGUsIG5ldyBTZXQoW2NvbnRhaW5pbmdGaWxlXSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVmZXJlbmNpbmcuYWRkKGNvbnRhaW5pbmdGaWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGNoYW5nZWQgVGhlIHNldCBvZiBjaGFuZ2VkIGZpbGVzLlxuICAgKi9cbiAgdXBkYXRlKGNoYW5nZWQ6IFNldDxzdHJpbmc+KTogU2V0PHN0cmluZz4ge1xuICAgIC8vIExhemlseSBpbml0aWFsaXplZCB0byBhdm9pZCB1bm5lZWRlZCBjb3B5aW5nIGlmIHRoZXJlIGFyZSBubyBhZGRpdGlvbnMgdG8gcmV0dXJuXG4gICAgbGV0IGFsbENoYW5nZWRGaWxlczogU2V0PHN0cmluZz4gfCB1bmRlZmluZWQ7XG5cbiAgICAvLyBBZGQgcmVmZXJlbmNpbmcgZmlsZXMgdG8gZnVsbHkgbm90aWZ5IHRoZSBBT1QgY29tcGlsZXIgb2YgcmVxdWlyZWQgY29tcG9uZW50IHVwZGF0ZXNcbiAgICBmb3IgKGNvbnN0IG1vZGlmaWVkRmlsZSBvZiBjaGFuZ2VkKSB7XG4gICAgICBjb25zdCByZWZlcmVuY2luZyA9IHRoaXMuI3JlZmVyZW5jaW5nRmlsZXMuZ2V0KG1vZGlmaWVkRmlsZSk7XG4gICAgICBpZiAocmVmZXJlbmNpbmcpIHtcbiAgICAgICAgYWxsQ2hhbmdlZEZpbGVzID8/PSBuZXcgU2V0KGNoYW5nZWQpO1xuICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jaW5nRmlsZSBvZiByZWZlcmVuY2luZykge1xuICAgICAgICAgIGFsbENoYW5nZWRGaWxlcy5hZGQocmVmZXJlbmNpbmdGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDbGVhbnVwIHRoZSBzdGFsZSByZWNvcmQgd2hpY2ggd2lsbCBiZSB1cGRhdGVkIGJ5IG5ldyByZXNvdXJjZSB0cmFuc2Zvcm1zXG4gICAgICAgIHRoaXMuI3JlZmVyZW5jaW5nRmlsZXMuZGVsZXRlKG1vZGlmaWVkRmlsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbENoYW5nZWRGaWxlcyA/PyBjaGFuZ2VkO1xuICB9XG59XG4iXX0=
@@ -115,4 +115,3 @@ function setupJitPluginCallbacks(build, stylesheetBundler, additionalResultFiles
115
115
  });
116
116
  }
117
117
  exports.setupJitPluginCallbacks = setupJitPluginCallbacks;
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaml0LXBsdWdpbi1jYWxsYmFja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy9lc2J1aWxkL2FuZ3VsYXIvaml0LXBsdWdpbi1jYWxsYmFja3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7O0FBR0gsK0NBQTRDO0FBQzVDLDBEQUE2QjtBQUU3QiwrQkFLZTtBQUVmOzs7Ozs7Ozs7O0dBVUc7QUFDSCxLQUFLLFVBQVUsU0FBUyxDQUN0QixLQUFhLEVBQ2IsSUFBWSxFQUNaLFFBQWtCO0lBRWxCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUM3QixNQUFNLFNBQVMsR0FBRyxtQkFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxELE9BQU87WUFDTCxJQUFJLEVBQUUsU0FBUztZQUNmLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFBLG1CQUFRLEVBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztTQUNwRSxDQUFDO0tBQ0g7U0FBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDdEMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEQsT0FBTztZQUNMLElBQUksRUFBRSxtQkFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO1lBQy9CLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFR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TUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsNEJBQXNCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDOUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFdEQsT0FBTztZQUNMLFFBQVE7WUFDUixNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUEvRUQsMERBK0VDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0eXBlIHsgTWV0YWZpbGUsIE91dHB1dEZpbGUsIFBsdWdpbkJ1aWxkIH0gZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IENvbXBvbmVudFN0eWxlc2hlZXRCdW5kbGVyIH0gZnJvbSAnLi9jb21wb25lbnQtc3R5bGVzaGVldHMnO1xuaW1wb3J0IHtcbiAgSklUX05BTUVTUEFDRV9SRUdFWFAsXG4gIEpJVF9TVFlMRV9OQU1FU1BBQ0UsXG4gIEpJVF9URU1QTEFURV9OQU1FU1BBQ0UsXG4gIHBhcnNlSml0VXJpLFxufSBmcm9tICcuL3VyaSc7XG5cbi8qKlxuICogTG9hZHMvZXh0cmFjdHMgdGhlIGNvbnRlbnRzIGZyb20gYSBsb2FkIGNhbGxiYWNrIEFuZ3VsYXIgSklUIGVudHJ5LlxuICogQW4gQW5ndWxhciBKSVQgZW50cnkgcmVwcmVzZW50cyBlaXRoZXIgYSBmaWxlIHBhdGggZm9yIGEgY29tcG9uZW50IHJlc291cmNlIG9yIGJhc2U2NFxuICogZW5jb2RlZCBkYXRhIGZvciBhbiBpbmxpbmUgY29tcG9uZW50IHJlc291cmNlLlxuICogQHBhcmFtIGVudHJ5IFRoZSB2YWx1ZSB0aGF0IHJlcHJlc2VudHMgY29udGVudCB0byBsb2FkLlxuICogQHBhcmFtIHJvb3QgVGhlIGFic29sdXRlIHBhdGggZm9yIHRoZSByb290IG9mIHRoZSBidWlsZCAodHlwaWNhbGx5IHRoZSB3b3Jrc3BhY2Ugcm9vdCkuXG4gKiBAcGFyYW0gc2tpcFJlYWQgSWYgdHJ1ZSwgZG8gbm90IGF0dGVtcHQgdG8gcmVhZCB0aGUgZmlsZTsgaWYgZmFsc2UsIHJlYWQgZmlsZSBjb250ZW50IGZyb20gZGlzay5cbiAqIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QgaWYgdGhlIGVudHJ5IGRvZXMgbm90IG9yaWdpbmF0ZSBmcm9tIGEgZmlsZS4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgY29udGVudHMgYW5kIG9wdGlvbmFsbHkgdGhlIGFjdHVhbCBjb250ZW50cy5cbiAqIEZvciBpbmxpbmUgZW50cmllcyB0aGUgY29udGVudHMgd2lsbCBhbHdheXMgYmUgcHJvdmlkZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRFbnRyeShcbiAgZW50cnk6IHN0cmluZyxcbiAgcm9vdDogc3RyaW5nLFxuICBza2lwUmVhZD86IGJvb2xlYW4sXG4pOiBQcm9taXNlPHsgcGF0aDogc3RyaW5nOyBjb250ZW50cz86IHN0cmluZyB9PiB7XG4gIGlmIChlbnRyeS5zdGFydHNXaXRoKCdmaWxlOicpKSB7XG4gICAgY29uc3Qgc3BlY2lmaWVyID0gcGF0aC5qb2luKHJvb3QsIGVudHJ5LnNsaWNlKDUpKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiBzcGVjaWZpZXIsXG4gICAgICBjb250ZW50czogc2tpcFJlYWQgPyB1bmRlZmluZWQgOiBhd2FpdCByZWFkRmlsZShzcGVjaWZpZXIsICd1dGYtOCcpLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoZW50cnkuc3RhcnRzV2l0aCgnaW5saW5lOicpKSB7XG4gICAgY29uc3QgW2ltcG9ydGVyLCBkYXRhXSA9IGVudHJ5LnNsaWNlKDcpLnNwbGl0KCc7JywgMik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGF0aDogcGF0aC5qb2luKHJvb3QsIGltcG9ydGVyKSxcbiAgICAgIGNvbnRlbnRzOiBCdWZmZXIuZnJvbShkYXRhLCAnYmFzZTY0JykudG9TdHJpbmcoKSxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkYXRhIGZvciBBbmd1bGFyIEpJVCBlbnRyeS4nKTtcbiAgfVxufVxuXG4vKipcbiAqIFNldHMgdXAgZXNidWlsZCByZXNvbHZlIGFuZCBsb2FkIGNhbGxiYWNrcyB0byBzdXBwb3J0IEFuZ3VsYXIgSklUIG1vZGUgcHJvY2Vzc2luZ1xuICogZm9yIGJvdGggQ29tcG9uZW50IHN0eWxlc2hlZXRzIGFuZCB0ZW1wbGF0ZXMuIFRoZXNlIGNhbGxiYWNrcyB3b3JrIGFsb25nc2lkZSB0aGUgSklUXG4gKiByZXNvdXJjZSBUeXBlU2NyaXB0IHRyYW5zZm9ybWVyIHRvIGNvbnZlcnQgYW5kIHRoZW4gYnVuZGxlIENvbXBvbmVudCByZXNvdXJjZXMgYXNcbiAqIHN0YXRpYyBpbXBvcnRzLlxuICogQHBhcmFtIGJ1aWxkIEFuIGVzYnVpbGQge0BsaW5rIFBsdWdpbkJ1aWxkfSBpbnN0YW5jZSB1c2VkIHRvIGFkZCBjYWxsYmFja3MuXG4gKiBAcGFyYW0gc3R5bGVPcHRpb25zIFRoZSBvcHRpb25zIHRvIHVzZSB3aGVuIGJ1bmRsaW5nIHN0eWxlc2hlZXRzLlxuICogQHBhcmFtIGFkZGl0aW9uYWxSZXN1bHRGaWxlcyBBIE1hcCB3aGVyZSBzdHlsZXNoZWV0IHJlc291cmNlcyB3aWxsIGJlIGFkZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBKaXRQbHVnaW5DYWxsYmFja3MoXG4gIGJ1aWxkOiBQbHVnaW5CdWlsZCxcbiAgc3R5bGVzaGVldEJ1bmRsZXI6IENvbXBvbmVudFN0eWxlc2hlZXRCdW5kbGVyLFxuICBhZGRpdGlvbmFsUmVzdWx0RmlsZXM6IE1hcDxzdHJpbmcsIHsgb3V0cHV0RmlsZXM/OiBPdXRwdXRGaWxlW107IG1ldGFmaWxlPzogTWV0YWZpbGUgfT4sXG4gIGlubGluZVN0eWxlTGFuZ3VhZ2U6IHN0cmluZyxcbik6IHZvaWQge1xuICBjb25zdCByb290ID0gYnVpbGQuaW5pdGlhbE9wdGlvbnMuYWJzV29ya2luZ0RpciA/PyAnJztcblxuICAvLyBBZGQgYSByZXNvbHZlIGNhbGxiYWNrIHRvIGNhcHR1cmUgYW5kIHBhcnNlIGFueSBKSVQgVVJJcyB0aGF0IHdlcmUgYWRkZWQgYnkgdGhlXG4gIC8vIEpJVCByZXNvdXJjZSBUeXBlU2NyaXB0IHRyYW5zZm9ybWVyLlxuICAvLyBSZXNvdXJjZXMgb3JpZ2luYXRpbmcgZnJvbSBhIGZpbGUgYXJlIHJlc29sdmVkIGFzIHJlbGF0aXZlIGZyb20gdGhlIGNvbnRhaW5pbmcgZmlsZSAoaW1wb3J0ZXIpLlxuICBidWlsZC5vblJlc29sdmUoeyBmaWx0ZXI6IEpJVF9OQU1FU1BBQ0VfUkVHRVhQIH0sIChhcmdzKSA9PiB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VKaXRVcmkoYXJncy5wYXRoKTtcbiAgICBpZiAoIXBhcnNlZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCB7IG5hbWVzcGFjZSwgb3JpZ2luLCBzcGVjaWZpZXIgfSA9IHBhcnNlZDtcblxuICAgIGlmIChvcmlnaW4gPT09ICdmaWxlJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLy8gVXNlIGEgcmVsYXRpdmUgcGF0aCB0byBwcmV2ZW50IGZ1bGx5IHJlc29sdmVkIHBhdGhzIGluIHRoZSBtZXRhZmlsZSAoSlNPTiBzdGF0cyBmaWxlKS5cbiAgICAgICAgLy8gVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBmb3IgY3VzdG9tIG5hbWVzcGFjZXMuIGVzYnVpbGQgd2lsbCBoYW5kbGUgdGhlIGZpbGUgbmFtZXNwYWNlLlxuICAgICAgICBwYXRoOiAnZmlsZTonICsgcGF0aC5yZWxhdGl2ZShyb290LCBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKGFyZ3MuaW1wb3J0ZXIpLCBzcGVjaWZpZXIpKSxcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSW5saW5lIGRhdGEgbWF5IG5lZWQgdGhlIGltcG9ydGVyIHRvIHJlc29sdmUgaW1wb3J0cy9yZWZlcmVuY2VzIHdpdGhpbiB0aGUgY29udGVudFxuICAgICAgY29uc3QgaW1wb3J0ZXIgPSBwYXRoLnJlbGF0aXZlKHJvb3QsIGFyZ3MuaW1wb3J0ZXIpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoOiBgaW5saW5lOiR7aW1wb3J0ZXJ9OyR7c3BlY2lmaWVyfWAsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcblxuICAvLyBBZGQgYSBsb2FkIGNhbGxiYWNrIHRvIGhhbmRsZSBDb21wb25lbnQgc3R5bGVzaGVldHMgKGJvdGggaW5saW5lIGFuZCBleHRlcm5hbClcbiAgYnVpbGQub25Mb2FkKHsgZmlsdGVyOiAvLi8sIG5hbWVzcGFjZTogSklUX1NUWUxFX05BTUVTUEFDRSB9LCBhc3luYyAoYXJncykgPT4ge1xuICAgIC8vIHNraXBSZWFkIGlzIHVzZWQgaGVyZSBiZWNhdXNlIHRoZSBzdHlsZXNoZWV0IGJ1bmRsaW5nIHdpbGwgcmVhZCBhIGZpbGUgc3R5bGVzaGVldFxuICAgIC8vIGRpcmVjdGx5IGVpdGhlciB2aWEgYSBwcmVwcm9jZXNzb3Igb3IgZXNidWlsZCBpdHNlbGYuXG4gICAgY29uc3QgZW50cnkgPSBhd2FpdCBsb2FkRW50cnkoYXJncy5wYXRoLCByb290LCB0cnVlIC8qIHNraXBSZWFkICovKTtcblxuICAgIGxldCBzdHlsZXNoZWV0UmVzdWx0O1xuXG4gICAgLy8gU3R5bGVzaGVldCBjb250ZW50cyBvbmx5IGV4aXN0IGZvciBpbnRlcm5hbCBzdHlsZXNoZWV0c1xuICAgIGlmIChlbnRyeS5jb250ZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdHlsZXNoZWV0UmVzdWx0ID0gYXdhaXQgc3R5bGVzaGVldEJ1bmRsZXIuYnVuZGxlRmlsZShlbnRyeS5wYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzaGVldFJlc3VsdCA9IGF3YWl0IHN0eWxlc2hlZXRCdW5kbGVyLmJ1bmRsZUlubGluZShcbiAgICAgICAgZW50cnkuY29udGVudHMsXG4gICAgICAgIGVudHJ5LnBhdGgsXG4gICAgICAgIGlubGluZVN0eWxlTGFuZ3VhZ2UsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY29udGVudHMsIHJlc291cmNlRmlsZXMsIGVycm9ycywgd2FybmluZ3MsIG1ldGFmaWxlIH0gPSBzdHlsZXNoZWV0UmVzdWx0O1xuXG4gICAgYWRkaXRpb25hbFJlc3VsdEZpbGVzLnNldChlbnRyeS5wYXRoLCB7IG91dHB1dEZpbGVzOiByZXNvdXJjZUZpbGVzLCBtZXRhZmlsZSB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBlcnJvcnMsXG4gICAgICB3YXJuaW5ncyxcbiAgICAgIGNvbnRlbnRzLFxuICAgICAgbG9hZGVyOiAndGV4dCcsXG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gQWRkIGEgbG9hZCBjYWxsYmFjayB0byBoYW5kbGUgQ29tcG9uZW50IHRlbXBsYXRlc1xuICAvLyBOT1RFOiBXaGlsZSB0aGlzIGNhbGxiYWNrIHN1cHBvcnRzIGJvdGggaW5saW5lIGFuZCBleHRlcm5hbCB0ZW1wbGF0ZXMsIHRoZSB0cmFuc2Zvcm1lclxuICAvLyBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBnZW5lcmF0aW5nIFVSSXMgZm9yIGV4dGVybmFsIHRlbXBsYXRlcy5cbiAgYnVpbGQub25Mb2FkKHsgZmlsdGVyOiAvLi8sIG5hbWVzcGFjZTogSklUX1RFTVBMQVRFX05BTUVTUEFDRSB9LCBhc3luYyAoYXJncykgPT4ge1xuICAgIGNvbnN0IHsgY29udGVudHMgfSA9IGF3YWl0IGxvYWRFbnRyeShhcmdzLnBhdGgsIHJvb3QpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnRzLFxuICAgICAgbG9hZGVyOiAndGV4dCcsXG4gICAgfTtcbiAgfSk7XG59XG4iXX0=
@@ -184,4 +184,3 @@ function getDecoratorOrigin(decorator, typeChecker) {
184
184
  }
185
185
  return null;
186
186
  }
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaml0LXJlc291cmNlLXRyYW5zZm9ybWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdG9vbHMvZXNidWlsZC9hbmd1bGFyL2ppdC1yZXNvdXJjZS10cmFuc2Zvcm1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7QUFFSCw0REFBNEI7QUFDNUIsK0JBQWlFO0FBRWpFOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQiw0QkFBNEIsQ0FDMUMsY0FBb0M7SUFFcEMsT0FBTyxDQUFDLE9BQWlDLEVBQUUsRUFBRTtRQUMzQyxNQUFNLFdBQVcsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3BDLE1BQU0sMEJBQTBCLEdBQTJCLEVBQUUsQ0FBQztRQUU5RCxNQUFNLFNBQVMsR0FBZSxDQUFDLElBQWEsRUFBRSxFQUFFO1lBQzlDLElBQUksb0JBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0IsTUFBTSxVQUFVLEdBQUcsb0JBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTFDLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQzFDLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUVELE9BQU8sV0FBVyxDQUFDLHNCQUFzQixDQUN2QyxJQUFJLEVBQ0o7b0JBQ0UsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDNUIsY0FBYyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLDBCQUEwQixDQUFDLENBQzlFO29CQUNELEdBQUcsQ0FBQyxvQkFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMs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TSxJQUFJLE1BQU0sQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ25FLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxNQUFjLENBQUM7UUFFbkIsSUFBSSxvQkFBRSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3JDLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMzRCxNQUFNLEdBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQW9DLENBQUMsSUFBSSxDQUFDO1NBQ3RGO2FBQU0sSUFBSSxvQkFBRSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzVDLDREQUE0RDtZQUM1RCxNQUFNLEdBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBb0MsQ0FBQyxJQUFJLENBQUM7U0FDL0U7YUFBTSxJQUFJLG9CQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3pDLElBQUksR0FBSSxXQUFXLENBQUMsSUFBc0IsQ0FBQyxJQUFJLENBQUM7WUFDaEQsTUFBTSxHQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsZUFBb0MsQ0FBQyxJQUFJLENBQUM7U0FDeEU7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0tBQ3pCO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IGdlbmVyYXRlSml0RmlsZVVyaSwgZ2VuZXJhdGVKaXRJbmxpbmVVcmkgfSBmcm9tICcuL3VyaSc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIFR5cGVTY3JpcHQgVHJhbnNmb3JtZXIgdG8gdHJhbnNmb3JtIEFuZ3VsYXIgQ29tcG9uZW50IHJlc291cmNlIHJlZmVyZW5jZXMgaW50b1xuICogc3RhdGljIGltcG9ydCBzdGF0ZW1lbnRzLiBUaGlzIHRyYW5zZm9ybWVyIGlzIHVzZWQgaW4gQW5ndWxhcidzIEpJVCBjb21waWxhdGlvbiBtb2RlIHRvXG4gKiBzdXBwb3J0IHByb2Nlc3Npbmcgb2YgY29tcG9uZW50IHJlc291cmNlcy4gV2hlbiBpbiBBT1QgbW9kZSwgdGhlIEFuZ3VsYXIgQU9UIGNvbXBpbGVyIGhhbmRsZXNcbiAqIHRoaXMgcHJvY2Vzc2luZyBhbmQgdGhpcyB0cmFuc2Zvcm1lciBpcyBub3QgdXNlZC5cbiAqIEBwYXJhbSBnZXRUeXBlQ2hlY2tlciBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIFR5cGVTY3JpcHQgVHlwZUNoZWNrZXIgaW5zdGFuY2UgZm9yIHRoZSBwcm9ncmFtLlxuICogQHJldHVybnMgQSBUeXBlU2NyaXB0IHRyYW5zZm9ybWVyIGZhY3RvcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVKaXRSZXNvdXJjZVRyYW5zZm9ybWVyKFxuICBnZXRUeXBlQ2hlY2tlcjogKCkgPT4gdHMuVHlwZUNoZWNrZXIsXG4pOiB0cy5UcmFuc2Zvcm1lckZhY3Rvcnk8dHMuU291cmNlRmlsZT4ge1xuICByZXR1cm4gKGNvbnRleHQ6IHRzLlRyYW5zZm9ybWF0aW9uQ29udGV4dCkgPT4ge1xuICAgIGNvbnN0IHR5cGVDaGVja2VyID0gZ2V0VHlwZUNoZWNrZXIoKTtcbiAgICBjb25zdCBub2RlRmFjdG9yeSA9IGNvbnRleHQuZmFjdG9yeTtcbiAgICBjb25zdCByZXNvdXJjZUltcG9ydERlY2xhcmF0aW9uczogdHMuSW1wb3J0RGVjbGFyYXRpb25bXSA9IFtdO1xuXG4gICAgY29uc3QgdmlzaXROb2RlOiB0cy5WaXNpdG9yID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICAgIGlmICh0cy5pc0NsYXNzRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgICAgY29uc3QgZGVjb3JhdG9ycyA9IHRzLmdldERlY29yYXRvcnMobm9kZSk7XG5cbiAgICAgICAgaWYgKCFkZWNvcmF0b3JzIHx8IGRlY29yYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9kZUZhY3RvcnkudXBkYXRlQ2xhc3NEZWNsYXJhdGlvbihcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIC4uLmRlY29yYXRvcnMubWFwKChjdXJyZW50KSA9PlxuICAgICAgICAgICAgICB2aXNpdERlY29yYXRvcihub2RlRmFjdG9yeSwgY3VycmVudCwgdHlwZUNoZWNrZXIsIHJlc291cmNlSW1wb3J0RGVjbGFyYXRpb25zKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAuLi4odHMuZ2V0TW9kaWZpZXJzKG5vZGUpID8/IFtdKSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG5vZGUubmFtZSxcbiAgICAgICAgICBub2RlLnR5cGVQYXJhbWV0ZXJzLFxuICAgICAgICAgIG5vZGUuaGVyaXRhZ2VDbGF1c2VzLFxuICAgICAgICAgIG5vZGUubWVtYmVycyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRzLnZpc2l0RWFjaENoaWxkKG5vZGUsIHZpc2l0Tm9kZSwgY29udGV4dCk7XG4gICAgfTtcblxuICAgIHJldHVybiAoc291cmNlRmlsZSkgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZFNvdXJjZUZpbGUgPSB0cy52aXNpdEVhY2hDaGlsZChzb3VyY2VGaWxlLCB2aXNpdE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAocmVzb3VyY2VJbXBvcnREZWNsYXJhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gbm9kZUZhY3RvcnkudXBkYXRlU291cmNlRmlsZShcbiAgICAgICAgICB1cGRhdGVkU291cmNlRmlsZSxcbiAgICAgICAgICB0cy5zZXRUZXh0UmFuZ2UoXG4gICAgICAgICAgICBub2RlRmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoXG4gICAgICAgICAgICAgIFsuLi5yZXNvdXJjZUltcG9ydERlY2xhcmF0aW9ucywgLi4udXBkYXRlZFNvdXJjZUZpbGUuc3RhdGVtZW50c10sXG4gICAgICAgICAgICAgIHVwZGF0ZWRTb3VyY2VGaWxlLnN0YXRlbWVudHMuaGFzVHJhaWxpbmdDb21tYSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB1cGRhdGVkU291cmNlRmlsZS5zdGF0ZW1lbnRzLFxuICAgICAgICAgICksXG4gICAgICAgICAgdXBkYXRlZFNvdXJjZUZpbGUuaXNEZWNsYXJhdGlvbkZpbGUsXG4gICAgICAgICAgdXBkYXRlZFNvdXJjZUZpbGUucmVmZXJlbmNlZEZpbGVzLFxuICAgICAgICAgIHVwZGF0ZWRTb3VyY2VGaWxlLnR5cGVSZWZlcmVuY2VEaXJlY3RpdmVzLFxuICAgICAgICAgIHVwZGF0ZWRTb3VyY2VGaWxlLmhhc05vRGVmYXVsdExpYixcbiAgICAgICAgICB1cGRhdGVkU291cmNlRmlsZS5saWJSZWZlcmVuY2VEaXJlY3RpdmVzLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRTb3VyY2VGaWxlO1xuICAgICAgfVxuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIHZpc2l0RGVjb3JhdG9yKFxuICBub2RlRmFjdG9yeTogdHMuTm9kZUZhY3RvcnksXG4gIG5vZGU6IHRzLkRlY29yYXRvcixcbiAgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICByZXNvdXJjZUltcG9ydERlY2xhcmF0aW9uczogdHMuSW1wb3J0RGVjbGFyYXRpb25bXSxcbik6IHRzLkRlY29yYXRvciB7XG4gIGNvbnN0IG9yaWdpbiA9IGdldERlY29yYXRvck9yaWdpbihub2RlLCB0eXBlQ2hlY2tlcik7XG4gIGlmICghb3JpZ2luIHx8IG9yaWdpbi5tb2R1bGUgIT09ICdAYW5ndWxhci9jb3JlJyB8fCBvcmlnaW4ubmFtZSAhPT0gJ0NvbXBvbmVudCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGlmICghdHMuaXNDYWxsRXhwcmVzc2lvbihub2RlLmV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBjb25zdCBkZWNvcmF0b3JGYWN0b3J5ID0gbm9kZS5leHByZXNzaW9uO1xuICBjb25zdCBhcmdzID0gZGVjb3JhdG9yRmFjdG9yeS5hcmd1bWVudHM7XG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMSB8fCAhdHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihhcmdzWzBdKSkge1xuICAgIC8vIFVuc3VwcG9ydGVkIGNvbXBvbmVudCBtZXRhZGF0YVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgY29uc3Qgb2JqZWN0RXhwcmVzc2lvbiA9IGFyZ3NbMF0gYXMgdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb247XG4gIGNvbnN0IHN0eWxlUmVwbGFjZW1lbnRzOiB0cy5FeHByZXNzaW9uW10gPSBbXTtcblxuICAvLyB2aXNpdCBhbGwgcHJvcGVydGllc1xuICBsZXQgcHJvcGVydGllcyA9IHRzLnZpc2l0Tm9kZXMob2JqZWN0RXhwcmVzc2lvbi5wcm9wZXJ0aWVzLCAobm9kZSkgPT5cbiAgICB0cy5pc09iamVjdExpdGVyYWxFbGVtZW50TGlrZShub2RlKVxuICAgICAgPyB2aXNpdENvbXBvbmVudE1ldGFkYXRhKG5vZGVGYWN0b3J5LCBub2RlLCBzdHlsZVJlcGxhY2VtZW50cywgcmVzb3VyY2VJbXBvcnREZWNsYXJhdGlvbnMpXG4gICAgICA6IG5vZGUsXG4gICkgYXMgdHMuTm9kZUFycmF5PHRzLk9iamVjdExpdGVyYWxFbGVtZW50TGlrZT47XG5cbiAgLy8gcmVwbGFjZSBwcm9wZXJ0aWVzIHdpdGggdXBkYXRlZCBwcm9wZXJ0aWVzXG4gIGlmIChzdHlsZVJlcGxhY2VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgc3R5bGVQcm9wZXJ0eSA9IG5vZGVGYWN0b3J5LmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudChcbiAgICAgIG5vZGVGYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoJ3N0eWxlcycpLFxuICAgICAgbm9kZUZhY3RvcnkuY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihzdHlsZVJlcGxhY2VtZW50cyksXG4gICAgKTtcblxuICAgIHByb3BlcnRpZXMgPSBub2RlRmFjdG9yeS5jcmVhdGVOb2RlQXJyYXkoWy4uLnByb3BlcnRpZXMsIHN0eWxlUHJvcGVydHldKTtcbiAgfVxuXG4gIHJldHVybiBub2RlRmFjdG9yeS51cGRhdGVEZWNvcmF0b3IoXG4gICAgbm9kZSxcbiAgICBub2RlRmFjdG9yeS51cGRhdGVDYWxsRXhwcmVzc2lvbihcbiAgICAgIGRlY29yYXRvckZhY3RvcnksXG4gICAgICBkZWNvcmF0b3JGYWN0b3J5LmV4cHJlc3Npb24sXG4gICAgICBkZWNvcmF0b3JGYWN0b3J5LnR5cGVBcmd1bWVudHMsXG4gICAgICBbbm9kZUZhY3RvcnkudXBkYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24ob2JqZWN0RXhwcmVzc2lvbiwgcHJvcGVydGllcyldLFxuICAgICksXG4gICk7XG59XG5cbmZ1bmN0aW9uIHZpc2l0Q29tcG9uZW50TWV0YWRhdGEoXG4gIG5vZGVGYWN0b3J5OiB0cy5Ob2RlRmFjdG9yeSxcbiAgbm9kZTogdHMuT2JqZWN0TGl0ZXJhbEVsZW1lbnRMaWtlLFxuICBzdHlsZVJlcGxhY2VtZW50czogdHMuRXhwcmVzc2lvbltdLFxuICByZXNvdXJjZUltcG9ydERlY2xhcmF0aW9uczogdHMuSW1wb3J0RGVjbGFyYXRpb25bXSxcbik6IHRzLk9iamVjdExpdGVyYWxFbGVtZW50TGlrZSB8IHVuZGVmaW5lZCB7XG4gIGlmICghdHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQobm9kZSkgfHwgdHMuaXNDb21wdXRlZFByb3BlcnR5TmFtZShub2RlLm5hbWUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzd2l0Y2ggKG5vZGUubmFtZS50ZXh0KSB7XG4gICAgY2FzZSAndGVtcGxhdGVVcmwnOlxuICAgICAgLy8gT25seSBhbmFseXplIHN0cmluZyBsaXRlcmFsc1xuICAgICAgaWYgKCF0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKG5vZGUuaW5pdGlhbGl6ZXIpKSB7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZS5pbml0aWFsaXplci50ZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICA/IG5vZGVcbiAgICAgICAgOiBub2RlRmFjdG9yeS51cGRhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbm9kZUZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcigndGVtcGxhdGUnKSxcbiAgICAgICAgICAgIGNyZWF0ZVJlc291cmNlSW1wb3J0KFxuICAgICAgICAgICAgICBub2RlRmFjdG9yeSxcbiAgICAgICAgICAgICAgZ2VuZXJhdGVKaXRGaWxlVXJpKG5vZGUuaW5pdGlhbGl6ZXIudGV4dCwgJ3RlbXBsYXRlJyksXG4gICAgICAgICAgICAgIHJlc291cmNlSW1wb3J0RGVjbGFyYXRpb25zLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgIGNhc2UgJ3N0eWxlcyc6XG4gICAgICBpZiAodHMuaXNTdHJpbmdMaXRlcmFsTGlrZShub2RlLmluaXRpYWxpemVyKSkge1xuICAgICAgICBzdHlsZVJlcGxhY2VtZW50cy51bnNoaWZ0KFxuICAgICAgICAgIGNyZWF0ZVJlc291cmNlSW1wb3J0KFxuICAgICAgICAgICAgbm9kZUZhY3RvcnksXG4gICAgICAgICAgICBnZW5lcmF0ZUppdElubGluZVVyaShub2RlLmluaXRpYWxpemVyLnRleHQsICdzdHlsZScpLFxuICAgICAgICAgICAgcmVzb3VyY2VJbXBvcnREZWNsYXJhdGlvbnMsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBpZiAodHMuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKG5vZGUuaW5pdGlhbGl6ZXIpKSB7XG4gICAgICAgIGNvbnN0IGlubGluZVN0eWxlcyA9IHRzLnZpc2l0Tm9kZXMobm9kZS5pbml0aWFsaXplci5lbGVtZW50cywgKG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAoIXRzLmlzU3RyaW5nTGl0ZXJhbExpa2Uobm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBub2RlLnRleHQubGVuZ3RoID09PSAwXG4gICAgICAgICAgICA/IHVuZGVmaW5lZCAvLyBBbiBlbXB0eSBpbmxpbmUgc3R5bGUgaXMgZXF1aXZhbGVudCB0byBub3QgaGF2aW5nIGEgc3R5bGUgZWxlbWVudFxuICAgICAgICAgICAgOiBjcmVhdGVSZXNvdXJjZUltcG9ydChcbiAgICAgICAgICAgICAgICBub2RlRmFjdG9yeSxcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZUppdElubGluZVVyaShub2RlLnRleHQsICdzdHlsZScpLFxuICAgICAgICAgICAgICAgIHJlc291cmNlSW1wb3J0RGVjbGFyYXRpb25zLFxuICAgICAgICAgICAgICApO1xuICAgICAgICB9KSBhcyB0cy5Ob2RlQXJyYXk8dHMuRXhwcmVzc2lvbj47XG5cbiAgICAgICAgLy8gSW5saW5lIHN0eWxlcyBzaG91bGQgYmUgcGxhY2VkIGZpcnN0XG4gICAgICAgIHN0eWxlUmVwbGFjZW1lbnRzLnVuc2hpZnQoLi4uaW5saW5lU3R5bGVzKTtcblxuICAgICAgICAvLyBUaGUgaW5saW5lIHN0eWxlcyB3aWxsIGJlIGFkZGVkIGFmdGVyd2FyZHMgaW4gY29tYmluYXRpb24gd2l0aCBhbnkgZXh0ZXJuYWwgc3R5bGVzXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBub2RlO1xuXG4gICAgY2FzZSAnc3R5bGVVcmwnOlxuICAgICAgaWYgKHRzLmlzU3RyaW5nTGl0ZXJhbExpa2Uobm9kZS5pbml0aWFsaXplcikpIHtcbiAgICAgICAgc3R5bGVSZXBsYWNlbWVudHMucHVzaChcbiAgICAgICAgICBjcmVhdGVSZXNvdXJjZUltcG9ydChcbiAgICAgICAgICAgIG5vZGVGYWN0b3J5LFxuICAgICAgICAgICAgZ2VuZXJhdGVKaXRGaWxlVXJpKG5vZGUuaW5pdGlhbGl6ZXIudGV4dCwgJ3N0eWxlJyksXG4gICAgICAgICAgICByZXNvdXJjZUltcG9ydERlY2xhcmF0aW9ucyxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBub2RlO1xuXG4gICAgY2FzZSAnc3R5bGVVcmxzJzpcbiAgICAgIGlmICghdHMuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKG5vZGUuaW5pdGlhbGl6ZXIpKSB7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleHRlcm5hbFN0eWxlcyA9IHRzLnZpc2l0Tm9kZXMobm9kZS5pbml0aWFsaXplci5lbGVtZW50cywgKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKCF0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKG5vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9kZS50ZXh0XG4gICAgICAgICAgPyBjcmVhdGVSZXNvdXJjZUltcG9ydChcbiAgICAgICAgICAgICAgbm9kZUZhY3RvcnksXG4gICAgICAgICAgICAgIGdlbmVyYXRlSml0RmlsZVVyaShub2RlLnRleHQsICdzdHlsZScpLFxuICAgICAgICAgICAgICByZXNvdXJjZUltcG9ydERlY2xhcmF0aW9ucyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIH0pIGFzIHRzLk5vZGVBcnJheTx0cy5FeHByZXNzaW9uPjtcblxuICAgICAgLy8gRXh0ZXJuYWwgc3R5bGVzIGFyZSBhcHBsaWVkIGFmdGVyIGFueSBpbmxpbmUgc3R5bGVzXG4gICAgICBzdHlsZVJlcGxhY2VtZW50cy5wdXNoKC4uLmV4dGVybmFsU3R5bGVzKTtcblxuICAgICAgLy8gVGhlIGV4dGVybmFsIHN0eWxlcyB3aWxsIGJlIGFkZGVkIGFmdGVyd2FyZHMgaW4gY29tYmluYXRpb24gd2l0aCBhbnkgaW5saW5lIHN0eWxlc1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gQWxsIG90aGVyIGVsZW1lbnRzIGFyZSBwYXNzZWQgdGhyb3VnaFxuICAgICAgcmV0dXJuIG5vZGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlUmVzb3VyY2VJbXBvcnQoXG4gIG5vZGVGYWN0b3J5OiB0cy5Ob2RlRmFjdG9yeSxcbiAgdXJsOiBzdHJpbmcsXG4gIHJlc291cmNlSW1wb3J0RGVjbGFyYXRpb25zOiB0cy5JbXBvcnREZWNsYXJhdGlvbltdLFxuKTogdHMuSWRlbnRpZmllciB7XG4gIGNvbnN0IHVybExpdGVyYWwgPSBub2RlRmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKHVybCk7XG5cbiAgY29uc3QgaW1wb3J0TmFtZSA9IG5vZGVGYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoXG4gICAgYF9fTkdfQ0xJX1JFU09VUkNFX18ke3Jlc291cmNlSW1wb3J0RGVjbGFyYXRpb25zLmxlbmd0aH1gLFxuICApO1xuICByZXNvdXJjZUltcG9ydERlY2xhcmF0aW9ucy5wdXNoKFxuICAgIG5vZGVGYWN0b3J5LmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgbm9kZUZhY3RvcnkuY3JlYXRlSW1wb3J0Q2xhdXNlKGZhbHNlLCBpbXBvcnROYW1lLCB1bmRlZmluZWQpLFxuICAgICAgdXJsTGl0ZXJhbCxcbiAgICApLFxuICApO1xuXG4gIHJldHVybiBpbXBvcnROYW1lO1xufVxuXG5mdW5jdGlvbiBnZXREZWNvcmF0b3JPcmlnaW4oXG4gIGRlY29yYXRvcjogdHMuRGVjb3JhdG9yLFxuICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4pOiB7IG5hbWU6IHN0cmluZzsgbW9kdWxlOiBzdHJpbmcgfSB8IG51bGwge1xuICBpZiAoIXRzLmlzQ2FsbEV4cHJlc3Npb24oZGVjb3JhdG9yLmV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBsZXQgaWRlbnRpZmllcjogdHMuTm9kZTtcbiAgbGV0IG5hbWUgPSAnJztcblxuICBpZiAodHMuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oZGVjb3JhdG9yLmV4cHJlc3Npb24uZXhwcmVzc2lvbikpIHtcbiAgICBpZGVudGlmaWVyID0gZGVjb3JhdG9yLmV4cHJlc3Npb24uZXhwcmVzc2lvbi5leHByZXNzaW9uO1xuICAgIG5hbWUgPSBkZWNvcmF0b3IuZXhwcmVzc2lvbi5leHByZXNzaW9uLm5hbWUudGV4dDtcbiAgfSBlbHNlIGlmICh0cy5pc0lkZW50aWZpZXIoZGVjb3JhdG9yLmV4cHJlc3Npb24uZXhwcmVzc2lvbikpIHtcbiAgICBpZGVudGlmaWVyID0gZGVjb3JhdG9yLmV4cHJlc3Npb24uZXhwcmVzc2lvbjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIE5PVEU6IHJlc29sdmVyLmdldFJlZmVyZW5jZWRJbXBvcnREZWNsYXJhdGlvbiB3b3VsZCB3b3JrIGFzIHdlbGwgYnV0IGlzIGludGVybmFsXG4gIGNvbnN0IHN5bWJvbCA9IHR5cGVDaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oaWRlbnRpZmllcik7XG4gIGlmIChzeW1ib2wgJiYgc3ltYm9sLmRlY2xhcmF0aW9ucyAmJiBzeW1ib2wuZGVjbGFyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBkZWNsYXJhdGlvbiA9IHN5bWJvbC5kZWNsYXJhdGlvbnNbMF07XG4gICAgbGV0IG1vZHVsZTogc3RyaW5nO1xuXG4gICAgaWYgKHRzLmlzSW1wb3J0U3BlY2lmaWVyKGRlY2xhcmF0aW9uKSkge1xuICAgICAgbmFtZSA9IChkZWNsYXJhdGlvbi5wcm9wZXJ0eU5hbWUgfHwgZGVjbGFyYXRpb24ubmFtZSkudGV4dDtcbiAgICAgIG1vZHVsZSA9IChkZWNsYXJhdGlvbi5wYXJlbnQucGFyZW50LnBhcmVudC5tb2R1bGVTcGVjaWZpZXIgYXMgdHMuU3RyaW5nTGl0ZXJhbCkudGV4dDtcbiAgICB9IGVsc2UgaWYgKHRzLmlzTmFtZXNwYWNlSW1wb3J0KGRlY2xhcmF0aW9uKSkge1xuICAgICAgLy8gVXNlIHRoZSBuYW1lIGZyb20gdGhlIGRlY29yYXRvciBuYW1lc3BhY2UgcHJvcGVydHkgYWNjZXNzXG4gICAgICBtb2R1bGUgPSAoZGVjbGFyYXRpb24ucGFyZW50LnBhcmVudC5tb2R1bGVTcGVjaWZpZXIgYXMgdHMuU3RyaW5nTGl0ZXJhbCkudGV4dDtcbiAgICB9IGVsc2UgaWYgKHRzLmlzSW1wb3J0Q2xhdXNlKGRlY2xhcmF0aW9uKSkge1xuICAgICAgbmFtZSA9IChkZWNsYXJhdGlvbi5uYW1lIGFzIHRzLklkZW50aWZpZXIpLnRleHQ7XG4gICAgICBtb2R1bGUgPSAoZGVjbGFyYXRpb24ucGFyZW50Lm1vZHVsZVNwZWNpZmllciBhcyB0cy5TdHJpbmdMaXRlcmFsKS50ZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBuYW1lLCBtb2R1bGUgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIl19
@@ -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 ts from 'typescript';
8
+ import type ts from 'typescript';
9
9
  import { MemoryLoadResultCache } from '../load-result-cache';
10
10
  export declare class SourceFileCache extends Map<string, ts.SourceFile> {
11
11
  readonly persistentCachePath?: string | undefined;
@@ -66,4 +66,3 @@ class SourceFileCache extends Map {
66
66
  }
67
67
  }
68
68
  exports.SourceFileCache = SourceFileCache;
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLWZpbGUtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy9lc2J1aWxkL2FuZ3VsYXIvc291cmNlLWZpbGUtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxxQ0FBbUM7QUFDbkMsZ0RBQWtDO0FBQ2xDLHVDQUF5QztBQUV6Qyw0REFBNkQ7QUFFN0QsTUFBTSxhQUFhLEdBQUcsSUFBQSxrQkFBUSxHQUFFLEtBQUssT0FBTyxDQUFDO0FBQzdDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRWxFLE1BQWEsZUFBZ0IsU0FBUSxHQUEwQjtJQVF4QztJQVBaLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ2xDLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztJQUMvQyxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztJQUM3RCxlQUFlLEdBQUcsSUFBSSx5Q0FBcUIsRUFBRSxDQUFDO0lBRXZELGVBQWUsQ0FBcUI7SUFFcEMsWUFBcUIsbUJBQTRCO1FBQy9DLEtBQUssRUFBRSxDQUFDO1FBRFcsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFTO0lBRWpELENBQUM7SUFFRCxVQUFVLENBQUMsS0FBdUI7UUFDaEMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzVCO1FBQ0QsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFBLHdCQUFhLEVBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEMsK0RBQStEO1lBQy9ELElBQUksYUFBYSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3pEO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7Q0FDRjtBQTlCRCwwQ0E4QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgcGxhdGZvcm0gfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBNZW1vcnlMb2FkUmVzdWx0Q2FjaGUgfSBmcm9tICcuLi9sb2FkLXJlc3VsdC1jYWNoZSc7XG5cbmNvbnN0IFVTSU5HX1dJTkRPV1MgPSBwbGF0Zm9ybSgpID09PSAnd2luMzInO1xuY29uc3QgV0lORE9XU19TRVBfUkVHRVhQID0gbmV3IFJlZ0V4cChgXFxcXCR7cGF0aC53aW4zMi5zZXB9YCwgJ2cnKTtcblxuZXhwb3J0IGNsYXNzIFNvdXJjZUZpbGVDYWNoZSBleHRlbmRzIE1hcDxzdHJpbmcsIHRzLlNvdXJjZUZpbGU+IHtcbiAgcmVhZG9ubHkgbW9kaWZpZWRGaWxlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBiYWJlbEZpbGVDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBVaW50OEFycmF5PigpO1xuICByZWFkb25seSB0eXBlU2NyaXB0RmlsZUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZyB8IFVpbnQ4QXJyYXk+KCk7XG4gIHJlYWRvbmx5IGxvYWRSZXN1bHRDYWNoZSA9IG5ldyBNZW1vcnlMb2FkUmVzdWx0Q2FjaGUoKTtcblxuICByZWZlcmVuY2VkRmlsZXM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwZXJzaXN0ZW50Q2FjaGVQYXRoPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGludmFsaWRhdGUoZmlsZXM6IEl0ZXJhYmxlPHN0cmluZz4pOiB2b2lkIHtcbiAgICBpZiAoZmlsZXMgIT09IHRoaXMubW9kaWZpZWRGaWxlcykge1xuICAgICAgdGhpcy5tb2RpZmllZEZpbGVzLmNsZWFyKCk7XG4gICAgfVxuICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIHRoaXMuYmFiZWxGaWxlQ2FjaGUuZGVsZXRlKGZpbGUpO1xuICAgICAgdGhpcy50eXBlU2NyaXB0RmlsZUNhY2hlLmRlbGV0ZShwYXRoVG9GaWxlVVJMKGZpbGUpLmhyZWYpO1xuICAgICAgdGhpcy5sb2FkUmVzdWx0Q2FjaGUuaW52YWxpZGF0ZShmaWxlKTtcblxuICAgICAgLy8gTm9ybWFsaXplIHNlcGFyYXRvcnMgdG8gYWxsb3cgbWF0Y2hpbmcgVHlwZVNjcmlwdCBIb3N0IHBhdGhzXG4gICAgICBpZiAoVVNJTkdfV0lORE9XUykge1xuICAgICAgICBmaWxlID0gZmlsZS5yZXBsYWNlKFdJTkRPV1NfU0VQX1JFR0VYUCwgcGF0aC5wb3NpeC5zZXApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRlbGV0ZShmaWxlKTtcbiAgICAgIHRoaXMubW9kaWZpZWRGaWxlcy5hZGQoZmlsZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -72,4 +72,3 @@ function parseJitUri(uri) {
72
72
  };
73
73
  }
74
74
  exports.parseJitUri = parseJitUri;
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvdG9vbHMvZXNidWlsZC9hbmd1bGFyL3VyaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSDs7R0FFRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDO0FBRXpDOzs7O0dBSUc7QUFDVSxRQUFBLG1CQUFtQixHQUFHLEdBQUcsa0JBQWtCLFFBQWlCLENBQUM7QUFFMUU7Ozs7R0FJRztBQUNVLFFBQUEsc0JBQXNCLEdBQUcsR0FBRyxrQkFBa0IsV0FBb0IsQ0FBQztBQUVoRjs7OztHQUlHO0FBQ1UsUUFBQSxvQkFBb0IsR0FBRyxJQUFJLE1BQU0sQ0FDNUMsSUFBSSxrQkFBa0IsdUNBQXVDLENBQzlELENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLElBQVksRUFBRSxJQUEwQjtJQUN6RSxPQUFPLEdBQUcsa0JBQWtCLElBQUksSUFBSSxTQUFTLElBQUksRUFBRSxDQUFDO0FBQ3RELENBQUM7QUFGRCxnREFFQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLElBQXlCLEVBQUUsSUFBMEI7SUFDeEYsT0FBTyxHQUFHLGtCQUFrQixJQUFJLElBQUksV0FBVyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQ3hGLENBQUM7QUFGRCxvREFFQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixXQUFXLENBQUMsR0FBVztJQUNyQyxNQUFNLE9BQU8sR0FBRyw0QkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsT0FBTztRQUNMLFNBQVMsRUFBRSxHQUFHLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNoRCxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBeUI7UUFDeEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQXNCO1FBQ3ZDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBWkQsa0NBWUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBBIHN0cmluZyB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGJhc2UgbmFtZXNwYWNlIGZvciBBbmd1bGFyIEpJVCBtb2RlIHJlbGF0ZWQgaW1wb3J0cy5cbiAqL1xuY29uc3QgSklUX0JBU0VfTkFNRVNQQUNFID0gJ2FuZ3VsYXI6aml0JztcblxuLyoqXG4gKiBBIHN0cmluZyB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIG5hbWVzcGFjZSBmb3IgQW5ndWxhciBKSVQgbW9kZSByZWxhdGVkIGltcG9ydHMgZm9yXG4gKiBDb21wb25lbnQgc3R5bGVzLiBUaGlzIG5hbWVzcGFjZSBpcyB1c2VkIGZvciBib3RoIGlubGluZSAoYHN0eWxlc2ApIGFuZCBleHRlcm5hbFxuICogKGBzdHlsZVVybHNgKSBzdHlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBKSVRfU1RZTEVfTkFNRVNQQUNFID0gYCR7SklUX0JBU0VfTkFNRVNQQUNFfTpzdHlsZWAgYXMgY29uc3Q7XG5cbi8qKlxuICogQSBzdHJpbmcgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBuYW1lc3BhY2UgZm9yIEFuZ3VsYXIgSklUIG1vZGUgcmVsYXRlZCBpbXBvcnRzIGZvclxuICogQ29tcG9uZW50IHRlbXBsYXRlcy4gVGhpcyBuYW1lc3BhY2UgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBmb3IgZXh0ZXJuYWwgKGB0ZW1wbGF0ZVVybGApXG4gKiB0ZW1wbGF0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBKSVRfVEVNUExBVEVfTkFNRVNQQUNFID0gYCR7SklUX0JBU0VfTkFNRVNQQUNFfTp0ZW1wbGF0ZWAgYXMgY29uc3Q7XG5cbi8qKlxuICogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBjYW4gYmUgdXNlZCB0byBtYXRjaCBhIEFuZ3VsYXIgSklUIG1vZGUgbmFtZXNwYWNlIFVSSS5cbiAqIEl0IGNvbnRhaW5zIGNhcHR1cmUgZ3JvdXBzIGZvciB0aGUgdHlwZSAodGVtcGxhdGUvc3R5bGUpLCBvcmlnaW4gKGZpbGUvaW5saW5lKSwgYW5kIHNwZWNpZmllci5cbiAqIFRoZSB7QGxpbmsgcGFyc2VKaXRVcml9IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHBhcnNlIGFuZCByZXR1cm4gYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIGEgSklUIFVSSS5cbiAqL1xuZXhwb3J0IGNvbnN0IEpJVF9OQU1FU1BBQ0VfUkVHRVhQID0gbmV3IFJlZ0V4cChcbiAgYF4ke0pJVF9CQVNFX05BTUVTUEFDRX06KHRlbXBsYXRlfHN0eWxlKTooZmlsZXxpbmxpbmUpOyguKikkYCxcbik7XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIEFuZ3VsYXIgSklUIG1vZGUgbmFtZXNwYWNlIFVSSSBmb3IgYSBnaXZlbiBmaWxlLlxuICogQHBhcmFtIGZpbGUgVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgaW5jbHVkZWQuXG4gKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgZmlsZSAoYHN0eWxlYCBvciBgdGVtcGxhdGVgKS5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZ1bGwgSklUIG5hbWVzcGFjZSBVUkkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUppdEZpbGVVcmkoZmlsZTogc3RyaW5nLCB0eXBlOiAnc3R5bGUnIHwgJ3RlbXBsYXRlJykge1xuICByZXR1cm4gYCR7SklUX0JBU0VfTkFNRVNQQUNFfToke3R5cGV9OmZpbGU7JHtmaWxlfWA7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIEFuZ3VsYXIgSklUIG1vZGUgbmFtZXNwYWNlIFVSSSBmb3IgYSBnaXZlbiBpbmxpbmUgc3R5bGUgb3IgdGVtcGxhdGUuXG4gKiBUaGUgcHJvdmlkZWQgY29udGVudCBpcyBiYXNlNjQgZW5jb2RlZCBhbmQgaW5jbHVkZWQgaW4gdGhlIFVSSS5cbiAqIEBwYXJhbSBkYXRhIFRoZSBjb250ZW50IHRvIGVuY29kZSB3aXRoaW4gdGhlIFVSSS5cbiAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHRoZSBjb250ZW50IChgc3R5bGVgIG9yIGB0ZW1wbGF0ZWApLlxuICogQHJldHVybnMgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgZnVsbCBKSVQgbmFtZXNwYWNlIFVSSS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSml0SW5saW5lVXJpKGRhdGE6IHN0cmluZyB8IFVpbnQ4QXJyYXksIHR5cGU6ICdzdHlsZScgfCAndGVtcGxhdGUnKSB7XG4gIHJldHVybiBgJHtKSVRfQkFTRV9OQU1FU1BBQ0V9OiR7dHlwZX06aW5saW5lOyR7QnVmZmVyLmZyb20oZGF0YSkudG9TdHJpbmcoJ2Jhc2U2NCcpfWA7XG59XG5cbi8qKlxuICogUGFyc2VzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBKSVQgbmFtZXNwYWNlIFVSSS5cbiAqIEpJVCBuYW1lc3BhY2UgVVJJcyBhcmUgdXNlZCB0byBlbmNvZGUgdGhlIGluZm9ybWF0aW9uIGZvciBhbiBBbmd1bGFyIGNvbXBvbmVudCdzIHN0eWxlc2hlZXRzXG4gKiBhbmQgdGVtcGxhdGVzIHdoZW4gY29tcGlsZWQgaW4gSklUIG1vZGUuXG4gKiBAcGFyYW0gdXJpIFRoZSBVUkkgdG8gcGFyc2UgaW50byBpdHMgdW5kZXJseWluZyBjb21wb25lbnRzLlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG5hbWVzcGFjZSwgdHlwZSwgb3JpZ2luLCBhbmQgc3BlY2lmaWVyIG9mIHRoZSBVUkk7XG4gKiBgdW5kZWZpbmVkYCBpZiBub3QgYSBKSVQgbmFtZXNwYWNlIFVSSS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSml0VXJpKHVyaTogc3RyaW5nKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBKSVRfTkFNRVNQQUNFX1JFR0VYUC5leGVjKHVyaSk7XG4gIGlmICghbWF0Y2hlcykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWVzcGFjZTogYCR7SklUX0JBU0VfTkFNRVNQQUNFfToke21hdGNoZXNbMV19YCxcbiAgICB0eXBlOiBtYXRjaGVzWzFdIGFzICdzdHlsZScgfCAndGVtcGxhdGUnLFxuICAgIG9yaWdpbjogbWF0Y2hlc1syXSBhcyAnZmlsZScgfCAnaW5saW5lJyxcbiAgICBzcGVjaWZpZXI6IG1hdGNoZXNbM10sXG4gIH07XG59XG4iXX0=
@@ -92,4 +92,3 @@ function createWorkerTransformer(fileProcessor) {
92
92
  };
93
93
  }
94
94
  exports.createWorkerTransformer = createWorkerTransformer;
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXdvcmtlci10cmFuc2Zvcm1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3Rvb2xzL2VzYnVpbGQvYW5ndWxhci93ZWItd29ya2VyLXRyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7OztBQUVILDREQUE0QjtBQUU1Qjs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQ3JDLGFBQXlEO0lBRXpELE9BQU8sQ0FBQyxPQUFpQyxFQUFFLEVBQUU7UUFDM0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUVwQyxNQUFNLFNBQVMsR0FBZSxDQUFDLElBQWEsRUFBRSxFQUFFO1lBQzlDLDJFQUEyRTtZQUMzRSwrQkFBK0I7WUFDL0IsSUFDRSxDQUFDLG9CQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztnQkFDekIsQ0FBQyxvQkFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNqQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsRUFDOUU7Z0JBQ0EsOENBQThDO2dCQUM5QyxPQUFPLG9CQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDcEQ7WUFFRCxnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDN0UsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELDhDQUE4QztZQUM5QyxN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QUFPLG9CQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQTlHRCwwREE4R0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBUeXBlU2NyaXB0IFRyYW5zZm9ybWVyIHRvIHByb2Nlc3MgV29ya2VyIGFuZCBTaGFyZWRXb3JrZXIgZW50cnkgcG9pbnRzIGFuZCB0cmFuc2Zvcm1cbiAqIHRoZSBVUkwgaW5zdGFuY2VzIHRvIHJlZmVyZW5jZSB0aGUgYnVpbHQgYW5kIGJ1bmRsZWQgd29ya2VyIGNvZGUuIFRoaXMgdXNlcyBhIGNhbGxiYWNrIHByb2Nlc3NcbiAqIHNpbWlsYXIgdG8gdGhlIGNvbXBvbmVudCBzdHlsZXNoZWV0cyB0byBhbGxvdyB0aGUgbWFpbiBlc2J1aWxkIHBsdWdpbiB0byBwcm9jZXNzIGZpbGVzIGFzIG5lZWRlZC5cbiAqIFVuc3VwcG9ydGVkIHdvcmtlciBleHByZXNzaW9ucyB3aWxsIGJlIGxlZnQgaW4gdGhlaXIgb3JpZ2luIGZvcm0uXG4gKiBAcGFyYW0gZ2V0VHlwZUNoZWNrZXIgQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBUeXBlU2NyaXB0IFR5cGVDaGVja2VyIGluc3RhbmNlIGZvciB0aGUgcHJvZ3JhbS5cbiAqIEByZXR1cm5zIEEgVHlwZVNjcmlwdCB0cmFuc2Zvcm1lciBmYWN0b3J5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV29ya2VyVHJhbnNmb3JtZXIoXG4gIGZpbGVQcm9jZXNzb3I6IChmaWxlOiBzdHJpbmcsIGltcG9ydGVyOiBzdHJpbmcpID0+IHN0cmluZyxcbik6IHRzLlRyYW5zZm9ybWVyRmFjdG9yeTx0cy5Tb3VyY2VGaWxlPiB7XG4gIHJldHVybiAoY29udGV4dDogdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0KSA9PiB7XG4gICAgY29uc3Qgbm9kZUZhY3RvcnkgPSBjb250ZXh0LmZhY3Rvcnk7XG5cbiAgICBjb25zdCB2aXNpdE5vZGU6IHRzLlZpc2l0b3IgPSAobm9kZTogdHMuTm9kZSkgPT4ge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5vZGUgaXMgYSB2YWxpZCBuZXcgZXhwcmVzc2lvbiBmb3IgYSBXb3JrZXIgb3IgU2hhcmVkV29ya2VyXG4gICAgICAvLyBUT0RPOiBBZGQgZ2xvYmFsIHNjb3BlIGNoZWNrXG4gICAgICBpZiAoXG4gICAgICAgICF0cy5pc05ld0V4cHJlc3Npb24obm9kZSkgfHxcbiAgICAgICAgIXRzLmlzSWRlbnRpZmllcihub2RlLmV4cHJlc3Npb24pIHx8XG4gICAgICAgIChub2RlLmV4cHJlc3Npb24udGV4dCAhPT0gJ1dvcmtlcicgJiYgbm9kZS5leHByZXNzaW9uLnRleHQgIT09ICdTaGFyZWRXb3JrZXInKVxuICAgICAgKSB7XG4gICAgICAgIC8vIFZpc2l0IGNoaWxkIG5vZGVzIG9mIG5vbi1Xb3JrZXIgZXhwcmVzc2lvbnNcbiAgICAgICAgcmV0dXJuIHRzLnZpc2l0RWFjaENoaWxkKG5vZGUsIHZpc2l0Tm9kZSwgY29udGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdvcmtlciBzaG91bGQgaGF2ZSBhdGxlYXN0IG9uZSBhcmd1bWVudCBidXQgbm90IG1vcmUgdGhhbiB0d29cbiAgICAgIGlmICghbm9kZS5hcmd1bWVudHMgfHwgbm9kZS5hcmd1bWVudHMubGVuZ3RoIDwgMSB8fCBub2RlLmFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfVxuXG4gICAgICAvLyBGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgbmV3IFVSTCBleHByZXNzaW9uXG4gICAgICBjb25zdCB3b3JrZXJVcmxOb2RlID0gbm9kZS5hcmd1bWVudHNbMF07XG4gICAgICAvLyBUT0RPOiBBZGQgZ2xvYmFsIHNjb3BlIGNoZWNrXG4gICAgICBpZiAoXG4gICAgICAgICF0cy5pc05ld0V4cHJlc3Npb24od29ya2VyVXJsTm9kZSkgfHxcbiAgICAgICAgIXRzLmlzSWRlbnRpZmllcih3b3JrZXJVcmxOb2RlLmV4cHJlc3Npb24pIHx8XG4gICAgICAgIHdvcmtlclVybE5vZGUuZXhwcmVzc2lvbi50ZXh0ICE9PSAnVVJMJ1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfVxuXG4gICAgICAvLyBVUkwgbXVzdCBoYXZlIDIgYXJndW1lbnRzXG4gICAgICBpZiAoIXdvcmtlclVybE5vZGUuYXJndW1lbnRzIHx8IHdvcmtlclVybE5vZGUuYXJndW1lbnRzLmxlbmd0aCAhPT0gMikge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH1cblxuICAgICAgLy8gVVJMIGFyZ3VtZW50cyBtdXN0IGJlIGEgc3RyaW5nIGFuZCB0aGVuIGBpbXBvcnQubWV0YS51cmxgXG4gICAgICBpZiAoXG4gICAgICAgICF0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKHdvcmtlclVybE5vZGUuYXJndW1lbnRzWzBdKSB8fFxuICAgICAgICAhdHMuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24od29ya2VyVXJsTm9kZS5hcmd1bWVudHNbMV0pIHx8XG4gICAgICAgICF0cy5pc01ldGFQcm9wZXJ0eSh3b3JrZXJVcmxOb2RlLmFyZ3VtZW50c1sxXS5leHByZXNzaW9uKSB8fFxuICAgICAgICB3b3JrZXJVcmxOb2RlLmFyZ3VtZW50c1sxXS5uYW1lLnRleHQgIT09ICd1cmwnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gd29ya2VyVXJsTm9kZS5hcmd1bWVudHNbMF0udGV4dDtcbiAgICAgIGNvbnN0IGltcG9ydGVyID0gbm9kZS5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWU7XG5cbiAgICAgIC8vIFByb2Nlc3MgdGhlIGZpbGVcbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50UGF0aCA9IGZpbGVQcm9jZXNzb3IoZmlsZVBhdGgsIGltcG9ydGVyKTtcblxuICAgICAgLy8gVXBkYXRlIGlmIHRoZSBwYXRoIGNoYW5nZWRcbiAgICAgIGlmIChyZXBsYWNlbWVudFBhdGggIT09IGZpbGVQYXRoKSB7XG4gICAgICAgIHJldHVybiBub2RlRmFjdG9yeS51cGRhdGVOZXdFeHByZXNzaW9uKFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgbm9kZS5leHByZXNzaW9uLFxuICAgICAgICAgIG5vZGUudHlwZUFyZ3VtZW50cyxcbiAgICAgICAgICAvLyBVcGRhdGUgV29ya2VyIGFyZ3VtZW50c1xuICAgICAgICAgIHRzLnNldFRleHRSYW5nZShcbiAgICAgICAgICAgIG5vZGVGYWN0b3J5LmNyZWF0ZU5vZGVBcnJheShcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIG5vZGVGYWN0b3J5LnVwZGF0ZU5ld0V4cHJlc3Npb24oXG4gICAgICAgICAgICAgICAgICB3b3JrZXJVcmxOb2RlLFxuICAgICAgICAgICAgICAgICAgd29ya2VyVXJsTm9kZS5leHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgd29ya2VyVXJsTm9kZS50eXBlQXJndW1lbnRzLFxuICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIFVSTCBhcmd1bWVudHNcbiAgICAgICAgICAgICAgICAgIHRzLnNldFRleHRSYW5nZShcbiAgICAgICAgICAgICAgICAgICAgbm9kZUZhY3RvcnkuY3JlYXRlTm9kZUFycmF5KFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVGYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwocmVwbGFjZW1lbnRQYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlclVybE5vZGUuYXJndW1lbnRzWzFdLFxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgd29ya2VyVXJsTm9kZS5hcmd1bWVudHMuaGFzVHJhaWxpbmdDb21tYSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgd29ya2VyVXJsTm9kZS5hcmd1bWVudHMsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzZWNvbmQgV29ya2VyIGFyZ3VtZW50IChvcHRpb25zKSBpZiBwcmVzZW50LlxuICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSBjcmVhdGUgYSBkZWZhdWx0IG9wdGlvbnMgb2JqZWN0IGZvciBtb2R1bGUgV29ya2Vycy5cbiAgICAgICAgICAgICAgICBub2RlLmFyZ3VtZW50c1sxXSA/P1xuICAgICAgICAgICAgICAgICAgbm9kZUZhY3RvcnkuY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oW1xuICAgICAgICAgICAgICAgICAgICBub2RlRmFjdG9yeS5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgIG5vZGVGYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwoJ21vZHVsZScpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIG5vZGUuYXJndW1lbnRzLmhhc1RyYWlsaW5nQ29tbWEsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbm9kZS5hcmd1bWVudHMsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKHNvdXJjZUZpbGUpID0+IHtcbiAgICAgIC8vIFNraXAgdHJhbnNmb3JtZXIgaWYgdGhlcmUgYXJlIG5vIFdvcmtlcnNcbiAgICAgIGlmICghc291cmNlRmlsZS50ZXh0LmluY2x1ZGVzKCdXb3JrZXInKSkge1xuICAgICAgICByZXR1cm4gc291cmNlRmlsZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRzLnZpc2l0RWFjaENoaWxkKHNvdXJjZUZpbGUsIHZpc2l0Tm9kZSwgY29udGV4dCk7XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
@@ -16,3 +16,4 @@ export declare function createBrowserPolyfillBundleOptions(options: NormalizedAp
16
16
  * @returns An esbuild BuildOptions object.
17
17
  */
18
18
  export declare function createServerCodeBundleOptions(options: NormalizedApplicationBuildOptions, target: string[], sourceFileCache: SourceFileCache): BuildOptions;
19
+ export declare function createServerPolyfillBundleOptions(options: NormalizedApplicationBuildOptions, target: string[], sourceFileCache?: SourceFileCache): BuildOptions | undefined;