@angular/compiler-cli 9.0.3 → 9.0.7

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 (71) hide show
  1. package/ngcc/index.d.ts +2 -2
  2. package/ngcc/index.js +4 -3
  3. package/ngcc/main-ngcc.js +4 -3
  4. package/ngcc/src/dependencies/dependency_resolver.d.ts +7 -1
  5. package/ngcc/src/dependencies/dependency_resolver.js +20 -6
  6. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.d.ts +3 -2
  7. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.js +36 -21
  8. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +15 -10
  9. package/ngcc/src/execution/api.d.ts +2 -4
  10. package/ngcc/src/execution/api.js +1 -1
  11. package/ngcc/src/execution/cluster/executor.d.ts +2 -2
  12. package/ngcc/src/execution/cluster/executor.js +1 -1
  13. package/ngcc/src/execution/cluster/master.js +15 -8
  14. package/ngcc/src/execution/single_process_executor.d.ts +13 -7
  15. package/ngcc/src/execution/single_process_executor.js +55 -38
  16. package/ngcc/src/execution/utils.js +1 -1
  17. package/ngcc/src/host/commonjs_host.js +2 -7
  18. package/ngcc/src/host/delegating_host.d.ts +44 -0
  19. package/ngcc/src/host/delegating_host.js +146 -0
  20. package/ngcc/src/host/esm5_host.js +1 -7
  21. package/ngcc/src/host/umd_host.js +2 -7
  22. package/ngcc/src/locking/lock_file.d.ts +29 -0
  23. package/ngcc/src/locking/lock_file.js +17 -0
  24. package/ngcc/src/locking/lock_file_with_child_process/index.d.ts +41 -0
  25. package/ngcc/src/locking/lock_file_with_child_process/index.js +91 -0
  26. package/ngcc/src/locking/lock_file_with_child_process/unlocker.d.ts +2 -0
  27. package/ngcc/src/locking/lock_file_with_child_process/unlocker.js +44 -0
  28. package/ngcc/src/locking/lock_file_with_child_process/util.d.ts +17 -0
  29. package/ngcc/src/locking/lock_file_with_child_process/util.js +42 -0
  30. package/ngcc/src/locking/sync_locker.d.ts +36 -0
  31. package/ngcc/src/locking/sync_locker.js +67 -0
  32. package/ngcc/src/logging/console_logger.d.ts +3 -9
  33. package/ngcc/src/logging/console_logger.js +16 -15
  34. package/ngcc/src/logging/logger.d.ts +7 -0
  35. package/ngcc/src/logging/logger.js +8 -1
  36. package/ngcc/src/main.js +32 -24
  37. package/ngcc/src/packages/build_marker.d.ts +1 -1
  38. package/ngcc/src/packages/build_marker.js +1 -1
  39. package/ngcc/src/packages/configuration.d.ts +8 -0
  40. package/ngcc/src/packages/configuration.js +2 -2
  41. package/ngcc/src/packages/entry_point.d.ts +26 -2
  42. package/ngcc/src/packages/entry_point.js +34 -24
  43. package/ngcc/src/packages/transformer.js +8 -4
  44. package/ngcc/src/rendering/dts_renderer.js +2 -2
  45. package/ngcc/src/rendering/renderer.js +2 -2
  46. package/ngcc/src/rendering/source_maps.d.ts +2 -1
  47. package/ngcc/src/rendering/source_maps.js +24 -13
  48. package/ngcc/src/sourcemaps/segment_marker.d.ts +7 -15
  49. package/ngcc/src/sourcemaps/segment_marker.js +12 -41
  50. package/ngcc/src/sourcemaps/source_file.d.ts +31 -4
  51. package/ngcc/src/sourcemaps/source_file.js +130 -37
  52. package/package.json +2 -2
  53. package/src/ngtsc/annotations/src/directive.js +3 -2
  54. package/src/ngtsc/core/api/index.d.ts +11 -0
  55. package/src/ngtsc/core/api/index.js +20 -0
  56. package/src/ngtsc/core/api/src/interfaces.d.ts +65 -0
  57. package/src/ngtsc/core/api/src/interfaces.js +20 -0
  58. package/src/ngtsc/core/api/src/options.d.ts +32 -0
  59. package/src/ngtsc/core/api/src/options.js +20 -0
  60. package/src/ngtsc/core/{api.d.ts → api/src/public_options.d.ts} +14 -81
  61. package/src/ngtsc/core/api/src/public_options.js +20 -0
  62. package/src/ngtsc/diagnostics/src/error_code.d.ts +9 -0
  63. package/src/ngtsc/diagnostics/src/error_code.js +10 -1
  64. package/src/ngtsc/scope/src/local.js +50 -47
  65. package/src/ngtsc/typecheck/src/oob.d.ts +10 -0
  66. package/src/ngtsc/typecheck/src/oob.js +14 -1
  67. package/src/ngtsc/typecheck/src/type_check_block.js +11 -2
  68. package/src/version.js +1 -1
  69. package/ngcc/src/execution/lock_file.d.ts +0 -43
  70. package/ngcc/src/execution/lock_file.js +0 -129
  71. package/src/ngtsc/core/api.js +0 -20
@@ -92,19 +92,24 @@
92
92
  var _this = this;
93
93
  var path = this.unprocessedPaths.shift();
94
94
  var entryPoint = this.getEntryPoint(path);
95
- if (entryPoint !== null && entryPoint.compiledByAngular) {
96
- this.unsortedEntryPoints.set(entryPoint.path, entryPoint);
97
- var deps = this.resolver.getEntryPointDependencies(entryPoint);
98
- deps.dependencies.forEach(function (dep) {
99
- if (!_this.unsortedEntryPoints.has(dep)) {
100
- _this.unprocessedPaths.push(dep);
101
- }
102
- });
95
+ if (entryPoint === null || !entryPoint.compiledByAngular) {
96
+ return;
103
97
  }
98
+ this.unsortedEntryPoints.set(entryPoint.path, entryPoint);
99
+ var deps = this.resolver.getEntryPointDependencies(entryPoint);
100
+ deps.dependencies.forEach(function (dep) {
101
+ if (!_this.unsortedEntryPoints.has(dep)) {
102
+ _this.unprocessedPaths.push(dep);
103
+ }
104
+ });
104
105
  };
105
106
  TargetedEntryPointFinder.prototype.getEntryPoint = function (entryPointPath) {
106
107
  var packagePath = this.computePackagePath(entryPointPath);
107
- return entry_point_1.getEntryPointInfo(this.fs, this.config, this.logger, packagePath, entryPointPath);
108
+ var entryPoint = entry_point_1.getEntryPointInfo(this.fs, this.config, this.logger, packagePath, entryPointPath);
109
+ if (entryPoint === entry_point_1.NO_ENTRY_POINT || entryPoint === entry_point_1.INVALID_ENTRY_POINT) {
110
+ return null;
111
+ }
112
+ return entryPoint;
108
113
  };
109
114
  /**
110
115
  * Search down to the `entryPointPath` from each `basePath` for the first `package.json` that we
@@ -195,4 +200,4 @@
195
200
  }());
196
201
  exports.TargetedEntryPointFinder = TargetedEntryPointFinder;
197
202
  });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0ZWRfZW50cnlfcG9pbnRfZmluZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2VudHJ5X3BvaW50X2ZpbmRlci90YXJnZXRlZF9lbnRyeV9wb2ludF9maW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsMkVBQXFIO0lBR3JILHFGQUEwRDtJQUUxRCxtRkFBOEY7SUFHOUYsaUZBQXFDO0lBRXJDOzs7Ozs7T0FNRztJQUNIO1FBS0Usa0NBQ1ksRUFBYyxFQUFVLE1BQXlCLEVBQVUsTUFBYyxFQUN6RSxRQUE0QixFQUFVLFFBQXdCLEVBQzlELFVBQTBCLEVBQVUsWUFBb0M7WUFGeEUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtZQUFVLFdBQU0sR0FBTixNQUFNLENBQW1CO1lBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtZQUN6RSxhQUFRLEdBQVIsUUFBUSxDQUFvQjtZQUFVLGFBQVEsR0FBUixRQUFRLENBQWdCO1lBQzlELGVBQVUsR0FBVixVQUFVLENBQWdCO1lBQVUsaUJBQVksR0FBWixZQUFZLENBQXdCO1lBUDVFLHFCQUFnQixHQUFxQixFQUFFLENBQUM7WUFDeEMsd0JBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7WUFDNUQsY0FBUyxHQUFHLG9CQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFLb0IsQ0FBQztRQUV4RixrREFBZSxHQUFmO1lBQUEsaUJBaUJDO1lBaEJDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7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RixxQkFBcUI7NEJBQ3JCLEtBQXNCLElBQUEsNEJBQUEsaUJBQUEsUUFBUSxDQUFBLENBQUEsa0NBQUEsd0RBQUU7Z0NBQTNCLElBQU0sT0FBTyxxQkFBQTtnQ0FDaEIsV0FBVyxHQUFHLGtCQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dDQUN6QyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGtCQUFJLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDLEVBQUU7b0NBQ3JELE9BQU8sV0FBVyxDQUFDO2lDQUNwQjs2QkFDRjs7Ozs7Ozs7O3dCQUVELG1GQUFtRjt3QkFDbkYseUZBQXlGO3dCQUN6RixnQ0FBZ0M7d0JBQ2hDLE1BQU07cUJBQ1A7aUJBQ0Y7Ozs7Ozs7OztZQUNELGtGQUFrRjtZQUNsRixrRkFBa0Y7WUFDbEYsMEJBQTBCO1lBQzFCLHNGQUFzRjtZQUN0RixPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDO1FBR0Q7OztXQUdHO1FBQ0ssNENBQVMsR0FBakIsVUFBa0IsSUFBaUI7WUFDakMsSUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxLQUFLLEdBQUcsRUFBRTtnQkFDbkIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDOUI7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBQ0gsK0JBQUM7SUFBRCxDQUFDLEFBOUlELElBOElDO0lBOUlZLDREQUF3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIEZpbGVTeXN0ZW0sIFBhdGhTZWdtZW50LCBqb2luLCByZWxhdGl2ZSwgcmVsYXRpdmVGcm9tfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtEZXBlbmRlbmN5UmVzb2x2ZXIsIFNvcnRlZEVudHJ5UG9pbnRzSW5mb30gZnJvbSAnLi4vZGVwZW5kZW5jaWVzL2RlcGVuZGVuY3lfcmVzb2x2ZXInO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7aGFzQmVlblByb2Nlc3NlZH0gZnJvbSAnLi4vcGFja2FnZXMvYnVpbGRfbWFya2VyJztcbmltcG9ydCB7TmdjY0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL3BhY2thZ2VzL2NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtFbnRyeVBvaW50LCBFbnRyeVBvaW50SnNvblByb3BlcnR5LCBnZXRFbnRyeVBvaW50SW5mb30gZnJvbSAnLi4vcGFja2FnZXMvZW50cnlfcG9pbnQnO1xuaW1wb3J0IHtQYXRoTWFwcGluZ3N9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7RW50cnlQb2ludEZpbmRlcn0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHtnZXRCYXNlUGF0aHN9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIEFuIEVudHJ5UG9pbnRGaW5kZXIgdGhhdCBzdGFydHMgZnJvbSBhIHRhcmdldCBlbnRyeS1wb2ludCBhbmQgb25seSBmaW5kc1xuICogZW50cnktcG9pbnRzIHRoYXQgYXJlIGRlcGVuZGVuY2llcyBvZiB0aGUgdGFyZ2V0LlxuICpcbiAqIFRoaXMgaXMgZmFzdGVyIHRoYW4gc2VhcmNoaW5nIHRoZSBlbnRpcmUgZmlsZS1zeXN0ZW0gZm9yIGFsbCB0aGUgZW50cnktcG9pbnRzLFxuICogYW5kIGlzIHVzZWQgcHJpbWFyaWx5IGJ5IHRoZSBDTEkgaW50ZWdyYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXJnZXRlZEVudHJ5UG9pbnRGaW5kZXIgaW1wbGVtZW50cyBFbnRyeVBvaW50RmluZGVyIHtcbiAgcHJpdmF0ZSB1bnByb2Nlc3NlZFBhdGhzOiBBYnNvbHV0ZUZzUGF0aFtdID0gW107XG4gIHByaXZhdGUgdW5zb3J0ZWRFbnRyeVBvaW50cyA9IG5ldyBNYXA8QWJzb2x1dGVGc1BhdGgsIEVudHJ5UG9pbnQ+KCk7XG4gIHByaXZhdGUgYmFzZVBhdGhzID0gZ2V0QmFzZVBhdGhzKHRoaXMuYmFzZVBhdGgsIHRoaXMucGF0aE1hcHBpbmdzKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgZnM6IEZpbGVTeXN0ZW0sIHByaXZhdGUgY29uZmlnOiBOZ2NjQ29uZmlndXJhdGlvbiwgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICAgIHByaXZhdGUgcmVzb2x2ZXI6IERlcGVuZGVuY3lSZXNvbHZlciwgcHJpdmF0ZSBiYXNlUGF0aDogQWJzb2x1dGVGc1BhdGgsXG4gICAgICBwcml2YXRlIHRhcmdldFBhdGg6IEFic29sdXRlRnNQYXRoLCBwcml2YXRlIHBhdGhNYXBwaW5nczogUGF0aE1hcHBpbmdzfHVuZGVmaW5lZCkge31cblxuICBmaW5kRW50cnlQb2ludHMoKTogU29ydGVkRW50cnlQb2ludHNJbmZvIHtcbiAgICB0aGlzLnVucHJvY2Vzc2VkUGF0aHMgPSBbdGhpcy50YXJnZXRQYXRoXTtcbiAgICB3aGlsZSAodGhpcy51bnByb2Nlc3NlZFBhdGhzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvY2Vzc05leHRQYXRoKCk7XG4gICAgfVxuICAgIGNvbnN0IHRhcmdldEVudHJ5UG9pbnQgPSB0aGlzLnVuc29ydGVkRW50cnlQb2ludHMuZ2V0KHRoaXMudGFyZ2V0UGF0aCk7XG4gICAgY29uc3QgZW50cnlQb2ludHMgPSB0aGlzLnJlc29sdmVyLnNvcnRFbnRyeVBvaW50c0J5RGVwZW5kZW5jeShcbiAgICAgICAgQXJyYXkuZnJvbSh0aGlzLnVuc29ydGVkRW50cnlQb2ludHMudmFsdWVzKCkpLCB0YXJnZXRFbnRyeVBvaW50KTtcblxuICAgIGNvbnN0IGludmFsaWRUYXJnZXQgPVxuICAgICAgICBlbnRyeVBvaW50cy5pbnZhbGlkRW50cnlQb2ludHMuZmluZChpID0+IGkuZW50cnlQb2ludC5wYXRoID09PSB0aGlzLnRhcmdldFBhdGgpO1xuICAgIGlmIChpbnZhbGlkVGFyZ2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlIHRhcmdldCBlbnRyeS1wb2ludCBcIiR7aW52YWxpZFRhcmdldC5lbnRyeVBvaW50Lm5hbWV9XCIgaGFzIG1pc3NpbmcgZGVwZW5kZW5jaWVzOlxcbmAgK1xuICAgICAgICAgIGludmFsaWRUYXJnZXQubWlzc2luZ0RlcGVuZGVuY2llcy5tYXAoZGVwID0+IGAgLSAke2RlcH1cXG5gKS5qb2luKCcnKSk7XG4gICAgfVxuICAgIHJldHVybiBlbnRyeVBvaW50cztcbiAgfVxuXG4gIHRhcmdldE5lZWRzUHJvY2Vzc2luZ09yQ2xlYW5pbmcoXG4gICAgICBwcm9wZXJ0aWVzVG9Db25zaWRlcjogRW50cnlQb2ludEpzb25Qcm9wZXJ0eVtdLCBjb21waWxlQWxsRm9ybWF0czogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVudHJ5UG9pbnQgPSB0aGlzLmdldEVudHJ5UG9pbnQodGhpcy50YXJnZXRQYXRoKTtcbiAgICBpZiAoZW50cnlQb2ludCA9PT0gbnVsbCB8fCAhZW50cnlQb2ludC5jb21waWxlZEJ5QW5ndWxhcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllc1RvQ29uc2lkZXIpIHtcbiAgICAgIGlmIChlbnRyeVBvaW50LnBhY2thZ2VKc29uW3Byb3BlcnR5XSkge1xuICAgICAgICAvLyBIZXJlIGlzIGEgcHJvcGVydHkgdGhhdCBzaG91bGQgYmUgcHJvY2Vzc2VkLlxuICAgICAgICBpZiAoIWhhc0JlZW5Qcm9jZXNzZWQoZW50cnlQb2ludC5wYWNrYWdlSnNvbiwgcHJvcGVydHkpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb21waWxlQWxsRm9ybWF0cykge1xuICAgICAgICAgIC8vIFRoaXMgcHJvcGVydHkgaGFzIGJlZW4gcHJvY2Vzc2VkLCBhbmQgd2Ugb25seSBuZWVkIG9uZS5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQWxsIGBwcm9wZXJ0aWVzVG9Db25zaWRlcmAgdGhhdCBhcHBlYXIgaW4gdGhpcyBlbnRyeS1wb2ludCBoYXZlIGJlZW4gcHJvY2Vzc2VkLlxuICAgIC8vIEluIG90aGVyIHdvcmRzLCB0aGVyZSB3ZXJlIG5vIHByb3BlcnRpZXMgdGhhdCBuZWVkIHByb2Nlc3NpbmcuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzTmV4dFBhdGgoKTogdm9pZCB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMudW5wcm9jZXNzZWRQYXRocy5zaGlmdCgpICE7XG4gICAgY29uc3QgZW50cnlQb2ludCA9IHRoaXMuZ2V0RW50cnlQb2ludChwYXRoKTtcbiAgICBpZiAoZW50cnlQb2ludCAhPT0gbnVsbCAmJiBlbnRyeVBvaW50LmNvbXBpbGVkQnlBbmd1bGFyKSB7XG4gICAgICB0aGlzLnVuc29ydGVkRW50cnlQb2ludHMuc2V0KGVudHJ5UG9pbnQucGF0aCwgZW50cnlQb2ludCk7XG4gICAgICBjb25zdCBkZXBzID0gdGhpcy5yZXNvbHZlci5nZXRFbnRyeVBvaW50RGVwZW5kZW5jaWVzKGVudHJ5UG9pbnQpO1xuICAgICAgZGVwcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChkZXAgPT4ge1xuICAgICAgICBpZiAoIXRoaXMudW5zb3J0ZWRFbnRyeVBvaW50cy5oYXMoZGVwKSkge1xuICAgICAgICAgIHRoaXMudW5wcm9jZXNzZWRQYXRocy5wdXNoKGRlcCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW50cnlQb2ludChlbnRyeVBvaW50UGF0aDogQWJzb2x1dGVGc1BhdGgpOiBFbnRyeVBvaW50fG51bGwge1xuICAgIGNvbnN0IHBhY2thZ2VQYXRoID0gdGhpcy5jb21wdXRlUGFja2FnZVBhdGgoZW50cnlQb2ludFBhdGgpO1xuICAgIHJldHVybiBnZXRFbnRyeVBvaW50SW5mbyh0aGlzLmZzLCB0aGlzLmNvbmZpZywgdGhpcy5sb2dnZXIsIHBhY2thZ2VQYXRoLCBlbnRyeVBvaW50UGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGRvd24gdG8gdGhlIGBlbnRyeVBvaW50UGF0aGAgZnJvbSBlYWNoIGBiYXNlUGF0aGAgZm9yIHRoZSBmaXJzdCBgcGFja2FnZS5qc29uYCB0aGF0IHdlXG4gICAqIGNvbWUgdG8uIFRoaXMgaXMgdGhlIHBhdGggdG8gdGhlIGVudHJ5LXBvaW50J3MgY29udGFpbmluZyBwYWNrYWdlLiBGb3IgZXhhbXBsZSBpZiBgYmFzZVBhdGhgIGlzXG4gICAqIGAvYS9iL2NgIGFuZCBgZW50cnlQb2ludFBhdGhgIGlzIGAvYS9iL2MvZC9lYCBhbmQgdGhlcmUgZXhpc3RzIGAvYS9iL2MvZC9wYWNrYWdlLmpzb25gIGFuZFxuICAgKiBgL2EvYi9jL2QvZS9wYWNrYWdlLmpzb25gLCB0aGVuIHdlIHdpbGwgcmV0dXJuIGAvYS9iL2MvZGAuXG4gICAqXG4gICAqIFRvIGFjY291bnQgZm9yIG5lc3RlZCBgbm9kZV9tb2R1bGVzYCB3ZSBhY3R1YWxseSBzdGFydCB0aGUgc2VhcmNoIGF0IHRoZSBsYXN0IGBub2RlX21vZHVsZXNgIGluXG4gICAqIHRoZSBgZW50cnlQb2ludFBhdGhgIHRoYXQgaXMgYmVsb3cgdGhlIGBiYXNlUGF0aGAuIEUuZy4gaWYgYGJhc2VQYXRoYCBpcyBgL2EvYi9jYCBhbmRcbiAgICogYGVudHJ5UG9pbnRQYXRoYCBpcyBgL2EvYi9jL2Qvbm9kZV9tb2R1bGVzL3gveS96YCwgd2Ugc3RhcnQgdGhlIHNlYXJjaCBhdFxuICAgKiBgL2EvYi9jL2Qvbm9kZV9tb2R1bGVzYC5cbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZVBhY2thZ2VQYXRoKGVudHJ5UG9pbnRQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEFic29sdXRlRnNQYXRoIHtcbiAgICBmb3IgKGNvbnN0IGJhc2VQYXRoIG9mIHRoaXMuYmFzZVBhdGhzKSB7XG4gICAgICBpZiAoZW50cnlQb2ludFBhdGguc3RhcnRzV2l0aChiYXNlUGF0aCkpIHtcbiAgICAgICAgbGV0IHBhY2thZ2VQYXRoID0gYmFzZVBhdGg7XG4gICAgICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5zcGxpdFBhdGgocmVsYXRpdmUoYmFzZVBhdGgsIGVudHJ5UG9pbnRQYXRoKSk7XG4gICAgICAgIGxldCBub2RlTW9kdWxlc0luZGV4ID0gc2VnbWVudHMubGFzdEluZGV4T2YocmVsYXRpdmVGcm9tKCdub2RlX21vZHVsZXMnKSk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGBub2RlX21vZHVsZXNgIGluIHRoZSByZWxhdGl2ZSBwYXRoIGJldHdlZW4gdGhlIGBiYXNlUGF0aGAgYW5kIHRoZVxuICAgICAgICAvLyBgZW50cnlQb2ludFBhdGhgIHRoZW4ganVzdCB0cnkgdGhlIGBiYXNlUGF0aGAgYXMgdGhlIGBwYWNrYWdlUGF0aGAuXG4gICAgICAgIC8vIChUaGlzIGNhbiBiZSB0aGUgY2FzZSB3aXRoIHBhdGgtbWFwcGVkIGVudHJ5LXBvaW50cy4pXG4gICAgICAgIGlmIChub2RlTW9kdWxlc0luZGV4ID09PSAtMSkge1xuICAgICAgICAgIGlmICh0aGlzLmZzLmV4aXN0cyhqb2luKHBhY2thZ2VQYXRoLCAncGFja2FnZS5qc29uJykpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFja2FnZVBhdGg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQgdGhlIHNlYXJjaCBhdCB0aGUgZGVlcGVzdCBuZXN0ZWQgYG5vZGVfbW9kdWxlc2AgZm9sZGVyIHRoYXQgaXMgYmVsb3cgdGhlIGBiYXNlUGF0aGBcbiAgICAgICAgLy8gYnV0IGFib3ZlIHRoZSBgZW50cnlQb2ludFBhdGhgLCBpZiB0aGVyZSBhcmUgYW55LlxuICAgICAgICB3aGlsZSAobm9kZU1vZHVsZXNJbmRleCA+PSAwKSB7XG4gICAgICAgICAgcGFja2FnZVBhdGggPSBqb2luKHBhY2thZ2VQYXRoLCBzZWdtZW50cy5zaGlmdCgpICEpO1xuICAgICAgICAgIG5vZGVNb2R1bGVzSW5kZXgtLTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBzdGFydCBhdCB0aGUgZm9sZGVyIGJlbG93IHRoZSBjdXJyZW50IGNhbmRpZGF0ZSBgcGFja2FnZVBhdGhgIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGluaXRpYWwgY2FuZGlkYXRlIGBwYWNrYWdlUGF0aGAgaXMgZWl0aGVyIGEgYG5vZGVfbW9kdWxlc2AgZm9sZGVyIG9yIHRoZSBgYmFzZVBhdGhgIHdpdGhcbiAgICAgICAgLy8gbm8gYHBhY2thZ2UuanNvbmAuXG4gICAgICAgIGZvciAoY29uc3Qgc2VnbWVudCBvZiBzZWdtZW50cykge1xuICAgICAgICAgIHBhY2thZ2VQYXRoID0gam9pbihwYWNrYWdlUGF0aCwgc2VnbWVudCk7XG4gICAgICAgICAgaWYgKHRoaXMuZnMuZXhpc3RzKGpvaW4ocGFja2FnZVBhdGgsICdwYWNrYWdlLmpzb24nKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYWNrYWdlUGF0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB3ZSBnb3QgaGVyZSB0aGVuIHdlIGNvdWxkbid0IGZpbmQgYSBgcGFja2FnZVBhdGhgIGZvciB0aGUgY3VycmVudCBgYmFzZVBhdGhgLlxuICAgICAgICAvLyBTaW5jZSBgYmFzZVBhdGhgcyBhcmUgZ3VhcmFudGVlZCBub3QgdG8gYmUgYSBzdWItZGlyZWN0b3J5IG9mIGVhY2ggb3RoZXIgdGhlbiBubyBvdGhlclxuICAgICAgICAvLyBgYmFzZVBhdGhgIHdpbGwgbWF0Y2ggZWl0aGVyLlxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBub25lIG9mIHRoZSBgYmFzZVBhdGhzYCBtYXRjaGVkIHRoZSBgZW50cnlQb2ludFBhdGhgLCB3aGljaFxuICAgIC8vIGlzIHNvbWV3aGF0IHVuZXhwZWN0ZWQgYW5kIG1lYW5zIHRoYXQgdGhpcyBlbnRyeS1wb2ludCBsaXZlcyBjb21wbGV0ZWx5IG91dHNpZGVcbiAgICAvLyBhbnkgb2YgdGhlIGBiYXNlUGF0aHNgLlxuICAgIC8vIEFsbCB3ZSBjYW4gZG8gaXMgYXNzdW1lIHRoYXQgaGlzIGVudHJ5LXBvaW50IGlzIGEgcHJpbWFyeSBlbnRyeS1wb2ludCB0byBhIHBhY2thZ2UuXG4gICAgcmV0dXJuIGVudHJ5UG9pbnRQYXRoO1xuICB9XG5cblxuICAvKipcbiAgICogU3BsaXQgdGhlIGdpdmVuIGBwYXRoYCBpbnRvIHBhdGggc2VnbWVudHMgdXNpbmcgYW4gRlMgaW5kZXBlbmRlbnQgYWxnb3JpdGhtLlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBzcGxpdC5cbiAgICovXG4gIHByaXZhdGUgc3BsaXRQYXRoKHBhdGg6IFBhdGhTZWdtZW50KSB7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBbXTtcbiAgICB3aGlsZSAocGF0aCAhPT0gJy4nKSB7XG4gICAgICBzZWdtZW50cy51bnNoaWZ0KHRoaXMuZnMuYmFzZW5hbWUocGF0aCkpO1xuICAgICAgcGF0aCA9IHRoaXMuZnMuZGlybmFtZShwYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlZ21lbnRzO1xuICB9XG59XG4iXX0=
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0ZWRfZW50cnlfcG9pbnRfZmluZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2VudHJ5X3BvaW50X2ZpbmRlci90YXJnZXRlZF9lbnRyeV9wb2ludF9maW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsMkVBQXFIO0lBR3JILHFGQUEwRDtJQUUxRCxtRkFBbUk7SUFHbkksaUZBQXFDO0lBRXJDOzs7Ozs7T0FNRztJQUNIO1FBS0Usa0NBQ1ksRUFBYyxFQUFVLE1BQXlCLEVBQVUsTUFBYyxFQUN6RSxRQUE0QixFQUFVLFFBQXdCLEVBQzlELFVBQTBCLEVBQVUsWUFBb0M7WUFGeEUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtZQUFVLFdBQU0sR0FBTixNQUFNLENBQW1CO1lBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtZQUN6RSxhQUFRLEdBQVIsUUFBUSxDQUFvQjtZQUFVLGFBQVEsR0FBUixRQUFRLENBQWdCO1lBQzlELGVBQVUsR0FBVixVQUFVLENBQWdCO1lBQVUsaUJBQVksR0FBWixZQUFZLENBQXdCO1lBUDVFLHFCQUFnQixHQUFxQixFQUFFLENBQUM7WUFDeEMsd0JBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7WUFDNUQsY0FBUyxHQUFHLG9CQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFLb0IsQ0FBQztRQUV4RixrREFBZSxHQUFmO1lBQUEsaUJBaUJDO1lBaEJDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7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QGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIEZpbGVTeXN0ZW0sIFBhdGhTZWdtZW50LCBqb2luLCByZWxhdGl2ZSwgcmVsYXRpdmVGcm9tfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtEZXBlbmRlbmN5UmVzb2x2ZXIsIFNvcnRlZEVudHJ5UG9pbnRzSW5mb30gZnJvbSAnLi4vZGVwZW5kZW5jaWVzL2RlcGVuZGVuY3lfcmVzb2x2ZXInO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7aGFzQmVlblByb2Nlc3NlZH0gZnJvbSAnLi4vcGFja2FnZXMvYnVpbGRfbWFya2VyJztcbmltcG9ydCB7TmdjY0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL3BhY2thZ2VzL2NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtFbnRyeVBvaW50LCBFbnRyeVBvaW50SnNvblByb3BlcnR5LCBJTlZBTElEX0VOVFJZX1BPSU5ULCBOT19FTlRSWV9QT0lOVCwgZ2V0RW50cnlQb2ludEluZm99IGZyb20gJy4uL3BhY2thZ2VzL2VudHJ5X3BvaW50JztcbmltcG9ydCB7UGF0aE1hcHBpbmdzfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge0VudHJ5UG9pbnRGaW5kZXJ9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7Z2V0QmFzZVBhdGhzfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBBbiBFbnRyeVBvaW50RmluZGVyIHRoYXQgc3RhcnRzIGZyb20gYSB0YXJnZXQgZW50cnktcG9pbnQgYW5kIG9ubHkgZmluZHNcbiAqIGVudHJ5LXBvaW50cyB0aGF0IGFyZSBkZXBlbmRlbmNpZXMgb2YgdGhlIHRhcmdldC5cbiAqXG4gKiBUaGlzIGlzIGZhc3RlciB0aGFuIHNlYXJjaGluZyB0aGUgZW50aXJlIGZpbGUtc3lzdGVtIGZvciBhbGwgdGhlIGVudHJ5LXBvaW50cyxcbiAqIGFuZCBpcyB1c2VkIHByaW1hcmlseSBieSB0aGUgQ0xJIGludGVncmF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgVGFyZ2V0ZWRFbnRyeVBvaW50RmluZGVyIGltcGxlbWVudHMgRW50cnlQb2ludEZpbmRlciB7XG4gIHByaXZhdGUgdW5wcm9jZXNzZWRQYXRoczogQWJzb2x1dGVGc1BhdGhbXSA9IFtdO1xuICBwcml2YXRlIHVuc29ydGVkRW50cnlQb2ludHMgPSBuZXcgTWFwPEFic29sdXRlRnNQYXRoLCBFbnRyeVBvaW50PigpO1xuICBwcml2YXRlIGJhc2VQYXRocyA9IGdldEJhc2VQYXRocyh0aGlzLmJhc2VQYXRoLCB0aGlzLnBhdGhNYXBwaW5ncyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGZzOiBGaWxlU3lzdGVtLCBwcml2YXRlIGNvbmZpZzogTmdjY0NvbmZpZ3VyYXRpb24sIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXG4gICAgICBwcml2YXRlIHJlc29sdmVyOiBEZXBlbmRlbmN5UmVzb2x2ZXIsIHByaXZhdGUgYmFzZVBhdGg6IEFic29sdXRlRnNQYXRoLFxuICAgICAgcHJpdmF0ZSB0YXJnZXRQYXRoOiBBYnNvbHV0ZUZzUGF0aCwgcHJpdmF0ZSBwYXRoTWFwcGluZ3M6IFBhdGhNYXBwaW5nc3x1bmRlZmluZWQpIHt9XG5cbiAgZmluZEVudHJ5UG9pbnRzKCk6IFNvcnRlZEVudHJ5UG9pbnRzSW5mbyB7XG4gICAgdGhpcy51bnByb2Nlc3NlZFBhdGhzID0gW3RoaXMudGFyZ2V0UGF0aF07XG4gICAgd2hpbGUgKHRoaXMudW5wcm9jZXNzZWRQYXRocy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2Nlc3NOZXh0UGF0aCgpO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXRFbnRyeVBvaW50ID0gdGhpcy51bnNvcnRlZEVudHJ5UG9pbnRzLmdldCh0aGlzLnRhcmdldFBhdGgpO1xuICAgIGNvbnN0IGVudHJ5UG9pbnRzID0gdGhpcy5yZXNvbHZlci5zb3J0RW50cnlQb2ludHNCeURlcGVuZGVuY3koXG4gICAgICAgIEFycmF5LmZyb20odGhpcy51bnNvcnRlZEVudHJ5UG9pbnRzLnZhbHVlcygpKSwgdGFyZ2V0RW50cnlQb2ludCk7XG5cbiAgICBjb25zdCBpbnZhbGlkVGFyZ2V0ID1cbiAgICAgICAgZW50cnlQb2ludHMuaW52YWxpZEVudHJ5UG9pbnRzLmZpbmQoaSA9PiBpLmVudHJ5UG9pbnQucGF0aCA9PT0gdGhpcy50YXJnZXRQYXRoKTtcbiAgICBpZiAoaW52YWxpZFRhcmdldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFRoZSB0YXJnZXQgZW50cnktcG9pbnQgXCIke2ludmFsaWRUYXJnZXQuZW50cnlQb2ludC5uYW1lfVwiIGhhcyBtaXNzaW5nIGRlcGVuZGVuY2llczpcXG5gICtcbiAgICAgICAgICBpbnZhbGlkVGFyZ2V0Lm1pc3NpbmdEZXBlbmRlbmNpZXMubWFwKGRlcCA9PiBgIC0gJHtkZXB9XFxuYCkuam9pbignJykpO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnlQb2ludHM7XG4gIH1cblxuICB0YXJnZXROZWVkc1Byb2Nlc3NpbmdPckNsZWFuaW5nKFxuICAgICAgcHJvcGVydGllc1RvQ29uc2lkZXI6IEVudHJ5UG9pbnRKc29uUHJvcGVydHlbXSwgY29tcGlsZUFsbEZvcm1hdHM6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBjb25zdCBlbnRyeVBvaW50ID0gdGhpcy5nZXRFbnRyeVBvaW50KHRoaXMudGFyZ2V0UGF0aCk7XG4gICAgaWYgKGVudHJ5UG9pbnQgPT09IG51bGwgfHwgIWVudHJ5UG9pbnQuY29tcGlsZWRCeUFuZ3VsYXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXNUb0NvbnNpZGVyKSB7XG4gICAgICBpZiAoZW50cnlQb2ludC5wYWNrYWdlSnNvbltwcm9wZXJ0eV0pIHtcbiAgICAgICAgLy8gSGVyZSBpcyBhIHByb3BlcnR5IHRoYXQgc2hvdWxkIGJlIHByb2Nlc3NlZC5cbiAgICAgICAgaWYgKCFoYXNCZWVuUHJvY2Vzc2VkKGVudHJ5UG9pbnQucGFja2FnZUpzb24sIHByb3BlcnR5KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY29tcGlsZUFsbEZvcm1hdHMpIHtcbiAgICAgICAgICAvLyBUaGlzIHByb3BlcnR5IGhhcyBiZWVuIHByb2Nlc3NlZCwgYW5kIHdlIG9ubHkgbmVlZCBvbmUuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEFsbCBgcHJvcGVydGllc1RvQ29uc2lkZXJgIHRoYXQgYXBwZWFyIGluIHRoaXMgZW50cnktcG9pbnQgaGF2ZSBiZWVuIHByb2Nlc3NlZC5cbiAgICAvLyBJbiBvdGhlciB3b3JkcywgdGhlcmUgd2VyZSBubyBwcm9wZXJ0aWVzIHRoYXQgbmVlZCBwcm9jZXNzaW5nLlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc05leHRQYXRoKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnVucHJvY2Vzc2VkUGF0aHMuc2hpZnQoKSAhO1xuICAgIGNvbnN0IGVudHJ5UG9pbnQgPSB0aGlzLmdldEVudHJ5UG9pbnQocGF0aCk7XG4gICAgaWYgKGVudHJ5UG9pbnQgPT09IG51bGwgfHwgIWVudHJ5UG9pbnQuY29tcGlsZWRCeUFuZ3VsYXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51bnNvcnRlZEVudHJ5UG9pbnRzLnNldChlbnRyeVBvaW50LnBhdGgsIGVudHJ5UG9pbnQpO1xuICAgIGNvbnN0IGRlcHMgPSB0aGlzLnJlc29sdmVyLmdldEVudHJ5UG9pbnREZXBlbmRlbmNpZXMoZW50cnlQb2ludCk7XG4gICAgZGVwcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChkZXAgPT4ge1xuICAgICAgaWYgKCF0aGlzLnVuc29ydGVkRW50cnlQb2ludHMuaGFzKGRlcCkpIHtcbiAgICAgICAgdGhpcy51bnByb2Nlc3NlZFBhdGhzLnB1c2goZGVwKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW50cnlQb2ludChlbnRyeVBvaW50UGF0aDogQWJzb2x1dGVGc1BhdGgpOiBFbnRyeVBvaW50fG51bGwge1xuICAgIGNvbnN0IHBhY2thZ2VQYXRoID0gdGhpcy5jb21wdXRlUGFja2FnZVBhdGgoZW50cnlQb2ludFBhdGgpO1xuICAgIGNvbnN0IGVudHJ5UG9pbnQgPVxuICAgICAgICBnZXRFbnRyeVBvaW50SW5mbyh0aGlzLmZzLCB0aGlzLmNvbmZpZywgdGhpcy5sb2dnZXIsIHBhY2thZ2VQYXRoLCBlbnRyeVBvaW50UGF0aCk7XG4gICAgaWYgKGVudHJ5UG9pbnQgPT09IE5PX0VOVFJZX1BPSU5UIHx8IGVudHJ5UG9pbnQgPT09IElOVkFMSURfRU5UUllfUE9JTlQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnlQb2ludDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggZG93biB0byB0aGUgYGVudHJ5UG9pbnRQYXRoYCBmcm9tIGVhY2ggYGJhc2VQYXRoYCBmb3IgdGhlIGZpcnN0IGBwYWNrYWdlLmpzb25gIHRoYXQgd2VcbiAgICogY29tZSB0by4gVGhpcyBpcyB0aGUgcGF0aCB0byB0aGUgZW50cnktcG9pbnQncyBjb250YWluaW5nIHBhY2thZ2UuIEZvciBleGFtcGxlIGlmIGBiYXNlUGF0aGAgaXNcbiAgICogYC9hL2IvY2AgYW5kIGBlbnRyeVBvaW50UGF0aGAgaXMgYC9hL2IvYy9kL2VgIGFuZCB0aGVyZSBleGlzdHMgYC9hL2IvYy9kL3BhY2thZ2UuanNvbmAgYW5kXG4gICAqIGAvYS9iL2MvZC9lL3BhY2thZ2UuanNvbmAsIHRoZW4gd2Ugd2lsbCByZXR1cm4gYC9hL2IvYy9kYC5cbiAgICpcbiAgICogVG8gYWNjb3VudCBmb3IgbmVzdGVkIGBub2RlX21vZHVsZXNgIHdlIGFjdHVhbGx5IHN0YXJ0IHRoZSBzZWFyY2ggYXQgdGhlIGxhc3QgYG5vZGVfbW9kdWxlc2AgaW5cbiAgICogdGhlIGBlbnRyeVBvaW50UGF0aGAgdGhhdCBpcyBiZWxvdyB0aGUgYGJhc2VQYXRoYC4gRS5nLiBpZiBgYmFzZVBhdGhgIGlzIGAvYS9iL2NgIGFuZFxuICAgKiBgZW50cnlQb2ludFBhdGhgIGlzIGAvYS9iL2MvZC9ub2RlX21vZHVsZXMveC95L3pgLCB3ZSBzdGFydCB0aGUgc2VhcmNoIGF0XG4gICAqIGAvYS9iL2MvZC9ub2RlX21vZHVsZXNgLlxuICAgKi9cbiAgcHJpdmF0ZSBjb21wdXRlUGFja2FnZVBhdGgoZW50cnlQb2ludFBhdGg6IEFic29sdXRlRnNQYXRoKTogQWJzb2x1dGVGc1BhdGgge1xuICAgIGZvciAoY29uc3QgYmFzZVBhdGggb2YgdGhpcy5iYXNlUGF0aHMpIHtcbiAgICAgIGlmIChlbnRyeVBvaW50UGF0aC5zdGFydHNXaXRoKGJhc2VQYXRoKSkge1xuICAgICAgICBsZXQgcGFja2FnZVBhdGggPSBiYXNlUGF0aDtcbiAgICAgICAgY29uc3Qgc2VnbWVudHMgPSB0aGlzLnNwbGl0UGF0aChyZWxhdGl2ZShiYXNlUGF0aCwgZW50cnlQb2ludFBhdGgpKTtcbiAgICAgICAgbGV0IG5vZGVNb2R1bGVzSW5kZXggPSBzZWdtZW50cy5sYXN0SW5kZXhPZihyZWxhdGl2ZUZyb20oJ25vZGVfbW9kdWxlcycpKTtcblxuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gYG5vZGVfbW9kdWxlc2AgaW4gdGhlIHJlbGF0aXZlIHBhdGggYmV0d2VlbiB0aGUgYGJhc2VQYXRoYCBhbmQgdGhlXG4gICAgICAgIC8vIGBlbnRyeVBvaW50UGF0aGAgdGhlbiBqdXN0IHRyeSB0aGUgYGJhc2VQYXRoYCBhcyB0aGUgYHBhY2thZ2VQYXRoYC5cbiAgICAgICAgLy8gKFRoaXMgY2FuIGJlIHRoZSBjYXNlIHdpdGggcGF0aC1tYXBwZWQgZW50cnktcG9pbnRzLilcbiAgICAgICAgaWYgKG5vZGVNb2R1bGVzSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZnMuZXhpc3RzKGpvaW4ocGFja2FnZVBhdGgsICdwYWNrYWdlLmpzb24nKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYWNrYWdlUGF0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGFydCB0aGUgc2VhcmNoIGF0IHRoZSBkZWVwZXN0IG5lc3RlZCBgbm9kZV9tb2R1bGVzYCBmb2xkZXIgdGhhdCBpcyBiZWxvdyB0aGUgYGJhc2VQYXRoYFxuICAgICAgICAvLyBidXQgYWJvdmUgdGhlIGBlbnRyeVBvaW50UGF0aGAsIGlmIHRoZXJlIGFyZSBhbnkuXG4gICAgICAgIHdoaWxlIChub2RlTW9kdWxlc0luZGV4ID49IDApIHtcbiAgICAgICAgICBwYWNrYWdlUGF0aCA9IGpvaW4ocGFja2FnZVBhdGgsIHNlZ21lbnRzLnNoaWZ0KCkgISk7XG4gICAgICAgICAgbm9kZU1vZHVsZXNJbmRleC0tO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm90ZSB0aGF0IHdlIHN0YXJ0IGF0IHRoZSBmb2xkZXIgYmVsb3cgdGhlIGN1cnJlbnQgY2FuZGlkYXRlIGBwYWNrYWdlUGF0aGAgYmVjYXVzZSB0aGVcbiAgICAgICAgLy8gaW5pdGlhbCBjYW5kaWRhdGUgYHBhY2thZ2VQYXRoYCBpcyBlaXRoZXIgYSBgbm9kZV9tb2R1bGVzYCBmb2xkZXIgb3IgdGhlIGBiYXNlUGF0aGAgd2l0aFxuICAgICAgICAvLyBubyBgcGFja2FnZS5qc29uYC5cbiAgICAgICAgZm9yIChjb25zdCBzZWdtZW50IG9mIHNlZ21lbnRzKSB7XG4gICAgICAgICAgcGFja2FnZVBhdGggPSBqb2luKHBhY2thZ2VQYXRoLCBzZWdtZW50KTtcbiAgICAgICAgICBpZiAodGhpcy5mcy5leGlzdHMoam9pbihwYWNrYWdlUGF0aCwgJ3BhY2thZ2UuanNvbicpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhY2thZ2VQYXRoO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHdlIGdvdCBoZXJlIHRoZW4gd2UgY291bGRuJ3QgZmluZCBhIGBwYWNrYWdlUGF0aGAgZm9yIHRoZSBjdXJyZW50IGBiYXNlUGF0aGAuXG4gICAgICAgIC8vIFNpbmNlIGBiYXNlUGF0aGBzIGFyZSBndWFyYW50ZWVkIG5vdCB0byBiZSBhIHN1Yi1kaXJlY3Rvcnkgb2YgZWFjaCBvdGhlciB0aGVuIG5vIG90aGVyXG4gICAgICAgIC8vIGBiYXNlUGF0aGAgd2lsbCBtYXRjaCBlaXRoZXIuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiB3ZSBnZXQgaGVyZSB0aGVuIG5vbmUgb2YgdGhlIGBiYXNlUGF0aHNgIG1hdGNoZWQgdGhlIGBlbnRyeVBvaW50UGF0aGAsIHdoaWNoXG4gICAgLy8gaXMgc29tZXdoYXQgdW5leHBlY3RlZCBhbmQgbWVhbnMgdGhhdCB0aGlzIGVudHJ5LXBvaW50IGxpdmVzIGNvbXBsZXRlbHkgb3V0c2lkZVxuICAgIC8vIGFueSBvZiB0aGUgYGJhc2VQYXRoc2AuXG4gICAgLy8gQWxsIHdlIGNhbiBkbyBpcyBhc3N1bWUgdGhhdCBoaXMgZW50cnktcG9pbnQgaXMgYSBwcmltYXJ5IGVudHJ5LXBvaW50IHRvIGEgcGFja2FnZS5cbiAgICByZXR1cm4gZW50cnlQb2ludFBhdGg7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBTcGxpdCB0aGUgZ2l2ZW4gYHBhdGhgIGludG8gcGF0aCBzZWdtZW50cyB1c2luZyBhbiBGUyBpbmRlcGVuZGVudCBhbGdvcml0aG0uXG4gICAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHNwbGl0LlxuICAgKi9cbiAgcHJpdmF0ZSBzcGxpdFBhdGgocGF0aDogUGF0aFNlZ21lbnQpIHtcbiAgICBjb25zdCBzZWdtZW50cyA9IFtdO1xuICAgIHdoaWxlIChwYXRoICE9PSAnLicpIHtcbiAgICAgIHNlZ21lbnRzLnVuc2hpZnQodGhpcy5mcy5iYXNlbmFtZShwYXRoKSk7XG4gICAgICBwYXRoID0gdGhpcy5mcy5kaXJuYW1lKHBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gc2VnbWVudHM7XG4gIH1cbn1cbiJdfQ==
@@ -51,7 +51,7 @@ export interface Task extends JsonObject {
51
51
  formatProperty: EntryPointJsonProperty;
52
52
  /**
53
53
  * The list of all format properties (including `task.formatProperty`) that should be marked as
54
- * processed once the taksk has been completed, because they point to the format-path that will be
54
+ * processed once the task has been completed, because they point to the format-path that will be
55
55
  * processed as part of the task.
56
56
  */
57
57
  formatPropertiesToMarkAsProcessed: EntryPointJsonProperty[];
@@ -62,10 +62,8 @@ export interface Task extends JsonObject {
62
62
  export declare type TaskCompletedCallback = (task: Task, outcome: TaskProcessingOutcome) => void;
63
63
  /** Represents the outcome of processing a `Task`. */
64
64
  export declare const enum TaskProcessingOutcome {
65
- /** The target format property was already processed - didn't have to do anything. */
66
- AlreadyProcessed = 0,
67
65
  /** Successfully processed the target format property. */
68
- Processed = 1
66
+ Processed = 0
69
67
  }
70
68
  /**
71
69
  * A wrapper around a list of tasks and providing utility methods for getting the next task of
@@ -17,4 +17,4 @@
17
17
  "use strict";
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2V4ZWN1dGlvbi9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0VudHJ5UG9pbnQsIEVudHJ5UG9pbnRKc29uUHJvcGVydHksIEpzb25PYmplY3R9IGZyb20gJy4uL3BhY2thZ2VzL2VudHJ5X3BvaW50JztcbmltcG9ydCB7UGFydGlhbGx5T3JkZXJlZExpc3R9IGZyb20gJy4uL3V0aWxzJztcblxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0aGF0IGFuYWx5emVzIGVudHJ5LXBvaW50cyBhbmQgY3JlYXRlcyB0aGUgbGlzdCBvZiB0YXNrcy5cbiAqXG4gKiBAcmV0dXJuIEEgbGlzdCBvZiB0YXNrcyB0aGF0IG5lZWQgdG8gYmUgZXhlY3V0ZWQgaW4gb3JkZXIgdG8gcHJvY2VzcyB0aGUgbmVjZXNzYXJ5IGZvcm1hdFxuICogICAgICAgICBwcm9wZXJ0aWVzIGZvciBhbGwgZW50cnktcG9pbnRzLlxuICovXG5leHBvcnQgdHlwZSBBbmFseXplRW50cnlQb2ludHNGbiA9ICgpID0+IFRhc2tRdWV1ZTtcblxuLyoqIFRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0aGF0IGNhbiBwcm9jZXNzL2NvbXBpbGUgYSB0YXNrLiAqL1xuZXhwb3J0IHR5cGUgQ29tcGlsZUZuID0gKHRhc2s6IFRhc2spID0+IHZvaWQ7XG5cbi8qKiBUaGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIHRoZSBgQ29tcGlsZUZuYCBmdW5jdGlvbiB1c2VkIHRvIHByb2Nlc3MgdGFza3MuICovXG5leHBvcnQgdHlwZSBDcmVhdGVDb21waWxlRm4gPSAob25UYXNrQ29tcGxldGVkOiBUYXNrQ29tcGxldGVkQ2FsbGJhY2spID0+IENvbXBpbGVGbjtcblxuLyoqXG4gKiBBIGNsYXNzIHRoYXQgb3JjaGVzdHJhdGVzIGFuZCBleGVjdXRlcyB0aGUgcmVxdWlyZWQgd29yayAoaS5lLiBhbmFseXplcyB0aGUgZW50cnktcG9pbnRzLFxuICogcHJvY2Vzc2VzIHRoZSByZXN1bHRpbmcgdGFza3MsIGRvZXMgYm9vay1rZWVwaW5nIGFuZCB2YWxpZGF0ZXMgdGhlIGZpbmFsIG91dGNvbWUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dG9yIHtcbiAgZXhlY3V0ZShhbmFseXplRW50cnlQb2ludHM6IEFuYWx5emVFbnRyeVBvaW50c0ZuLCBjcmVhdGVDb21waWxlRm46IENyZWF0ZUNvbXBpbGVGbik6XG4gICAgICB2b2lkfFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHBhcnRpYWxseSBvcmRlcmVkIGxpc3Qgb2YgdGFza3MuXG4gKlxuICogVGhlIG9yZGVyaW5nL3ByZWNlZGVuY2Ugb2YgdGFza3MgaXMgZGV0ZXJtaW5lZCBieSB0aGUgaW50ZXItZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlaXIgYXNzb2NpYXRlZFxuICogZW50cnktcG9pbnRzLiBTcGVjaWZpY2FsbHksIHRoZSB0YXNrcycgb3JkZXIvcHJlY2VkZW5jZSBpcyBzdWNoIHRoYXQgdGFza3MgYXNzb2NpYXRlZCB0b1xuICogZGVwZW5kZW50IGVudHJ5LXBvaW50cyBhbHdheXMgY29tZSBhZnRlciB0YXNrcyBhc3NvY2lhdGVkIHdpdGggdGhlaXIgZGVwZW5kZW5jaWVzLlxuICpcbiAqIEFzIHJlc3VsdCBvZiB0aGlzIG9yZGVyaW5nLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgLSBieSBwcm9jZXNzaW5nIHRhc2tzIGluIHRoZSBvcmRlciBpbiB3aGljaFxuICogdGhleSBhcHBlYXIgaW4gdGhlIGxpc3QgLSBhIHRhc2sncyBkZXBlbmRlbmNpZXMgd2lsbCBhbHdheXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCBiZWZvcmUgcHJvY2Vzc2luZ1xuICogdGhlIHRhc2sgaXRzZWxmLlxuICpcbiAqIFNlZSBgRGVwZW5kZW5jeVJlc29sdmVyI3NvcnRFbnRyeVBvaW50c0J5RGVwZW5kZW5jeSgpYC5cbiAqL1xuZXhwb3J0IHR5cGUgUGFydGlhbGx5T3JkZXJlZFRhc2tzID0gUGFydGlhbGx5T3JkZXJlZExpc3Q8VGFzaz47XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5pdCBvZiB3b3JrOiBwcm9jZXNzaW5nIGEgc3BlY2lmaWMgZm9ybWF0IHByb3BlcnR5IG9mIGFuIGVudHJ5LXBvaW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrIGV4dGVuZHMgSnNvbk9iamVjdCB7XG4gIC8qKiBUaGUgYEVudHJ5UG9pbnRgIHdoaWNoIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBhcyBwYXJ0IG9mIHRoZSB0YXNrLiAqL1xuICBlbnRyeVBvaW50OiBFbnRyeVBvaW50O1xuXG4gIC8qKlxuICAgKiBUaGUgYHBhY2thZ2UuanNvbmAgZm9ybWF0IHByb3BlcnR5IHRvIHByb2Nlc3MgKGkuZS4gdGhlIHByb3BlcnR5IHdoaWNoIHBvaW50cyB0byB0aGUgZmlsZSB0aGF0XG4gICAqIGlzIHRoZSBwcm9ncmFtIGVudHJ5LXBvaW50KS5cbiAgICovXG4gIGZvcm1hdFByb3BlcnR5OiBFbnRyeVBvaW50SnNvblByb3BlcnR5O1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBhbGwgZm9ybWF0IHByb3BlcnRpZXMgKGluY2x1ZGluZyBgdGFzay5mb3JtYXRQcm9wZXJ0eWApIHRoYXQgc2hvdWxkIGJlIG1hcmtlZCBhc1xuICAgKiBwcm9jZXNzZWQgb25jZSB0aGUgdGFrc2sgaGFzIGJlZW4gY29tcGxldGVkLCBiZWNhdXNlIHRoZXkgcG9pbnQgdG8gdGhlIGZvcm1hdC1wYXRoIHRoYXQgd2lsbCBiZVxuICAgKiBwcm9jZXNzZWQgYXMgcGFydCBvZiB0aGUgdGFzay5cbiAgICovXG4gIGZvcm1hdFByb3BlcnRpZXNUb01hcmtBc1Byb2Nlc3NlZDogRW50cnlQb2ludEpzb25Qcm9wZXJ0eVtdO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFsc28gcHJvY2VzcyB0eXBpbmdzIGZvciB0aGlzIGVudHJ5LXBvaW50IGFzIHBhcnQgb2YgdGhlIHRhc2suICovXG4gIHByb2Nlc3NEdHM6IGJvb2xlYW47XG59XG5cbi8qKiBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBvbmNlIGEgdGFzayBoYXMgYmVlbiBwcm9jZXNzZWQuICovXG5leHBvcnQgdHlwZSBUYXNrQ29tcGxldGVkQ2FsbGJhY2sgPSAodGFzazogVGFzaywgb3V0Y29tZTogVGFza1Byb2Nlc3NpbmdPdXRjb21lKSA9PiB2b2lkO1xuXG4vKiogUmVwcmVzZW50cyB0aGUgb3V0Y29tZSBvZiBwcm9jZXNzaW5nIGEgYFRhc2tgLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gVGFza1Byb2Nlc3NpbmdPdXRjb21lIHtcbiAgLyoqIFRoZSB0YXJnZXQgZm9ybWF0IHByb3BlcnR5IHdhcyBhbHJlYWR5IHByb2Nlc3NlZCAtIGRpZG4ndCBoYXZlIHRvIGRvIGFueXRoaW5nLiAqL1xuICBBbHJlYWR5UHJvY2Vzc2VkLFxuXG4gIC8qKiBTdWNjZXNzZnVsbHkgcHJvY2Vzc2VkIHRoZSB0YXJnZXQgZm9ybWF0IHByb3BlcnR5LiAqL1xuICBQcm9jZXNzZWQsXG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCBhIGxpc3Qgb2YgdGFza3MgYW5kIHByb3ZpZGluZyB1dGlsaXR5IG1ldGhvZHMgZm9yIGdldHRpbmcgdGhlIG5leHQgdGFzayBvZlxuICogaW50ZXJlc3QgYW5kIGRldGVybWluaW5nIHdoZW4gYWxsIHRhc2tzIGhhdmUgYmVlbiBjb21wbGV0ZWQuXG4gKlxuICogKFRoaXMgYWxsb3dzIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgdG8gaW1wb3NlIGRpZmZlcmVudCBjb25zdHJhaW50cyBvbiB3aGVuIGEgdGFzaydzXG4gKiBwcm9jZXNzaW5nIGNhbiBzdGFydC4pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFza1F1ZXVlIHtcbiAgLyoqIFdoZXRoZXIgYWxsIHRhc2tzIGhhdmUgYmVlbiBjb21wbGV0ZWQuICovXG4gIGFsbFRhc2tzQ29tcGxldGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5leHQgdGFzayB3aG9zZSBwcm9jZXNzaW5nIGNhbiBzdGFydCAoaWYgYW55KS5cbiAgICpcbiAgICogVGhpcyBpbXBsaWNpdGx5IG1hcmtzIHRoZSB0YXNrIGFzIGluLXByb2dyZXNzLlxuICAgKiAoVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGFsbCB0YXNrcyBoYXZlIGJlZW4gY29tcGxldGVkLilcbiAgICpcbiAgICogQHJldHVybiBUaGUgbmV4dCB0YXNrIGF2YWlsYWJsZSBmb3IgcHJvY2Vzc2luZyBvciBgbnVsbGAsIGlmIG5vIHRhc2sgY2FuIGJlIHByb2Nlc3NlZCBhdCB0aGVcbiAgICogICAgICAgICBtb21lbnQgKGluY2x1ZGluZyBpZiB0aGVyZSBhcmUgbm8gbW9yZSB1bnByb2Nlc3NlZCB0YXNrcykuXG4gICAqL1xuICBnZXROZXh0VGFzaygpOiBUYXNrfG51bGw7XG5cbiAgLyoqXG4gICAqIE1hcmsgYSB0YXNrIGFzIGNvbXBsZXRlZC5cbiAgICpcbiAgICogVGhpcyByZW1vdmVzIHRoZSB0YXNrIGZyb20gdGhlIGludGVybmFsIGxpc3Qgb2YgaW4tcHJvZ3Jlc3MgdGFza3MuXG4gICAqIChUaGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYWxsIHRhc2tzIGhhdmUgYmVlbiBjb21wbGV0ZWQuKVxuICAgKlxuICAgKiBAcGFyYW0gdGFzayBUaGUgdGFzayB0byBtYXJrIGFzIGNvbXBsZXRlZC5cbiAgICovXG4gIG1hcmtUYXNrQ29tcGxldGVkKHRhc2s6IFRhc2spOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRhc2sgcXVldWUgKGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMpLlxuICAgKlxuICAgKiBAcmV0dXJuIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0YXNrIHF1ZXVlLlxuICAgKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nO1xufVxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2V4ZWN1dGlvbi9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0VudHJ5UG9pbnQsIEVudHJ5UG9pbnRKc29uUHJvcGVydHksIEpzb25PYmplY3R9IGZyb20gJy4uL3BhY2thZ2VzL2VudHJ5X3BvaW50JztcbmltcG9ydCB7UGFydGlhbGx5T3JkZXJlZExpc3R9IGZyb20gJy4uL3V0aWxzJztcblxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0aGF0IGFuYWx5emVzIGVudHJ5LXBvaW50cyBhbmQgY3JlYXRlcyB0aGUgbGlzdCBvZiB0YXNrcy5cbiAqXG4gKiBAcmV0dXJuIEEgbGlzdCBvZiB0YXNrcyB0aGF0IG5lZWQgdG8gYmUgZXhlY3V0ZWQgaW4gb3JkZXIgdG8gcHJvY2VzcyB0aGUgbmVjZXNzYXJ5IGZvcm1hdFxuICogICAgICAgICBwcm9wZXJ0aWVzIGZvciBhbGwgZW50cnktcG9pbnRzLlxuICovXG5leHBvcnQgdHlwZSBBbmFseXplRW50cnlQb2ludHNGbiA9ICgpID0+IFRhc2tRdWV1ZTtcblxuLyoqIFRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0aGF0IGNhbiBwcm9jZXNzL2NvbXBpbGUgYSB0YXNrLiAqL1xuZXhwb3J0IHR5cGUgQ29tcGlsZUZuID0gKHRhc2s6IFRhc2spID0+IHZvaWQ7XG5cbi8qKiBUaGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIHRoZSBgQ29tcGlsZUZuYCBmdW5jdGlvbiB1c2VkIHRvIHByb2Nlc3MgdGFza3MuICovXG5leHBvcnQgdHlwZSBDcmVhdGVDb21waWxlRm4gPSAob25UYXNrQ29tcGxldGVkOiBUYXNrQ29tcGxldGVkQ2FsbGJhY2spID0+IENvbXBpbGVGbjtcblxuLyoqXG4gKiBBIGNsYXNzIHRoYXQgb3JjaGVzdHJhdGVzIGFuZCBleGVjdXRlcyB0aGUgcmVxdWlyZWQgd29yayAoaS5lLiBhbmFseXplcyB0aGUgZW50cnktcG9pbnRzLFxuICogcHJvY2Vzc2VzIHRoZSByZXN1bHRpbmcgdGFza3MsIGRvZXMgYm9vay1rZWVwaW5nIGFuZCB2YWxpZGF0ZXMgdGhlIGZpbmFsIG91dGNvbWUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dG9yIHtcbiAgZXhlY3V0ZShhbmFseXplRW50cnlQb2ludHM6IEFuYWx5emVFbnRyeVBvaW50c0ZuLCBjcmVhdGVDb21waWxlRm46IENyZWF0ZUNvbXBpbGVGbik6XG4gICAgICB2b2lkfFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHBhcnRpYWxseSBvcmRlcmVkIGxpc3Qgb2YgdGFza3MuXG4gKlxuICogVGhlIG9yZGVyaW5nL3ByZWNlZGVuY2Ugb2YgdGFza3MgaXMgZGV0ZXJtaW5lZCBieSB0aGUgaW50ZXItZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlaXIgYXNzb2NpYXRlZFxuICogZW50cnktcG9pbnRzLiBTcGVjaWZpY2FsbHksIHRoZSB0YXNrcycgb3JkZXIvcHJlY2VkZW5jZSBpcyBzdWNoIHRoYXQgdGFza3MgYXNzb2NpYXRlZCB0b1xuICogZGVwZW5kZW50IGVudHJ5LXBvaW50cyBhbHdheXMgY29tZSBhZnRlciB0YXNrcyBhc3NvY2lhdGVkIHdpdGggdGhlaXIgZGVwZW5kZW5jaWVzLlxuICpcbiAqIEFzIHJlc3VsdCBvZiB0aGlzIG9yZGVyaW5nLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgLSBieSBwcm9jZXNzaW5nIHRhc2tzIGluIHRoZSBvcmRlciBpbiB3aGljaFxuICogdGhleSBhcHBlYXIgaW4gdGhlIGxpc3QgLSBhIHRhc2sncyBkZXBlbmRlbmNpZXMgd2lsbCBhbHdheXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCBiZWZvcmUgcHJvY2Vzc2luZ1xuICogdGhlIHRhc2sgaXRzZWxmLlxuICpcbiAqIFNlZSBgRGVwZW5kZW5jeVJlc29sdmVyI3NvcnRFbnRyeVBvaW50c0J5RGVwZW5kZW5jeSgpYC5cbiAqL1xuZXhwb3J0IHR5cGUgUGFydGlhbGx5T3JkZXJlZFRhc2tzID0gUGFydGlhbGx5T3JkZXJlZExpc3Q8VGFzaz47XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5pdCBvZiB3b3JrOiBwcm9jZXNzaW5nIGEgc3BlY2lmaWMgZm9ybWF0IHByb3BlcnR5IG9mIGFuIGVudHJ5LXBvaW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrIGV4dGVuZHMgSnNvbk9iamVjdCB7XG4gIC8qKiBUaGUgYEVudHJ5UG9pbnRgIHdoaWNoIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBhcyBwYXJ0IG9mIHRoZSB0YXNrLiAqL1xuICBlbnRyeVBvaW50OiBFbnRyeVBvaW50O1xuXG4gIC8qKlxuICAgKiBUaGUgYHBhY2thZ2UuanNvbmAgZm9ybWF0IHByb3BlcnR5IHRvIHByb2Nlc3MgKGkuZS4gdGhlIHByb3BlcnR5IHdoaWNoIHBvaW50cyB0byB0aGUgZmlsZSB0aGF0XG4gICAqIGlzIHRoZSBwcm9ncmFtIGVudHJ5LXBvaW50KS5cbiAgICovXG4gIGZvcm1hdFByb3BlcnR5OiBFbnRyeVBvaW50SnNvblByb3BlcnR5O1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBhbGwgZm9ybWF0IHByb3BlcnRpZXMgKGluY2x1ZGluZyBgdGFzay5mb3JtYXRQcm9wZXJ0eWApIHRoYXQgc2hvdWxkIGJlIG1hcmtlZCBhc1xuICAgKiBwcm9jZXNzZWQgb25jZSB0aGUgdGFzayBoYXMgYmVlbiBjb21wbGV0ZWQsIGJlY2F1c2UgdGhleSBwb2ludCB0byB0aGUgZm9ybWF0LXBhdGggdGhhdCB3aWxsIGJlXG4gICAqIHByb2Nlc3NlZCBhcyBwYXJ0IG9mIHRoZSB0YXNrLlxuICAgKi9cbiAgZm9ybWF0UHJvcGVydGllc1RvTWFya0FzUHJvY2Vzc2VkOiBFbnRyeVBvaW50SnNvblByb3BlcnR5W107XG5cbiAgLyoqIFdoZXRoZXIgdG8gYWxzbyBwcm9jZXNzIHR5cGluZ3MgZm9yIHRoaXMgZW50cnktcG9pbnQgYXMgcGFydCBvZiB0aGUgdGFzay4gKi9cbiAgcHJvY2Vzc0R0czogYm9vbGVhbjtcbn1cblxuLyoqIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG9uY2UgYSB0YXNrIGhhcyBiZWVuIHByb2Nlc3NlZC4gKi9cbmV4cG9ydCB0eXBlIFRhc2tDb21wbGV0ZWRDYWxsYmFjayA9ICh0YXNrOiBUYXNrLCBvdXRjb21lOiBUYXNrUHJvY2Vzc2luZ091dGNvbWUpID0+IHZvaWQ7XG5cbi8qKiBSZXByZXNlbnRzIHRoZSBvdXRjb21lIG9mIHByb2Nlc3NpbmcgYSBgVGFza2AuICovXG5leHBvcnQgY29uc3QgZW51bSBUYXNrUHJvY2Vzc2luZ091dGNvbWUge1xuICAvKiogU3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCB0aGUgdGFyZ2V0IGZvcm1hdCBwcm9wZXJ0eS4gKi9cbiAgUHJvY2Vzc2VkLFxufVxuXG4vKipcbiAqIEEgd3JhcHBlciBhcm91bmQgYSBsaXN0IG9mIHRhc2tzIGFuZCBwcm92aWRpbmcgdXRpbGl0eSBtZXRob2RzIGZvciBnZXR0aW5nIHRoZSBuZXh0IHRhc2sgb2ZcbiAqIGludGVyZXN0IGFuZCBkZXRlcm1pbmluZyB3aGVuIGFsbCB0YXNrcyBoYXZlIGJlZW4gY29tcGxldGVkLlxuICpcbiAqIChUaGlzIGFsbG93cyBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIHRvIGltcG9zZSBkaWZmZXJlbnQgY29uc3RyYWludHMgb24gd2hlbiBhIHRhc2snc1xuICogcHJvY2Vzc2luZyBjYW4gc3RhcnQuKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tRdWV1ZSB7XG4gIC8qKiBXaGV0aGVyIGFsbCB0YXNrcyBoYXZlIGJlZW4gY29tcGxldGVkLiAqL1xuICBhbGxUYXNrc0NvbXBsZXRlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2V0IHRoZSBuZXh0IHRhc2sgd2hvc2UgcHJvY2Vzc2luZyBjYW4gc3RhcnQgKGlmIGFueSkuXG4gICAqXG4gICAqIFRoaXMgaW1wbGljaXRseSBtYXJrcyB0aGUgdGFzayBhcyBpbi1wcm9ncmVzcy5cbiAgICogKFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhbGwgdGFza3MgaGF2ZSBiZWVuIGNvbXBsZXRlZC4pXG4gICAqXG4gICAqIEByZXR1cm4gVGhlIG5leHQgdGFzayBhdmFpbGFibGUgZm9yIHByb2Nlc3Npbmcgb3IgYG51bGxgLCBpZiBubyB0YXNrIGNhbiBiZSBwcm9jZXNzZWQgYXQgdGhlXG4gICAqICAgICAgICAgbW9tZW50IChpbmNsdWRpbmcgaWYgdGhlcmUgYXJlIG5vIG1vcmUgdW5wcm9jZXNzZWQgdGFza3MpLlxuICAgKi9cbiAgZ2V0TmV4dFRhc2soKTogVGFza3xudWxsO1xuXG4gIC8qKlxuICAgKiBNYXJrIGEgdGFzayBhcyBjb21wbGV0ZWQuXG4gICAqXG4gICAqIFRoaXMgcmVtb3ZlcyB0aGUgdGFzayBmcm9tIHRoZSBpbnRlcm5hbCBsaXN0IG9mIGluLXByb2dyZXNzIHRhc2tzLlxuICAgKiAoVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGFsbCB0YXNrcyBoYXZlIGJlZW4gY29tcGxldGVkLilcbiAgICpcbiAgICogQHBhcmFtIHRhc2sgVGhlIHRhc2sgdG8gbWFyayBhcyBjb21wbGV0ZWQuXG4gICAqL1xuICBtYXJrVGFza0NvbXBsZXRlZCh0YXNrOiBUYXNrKTogdm9pZDtcblxuICAvKipcbiAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0YXNrIHF1ZXVlIChmb3IgZGVidWdnaW5nIHB1cnBvc2VzKS5cbiAgICpcbiAgICogQHJldHVybiBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGFzayBxdWV1ZS5cbiAgICovXG4gIHRvU3RyaW5nKCk6IHN0cmluZztcbn1cbiJdfQ==
@@ -6,10 +6,10 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/compiler-cli/ngcc/src/execution/cluster/executor" />
9
+ import { SyncLocker } from '../../locking/sync_locker';
9
10
  import { Logger } from '../../logging/logger';
10
11
  import { PackageJsonUpdater } from '../../writing/package_json_updater';
11
12
  import { AnalyzeEntryPointsFn, CreateCompileFn, Executor } from '../api';
12
- import { LockFile } from '../lock_file';
13
13
  /**
14
14
  * An `Executor` that processes tasks in parallel (on multiple processes) and completes
15
15
  * asynchronously.
@@ -19,6 +19,6 @@ export declare class ClusterExecutor implements Executor {
19
19
  private logger;
20
20
  private pkgJsonUpdater;
21
21
  private lockFile;
22
- constructor(workerCount: number, logger: Logger, pkgJsonUpdater: PackageJsonUpdater, lockFile: LockFile);
22
+ constructor(workerCount: number, logger: Logger, pkgJsonUpdater: PackageJsonUpdater, lockFile: SyncLocker);
23
23
  execute(analyzeEntryPoints: AnalyzeEntryPointsFn, createCompileFn: CreateCompileFn): Promise<void>;
24
24
  }
@@ -57,4 +57,4 @@
57
57
  }());
58
58
  exports.ClusterExecutor = ClusterExecutor;
59
59
  });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvZXhlY3V0aW9uL2NsdXN0ZXIvZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsOEJBQThCO0lBRTlCLGlDQUFtQztJQU9uQyxrRkFBdUM7SUFDdkMsa0ZBQXVDO0lBR3ZDOzs7T0FHRztJQUNIO1FBQ0UseUJBQ1ksV0FBbUIsRUFBVSxNQUFjLEVBQzNDLGNBQWtDLEVBQVUsUUFBa0I7WUFEOUQsZ0JBQVcsR0FBWCxXQUFXLENBQVE7WUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1lBQzNDLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtZQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBRyxDQUFDO1FBRXhFLGlDQUFPLEdBQWIsVUFBYyxrQkFBd0MsRUFBRSxlQUFnQzs7Ozs7b0JBRXRGLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTt3QkFDcEIsc0NBQXNDO3dCQUN0QyxzQkFBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQ0FDeEIsS0FBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2IscUJBQW1CLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxnQkFBVyxLQUFJLENBQUMsV0FBVyx3QkFBcUIsQ0FBQyxDQUFDO2dDQUM5RixJQUFNLE1BQU0sR0FBRyxJQUFJLHNCQUFhLENBQzVCLEtBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSSxDQUFDLE1BQU0sRUFBRSxLQUFJLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7Z0NBQzVFLE9BQU8sTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDOzRCQUN0QixDQUFDLENBQUMsRUFBQztxQkFDSjt5QkFBTTt3QkFFQyxNQUFNLEdBQUcsSUFBSSxzQkFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7d0JBQy9ELHNCQUFPLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBQztxQkFDckI7Ozs7U0FDRjtRQUNILHNCQUFDO0lBQUQsQ0FBQyxBQXRCRCxJQXNCQztJQXRCWSwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJub2RlXCIgLz5cblxuaW1wb3J0ICogYXMgY2x1c3RlciBmcm9tICdjbHVzdGVyJztcblxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7UGFja2FnZUpzb25VcGRhdGVyfSBmcm9tICcuLi8uLi93cml0aW5nL3BhY2thZ2VfanNvbl91cGRhdGVyJztcbmltcG9ydCB7QW5hbHl6ZUVudHJ5UG9pbnRzRm4sIENyZWF0ZUNvbXBpbGVGbiwgRXhlY3V0b3J9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQge0xvY2tGaWxlfSBmcm9tICcuLi9sb2NrX2ZpbGUnO1xuXG5pbXBvcnQge0NsdXN0ZXJNYXN0ZXJ9IGZyb20gJy4vbWFzdGVyJztcbmltcG9ydCB7Q2x1c3Rlcldvcmtlcn0gZnJvbSAnLi93b3JrZXInO1xuXG5cbi8qKlxuICogQW4gYEV4ZWN1dG9yYCB0aGF0IHByb2Nlc3NlcyB0YXNrcyBpbiBwYXJhbGxlbCAob24gbXVsdGlwbGUgcHJvY2Vzc2VzKSBhbmQgY29tcGxldGVzXG4gKiBhc3luY2hyb25vdXNseS5cbiAqL1xuZXhwb3J0IGNsYXNzIENsdXN0ZXJFeGVjdXRvciBpbXBsZW1lbnRzIEV4ZWN1dG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHdvcmtlckNvdW50OiBudW1iZXIsIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXG4gICAgICBwcml2YXRlIHBrZ0pzb25VcGRhdGVyOiBQYWNrYWdlSnNvblVwZGF0ZXIsIHByaXZhdGUgbG9ja0ZpbGU6IExvY2tGaWxlKSB7fVxuXG4gIGFzeW5jIGV4ZWN1dGUoYW5hbHl6ZUVudHJ5UG9pbnRzOiBBbmFseXplRW50cnlQb2ludHNGbiwgY3JlYXRlQ29tcGlsZUZuOiBDcmVhdGVDb21waWxlRm4pOlxuICAgICAgUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGNsdXN0ZXIuaXNNYXN0ZXIpIHtcbiAgICAgIC8vIFRoaXMgcHJvY2VzcyBpcyB0aGUgY2x1c3RlciBtYXN0ZXIuXG4gICAgICByZXR1cm4gdGhpcy5sb2NrRmlsZS5sb2NrKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgUnVubmluZyBuZ2NjIG9uICR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSAodXNpbmcgJHt0aGlzLndvcmtlckNvdW50fSB3b3JrZXIgcHJvY2Vzc2VzKS5gKTtcbiAgICAgICAgY29uc3QgbWFzdGVyID0gbmV3IENsdXN0ZXJNYXN0ZXIoXG4gICAgICAgICAgICB0aGlzLndvcmtlckNvdW50LCB0aGlzLmxvZ2dlciwgdGhpcy5wa2dKc29uVXBkYXRlciwgYW5hbHl6ZUVudHJ5UG9pbnRzKTtcbiAgICAgICAgcmV0dXJuIG1hc3Rlci5ydW4oKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIHByb2Nlc3MgaXMgYSBjbHVzdGVyIHdvcmtlci5cbiAgICAgIGNvbnN0IHdvcmtlciA9IG5ldyBDbHVzdGVyV29ya2VyKHRoaXMubG9nZ2VyLCBjcmVhdGVDb21waWxlRm4pO1xuICAgICAgcmV0dXJuIHdvcmtlci5ydW4oKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvZXhlY3V0aW9uL2NsdXN0ZXIvZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsOEJBQThCO0lBRTlCLGlDQUFtQztJQU9uQyxrRkFBdUM7SUFDdkMsa0ZBQXVDO0lBR3ZDOzs7T0FHRztJQUNIO1FBQ0UseUJBQ1ksV0FBbUIsRUFBVSxNQUFjLEVBQzNDLGNBQWtDLEVBQVUsUUFBb0I7WUFEaEUsZ0JBQVcsR0FBWCxXQUFXLENBQVE7WUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1lBQzNDLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtZQUFVLGFBQVEsR0FBUixRQUFRLENBQVk7UUFBRyxDQUFDO1FBRTFFLGlDQUFPLEdBQWIsVUFBYyxrQkFBd0MsRUFBRSxlQUFnQzs7Ozs7b0JBRXRGLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTt3QkFDcEIsc0NBQXNDO3dCQUN0QyxzQkFBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQ0FDeEIsS0FBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2IscUJBQW1CLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxnQkFBVyxLQUFJLENBQUMsV0FBVyx3QkFBcUIsQ0FBQyxDQUFDO2dDQUM5RixJQUFNLE1BQU0sR0FBRyxJQUFJLHNCQUFhLENBQzVCLEtBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSSxDQUFDLE1BQU0sRUFBRSxLQUFJLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7Z0NBQzVFLE9BQU8sTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDOzRCQUN0QixDQUFDLENBQUMsRUFBQztxQkFDSjt5QkFBTTt3QkFFQyxNQUFNLEdBQUcsSUFBSSxzQkFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7d0JBQy9ELHNCQUFPLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBQztxQkFDckI7Ozs7U0FDRjtRQUNILHNCQUFDO0lBQUQsQ0FBQyxBQXRCRCxJQXNCQztJQXRCWSwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJub2RlXCIgLz5cblxuaW1wb3J0ICogYXMgY2x1c3RlciBmcm9tICdjbHVzdGVyJztcblxuaW1wb3J0IHtTeW5jTG9ja2VyfSBmcm9tICcuLi8uLi9sb2NraW5nL3N5bmNfbG9ja2VyJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1BhY2thZ2VKc29uVXBkYXRlcn0gZnJvbSAnLi4vLi4vd3JpdGluZy9wYWNrYWdlX2pzb25fdXBkYXRlcic7XG5pbXBvcnQge0FuYWx5emVFbnRyeVBvaW50c0ZuLCBDcmVhdGVDb21waWxlRm4sIEV4ZWN1dG9yfSBmcm9tICcuLi9hcGknO1xuXG5pbXBvcnQge0NsdXN0ZXJNYXN0ZXJ9IGZyb20gJy4vbWFzdGVyJztcbmltcG9ydCB7Q2x1c3Rlcldvcmtlcn0gZnJvbSAnLi93b3JrZXInO1xuXG5cbi8qKlxuICogQW4gYEV4ZWN1dG9yYCB0aGF0IHByb2Nlc3NlcyB0YXNrcyBpbiBwYXJhbGxlbCAob24gbXVsdGlwbGUgcHJvY2Vzc2VzKSBhbmQgY29tcGxldGVzXG4gKiBhc3luY2hyb25vdXNseS5cbiAqL1xuZXhwb3J0IGNsYXNzIENsdXN0ZXJFeGVjdXRvciBpbXBsZW1lbnRzIEV4ZWN1dG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHdvcmtlckNvdW50OiBudW1iZXIsIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXG4gICAgICBwcml2YXRlIHBrZ0pzb25VcGRhdGVyOiBQYWNrYWdlSnNvblVwZGF0ZXIsIHByaXZhdGUgbG9ja0ZpbGU6IFN5bmNMb2NrZXIpIHt9XG5cbiAgYXN5bmMgZXhlY3V0ZShhbmFseXplRW50cnlQb2ludHM6IEFuYWx5emVFbnRyeVBvaW50c0ZuLCBjcmVhdGVDb21waWxlRm46IENyZWF0ZUNvbXBpbGVGbik6XG4gICAgICBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY2x1c3Rlci5pc01hc3Rlcikge1xuICAgICAgLy8gVGhpcyBwcm9jZXNzIGlzIHRoZSBjbHVzdGVyIG1hc3Rlci5cbiAgICAgIHJldHVybiB0aGlzLmxvY2tGaWxlLmxvY2soKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBSdW5uaW5nIG5nY2Mgb24gJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9ICh1c2luZyAke3RoaXMud29ya2VyQ291bnR9IHdvcmtlciBwcm9jZXNzZXMpLmApO1xuICAgICAgICBjb25zdCBtYXN0ZXIgPSBuZXcgQ2x1c3Rlck1hc3RlcihcbiAgICAgICAgICAgIHRoaXMud29ya2VyQ291bnQsIHRoaXMubG9nZ2VyLCB0aGlzLnBrZ0pzb25VcGRhdGVyLCBhbmFseXplRW50cnlQb2ludHMpO1xuICAgICAgICByZXR1cm4gbWFzdGVyLnJ1bigpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgcHJvY2VzcyBpcyBhIGNsdXN0ZXIgd29ya2VyLlxuICAgICAgY29uc3Qgd29ya2VyID0gbmV3IENsdXN0ZXJXb3JrZXIodGhpcy5sb2dnZXIsIGNyZWF0ZUNvbXBpbGVGbik7XG4gICAgICByZXR1cm4gd29ya2VyLnJ1bigpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -41,14 +41,15 @@
41
41
  }
42
42
  ClusterMaster.prototype.run = function () {
43
43
  var _this = this;
44
+ if (this.taskQueue.allTasksCompleted) {
45
+ return Promise.resolve();
46
+ }
44
47
  // Set up listeners for worker events (emitted on `cluster`).
45
48
  cluster.on('online', this.wrapEventHandler(function (worker) { return _this.onWorkerOnline(worker.id); }));
46
49
  cluster.on('message', this.wrapEventHandler(function (worker, msg) { return _this.onWorkerMessage(worker.id, msg); }));
47
50
  cluster.on('exit', this.wrapEventHandler(function (worker, code, signal) { return _this.onWorkerExit(worker, code, signal); }));
48
- // Start the workers.
49
- for (var i = 0; i < this.workerCount; i++) {
50
- cluster.fork();
51
- }
51
+ // Since we have pending tasks at the very minimum we need a single worker.
52
+ cluster.fork();
52
53
  return this.finishedDeferred.promise.then(function () { return _this.stopWorkers(); }, function (err) {
53
54
  _this.stopWorkers();
54
55
  return Promise.reject(err);
@@ -95,10 +96,16 @@
95
96
  }
96
97
  finally { if (e_1) throw e_1.error; }
97
98
  }
98
- // If there are no available workers or no available tasks, log (for debugging purposes).
99
99
  if (!isWorkerAvailable) {
100
- this.logger.debug("All " + this.taskAssignments.size + " workers are currently busy and cannot take on more " +
101
- 'work.');
100
+ if (this.taskAssignments.size < this.workerCount) {
101
+ this.logger.debug('Spawning another worker process as there is more work to be done.');
102
+ cluster.fork();
103
+ }
104
+ else {
105
+ // If there are no available workers or no available tasks, log (for debugging purposes).
106
+ this.logger.debug("All " + this.taskAssignments.size + " workers are currently busy and cannot take on more " +
107
+ 'work.');
108
+ }
102
109
  }
103
110
  else {
104
111
  var busyWorkers = Array.from(this.taskAssignments)
@@ -253,4 +260,4 @@
253
260
  }());
254
261
  exports.ClusterMaster = ClusterMaster;
255
262
  });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2V4ZWN1dGlvbi9jbHVzdGVyL21hc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFFSCw4QkFBOEI7SUFFOUIsaUNBQW1DO0lBRW5DLDJFQUEwRDtJQUkxRCx3RUFBd0Q7SUFHeEQsZ0ZBQXNEO0lBR3REOzs7T0FHRztJQUNIO1FBTUUsdUJBQ1ksV0FBbUIsRUFBVSxNQUFjLEVBQzNDLGNBQWtDLEVBQUUsa0JBQXdDO1lBRDVFLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1lBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtZQUMzQyxtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7WUFQdEMscUJBQWdCLEdBQUcsSUFBSSxnQkFBUSxFQUFRLENBQUM7WUFDeEMsd0JBQW1CLEdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDakMsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztZQU1yRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtnQkFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO2FBQzlFO1lBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCwyQkFBRyxHQUFIO1lBQUEsaUJBb0JDO1lBbkJDLDZEQUE2RDtZQUM3RCxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxLQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBOUIsQ0FBOEIsQ0FBQyxDQUFDLENBQUM7WUFFdEYsT0FBTyxDQUFDLEVBQUUsQ0FDTixTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixD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RjtZQUM1Riw4RkFBOEY7WUFDOUYsOEZBQThGO1lBQzlGLG9CQUFvQjtZQUNwQiwrRkFBK0Y7WUFDL0YsNkZBQTZGO1lBQzdGLCtGQUErRjtZQUMvRixpREFBaUQ7WUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsZUFBZSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUVELDZEQUE2RDtRQUNyRCxtQ0FBVyxHQUFuQjtZQUNFLElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBcUIsQ0FBQztZQUNuRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFZLE9BQU8sQ0FBQyxNQUFNLGdCQUFhLENBQUMsQ0FBQztZQUUzRCxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM3QixPQUFPLENBQUMsT0FBTyxDQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFiLENBQWEsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRDs7O1dBR0c7UUFDSyx3Q0FBZ0IsR0FBeEIsVUFBaUQsRUFBeUM7WUFBMUYsaUJBU0M7WUFQQyxPQUFPO2dCQUFNLGNBQWE7cUJBQWIsVUFBYSxFQUFiLHFCQUFhLEVBQWIsSUFBYTtvQkFBYix5QkFBYTs7Ozs7Ozs7Z0NBRXRCLHFCQUFNLEVBQUUsZ0NBQUksSUFBSSxJQUFDOztnQ0FBakIsU0FBaUIsQ0FBQzs7OztnQ0FFbEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFHLENBQUMsQ0FBQzs7Ozs7O2FBRXJDLENBQUM7UUFDSixDQUFDO1FBQ0gsb0JBQUM7SUFBRCxDQUFDLEFBM09ELElBMk9DO0lBM09ZLHNDQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cIm5vZGVcIiAvPlxuXG5pbXBvcnQgKiBhcyBjbHVzdGVyIGZyb20gJ2NsdXN0ZXInO1xuXG5pbXBvcnQge3Jlc29sdmV9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtQYWNrYWdlSnNvblVwZGF0ZXJ9IGZyb20gJy4uLy4uL3dyaXRpbmcvcGFja2FnZV9qc29uX3VwZGF0ZXInO1xuaW1wb3J0IHtBbmFseXplRW50cnlQb2ludHNGbiwgVGFzaywgVGFza1F1ZXVlfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHtvblRhc2tDb21wbGV0ZWQsIHN0cmluZ2lmeVRhc2t9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHtNZXNzYWdlRnJvbVdvcmtlciwgVGFza0NvbXBsZXRlZE1lc3NhZ2UsIFVwZGF0ZVBhY2thZ2VKc29uTWVzc2FnZX0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHtEZWZlcnJlZCwgc2VuZE1lc3NhZ2VUb1dvcmtlcn0gZnJvbSAnLi91dGlscyc7XG5cblxuLyoqXG4gKiBUaGUgY2x1c3RlciBtYXN0ZXIgaXMgcmVzcG9uc2libGUgZm9yIGFuYWx5emluZyBhbGwgZW50cnktcG9pbnRzLCBwbGFubmluZyB0aGUgd29yayB0aGF0IG5lZWRzIHRvXG4gKiBiZSBkb25lLCBkaXN0cmlidXRpbmcgaXQgdG8gd29ya2VyLXByb2Nlc3NlcyBhbmQgY29sbGVjdGluZy9wb3N0LXByb2Nlc3NpbmcgdGhlIHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbHVzdGVyTWFzdGVyIHtcbiAgcHJpdmF0ZSBmaW5pc2hlZERlZmVycmVkID0gbmV3IERlZmVycmVkPHZvaWQ+KCk7XG4gIHByaXZhdGUgcHJvY2Vzc2luZ1N0YXJ0VGltZTogbnVtYmVyID0gLTE7XG4gIHByaXZhdGUgdGFza0Fzc2lnbm1lbnRzID0gbmV3IE1hcDxudW1iZXIsIFRhc2t8bnVsbD4oKTtcbiAgcHJpdmF0ZSB0YXNrUXVldWU6IFRhc2tRdWV1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgd29ya2VyQ291bnQ6IG51bWJlciwgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICAgIHByaXZhdGUgcGtnSnNvblVwZGF0ZXI6IFBhY2thZ2VKc29uVXBkYXRlciwgYW5hbHl6ZUVudHJ5UG9pbnRzOiBBbmFseXplRW50cnlQb2ludHNGbikge1xuICAgIGlmICghY2x1c3Rlci5pc01hc3Rlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcmllZCB0byBpbnN0YW50aWF0ZSBgQ2x1c3Rlck1hc3RlcmAgb24gYSB3b3JrZXIgcHJvY2Vzcy4nKTtcbiAgICB9XG5cbiAgICB0aGlzLnRhc2tRdWV1ZSA9IGFuYWx5emVFbnRyeVBvaW50cygpO1xuICB9XG5cbiAgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFNldCB1cCBsaXN0ZW5lcnMgZm9yIHdvcmtlciBldmVudHMgKGVtaXR0ZWQgb24gYGNsdXN0ZXJgKS5cbiAgICBjbHVzdGVyLm9uKCdvbmxpbmUnLCB0aGlzLndyYXBFdmVudEhhbmRsZXIod29ya2VyID0+IHRoaXMub25Xb3JrZXJPbmxpbmUod29ya2VyLmlkKSkpO1xuXG4gICAgY2x1c3Rlci5vbihcbiAgICAgICAgJ21lc3NhZ2UnLCB0aGlzLndyYXBFdmVudEhhbmRsZXIoKHdvcmtlciwgbXNnKSA9PiB0aGlzLm9uV29ya2VyTWVzc2FnZSh3b3JrZXIuaWQsIG1zZykpKTtcblxuICAgIGNsdXN0ZXIub24oXG4gICAgICAgICdleGl0JyxcbiAgICAgICAgdGhpcy53cmFwRXZlbnRIYW5kbGVyKCh3b3JrZXIsIGNvZGUsIHNpZ25hbCkgPT4gdGhpcy5vbldvcmtlckV4aXQod29ya2VyLCBjb2RlLCBzaWduYWwpKSk7XG5cbiAgICAvLyBTdGFydCB0aGUgd29ya2Vycy5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMud29ya2VyQ291bnQ7IGkrKykge1xuICAgICAgY2x1c3Rlci5mb3JrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmluaXNoZWREZWZlcnJlZC5wcm9taXNlLnRoZW4oKCkgPT4gdGhpcy5zdG9wV29ya2VycygpLCBlcnIgPT4ge1xuICAgICAgdGhpcy5zdG9wV29ya2VycygpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycik7XG4gICAgfSk7XG4gIH1cblxuICAvKiogVHJ5IHRvIGZpbmQgYXZhaWxhYmxlIChpZGxlKSB3b3JrZXJzIGFuZCBhc3NpZ24gdGhlbSBhdmFpbGFibGUgKG5vbi1ibG9ja2VkKSB0YXNrcy4gKi9cbiAgcHJpdmF0ZSBtYXliZURpc3RyaWJ1dGVXb3JrKCk6IHZvaWQge1xuICAgIGxldCBpc1dvcmtlckF2YWlsYWJsZSA9IGZhbHNlO1xuXG4gICAgLy8gRmlyc3QsIGNoZWNrIHdoZXRoZXIgYWxsIHRhc2tzIGhhdmUgYmVlbiBjb21wbGV0ZWQuXG4gICAgaWYgKHRoaXMudGFza1F1ZXVlLmFsbFRhc2tzQ29tcGxldGVkKSB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IE1hdGgucm91bmQoKERhdGUubm93KCkgLSB0aGlzLnByb2Nlc3NpbmdTdGFydFRpbWUpIC8gMTAwMCk7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgUHJvY2Vzc2VkIHRhc2tzIGluICR7ZHVyYXRpb259cy5gKTtcblxuICAgICAgcmV0dXJuIHRoaXMuZmluaXNoZWREZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgLy8gTG9vayBmb3IgYXZhaWxhYmxlIHdvcmtlcnMgYW5kIGF2YWlsYWJsZSB0YXNrcyB0byBhc3NpZ24gdG8gdGhlbS5cbiAgICBmb3IgKGNvbnN0IFt3b3JrZXJJZCwgYXNzaWduZWRUYXNrXSBvZiBBcnJheS5mcm9tKHRoaXMudGFza0Fzc2lnbm1lbnRzKSkge1xuICAgICAgaWYgKGFzc2lnbmVkVGFzayAhPT0gbnVsbCkge1xuICAgICAgICAvLyBUaGlzIHdvcmtlciBhbHJlYWR5IGhhcyBhIGpvYjsgY2hlY2sgb3RoZXIgd29ya2Vycy5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGlzIHdvcmtlciBpcyBhdmFpbGFibGUuXG4gICAgICAgIGlzV29ya2VyQXZhaWxhYmxlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gVGhpcyB3b3JrZXIgbmVlZHMgYSBqb2IuIFNlZSBpZiBhbnkgYXJlIGF2YWlsYWJsZS5cbiAgICAgIGNvbnN0IHRhc2sgPSB0aGlzLnRhc2tRdWV1ZS5nZXROZXh0VGFzaygpO1xuICAgICAgaWYgKHRhc2sgPT09IG51bGwpIHtcbiAgICAgICAgLy8gTm8gc3VpdGFibGUgd29yayBhdmFpbGFibGUgcmlnaHQgbm93LlxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyB0aGUgbmV4dCB0YXNrIG9uIHRoZSB3b3JrZXIuXG4gICAgICB0aGlzLnRhc2tBc3NpZ25tZW50cy5zZXQod29ya2VySWQsIHRhc2spO1xuICAgICAgc2VuZE1lc3NhZ2VUb1dvcmtlcih3b3JrZXJJZCwge3R5cGU6ICdwcm9jZXNzLXRhc2snLCB0YXNrfSk7XG5cbiAgICAgIGlzV29ya2VyQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIG5vIGF2YWlsYWJsZSB3b3JrZXJzIG9yIG5vIGF2YWlsYWJsZSB0YXNrcywgbG9nIChmb3IgZGVidWdnaW5nIHB1cnBvc2VzKS5cbiAgICBpZiAoIWlzV29ya2VyQXZhaWxhYmxlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgQWxsICR7dGhpcy50YXNrQXNzaWdubWVudHMuc2l6ZX0gd29ya2VycyBhcmUgY3VycmVudGx5IGJ1c3kgYW5kIGNhbm5vdCB0YWtlIG9uIG1vcmUgYCArXG4gICAgICAgICAgJ3dvcmsuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJ1c3lXb3JrZXJzID0gQXJyYXkuZnJvbSh0aGlzLnRhc2tBc3NpZ25tZW50cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtfd29ya2VySWQsIHRhc2tdKSA9PiB0YXNrICE9PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoW3dvcmtlcklkXSkgPT4gd29ya2VySWQpO1xuICAgICAgY29uc3QgdG90YWxXb3JrZXJDb3VudCA9IHRoaXMudGFza0Fzc2lnbm1lbnRzLnNpemU7XG4gICAgICBjb25zdCBpZGxlV29ya2VyQ291bnQgPSB0b3RhbFdvcmtlckNvdW50IC0gYnVzeVdvcmtlcnMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgTm8gYXNzaWdubWVudHMgZm9yICR7aWRsZVdvcmtlckNvdW50fSBpZGxlIChvdXQgb2YgJHt0b3RhbFdvcmtlckNvdW50fSB0b3RhbCkgYCArXG4gICAgICAgICAgYHdvcmtlcnMuIEJ1c3kgd29ya2VyczogJHtidXN5V29ya2Vycy5qb2luKCcsICcpfWApO1xuXG4gICAgICBpZiAoYnVzeVdvcmtlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgYSBidWc6XG4gICAgICAgIC8vIEFsbCB3b3JrZXJzIGFyZSBpZGxlIChtZWFuaW5nIG5vIHRhc2tzIGFyZSBpbiBwcm9ncmVzcykgYW5kIGB0YXNrUXVldWUuYWxsVGFza3NDb21wbGV0ZWRgXG4gICAgICAgIC8vIGlzIGBmYWxzZWAsIGJ1dCB0aGVyZSBpcyBzdGlsbCBubyBhc3NpZ25hYmxlIHdvcmsuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdUaGVyZSBhcmUgc3RpbGwgdW5wcm9jZXNzZWQgdGFza3MgaW4gdGhlIHF1ZXVlIGFuZCBubyB0YXNrcyBhcmUgY3VycmVudGx5IGluICcgK1xuICAgICAgICAgICAgYHByb2dyZXNzLCB5ZXQgdGhlIHF1ZXVlIGRpZCBub3QgcmV0dXJuIGFueSBhdmFpbGFibGUgdGFza3M6ICR7dGhpcy50YXNrUXVldWV9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZSBhIHdvcmtlcidzIGV4aXRpbmcuIChNaWdodCBiZSBpbnRlbnRpb25hbCBvciBub3QuKSAqL1xuICBwcml2YXRlIG9uV29ya2VyRXhpdCh3b3JrZXI6IGNsdXN0ZXIuV29ya2VyLCBjb2RlOiBudW1iZXJ8bnVsbCwgc2lnbmFsOiBzdHJpbmd8bnVsbCk6IHZvaWQge1xuICAgIC8vIElmIHRoZSB3b3JrZXIncyBleGl0aW5nIHdhcyBpbnRlbnRpb25hbCwgbm90aGluZyB0byBkby5cbiAgICBpZiAod29ya2VyLmV4aXRlZEFmdGVyRGlzY29ubmVjdCkgcmV0dXJuO1xuXG4gICAgLy8gVGhlIHdvcmtlciBleGl0ZWQgdW5leHBlY3RlZGx5OiBEZXRlcm1pbmUgaXQncyBzdGF0dXMgYW5kIHRha2UgYW4gYXBwcm9wcmlhdGUgYWN0aW9uLlxuICAgIGNvbnN0IGN1cnJlbnRUYXNrID0gdGhpcy50YXNrQXNzaWdubWVudHMuZ2V0KHdvcmtlci5pZCk7XG5cbiAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICBgV29ya2VyICMke3dvcmtlci5pZH0gZXhpdGVkIHVuZXhwZWN0ZWRseSAoY29kZTogJHtjb2RlfSB8IHNpZ25hbDogJHtzaWduYWx9KS5cXG5gICtcbiAgICAgICAgYCAgQ3VycmVudCBhc3NpZ25tZW50OiAkeyhjdXJyZW50VGFzayA9PSBudWxsKSA/ICctJyA6IHN0cmluZ2lmeVRhc2soY3VycmVudFRhc2spfWApO1xuXG4gICAgaWYgKGN1cnJlbnRUYXNrID09IG51bGwpIHtcbiAgICAgIC8vIFRoZSBjcmFzaGVkIHdvcmtlciBwcm9jZXNzIHdhcyBub3QgaW4gdGhlIG1pZGRsZSBvZiBhIHRhc2s6XG4gICAgICAvLyBKdXN0IHNwYXduIGFub3RoZXIgcHJvY2Vzcy5cbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBTcGF3bmluZyBhbm90aGVyIHdvcmtlciBwcm9jZXNzIHRvIHJlcGxhY2UgIyR7d29ya2VyLmlkfS4uLmApO1xuICAgICAgdGhpcy50YXNrQXNzaWdubWVudHMuZGVsZXRlKHdvcmtlci5pZCk7XG4gICAgICBjbHVzdGVyLmZvcmsoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlIGNyYXNoZWQgd29ya2VyIHByb2Nlc3Mgd2FzIGluIHRoZSBtaWRkbGUgb2YgYSB0YXNrOlxuICAgICAgLy8gSW1wb3NzaWJsZSB0byBrbm93IHdoZXRoZXIgd2UgY2FuIHJlY292ZXIgKHdpdGhvdXQgZW5kaW5nIHVwIHdpdGggYSBjb3JydXB0ZWQgZW50cnktcG9pbnQpLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdQcm9jZXNzIHVuZXhwZWN0ZWRseSBjcmFzaGVkLCB3aGlsZSBwcm9jZXNzaW5nIGZvcm1hdCBwcm9wZXJ0eSAnICtcbiAgICAgICAgICBgJHtjdXJyZW50VGFzay5mb3JtYXRQcm9wZXJ0eX0gZm9yIGVudHJ5LXBvaW50ICcke2N1cnJlbnRUYXNrLmVudHJ5UG9pbnQucGF0aH0nLmApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIYW5kbGUgYSBtZXNzYWdlIGZyb20gYSB3b3JrZXIuICovXG4gIHByaXZhdGUgb25Xb3JrZXJNZXNzYWdlKHdvcmtlcklkOiBudW1iZXIsIG1zZzogTWVzc2FnZUZyb21Xb3JrZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFza0Fzc2lnbm1lbnRzLmhhcyh3b3JrZXJJZCkpIHtcbiAgICAgIGNvbnN0IGtub3duV29ya2VycyA9IEFycmF5LmZyb20odGhpcy50YXNrQXNzaWdubWVudHMua2V5cygpKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgUmVjZWl2ZWQgbWVzc2FnZSBmcm9tIHVua25vd24gd29ya2VyICMke3dvcmtlcklkfSAoa25vd24gd29ya2VyczogYCArXG4gICAgICAgICAgYCR7a25vd25Xb3JrZXJzLmpvaW4oJywgJyl9KTogJHtKU09OLnN0cmluZ2lmeShtc2cpfWApO1xuICAgIH1cblxuICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBvbiB3b3JrZXIgIyR7d29ya2VySWR9OiAke21zZy5lcnJvcn1gKTtcbiAgICAgIGNhc2UgJ3Rhc2stY29tcGxldGVkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMub25Xb3JrZXJUYXNrQ29tcGxldGVkKHdvcmtlcklkLCBtc2cpO1xuICAgICAgY2FzZSAndXBkYXRlLXBhY2thZ2UtanNvbic6XG4gICAgICAgIHJldHVybiB0aGlzLm9uV29ya2VyVXBkYXRlUGFja2FnZUpzb24od29ya2VySWQsIG1zZyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgSW52YWxpZCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gd29ya2VyICMke3dvcmtlcklkfTogJHtKU09OLnN0cmluZ2lmeShtc2cpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIYW5kbGUgYSB3b3JrZXIncyBjb21pbmcgb25saW5lLiAqL1xuICBwcml2YXRlIG9uV29ya2VyT25saW5lKHdvcmtlcklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YXNrQXNzaWdubWVudHMuaGFzKHdvcmtlcklkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhcmlhbnQgdmlvbGF0ZWQ6IFdvcmtlciAjJHt3b3JrZXJJZH0gY2FtZSBvbmxpbmUgbW9yZSB0aGFuIG9uY2UuYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZ1N0YXJ0VGltZSA9PT0gLTEpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdQcm9jZXNzaW5nIHRhc2tzLi4uJyk7XG4gICAgICB0aGlzLnByb2Nlc3NpbmdTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIH1cblxuICAgIHRoaXMudGFza0Fzc2lnbm1lbnRzLnNldCh3b3JrZXJJZCwgbnVsbCk7XG4gICAgdGhpcy5tYXliZURpc3RyaWJ1dGVXb3JrKCk7XG4gIH1cblxuICAvKiogSGFuZGxlIGEgd29ya2VyJ3MgaGF2aW5nIGNvbXBsZXRlZCB0aGVpciBhc3NpZ25lZCB0YXNrLiAqL1xuICBwcml2YXRlIG9uV29ya2VyVGFza0NvbXBsZXRlZCh3b3JrZXJJZDogbnVtYmVyLCBtc2c6IFRhc2tDb21wbGV0ZWRNZXNzYWdlKTogdm9pZCB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMudGFza0Fzc2lnbm1lbnRzLmdldCh3b3JrZXJJZCkgfHwgbnVsbDtcblxuICAgIGlmICh0YXNrID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEV4cGVjdGVkIHdvcmtlciAjJHt3b3JrZXJJZH0gdG8gaGF2ZSBhIHRhc2sgYXNzaWduZWQsIHdoaWxlIGhhbmRsaW5nIG1lc3NhZ2U6IGAgK1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG1zZykpO1xuICAgIH1cblxuICAgIG9uVGFza0NvbXBsZXRlZCh0aGlzLnBrZ0pzb25VcGRhdGVyLCB0YXNrLCBtc2cub3V0Y29tZSk7XG5cbiAgICB0aGlzLnRhc2tRdWV1ZS5tYXJrVGFza0NvbXBsZXRlZCh0YXNrKTtcbiAgICB0aGlzLnRhc2tBc3NpZ25tZW50cy5zZXQod29ya2VySWQsIG51bGwpO1xuICAgIHRoaXMubWF5YmVEaXN0cmlidXRlV29yaygpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBhIHdvcmtlcidzIHJlcXVlc3QgdG8gdXBkYXRlIGEgYHBhY2thZ2UuanNvbmAgZmlsZS4gKi9cbiAgcHJpdmF0ZSBvbldvcmtlclVwZGF0ZVBhY2thZ2VKc29uKHdvcmtlcklkOiBudW1iZXIsIG1zZzogVXBkYXRlUGFja2FnZUpzb25NZXNzYWdlKTogdm9pZCB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMudGFza0Fzc2lnbm1lbnRzLmdldCh3b3JrZXJJZCkgfHwgbnVsbDtcblxuICAgIGlmICh0YXNrID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEV4cGVjdGVkIHdvcmtlciAjJHt3b3JrZXJJZH0gdG8gaGF2ZSBhIHRhc2sgYXNzaWduZWQsIHdoaWxlIGhhbmRsaW5nIG1lc3NhZ2U6IGAgK1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG1zZykpO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGVjdGVkUGFja2FnZUpzb25QYXRoID0gcmVzb2x2ZSh0YXNrLmVudHJ5UG9pbnQucGF0aCwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGNvbnN0IHBhcnNlZFBhY2thZ2VKc29uID0gdGFzay5lbnRyeVBvaW50LnBhY2thZ2VKc29uO1xuXG4gICAgaWYgKGV4cGVjdGVkUGFja2FnZUpzb25QYXRoICE9PSBtc2cucGFja2FnZUpzb25QYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFJlY2VpdmVkICcke21zZy50eXBlfScgbWVzc2FnZSBmcm9tIHdvcmtlciAjJHt3b3JrZXJJZH0gZm9yICcke21zZy5wYWNrYWdlSnNvblBhdGh9JywgYCArXG4gICAgICAgICAgYGJ1dCB3YXMgZXhwZWN0aW5nICcke2V4cGVjdGVkUGFja2FnZUpzb25QYXRofScgKGJhc2VkIG9uIHRhc2sgYXNzaWdubWVudCkuYCk7XG4gICAgfVxuXG4gICAgLy8gTk9URTogQWx0aG91Z2ggdGhlIGNoYW5nZSBpbiB0aGUgcGFyc2VkIGBwYWNrYWdlLmpzb25gIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRhc2tzIG9iamVjdHNcbiAgICAvLyAgICAgICBsb2NhbGx5IGFuZCB0aHVzIGFsc28gaW4gZnV0dXJlIGBwcm9jZXNzLXRhc2tgIG1lc3NhZ2VzIHNlbnQgdG8gd29ya2VyIHByb2Nlc3NlcywgYW55XG4gICAgLy8gICAgICAgcHJvY2Vzc2VzIGFscmVhZHkgcnVubmluZyBhbmQgcHJvY2Vzc2luZyBhIHRhc2sgZm9yIHRoZSBzYW1lIGVudHJ5LXBvaW50IHdpbGwgbm90IGdldFxuICAgIC8vICAgICAgIHRoZSBjaGFuZ2UuXG4gICAgLy8gICAgICAgRG8gbm90IHJlbHkgb24gaGF2aW5nIGFuIHVwLXRvLWRhdGUgYHBhY2thZ2UuanNvbmAgcmVwcmVzZW50YXRpb24gaW4gd29ya2VyIHByb2Nlc3Nlcy5cbiAgICAvLyAgICAgICBJbiBvdGhlciB3b3JkcywgdGFzayBwcm9jZXNzaW5nIHNob3VsZCBvbmx5IHJlbHkgb24gdGhlIGluZm8gdGhhdCB3YXMgdGhlcmUgd2hlbiB0aGVcbiAgICAvLyAgICAgICBmaWxlIHdhcyBpbml0aWFsbHkgcGFyc2VkIChkdXJpbmcgZW50cnktcG9pbnQgYW5hbHlzaXMpIGFuZCBub3Qgb24gdGhlIGluZm8gdGhhdCBtaWdodFxuICAgIC8vICAgICAgIGJlIGFkZGVkIGxhdGVyIChkdXJpbmcgdGFzayBwcm9jZXNzaW5nKS5cbiAgICB0aGlzLnBrZ0pzb25VcGRhdGVyLndyaXRlQ2hhbmdlcyhtc2cuY2hhbmdlcywgbXNnLnBhY2thZ2VKc29uUGF0aCwgcGFyc2VkUGFja2FnZUpzb24pO1xuICB9XG5cbiAgLyoqIFN0b3AgYWxsIHdvcmtlcnMgYW5kIHN0b3AgbGlzdGVuaW5nIG9uIGNsdXN0ZXIgZXZlbnRzLiAqL1xuICBwcml2YXRlIHN0b3BXb3JrZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHdvcmtlcnMgPSBPYmplY3QudmFsdWVzKGNsdXN0ZXIud29ya2VycykgYXMgY2x1c3Rlci5Xb3JrZXJbXTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgU3RvcHBpbmcgJHt3b3JrZXJzLmxlbmd0aH0gd29ya2Vycy4uLmApO1xuXG4gICAgY2x1c3Rlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICB3b3JrZXJzLmZvckVhY2god29ya2VyID0+IHdvcmtlci5raWxsKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXAgYW4gZXZlbnQgaGFuZGxlciB0byBlbnN1cmUgdGhhdCBgZmluaXNoZWREZWZlcnJlZGAgd2lsbCBiZSByZWplY3RlZCBvbiBlcnJvciAocmVnYXJkbGVzc1xuICAgKiBpZiB0aGUgaGFuZGxlciBjb21wbGV0ZXMgc3luY2hyb25vdXNseSBvciBhc3luY2hyb25vdXNseSkuXG4gICAqL1xuICBwcml2YXRlIHdyYXBFdmVudEhhbmRsZXI8QXJncyBleHRlbmRzIHVua25vd25bXT4oZm46ICguLi5hcmdzOiBBcmdzKSA9PiB2b2lkfFByb21pc2U8dm9pZD4pOlxuICAgICAgKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhc3luYyguLi5hcmdzOiBBcmdzKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmbiguLi5hcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmZpbmlzaGVkRGVmZXJyZWQucmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuIl19
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2V4ZWN1dGlvbi9jbHVzdGVyL21hc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFFSCw4QkFBOEI7SUFFOUIsaUNBQW1DO0lBRW5DLDJFQUEwRDtJQUkxRCx3RUFBd0Q7SUFHeEQsZ0ZBQXNEO0lBR3REOzs7T0FHRztJQUNIO1FBTUUsdUJBQ1ksV0FBbUIsRUFBVSxNQUFjLEVBQzNDLGNBQWtDLEVBQUUsa0JBQXdDO1lBRDVFLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1lBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtZQUMzQyxtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7WUFQdEMscUJBQWdCLEdBQUcsSUFBSSxnQkFBUSxFQUFRLENBQUM7WUFDeEMsd0JBQW1CLEdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDakMsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztZQU1yRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtnQkFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO2FBQzlFO1lBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCwyQkFBRyxHQUFIO1lBQUEsaUJBc0JDO1lBckJDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDcEMsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDMUI7WUFFRCw2REFBNkQ7WUFDN0QsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsS0FBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxD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YUFFckMsQ0FBQztRQUNKLENBQUM7UUFDSCxvQkFBQztJQUFELENBQUMsQUFsUEQsSUFrUEM7SUFsUFksc0NBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwibm9kZVwiIC8+XG5cbmltcG9ydCAqIGFzIGNsdXN0ZXIgZnJvbSAnY2x1c3Rlcic7XG5cbmltcG9ydCB7cmVzb2x2ZX0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL25ndHNjL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1BhY2thZ2VKc29uVXBkYXRlcn0gZnJvbSAnLi4vLi4vd3JpdGluZy9wYWNrYWdlX2pzb25fdXBkYXRlcic7XG5pbXBvcnQge0FuYWx5emVFbnRyeVBvaW50c0ZuLCBUYXNrLCBUYXNrUXVldWV9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQge29uVGFza0NvbXBsZXRlZCwgc3RyaW5naWZ5VGFza30gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQge01lc3NhZ2VGcm9tV29ya2VyLCBUYXNrQ29tcGxldGVkTWVzc2FnZSwgVXBkYXRlUGFja2FnZUpzb25NZXNzYWdlfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge0RlZmVycmVkLCBzZW5kTWVzc2FnZVRvV29ya2VyfSBmcm9tICcuL3V0aWxzJztcblxuXG4vKipcbiAqIFRoZSBjbHVzdGVyIG1hc3RlciBpcyByZXNwb25zaWJsZSBmb3IgYW5hbHl6aW5nIGFsbCBlbnRyeS1wb2ludHMsIHBsYW5uaW5nIHRoZSB3b3JrIHRoYXQgbmVlZHMgdG9cbiAqIGJlIGRvbmUsIGRpc3RyaWJ1dGluZyBpdCB0byB3b3JrZXItcHJvY2Vzc2VzIGFuZCBjb2xsZWN0aW5nL3Bvc3QtcHJvY2Vzc2luZyB0aGUgcmVzdWx0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENsdXN0ZXJNYXN0ZXIge1xuICBwcml2YXRlIGZpbmlzaGVkRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8dm9pZD4oKTtcbiAgcHJpdmF0ZSBwcm9jZXNzaW5nU3RhcnRUaW1lOiBudW1iZXIgPSAtMTtcbiAgcHJpdmF0ZSB0YXNrQXNzaWdubWVudHMgPSBuZXcgTWFwPG51bWJlciwgVGFza3xudWxsPigpO1xuICBwcml2YXRlIHRhc2tRdWV1ZTogVGFza1F1ZXVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSB3b3JrZXJDb3VudDogbnVtYmVyLCBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxuICAgICAgcHJpdmF0ZSBwa2dKc29uVXBkYXRlcjogUGFja2FnZUpzb25VcGRhdGVyLCBhbmFseXplRW50cnlQb2ludHM6IEFuYWx5emVFbnRyeVBvaW50c0ZuKSB7XG4gICAgaWYgKCFjbHVzdGVyLmlzTWFzdGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyaWVkIHRvIGluc3RhbnRpYXRlIGBDbHVzdGVyTWFzdGVyYCBvbiBhIHdvcmtlciBwcm9jZXNzLicpO1xuICAgIH1cblxuICAgIHRoaXMudGFza1F1ZXVlID0gYW5hbHl6ZUVudHJ5UG9pbnRzKCk7XG4gIH1cblxuICBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMudGFza1F1ZXVlLmFsbFRhc2tzQ29tcGxldGVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgLy8gU2V0IHVwIGxpc3RlbmVycyBmb3Igd29ya2VyIGV2ZW50cyAoZW1pdHRlZCBvbiBgY2x1c3RlcmApLlxuICAgIGNsdXN0ZXIub24oJ29ubGluZScsIHRoaXMud3JhcEV2ZW50SGFuZGxlcih3b3JrZXIgPT4gdGhpcy5vbldvcmtlck9ubGluZSh3b3JrZXIuaWQpKSk7XG5cbiAgICBjbHVzdGVyLm9uKFxuICAgICAgICAnbWVzc2FnZScsIHRoaXMud3JhcEV2ZW50SGFuZGxlcigod29ya2VyLCBtc2cpID0+IHRoaXMub25Xb3JrZXJNZXNzYWdlKHdvcmtlci5pZCwgbXNnKSkpO1xuXG4gICAgY2x1c3Rlci5vbihcbiAgICAgICAgJ2V4aXQnLFxuICAgICAgICB0aGlzLndyYXBFdmVudEhhbmRsZXIoKHdvcmtlciwgY29kZSwgc2lnbmFsKSA9PiB0aGlzLm9uV29ya2VyRXhpdCh3b3JrZXIsIGNvZGUsIHNpZ25hbCkpKTtcblxuICAgIC8vIFNpbmNlIHdlIGhhdmUgcGVuZGluZyB0YXNrcyBhdCB0aGUgdmVyeSBtaW5pbXVtIHdlIG5lZWQgYSBzaW5nbGUgd29ya2VyLlxuICAgIGNsdXN0ZXIuZm9yaygpO1xuXG4gICAgcmV0dXJuIHRoaXMuZmluaXNoZWREZWZlcnJlZC5wcm9taXNlLnRoZW4oKCkgPT4gdGhpcy5zdG9wV29ya2VycygpLCBlcnIgPT4ge1xuICAgICAgdGhpcy5zdG9wV29ya2VycygpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycik7XG4gICAgfSk7XG4gIH1cblxuICAvKiogVHJ5IHRvIGZpbmQgYXZhaWxhYmxlIChpZGxlKSB3b3JrZXJzIGFuZCBhc3NpZ24gdGhlbSBhdmFpbGFibGUgKG5vbi1ibG9ja2VkKSB0YXNrcy4gKi9cbiAgcHJpdmF0ZSBtYXliZURpc3RyaWJ1dGVXb3JrKCk6IHZvaWQge1xuICAgIGxldCBpc1dvcmtlckF2YWlsYWJsZSA9IGZhbHNlO1xuXG4gICAgLy8gRmlyc3QsIGNoZWNrIHdoZXRoZXIgYWxsIHRhc2tzIGhhdmUgYmVlbiBjb21wbGV0ZWQuXG4gICAgaWYgKHRoaXMudGFza1F1ZXVlLmFsbFRhc2tzQ29tcGxldGVkKSB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IE1hdGgucm91bmQoKERhdGUubm93KCkgLSB0aGlzLnByb2Nlc3NpbmdTdGFydFRpbWUpIC8gMTAwMCk7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgUHJvY2Vzc2VkIHRhc2tzIGluICR7ZHVyYXRpb259cy5gKTtcblxuICAgICAgcmV0dXJuIHRoaXMuZmluaXNoZWREZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgLy8gTG9vayBmb3IgYXZhaWxhYmxlIHdvcmtlcnMgYW5kIGF2YWlsYWJsZSB0YXNrcyB0byBhc3NpZ24gdG8gdGhlbS5cbiAgICBmb3IgKGNvbnN0IFt3b3JrZXJJZCwgYXNzaWduZWRUYXNrXSBvZiBBcnJheS5mcm9tKHRoaXMudGFza0Fzc2lnbm1lbnRzKSkge1xuICAgICAgaWYgKGFzc2lnbmVkVGFzayAhPT0gbnVsbCkge1xuICAgICAgICAvLyBUaGlzIHdvcmtlciBhbHJlYWR5IGhhcyBhIGpvYjsgY2hlY2sgb3RoZXIgd29ya2Vycy5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGlzIHdvcmtlciBpcyBhdmFpbGFibGUuXG4gICAgICAgIGlzV29ya2VyQXZhaWxhYmxlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gVGhpcyB3b3JrZXIgbmVlZHMgYSBqb2IuIFNlZSBpZiBhbnkgYXJlIGF2YWlsYWJsZS5cbiAgICAgIGNvbnN0IHRhc2sgPSB0aGlzLnRhc2tRdWV1ZS5nZXROZXh0VGFzaygpO1xuICAgICAgaWYgKHRhc2sgPT09IG51bGwpIHtcbiAgICAgICAgLy8gTm8gc3VpdGFibGUgd29yayBhdmFpbGFibGUgcmlnaHQgbm93LlxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyB0aGUgbmV4dCB0YXNrIG9uIHRoZSB3b3JrZXIuXG4gICAgICB0aGlzLnRhc2tBc3NpZ25tZW50cy5zZXQod29ya2VySWQsIHRhc2spO1xuICAgICAgc2VuZE1lc3NhZ2VUb1dvcmtlcih3b3JrZXJJZCwge3R5cGU6ICdwcm9jZXNzLXRhc2snLCB0YXNrfSk7XG5cbiAgICAgIGlzV29ya2VyQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFpc1dvcmtlckF2YWlsYWJsZSkge1xuICAgICAgaWYgKHRoaXMudGFza0Fzc2lnbm1lbnRzLnNpemUgPCB0aGlzLndvcmtlckNvdW50KSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTcGF3bmluZyBhbm90aGVyIHdvcmtlciBwcm9jZXNzIGFzIHRoZXJlIGlzIG1vcmUgd29yayB0byBiZSBkb25lLicpO1xuICAgICAgICBjbHVzdGVyLmZvcmsoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBhdmFpbGFibGUgd29ya2VycyBvciBubyBhdmFpbGFibGUgdGFza3MsIGxvZyAoZm9yIGRlYnVnZ2luZyBwdXJwb3NlcykuXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYEFsbCAke3RoaXMudGFza0Fzc2lnbm1lbnRzLnNpemV9IHdvcmtlcnMgYXJlIGN1cnJlbnRseSBidXN5IGFuZCBjYW5ub3QgdGFrZSBvbiBtb3JlIGAgK1xuICAgICAgICAgICAgJ3dvcmsuJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJ1c3lXb3JrZXJzID0gQXJyYXkuZnJvbSh0aGlzLnRhc2tBc3NpZ25tZW50cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtfd29ya2VySWQsIHRhc2tdKSA9PiB0YXNrICE9PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoW3dvcmtlcklkXSkgPT4gd29ya2VySWQpO1xuICAgICAgY29uc3QgdG90YWxXb3JrZXJDb3VudCA9IHRoaXMudGFza0Fzc2lnbm1lbnRzLnNpemU7XG4gICAgICBjb25zdCBpZGxlV29ya2VyQ291bnQgPSB0b3RhbFdvcmtlckNvdW50IC0gYnVzeVdvcmtlcnMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgTm8gYXNzaWdubWVudHMgZm9yICR7aWRsZVdvcmtlckNvdW50fSBpZGxlIChvdXQgb2YgJHt0b3RhbFdvcmtlckNvdW50fSB0b3RhbCkgYCArXG4gICAgICAgICAgYHdvcmtlcnMuIEJ1c3kgd29ya2VyczogJHtidXN5V29ya2Vycy5qb2luKCcsICcpfWApO1xuXG4gICAgICBpZiAoYnVzeVdvcmtlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgYSBidWc6XG4gICAgICAgIC8vIEFsbCB3b3JrZXJzIGFyZSBpZGxlIChtZWFuaW5nIG5vIHRhc2tzIGFyZSBpbiBwcm9ncmVzcykgYW5kIGB0YXNrUXVldWUuYWxsVGFza3NDb21wbGV0ZWRgXG4gICAgICAgIC8vIGlzIGBmYWxzZWAsIGJ1dCB0aGVyZSBpcyBzdGlsbCBubyBhc3NpZ25hYmxlIHdvcmsuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdUaGVyZSBhcmUgc3RpbGwgdW5wcm9jZXNzZWQgdGFza3MgaW4gdGhlIHF1ZXVlIGFuZCBubyB0YXNrcyBhcmUgY3VycmVudGx5IGluICcgK1xuICAgICAgICAgICAgYHByb2dyZXNzLCB5ZXQgdGhlIHF1ZXVlIGRpZCBub3QgcmV0dXJuIGFueSBhdmFpbGFibGUgdGFza3M6ICR7dGhpcy50YXNrUXVldWV9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZSBhIHdvcmtlcidzIGV4aXRpbmcuIChNaWdodCBiZSBpbnRlbnRpb25hbCBvciBub3QuKSAqL1xuICBwcml2YXRlIG9uV29ya2VyRXhpdCh3b3JrZXI6IGNsdXN0ZXIuV29ya2VyLCBjb2RlOiBudW1iZXJ8bnVsbCwgc2lnbmFsOiBzdHJpbmd8bnVsbCk6IHZvaWQge1xuICAgIC8vIElmIHRoZSB3b3JrZXIncyBleGl0aW5nIHdhcyBpbnRlbnRpb25hbCwgbm90aGluZyB0byBkby5cbiAgICBpZiAod29ya2VyLmV4aXRlZEFmdGVyRGlzY29ubmVjdCkgcmV0dXJuO1xuXG4gICAgLy8gVGhlIHdvcmtlciBleGl0ZWQgdW5leHBlY3RlZGx5OiBEZXRlcm1pbmUgaXQncyBzdGF0dXMgYW5kIHRha2UgYW4gYXBwcm9wcmlhdGUgYWN0aW9uLlxuICAgIGNvbnN0IGN1cnJlbnRUYXNrID0gdGhpcy50YXNrQXNzaWdubWVudHMuZ2V0KHdvcmtlci5pZCk7XG5cbiAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICBgV29ya2VyICMke3dvcmtlci5pZH0gZXhpdGVkIHVuZXhwZWN0ZWRseSAoY29kZTogJHtjb2RlfSB8IHNpZ25hbDogJHtzaWduYWx9KS5cXG5gICtcbiAgICAgICAgYCAgQ3VycmVudCBhc3NpZ25tZW50OiAkeyhjdXJyZW50VGFzayA9PSBudWxsKSA/ICctJyA6IHN0cmluZ2lmeVRhc2soY3VycmVudFRhc2spfWApO1xuXG4gICAgaWYgKGN1cnJlbnRUYXNrID09IG51bGwpIHtcbiAgICAgIC8vIFRoZSBjcmFzaGVkIHdvcmtlciBwcm9jZXNzIHdhcyBub3QgaW4gdGhlIG1pZGRsZSBvZiBhIHRhc2s6XG4gICAgICAvLyBKdXN0IHNwYXduIGFub3RoZXIgcHJvY2Vzcy5cbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBTcGF3bmluZyBhbm90aGVyIHdvcmtlciBwcm9jZXNzIHRvIHJlcGxhY2UgIyR7d29ya2VyLmlkfS4uLmApO1xuICAgICAgdGhpcy50YXNrQXNzaWdubWVudHMuZGVsZXRlKHdvcmtlci5pZCk7XG4gICAgICBjbHVzdGVyLmZvcmsoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlIGNyYXNoZWQgd29ya2VyIHByb2Nlc3Mgd2FzIGluIHRoZSBtaWRkbGUgb2YgYSB0YXNrOlxuICAgICAgLy8gSW1wb3NzaWJsZSB0byBrbm93IHdoZXRoZXIgd2UgY2FuIHJlY292ZXIgKHdpdGhvdXQgZW5kaW5nIHVwIHdpdGggYSBjb3JydXB0ZWQgZW50cnktcG9pbnQpLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdQcm9jZXNzIHVuZXhwZWN0ZWRseSBjcmFzaGVkLCB3aGlsZSBwcm9jZXNzaW5nIGZvcm1hdCBwcm9wZXJ0eSAnICtcbiAgICAgICAgICBgJHtjdXJyZW50VGFzay5mb3JtYXRQcm9wZXJ0eX0gZm9yIGVudHJ5LXBvaW50ICcke2N1cnJlbnRUYXNrLmVudHJ5UG9pbnQucGF0aH0nLmApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIYW5kbGUgYSBtZXNzYWdlIGZyb20gYSB3b3JrZXIuICovXG4gIHByaXZhdGUgb25Xb3JrZXJNZXNzYWdlKHdvcmtlcklkOiBudW1iZXIsIG1zZzogTWVzc2FnZUZyb21Xb3JrZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFza0Fzc2lnbm1lbnRzLmhhcyh3b3JrZXJJZCkpIHtcbiAgICAgIGNvbnN0IGtub3duV29ya2VycyA9IEFycmF5LmZyb20odGhpcy50YXNrQXNzaWdubWVudHMua2V5cygpKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgUmVjZWl2ZWQgbWVzc2FnZSBmcm9tIHVua25vd24gd29ya2VyICMke3dvcmtlcklkfSAoa25vd24gd29ya2VyczogYCArXG4gICAgICAgICAgYCR7a25vd25Xb3JrZXJzLmpvaW4oJywgJyl9KTogJHtKU09OLnN0cmluZ2lmeShtc2cpfWApO1xuICAgIH1cblxuICAgIHN3aXRjaCAobXNnLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBvbiB3b3JrZXIgIyR7d29ya2VySWR9OiAke21zZy5lcnJvcn1gKTtcbiAgICAgIGNhc2UgJ3Rhc2stY29tcGxldGVkJzpcbiAgICAgICAgcmV0dXJuIHRoaXMub25Xb3JrZXJUYXNrQ29tcGxldGVkKHdvcmtlcklkLCBtc2cpO1xuICAgICAgY2FzZSAndXBkYXRlLXBhY2thZ2UtanNvbic6XG4gICAgICAgIHJldHVybiB0aGlzLm9uV29ya2VyVXBkYXRlUGFja2FnZUpzb24od29ya2VySWQsIG1zZyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgSW52YWxpZCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gd29ya2VyICMke3dvcmtlcklkfTogJHtKU09OLnN0cmluZ2lmeShtc2cpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIYW5kbGUgYSB3b3JrZXIncyBjb21pbmcgb25saW5lLiAqL1xuICBwcml2YXRlIG9uV29ya2VyT25saW5lKHdvcmtlcklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YXNrQXNzaWdubWVudHMuaGFzKHdvcmtlcklkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhcmlhbnQgdmlvbGF0ZWQ6IFdvcmtlciAjJHt3b3JrZXJJZH0gY2FtZSBvbmxpbmUgbW9yZSB0aGFuIG9uY2UuYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZ1N0YXJ0VGltZSA9PT0gLTEpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdQcm9jZXNzaW5nIHRhc2tzLi4uJyk7XG4gICAgICB0aGlzLnByb2Nlc3NpbmdTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIH1cblxuICAgIHRoaXMudGFza0Fzc2lnbm1lbnRzLnNldCh3b3JrZXJJZCwgbnVsbCk7XG4gICAgdGhpcy5tYXliZURpc3RyaWJ1dGVXb3JrKCk7XG4gIH1cblxuICAvKiogSGFuZGxlIGEgd29ya2VyJ3MgaGF2aW5nIGNvbXBsZXRlZCB0aGVpciBhc3NpZ25lZCB0YXNrLiAqL1xuICBwcml2YXRlIG9uV29ya2VyVGFza0NvbXBsZXRlZCh3b3JrZXJJZDogbnVtYmVyLCBtc2c6IFRhc2tDb21wbGV0ZWRNZXNzYWdlKTogdm9pZCB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMudGFza0Fzc2lnbm1lbnRzLmdldCh3b3JrZXJJZCkgfHwgbnVsbDtcblxuICAgIGlmICh0YXNrID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEV4cGVjdGVkIHdvcmtlciAjJHt3b3JrZXJJZH0gdG8gaGF2ZSBhIHRhc2sgYXNzaWduZWQsIHdoaWxlIGhhbmRsaW5nIG1lc3NhZ2U6IGAgK1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG1zZykpO1xuICAgIH1cblxuICAgIG9uVGFza0NvbXBsZXRlZCh0aGlzLnBrZ0pzb25VcGRhdGVyLCB0YXNrLCBtc2cub3V0Y29tZSk7XG5cbiAgICB0aGlzLnRhc2tRdWV1ZS5tYXJrVGFza0NvbXBsZXRlZCh0YXNrKTtcbiAgICB0aGlzLnRhc2tBc3NpZ25tZW50cy5zZXQod29ya2VySWQsIG51bGwpO1xuICAgIHRoaXMubWF5YmVEaXN0cmlidXRlV29yaygpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBhIHdvcmtlcidzIHJlcXVlc3QgdG8gdXBkYXRlIGEgYHBhY2thZ2UuanNvbmAgZmlsZS4gKi9cbiAgcHJpdmF0ZSBvbldvcmtlclVwZGF0ZVBhY2thZ2VKc29uKHdvcmtlcklkOiBudW1iZXIsIG1zZzogVXBkYXRlUGFja2FnZUpzb25NZXNzYWdlKTogdm9pZCB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMudGFza0Fzc2lnbm1lbnRzLmdldCh3b3JrZXJJZCkgfHwgbnVsbDtcblxuICAgIGlmICh0YXNrID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEV4cGVjdGVkIHdvcmtlciAjJHt3b3JrZXJJZH0gdG8gaGF2ZSBhIHRhc2sgYXNzaWduZWQsIHdoaWxlIGhhbmRsaW5nIG1lc3NhZ2U6IGAgK1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG1zZykpO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGVjdGVkUGFja2FnZUpzb25QYXRoID0gcmVzb2x2ZSh0YXNrLmVudHJ5UG9pbnQucGF0aCwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGNvbnN0IHBhcnNlZFBhY2thZ2VKc29uID0gdGFzay5lbnRyeVBvaW50LnBhY2thZ2VKc29uO1xuXG4gICAgaWYgKGV4cGVjdGVkUGFja2FnZUpzb25QYXRoICE9PSBtc2cucGFja2FnZUpzb25QYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFJlY2VpdmVkICcke21zZy50eXBlfScgbWVzc2FnZSBmcm9tIHdvcmtlciAjJHt3b3JrZXJJZH0gZm9yICcke21zZy5wYWNrYWdlSnNvblBhdGh9JywgYCArXG4gICAgICAgICAgYGJ1dCB3YXMgZXhwZWN0aW5nICcke2V4cGVjdGVkUGFja2FnZUpzb25QYXRofScgKGJhc2VkIG9uIHRhc2sgYXNzaWdubWVudCkuYCk7XG4gICAgfVxuXG4gICAgLy8gTk9URTogQWx0aG91Z2ggdGhlIGNoYW5nZSBpbiB0aGUgcGFyc2VkIGBwYWNrYWdlLmpzb25gIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRhc2tzIG9iamVjdHNcbiAgICAvLyAgICAgICBsb2NhbGx5IGFuZCB0aHVzIGFsc28gaW4gZnV0dXJlIGBwcm9jZXNzLXRhc2tgIG1lc3NhZ2VzIHNlbnQgdG8gd29ya2VyIHByb2Nlc3NlcywgYW55XG4gICAgLy8gICAgICAgcHJvY2Vzc2VzIGFscmVhZHkgcnVubmluZyBhbmQgcHJvY2Vzc2luZyBhIHRhc2sgZm9yIHRoZSBzYW1lIGVudHJ5LXBvaW50IHdpbGwgbm90IGdldFxuICAgIC8vICAgICAgIHRoZSBjaGFuZ2UuXG4gICAgLy8gICAgICAgRG8gbm90IHJlbHkgb24gaGF2aW5nIGFuIHVwLXRvLWRhdGUgYHBhY2thZ2UuanNvbmAgcmVwcmVzZW50YXRpb24gaW4gd29ya2VyIHByb2Nlc3Nlcy5cbiAgICAvLyAgICAgICBJbiBvdGhlciB3b3JkcywgdGFzayBwcm9jZXNzaW5nIHNob3VsZCBvbmx5IHJlbHkgb24gdGhlIGluZm8gdGhhdCB3YXMgdGhlcmUgd2hlbiB0aGVcbiAgICAvLyAgICAgICBmaWxlIHdhcyBpbml0aWFsbHkgcGFyc2VkIChkdXJpbmcgZW50cnktcG9pbnQgYW5hbHlzaXMpIGFuZCBub3Qgb24gdGhlIGluZm8gdGhhdCBtaWdodFxuICAgIC8vICAgICAgIGJlIGFkZGVkIGxhdGVyIChkdXJpbmcgdGFzayBwcm9jZXNzaW5nKS5cbiAgICB0aGlzLnBrZ0pzb25VcGRhdGVyLndyaXRlQ2hhbmdlcyhtc2cuY2hhbmdlcywgbXNnLnBhY2thZ2VKc29uUGF0aCwgcGFyc2VkUGFja2FnZUpzb24pO1xuICB9XG5cbiAgLyoqIFN0b3AgYWxsIHdvcmtlcnMgYW5kIHN0b3AgbGlzdGVuaW5nIG9uIGNsdXN0ZXIgZXZlbnRzLiAqL1xuICBwcml2YXRlIHN0b3BXb3JrZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHdvcmtlcnMgPSBPYmplY3QudmFsdWVzKGNsdXN0ZXIud29ya2VycykgYXMgY2x1c3Rlci5Xb3JrZXJbXTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgU3RvcHBpbmcgJHt3b3JrZXJzLmxlbmd0aH0gd29ya2Vycy4uLmApO1xuXG4gICAgY2x1c3Rlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICB3b3JrZXJzLmZvckVhY2god29ya2VyID0+IHdvcmtlci5raWxsKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXAgYW4gZXZlbnQgaGFuZGxlciB0byBlbnN1cmUgdGhhdCBgZmluaXNoZWREZWZlcnJlZGAgd2lsbCBiZSByZWplY3RlZCBvbiBlcnJvciAocmVnYXJkbGVzc1xuICAgKiBpZiB0aGUgaGFuZGxlciBjb21wbGV0ZXMgc3luY2hyb25vdXNseSBvciBhc3luY2hyb25vdXNseSkuXG4gICAqL1xuICBwcml2YXRlIHdyYXBFdmVudEhhbmRsZXI8QXJncyBleHRlbmRzIHVua25vd25bXT4oZm46ICguLi5hcmdzOiBBcmdzKSA9PiB2b2lkfFByb21pc2U8dm9pZD4pOlxuICAgICAgKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhc3luYyguLi5hcmdzOiBBcmdzKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmbiguLi5hcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmZpbmlzaGVkRGVmZXJyZWQucmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuIl19
@@ -6,23 +6,29 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/compiler-cli/ngcc/src/execution/single_process_executor" />
9
+ import { SyncLocker } from '../locking/sync_locker';
9
10
  import { Logger } from '../logging/logger';
10
11
  import { PackageJsonUpdater } from '../writing/package_json_updater';
11
12
  import { AnalyzeEntryPointsFn, CreateCompileFn, Executor } from './api';
12
- import { LockFile } from './lock_file';
13
+ export declare abstract class SingleProcessorExecutorBase {
14
+ private logger;
15
+ private pkgJsonUpdater;
16
+ constructor(logger: Logger, pkgJsonUpdater: PackageJsonUpdater);
17
+ doExecute(analyzeEntryPoints: AnalyzeEntryPointsFn, createCompileFn: CreateCompileFn): void | Promise<void>;
18
+ }
13
19
  /**
14
20
  * An `Executor` that processes all tasks serially and completes synchronously.
15
21
  */
16
- export declare class SingleProcessExecutor implements Executor {
17
- private logger;
18
- private pkgJsonUpdater;
22
+ export declare class SingleProcessExecutorSync extends SingleProcessorExecutorBase implements Executor {
19
23
  private lockFile;
20
- constructor(logger: Logger, pkgJsonUpdater: PackageJsonUpdater, lockFile: LockFile);
24
+ constructor(logger: Logger, pkgJsonUpdater: PackageJsonUpdater, lockFile: SyncLocker);
21
25
  execute(analyzeEntryPoints: AnalyzeEntryPointsFn, createCompileFn: CreateCompileFn): void;
22
26
  }
23
27
  /**
24
28
  * An `Executor` that processes all tasks serially, but still completes asynchronously.
25
29
  */
26
- export declare class AsyncSingleProcessExecutor extends SingleProcessExecutor {
27
- execute(...args: Parameters<Executor['execute']>): Promise<void>;
30
+ export declare class SingleProcessExecutorAsync extends SingleProcessorExecutorBase implements Executor {
31
+ private lockFile;
32
+ constructor(logger: Logger, pkgJsonUpdater: PackageJsonUpdater, lockFile: SyncLocker);
33
+ execute(analyzeEntryPoints: AnalyzeEntryPointsFn, createCompileFn: CreateCompileFn): Promise<void>;
28
34
  }
@@ -18,57 +18,74 @@
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  var tslib_1 = require("tslib");
20
20
  var utils_1 = require("@angular/compiler-cli/ngcc/src/execution/utils");
21
- /**
22
- * An `Executor` that processes all tasks serially and completes synchronously.
23
- */
24
- var SingleProcessExecutor = /** @class */ (function () {
25
- function SingleProcessExecutor(logger, pkgJsonUpdater, lockFile) {
21
+ var SingleProcessorExecutorBase = /** @class */ (function () {
22
+ function SingleProcessorExecutorBase(logger, pkgJsonUpdater) {
26
23
  this.logger = logger;
27
24
  this.pkgJsonUpdater = pkgJsonUpdater;
28
- this.lockFile = lockFile;
29
25
  }
30
- SingleProcessExecutor.prototype.execute = function (analyzeEntryPoints, createCompileFn) {
26
+ SingleProcessorExecutorBase.prototype.doExecute = function (analyzeEntryPoints, createCompileFn) {
31
27
  var _this = this;
32
- this.lockFile.lock(function () {
33
- _this.logger.debug("Running ngcc on " + _this.constructor.name + ".");
34
- var taskQueue = analyzeEntryPoints();
35
- var compile = createCompileFn(function (task, outcome) { return utils_1.onTaskCompleted(_this.pkgJsonUpdater, task, outcome); });
36
- // Process all tasks.
37
- _this.logger.debug('Processing tasks...');
38
- var startTime = Date.now();
39
- while (!taskQueue.allTasksCompleted) {
40
- var task = taskQueue.getNextTask();
41
- compile(task);
42
- taskQueue.markTaskCompleted(task);
43
- }
44
- var duration = Math.round((Date.now() - startTime) / 1000);
45
- _this.logger.debug("Processed tasks in " + duration + "s.");
46
- });
28
+ this.logger.debug("Running ngcc on " + this.constructor.name + ".");
29
+ var taskQueue = analyzeEntryPoints();
30
+ var compile = createCompileFn(function (task, outcome) { return utils_1.onTaskCompleted(_this.pkgJsonUpdater, task, outcome); });
31
+ // Process all tasks.
32
+ this.logger.debug('Processing tasks...');
33
+ var startTime = Date.now();
34
+ while (!taskQueue.allTasksCompleted) {
35
+ var task = taskQueue.getNextTask();
36
+ compile(task);
37
+ taskQueue.markTaskCompleted(task);
38
+ }
39
+ var duration = Math.round((Date.now() - startTime) / 1000);
40
+ this.logger.debug("Processed tasks in " + duration + "s.");
47
41
  };
48
- return SingleProcessExecutor;
42
+ return SingleProcessorExecutorBase;
49
43
  }());
50
- exports.SingleProcessExecutor = SingleProcessExecutor;
44
+ exports.SingleProcessorExecutorBase = SingleProcessorExecutorBase;
45
+ /**
46
+ * An `Executor` that processes all tasks serially and completes synchronously.
47
+ */
48
+ var SingleProcessExecutorSync = /** @class */ (function (_super) {
49
+ tslib_1.__extends(SingleProcessExecutorSync, _super);
50
+ function SingleProcessExecutorSync(logger, pkgJsonUpdater, lockFile) {
51
+ var _this = _super.call(this, logger, pkgJsonUpdater) || this;
52
+ _this.lockFile = lockFile;
53
+ return _this;
54
+ }
55
+ SingleProcessExecutorSync.prototype.execute = function (analyzeEntryPoints, createCompileFn) {
56
+ var _this = this;
57
+ this.lockFile.lock(function () { return _this.doExecute(analyzeEntryPoints, createCompileFn); });
58
+ };
59
+ return SingleProcessExecutorSync;
60
+ }(SingleProcessorExecutorBase));
61
+ exports.SingleProcessExecutorSync = SingleProcessExecutorSync;
51
62
  /**
52
63
  * An `Executor` that processes all tasks serially, but still completes asynchronously.
53
64
  */
54
- var AsyncSingleProcessExecutor = /** @class */ (function (_super) {
55
- tslib_1.__extends(AsyncSingleProcessExecutor, _super);
56
- function AsyncSingleProcessExecutor() {
57
- return _super !== null && _super.apply(this, arguments) || this;
65
+ var SingleProcessExecutorAsync = /** @class */ (function (_super) {
66
+ tslib_1.__extends(SingleProcessExecutorAsync, _super);
67
+ function SingleProcessExecutorAsync(logger, pkgJsonUpdater, lockFile) {
68
+ var _this = _super.call(this, logger, pkgJsonUpdater) || this;
69
+ _this.lockFile = lockFile;
70
+ return _this;
58
71
  }
59
- AsyncSingleProcessExecutor.prototype.execute = function () {
60
- var args = [];
61
- for (var _i = 0; _i < arguments.length; _i++) {
62
- args[_i] = arguments[_i];
63
- }
72
+ SingleProcessExecutorAsync.prototype.execute = function (analyzeEntryPoints, createCompileFn) {
64
73
  return tslib_1.__awaiter(this, void 0, void 0, function () {
74
+ var _this = this;
65
75
  return tslib_1.__generator(this, function (_a) {
66
- return [2 /*return*/, _super.prototype.execute.apply(this, tslib_1.__spread(args))];
76
+ switch (_a.label) {
77
+ case 0: return [4 /*yield*/, this.lockFile.lock(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
78
+ return [2 /*return*/, this.doExecute(analyzeEntryPoints, createCompileFn)];
79
+ }); }); })];
80
+ case 1:
81
+ _a.sent();
82
+ return [2 /*return*/];
83
+ }
67
84
  });
68
85
  });
69
86
  };
70
- return AsyncSingleProcessExecutor;
71
- }(SingleProcessExecutor));
72
- exports.AsyncSingleProcessExecutor = AsyncSingleProcessExecutor;
87
+ return SingleProcessExecutorAsync;
88
+ }(SingleProcessorExecutorBase));
89
+ exports.SingleProcessExecutorAsync = SingleProcessExecutorAsync;
73
90
  });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlX3Byb2Nlc3NfZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvZXhlY3V0aW9uL3NpbmdsZV9wcm9jZXNzX2V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQU9ILHdFQUF3QztJQUd4Qzs7T0FFRztJQUNIO1FBQ0UsK0JBQ1ksTUFBYyxFQUFVLGNBQWtDLEVBQzFELFFBQWtCO1lBRGxCLFdBQU0sR0FBTixNQUFNLENBQVE7WUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7WUFDMUQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFHLENBQUM7UUFFbEMsdUNBQU8sR0FBUCxVQUFRLGtCQUF3QyxFQUFFLGVBQWdDO1lBQWxGLGlCQXFCQztZQXBCQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDakIsS0FBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQW1CLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxNQUFHLENBQUMsQ0FBQztnQkFFL0QsSUFBTSxTQUFTLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztnQkFDdkMsSUFBTSxPQUFPLEdBQ1QsZUFBZSxDQUFDLFVBQUMsSUFBSSxFQUFFLE9BQU8sSUFBSyxPQUFBLHVCQUFlLENBQUMsS0FBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQW5ELENBQW1ELENBQUMsQ0FBQztnQkFFNUYscUJBQXFCO2dCQUNyQixLQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUN6QyxJQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBRTdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUU7b0JBQ25DLElBQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUksQ0FBQztvQkFDdkMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNkLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbkM7Z0JBRUQsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDN0QsS0FBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXNCLFFBQVEsT0FBSSxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0gsNEJBQUM7SUFBRCxDQUFDLEFBM0JELElBMkJDO0lBM0JZLHNEQUFxQjtJQTZCbEM7O09BRUc7SUFDSDtRQUFnRCxzREFBcUI7UUFBckU7O1FBSUEsQ0FBQztRQUhPLDRDQUFPLEdBQWI7WUFBYyxjQUF3QztpQkFBeEMsVUFBd0MsRUFBeEMscUJBQXdDLEVBQXhDLElBQXdDO2dCQUF4Qyx5QkFBd0M7Ozs7b0JBQ3BELHNCQUFPLGlCQUFNLE9BQU8sOEJBQUksSUFBSSxJQUFFOzs7U0FDL0I7UUFDSCxpQ0FBQztJQUFELENBQUMsQUFKRCxDQUFnRCxxQkFBcUIsR0FJcEU7SUFKWSxnRUFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1BhY2thZ2VKc29uVXBkYXRlcn0gZnJvbSAnLi4vd3JpdGluZy9wYWNrYWdlX2pzb25fdXBkYXRlcic7XG5cbmltcG9ydCB7QW5hbHl6ZUVudHJ5UG9pbnRzRm4sIENyZWF0ZUNvbXBpbGVGbiwgRXhlY3V0b3J9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7TG9ja0ZpbGV9IGZyb20gJy4vbG9ja19maWxlJztcbmltcG9ydCB7b25UYXNrQ29tcGxldGVkfSBmcm9tICcuL3V0aWxzJztcblxuXG4vKipcbiAqIEFuIGBFeGVjdXRvcmAgdGhhdCBwcm9jZXNzZXMgYWxsIHRhc2tzIHNlcmlhbGx5IGFuZCBjb21wbGV0ZXMgc3luY2hyb25vdXNseS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNpbmdsZVByb2Nlc3NFeGVjdXRvciBpbXBsZW1lbnRzIEV4ZWN1dG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLCBwcml2YXRlIHBrZ0pzb25VcGRhdGVyOiBQYWNrYWdlSnNvblVwZGF0ZXIsXG4gICAgICBwcml2YXRlIGxvY2tGaWxlOiBMb2NrRmlsZSkge31cblxuICBleGVjdXRlKGFuYWx5emVFbnRyeVBvaW50czogQW5hbHl6ZUVudHJ5UG9pbnRzRm4sIGNyZWF0ZUNvbXBpbGVGbjogQ3JlYXRlQ29tcGlsZUZuKTogdm9pZCB7XG4gICAgdGhpcy5sb2NrRmlsZS5sb2NrKCgpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBSdW5uaW5nIG5nY2Mgb24gJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9LmApO1xuXG4gICAgICBjb25zdCB0YXNrUXVldWUgPSBhbmFseXplRW50cnlQb2ludHMoKTtcbiAgICAgIGNvbnN0IGNvbXBpbGUgPVxuICAgICAgICAgIGNyZWF0ZUNvbXBpbGVGbigodGFzaywgb3V0Y29tZSkgPT4gb25UYXNrQ29tcGxldGVkKHRoaXMucGtnSnNvblVwZGF0ZXIsIHRhc2ssIG91dGNvbWUpKTtcblxuICAgICAgLy8gUHJvY2VzcyBhbGwgdGFza3MuXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnUHJvY2Vzc2luZyB0YXNrcy4uLicpO1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgd2hpbGUgKCF0YXNrUXVldWUuYWxsVGFza3NDb21wbGV0ZWQpIHtcbiAgICAgICAgY29uc3QgdGFzayA9IHRhc2tRdWV1ZS5nZXROZXh0VGFzaygpICE7XG4gICAgICAgIGNvbXBpbGUodGFzayk7XG4gICAgICAgIHRhc2tRdWV1ZS5tYXJrVGFza0NvbXBsZXRlZCh0YXNrKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZHVyYXRpb24gPSBNYXRoLnJvdW5kKChEYXRlLm5vdygpIC0gc3RhcnRUaW1lKSAvIDEwMDApO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFByb2Nlc3NlZCB0YXNrcyBpbiAke2R1cmF0aW9ufXMuYCk7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBgRXhlY3V0b3JgIHRoYXQgcHJvY2Vzc2VzIGFsbCB0YXNrcyBzZXJpYWxseSwgYnV0IHN0aWxsIGNvbXBsZXRlcyBhc3luY2hyb25vdXNseS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzeW5jU2luZ2xlUHJvY2Vzc0V4ZWN1dG9yIGV4dGVuZHMgU2luZ2xlUHJvY2Vzc0V4ZWN1dG9yIHtcbiAgYXN5bmMgZXhlY3V0ZSguLi5hcmdzOiBQYXJhbWV0ZXJzPEV4ZWN1dG9yWydleGVjdXRlJ10+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHN1cGVyLmV4ZWN1dGUoLi4uYXJncyk7XG4gIH1cbn1cbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlX3Byb2Nlc3NfZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvZXhlY3V0aW9uL3NpbmdsZV9wcm9jZXNzX2V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQU9ILHdFQUF3QztJQUV4QztRQUNFLHFDQUFvQixNQUFjLEVBQVUsY0FBa0M7WUFBMUQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtZQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtRQUFHLENBQUM7UUFFbEYsK0NBQVMsR0FBVCxVQUFVLGtCQUF3QyxFQUFFLGVBQWdDO1lBQXBGLGlCQW9CQztZQWxCQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBbUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLE1BQUcsQ0FBQyxDQUFDO1lBRS9ELElBQU0sU0FBUyxHQUFHLGtCQUFrQixFQUFFLENBQUM7WUFDdkMsSUFBTSxPQUFPLEdBQ1QsZUFBZSxDQUFDLFVBQUMsSUFBSSxFQUFFLE9BQU8sSUFBSyxPQUFBLHVCQUFlLENBQUMsS0FBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQW5ELENBQW1ELENBQUMsQ0FBQztZQUU1RixxQkFBcUI7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN6QyxJQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDbkMsSUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBSSxDQUFDO2dCQUN2QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2QsU0FBUyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1lBRUQsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBc0IsUUFBUSxPQUFJLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0gsa0NBQUM7SUFBRCxDQUFDLEFBeEJELElBd0JDO0lBeEJxQixrRUFBMkI7SUEwQmpEOztPQUVHO0lBQ0g7UUFBK0MscURBQTJCO1FBQ3hFLG1DQUFZLE1BQWMsRUFBRSxjQUFrQyxFQUFVLFFBQW9CO1lBQTVGLFlBQ0Usa0JBQU0sTUFBTSxFQUFFLGNBQWMsQ0FBQyxTQUM5QjtZQUZ1RSxjQUFRLEdBQVIsUUFBUSxDQUFZOztRQUU1RixDQUFDO1FBQ0QsMkNBQU8sR0FBUCxVQUFRLGtCQUF3QyxFQUFFLGVBQWdDO1lBQWxGLGlCQUVDO1lBREMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLEVBQW5ELENBQW1ELENBQUMsQ0FBQztRQUNoRixDQUFDO1FBQ0gsZ0NBQUM7SUFBRCxDQUFDLEFBUEQsQ0FBK0MsMkJBQTJCLEdBT3pFO0lBUFksOERBQXlCO0lBU3RDOztPQUVHO0lBQ0g7UUFBZ0Qsc0RBQTJCO1FBQ3pFLG9DQUFZLE1BQWMsRUFBRSxjQUFrQyxFQUFVLFFBQW9CO1lBQTVGLFlBQ0Usa0JBQU0sTUFBTSxFQUFFLGNBQWMsQ0FBQyxTQUM5QjtZQUZ1RSxjQUFRLEdBQVIsUUFBUSxDQUFZOztRQUU1RixDQUFDO1FBQ0ssNENBQU8sR0FBYixVQUFjLGtCQUF3QyxFQUFFLGVBQWdDOzs7OztnQ0FFdEYscUJBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0NBQVcsc0JBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxlQUFlLENBQUMsRUFBQTtxQ0FBQSxDQUFDLEVBQUE7OzRCQUF4RixTQUF3RixDQUFDOzs7OztTQUMxRjtRQUNILGlDQUFDO0lBQUQsQ0FBQyxBQVJELENBQWdELDJCQUEyQixHQVExRTtJQVJZLGdFQUEwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtTeW5jTG9ja2VyfSBmcm9tICcuLi9sb2NraW5nL3N5bmNfbG9ja2VyJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1BhY2thZ2VKc29uVXBkYXRlcn0gZnJvbSAnLi4vd3JpdGluZy9wYWNrYWdlX2pzb25fdXBkYXRlcic7XG5cbmltcG9ydCB7QW5hbHl6ZUVudHJ5UG9pbnRzRm4sIENyZWF0ZUNvbXBpbGVGbiwgRXhlY3V0b3J9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7b25UYXNrQ29tcGxldGVkfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNpbmdsZVByb2Nlc3NvckV4ZWN1dG9yQmFzZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsIHByaXZhdGUgcGtnSnNvblVwZGF0ZXI6IFBhY2thZ2VKc29uVXBkYXRlcikge31cblxuICBkb0V4ZWN1dGUoYW5hbHl6ZUVudHJ5UG9pbnRzOiBBbmFseXplRW50cnlQb2ludHNGbiwgY3JlYXRlQ29tcGlsZUZuOiBDcmVhdGVDb21waWxlRm4pOlxuICAgICAgdm9pZHxQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgUnVubmluZyBuZ2NjIG9uICR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfS5gKTtcblxuICAgIGNvbnN0IHRhc2tRdWV1ZSA9IGFuYWx5emVFbnRyeVBvaW50cygpO1xuICAgIGNvbnN0IGNvbXBpbGUgPVxuICAgICAgICBjcmVhdGVDb21waWxlRm4oKHRhc2ssIG91dGNvbWUpID0+IG9uVGFza0NvbXBsZXRlZCh0aGlzLnBrZ0pzb25VcGRhdGVyLCB0YXNrLCBvdXRjb21lKSk7XG5cbiAgICAvLyBQcm9jZXNzIGFsbCB0YXNrcy5cbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnUHJvY2Vzc2luZyB0YXNrcy4uLicpO1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICB3aGlsZSAoIXRhc2tRdWV1ZS5hbGxUYXNrc0NvbXBsZXRlZCkge1xuICAgICAgY29uc3QgdGFzayA9IHRhc2tRdWV1ZS5nZXROZXh0VGFzaygpICE7XG4gICAgICBjb21waWxlKHRhc2spO1xuICAgICAgdGFza1F1ZXVlLm1hcmtUYXNrQ29tcGxldGVkKHRhc2spO1xuICAgIH1cblxuICAgIGNvbnN0IGR1cmF0aW9uID0gTWF0aC5yb3VuZCgoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSkgLyAxMDAwKTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgUHJvY2Vzc2VkIHRhc2tzIGluICR7ZHVyYXRpb259cy5gKTtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGBFeGVjdXRvcmAgdGhhdCBwcm9jZXNzZXMgYWxsIHRhc2tzIHNlcmlhbGx5IGFuZCBjb21wbGV0ZXMgc3luY2hyb25vdXNseS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNpbmdsZVByb2Nlc3NFeGVjdXRvclN5bmMgZXh0ZW5kcyBTaW5nbGVQcm9jZXNzb3JFeGVjdXRvckJhc2UgaW1wbGVtZW50cyBFeGVjdXRvciB7XG4gIGNvbnN0cnVjdG9yKGxvZ2dlcjogTG9nZ2VyLCBwa2dKc29uVXBkYXRlcjogUGFja2FnZUpzb25VcGRhdGVyLCBwcml2YXRlIGxvY2tGaWxlOiBTeW5jTG9ja2VyKSB7XG4gICAgc3VwZXIobG9nZ2VyLCBwa2dKc29uVXBkYXRlcik7XG4gIH1cbiAgZXhlY3V0ZShhbmFseXplRW50cnlQb2ludHM6IEFuYWx5emVFbnRyeVBvaW50c0ZuLCBjcmVhdGVDb21waWxlRm46IENyZWF0ZUNvbXBpbGVGbik6IHZvaWQge1xuICAgIHRoaXMubG9ja0ZpbGUubG9jaygoKSA9PiB0aGlzLmRvRXhlY3V0ZShhbmFseXplRW50cnlQb2ludHMsIGNyZWF0ZUNvbXBpbGVGbikpO1xuICB9XG59XG5cbi8qKlxuICogQW4gYEV4ZWN1dG9yYCB0aGF0IHByb2Nlc3NlcyBhbGwgdGFza3Mgc2VyaWFsbHksIGJ1dCBzdGlsbCBjb21wbGV0ZXMgYXN5bmNocm9ub3VzbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW5nbGVQcm9jZXNzRXhlY3V0b3JBc3luYyBleHRlbmRzIFNpbmdsZVByb2Nlc3NvckV4ZWN1dG9yQmFzZSBpbXBsZW1lbnRzIEV4ZWN1dG9yIHtcbiAgY29uc3RydWN0b3IobG9nZ2VyOiBMb2dnZXIsIHBrZ0pzb25VcGRhdGVyOiBQYWNrYWdlSnNvblVwZGF0ZXIsIHByaXZhdGUgbG9ja0ZpbGU6IFN5bmNMb2NrZXIpIHtcbiAgICBzdXBlcihsb2dnZXIsIHBrZ0pzb25VcGRhdGVyKTtcbiAgfVxuICBhc3luYyBleGVjdXRlKGFuYWx5emVFbnRyeVBvaW50czogQW5hbHl6ZUVudHJ5UG9pbnRzRm4sIGNyZWF0ZUNvbXBpbGVGbjogQ3JlYXRlQ29tcGlsZUZuKTpcbiAgICAgIFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubG9ja0ZpbGUubG9jayhhc3luYygpID0+IHRoaXMuZG9FeGVjdXRlKGFuYWx5emVFbnRyeVBvaW50cywgY3JlYXRlQ29tcGlsZUZuKSk7XG4gIH1cbn1cbiJdfQ==
@@ -22,7 +22,7 @@
22
22
  /** A helper function for handling a task's being completed. */
23
23
  exports.onTaskCompleted = function (pkgJsonUpdater, task, outcome) {
24
24
  var entryPoint = task.entryPoint, formatPropertiesToMarkAsProcessed = task.formatPropertiesToMarkAsProcessed, processDts = task.processDts;
25
- if (outcome === 1 /* Processed */) {
25
+ if (outcome === 0 /* Processed */) {
26
26
  var packageJsonPath = file_system_1.resolve(entryPoint.path, 'package.json');
27
27
  var propsToMarkAsProcessed = tslib_1.__spread(formatPropertiesToMarkAsProcessed);
28
28
  if (processDts) {