@angular-devkit/core 17.0.0-rc.0 → 17.0.0-rc.1

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 (55) hide show
  1. package/node/cli-logger.js +0 -1
  2. package/node/host.js +0 -1
  3. package/node/index.js +0 -1
  4. package/node/testing/index.js +0 -1
  5. package/package.json +1 -1
  6. package/src/exception.js +0 -1
  7. package/src/index.js +0 -1
  8. package/src/json/index.js +0 -1
  9. package/src/json/schema/index.js +0 -1
  10. package/src/json/schema/interface.js +0 -1
  11. package/src/json/schema/pointer.js +0 -1
  12. package/src/json/schema/registry.js +0 -1
  13. package/src/json/schema/schema.js +0 -1
  14. package/src/json/schema/transforms.js +0 -1
  15. package/src/json/schema/utility.js +0 -1
  16. package/src/json/schema/visitor.js +0 -1
  17. package/src/json/utils.js +0 -1
  18. package/src/logger/indent.js +0 -1
  19. package/src/logger/index.js +0 -1
  20. package/src/logger/level.js +0 -1
  21. package/src/logger/logger.js +0 -1
  22. package/src/logger/null-logger.js +0 -1
  23. package/src/logger/transform-logger.js +0 -1
  24. package/src/utils/index.js +0 -1
  25. package/src/utils/lang.js +0 -1
  26. package/src/utils/literals.js +0 -1
  27. package/src/utils/object.js +0 -1
  28. package/src/utils/partially-ordered-set.js +0 -1
  29. package/src/utils/priority-queue.js +0 -1
  30. package/src/utils/strings.js +0 -1
  31. package/src/utils/template.js +0 -1
  32. package/src/virtual-fs/host/alias.js +0 -1
  33. package/src/virtual-fs/host/buffer.js +0 -1
  34. package/src/virtual-fs/host/create.js +0 -1
  35. package/src/virtual-fs/host/empty.js +0 -1
  36. package/src/virtual-fs/host/index.js +0 -1
  37. package/src/virtual-fs/host/interface.js +0 -1
  38. package/src/virtual-fs/host/memory.js +0 -1
  39. package/src/virtual-fs/host/pattern.js +0 -1
  40. package/src/virtual-fs/host/record.js +0 -1
  41. package/src/virtual-fs/host/resolver.js +0 -1
  42. package/src/virtual-fs/host/safe.js +0 -1
  43. package/src/virtual-fs/host/scoped.js +0 -1
  44. package/src/virtual-fs/host/sync.js +0 -1
  45. package/src/virtual-fs/host/test.js +0 -1
  46. package/src/virtual-fs/index.js +0 -1
  47. package/src/virtual-fs/path.js +0 -1
  48. package/src/workspace/core.js +0 -1
  49. package/src/workspace/definitions.js +0 -1
  50. package/src/workspace/host.js +0 -1
  51. package/src/workspace/index.js +0 -1
  52. package/src/workspace/json/metadata.js +0 -1
  53. package/src/workspace/json/reader.js +0 -1
  54. package/src/workspace/json/utilities.js +0 -1
  55. package/src/workspace/json/writer.js +0 -1
@@ -57,4 +57,3 @@ class JsonWorkspaceMetadata {
57
57
  }
58
58
  }
59
59
  exports.JsonWorkspaceMetadata = JsonWorkspaceMetadata;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9jb3JlL3NyYy93b3Jrc3BhY2UvanNvbi9tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCwrQ0FBZ0Y7QUFJbkUsUUFBQSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFvQjlFLFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDNUIsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFhLHFCQUFxQjtJQUtYO0lBQW1DO0lBQW9CO0lBSm5FLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztJQUVqRCxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFFNUIsWUFBcUIsUUFBZ0IsRUFBbUIsR0FBUyxFQUFXLEdBQVc7UUFBbEUsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUFtQixRQUFHLEdBQUgsR0FBRyxDQUFNO1FBQVcsUUFBRyxHQUFILEdBQUcsQ0FBUTtJQUFHLENBQUM7SUFFM0YsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQWM7UUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBQSxpQ0FBa0IsRUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWhELE9BQU8sSUFBSSxJQUFJLElBQUEsMkJBQVksRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBWTtRQUM3QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTLENBQ1AsUUFBa0IsRUFDbEIsS0FBa0MsRUFDbEMsSUFBUTtRQUVSLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDeEQsV0FBVyxHQUFHLFdBQVcsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzdELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ2pDLG1EQUFtRDtnQkFDbkQsT0FBTzthQUNSO1NBQ0Y7UUFFRCxNQUFNLE9BQU8sR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQyxvREFBb0Q7Z0JBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzFCO1NBQ0Y7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNGO0FBakRELHNEQWlEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBKU09OUGF0aCwgTm9kZSwgZmluZE5vZGVBdExvY2F0aW9uLCBnZXROb2RlVmFsdWUgfSBmcm9tICdqc29uYy1wYXJzZXInO1xuaW1wb3J0IHsgSnNvblZhbHVlIH0gZnJvbSAnLi4vLi4vanNvbic7XG5pbXBvcnQgeyBQcm9qZWN0RGVmaW5pdGlvbiwgVGFyZ2V0RGVmaW5pdGlvbiwgV29ya3NwYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcblxuZXhwb3J0IGNvbnN0IEpzb25Xb3Jrc3BhY2VTeW1ib2wgPSBTeW1ib2wuZm9yKCdAYW5ndWxhci9jb3JlOndvcmtzcGFjZS1qc29uJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbldvcmtzcGFjZURlZmluaXRpb24gZXh0ZW5kcyBXb3Jrc3BhY2VEZWZpbml0aW9uIHtcbiAgW0pzb25Xb3Jrc3BhY2VTeW1ib2xdOiBKc29uV29ya3NwYWNlTWV0YWRhdGE7XG59XG5cbmludGVyZmFjZSBDaGFuZ2VWYWx1ZXMge1xuICBqc29uOiBKc29uVmFsdWU7XG4gIHByb2plY3Q6IFByb2plY3REZWZpbml0aW9uO1xuICB0YXJnZXQ6IFRhcmdldERlZmluaXRpb247XG4gIHByb2plY3Rjb2xsZWN0aW9uOiBJdGVyYWJsZTxbc3RyaW5nLCBQcm9qZWN0RGVmaW5pdGlvbl0+O1xuICB0YXJnZXRjb2xsZWN0aW9uOiBJdGVyYWJsZTxbc3RyaW5nLCBUYXJnZXREZWZpbml0aW9uXT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkNoYW5nZSB7XG4gIHZhbHVlPzogdW5rbm93bjtcbiAgdHlwZT86IGtleW9mIENoYW5nZVZhbHVlcztcbiAganNvblBhdGg6IHN0cmluZ1tdO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudW1iZXIge1xuICByZXR1cm4ga2V5LnJlcGxhY2UoJ34nLCAnfjAnKS5yZXBsYWNlKCcvJywgJ34xJyk7XG59XG5cbmV4cG9ydCBjbGFzcyBKc29uV29ya3NwYWNlTWV0YWRhdGEge1xuICByZWFkb25seSBjaGFuZ2VzID0gbmV3IE1hcDxzdHJpbmcsIEpzb25DaGFuZ2U+KCk7XG5cbiAgaGFzTGVnYWN5VGFyZ2V0c05hbWUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZpbGVQYXRoOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgYXN0OiBOb2RlLCByZWFkb25seSByYXc6IHN0cmluZykge31cblxuICBnZXQgaGFzQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jaGFuZ2VzLnNpemUgPiAwO1xuICB9XG5cbiAgZ2V0IGNoYW5nZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlcy5zaXplO1xuICB9XG5cbiAgZ2V0Tm9kZVZhbHVlRnJvbUFzdChwYXRoOiBKU09OUGF0aCk6IHVua25vd24ge1xuICAgIGNvbnN0IG5vZGUgPSBmaW5kTm9kZUF0TG9jYXRpb24odGhpcy5hc3QsIHBhdGgpO1xuXG4gICAgcmV0dXJuIG5vZGUgJiYgZ2V0Tm9kZVZhbHVlKG5vZGUpO1xuICB9XG5cbiAgZmluZENoYW5nZXNGb3JQYXRoKHBhdGg6IHN0cmluZyk6IEpzb25DaGFuZ2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNoYW5nZXMuZ2V0KHBhdGgpO1xuICB9XG5cbiAgYWRkQ2hhbmdlPFQgZXh0ZW5kcyBrZXlvZiBDaGFuZ2VWYWx1ZXMgPSBrZXlvZiBDaGFuZ2VWYWx1ZXM+KFxuICAgIGpzb25QYXRoOiBzdHJpbmdbXSxcbiAgICB2YWx1ZTogQ2hhbmdlVmFsdWVzW1RdIHwgdW5kZWZpbmVkLFxuICAgIHR5cGU/OiBULFxuICApOiB2b2lkIHtcbiAgICBsZXQgY3VycmVudFBhdGggPSAnJztcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwganNvblBhdGgubGVuZ3RoIC0gMTsgaW5kZXgrKykge1xuICAgICAgY3VycmVudFBhdGggPSBjdXJyZW50UGF0aCArICcvJyArIGVzY2FwZUtleShqc29uUGF0aFtpbmRleF0pO1xuICAgICAgaWYgKHRoaXMuY2hhbmdlcy5oYXMoY3VycmVudFBhdGgpKSB7XG4gICAgICAgIC8vIElnbm9yZSBjaGFuZ2VzIG9uIGNoaWxkcmVuIGFzIHBhcmVudCBpcyB1cGRhdGVkLlxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aEtleSA9ICcvJyArIGpzb25QYXRoLm1hcCgoaykgPT4gZXNjYXBlS2V5KGspKS5qb2luKCcvJyk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5jaGFuZ2VzLmtleXMoKSkge1xuICAgICAgaWYgKGtleS5zdGFydHNXaXRoKHBhdGhLZXkgKyAnLycpKSB7XG4gICAgICAgIC8vIGNoYW5nZXMgb24gdGhlIHNhbWUgb3IgY2hpbGQgcGF0aHMgYXJlIHJlZHVuZGFudC5cbiAgICAgICAgdGhpcy5jaGFuZ2VzLmRlbGV0ZShrZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlcy5zZXQocGF0aEtleSwgeyBqc29uUGF0aCwgdHlwZSwgdmFsdWUgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -228,4 +228,3 @@ function parseTargetsObject(projectName, targetsNode, context) {
228
228
  }
229
229
  return targets;
230
230
  }
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvd29ya3NwYWNlL2pzb24vcmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILCtDQUFpRjtBQUNqRiw0Q0FBMkQ7QUFDM0QsZ0RBT3dCO0FBRXhCLHlDQUF3RTtBQUN4RSwyQ0FBcUQ7QUFFckQsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDNUYsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQWlCeEYsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxJQUFZLEVBQ1osSUFBbUIsRUFDbkIsVUFBZ0MsRUFBRTtJQUVsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztLQUNuRDtJQUVELE1BQU0sR0FBRyxHQUFHLElBQUEsd0JBQVMsRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0YsSUFBSSxHQUFHLEVBQUUsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0tBQ25FO0lBRUQsZ0JBQWdCO0lBQ2hCLE1BQU0sV0FB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Q0FBQztnQkFDekUsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLO29CQUNsQixZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3JGLENBQUM7YUFDRixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQW9DLENBQUM7U0FDdEQ7S0FDRjtJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgTm9kZSwgZmluZE5vZGVBdExvY2F0aW9uLCBnZXROb2RlVmFsdWUsIHBhcnNlVHJlZSB9IGZyb20gJ2pzb25jLXBhcnNlcic7XG5pbXBvcnQgeyBKc29uVmFsdWUsIGlzSnNvbk9iamVjdCB9IGZyb20gJy4uLy4uL2pzb24vdXRpbHMnO1xuaW1wb3J0IHtcbiAgRGVmaW5pdGlvbkNvbGxlY3Rpb25MaXN0ZW5lcixcbiAgUHJvamVjdERlZmluaXRpb24sXG4gIFByb2plY3REZWZpbml0aW9uQ29sbGVjdGlvbixcbiAgVGFyZ2V0RGVmaW5pdGlvbixcbiAgVGFyZ2V0RGVmaW5pdGlvbkNvbGxlY3Rpb24sXG4gIFdvcmtzcGFjZURlZmluaXRpb24sXG59IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IFdvcmtzcGFjZUhvc3QgfSBmcm9tICcuLi9ob3N0JztcbmltcG9ydCB7IEpzb25Xb3Jrc3BhY2VNZXRhZGF0YSwgSnNvbldvcmtzcGFjZVN5bWJvbCB9IGZyb20gJy4vbWV0YWRhdGEnO1xuaW1wb3J0IHsgY3JlYXRlVmlydHVhbEFzdE9iamVjdCB9IGZyb20gJy4vdXRpbGl0aWVzJztcblxuY29uc3QgQU5HVUxBUl9XT1JLU1BBQ0VfRVhURU5TSU9OUyA9IE9iamVjdC5mcmVlemUoWydjbGknLCAnbmV3UHJvamVjdFJvb3QnLCAnc2NoZW1hdGljcyddKTtcbmNvbnN0IEFOR1VMQVJfUFJPSkVDVF9FWFRFTlNJT05TID0gT2JqZWN0LmZyZWV6ZShbJ2NsaScsICdzY2hlbWF0aWNzJywgJ3Byb2plY3RUeXBlJywgJ2kxOG4nXSk7XG5cbmludGVyZmFjZSBQYXJzZXJDb250ZXh0IHtcbiAgcmVhZG9ubHkgaG9zdDogV29ya3NwYWNlSG9zdDtcbiAgcmVhZG9ubHkgbWV0YWRhdGE6IEpzb25Xb3Jrc3BhY2VNZXRhZGF0YTtcbiAgcmVhZG9ubHkgdHJhY2tDaGFuZ2VzOiBib29sZWFuO1xuICByZWFkb25seSB1bnByZWZpeGVkV29ya3NwYWNlRXh0ZW5zaW9uczogUmVhZG9ubHlTZXQ8c3RyaW5nPjtcbiAgcmVhZG9ubHkgdW5wcmVmaXhlZFByb2plY3RFeHRlbnNpb25zOiBSZWFkb25seVNldDxzdHJpbmc+O1xuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIG5vZGU6IEpzb25WYWx1ZSk6IHZvaWQ7XG4gIHdhcm4obWVzc2FnZTogc3RyaW5nLCBub2RlOiBKc29uVmFsdWUpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Xb3Jrc3BhY2VPcHRpb25zIHtcbiAgYWxsb3dlZFByb2plY3RFeHRlbnNpb25zPzogc3RyaW5nW107XG4gIGFsbG93ZWRXb3Jrc3BhY2VFeHRlbnNpb25zPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkSnNvbldvcmtzcGFjZShcbiAgcGF0aDogc3RyaW5nLFxuICBob3N0OiBXb3Jrc3BhY2VIb3N0LFxuICBvcHRpb25zOiBKc29uV29ya3NwYWNlT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxXb3Jrc3BhY2VEZWZpbml0aW9uPiB7XG4gIGNvbnN0IHJhdyA9IGF3YWl0IGhvc3QucmVhZEZpbGUocGF0aCk7XG4gIGlmIChyYXcgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlYWQgd29ya3NwYWNlIGZpbGUuJyk7XG4gIH1cblxuICBjb25zdCBhc3QgPSBwYXJzZVRyZWUocmF3LCB1bmRlZmluZWQsIHsgYWxsb3dUcmFpbGluZ0NvbW1hOiB0cnVlLCBkaXNhbGxvd0NvbW1lbnRzOiBmYWxzZSB9KTtcbiAgaWYgKGFzdD8udHlwZSAhPT0gJ29iamVjdCcgfHwgIWFzdC5jaGlsZHJlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB3b3Jrc3BhY2UgZmlsZSAtIGV4cGVjdGVkIEpTT04gb2JqZWN0LicpO1xuICB9XG5cbiAgLy8gVmVyc2lvbiBjaGVja1xuICBjb25zdCB2ZXJzaW9uTm9kZSA9IGZpbmROb2RlQXRMb2NhdGlvbihhc3QsIFsndmVyc2lvbiddKTtcbiAgaWYgKCF2ZXJzaW9uTm9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBmb3JtYXQgLSB2ZXJzaW9uIHNwZWNpZmllciBub3QgZm91bmQuJyk7XG4gIH1cbiAgY29uc3QgdmVyc2lvbiA9IHZlcnNpb25Ob2RlLnZhbHVlO1xuICBpZiAodmVyc2lvbiAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmb3JtYXQgdmVyc2lvbiBkZXRlY3RlZCAtIEV4cGVjdGVkOlsgMSBdIEZvdW5kOiBbICR7dmVyc2lvbn0gXWApO1xuICB9XG5cbiAgY29uc3QgY29udGV4dDogUGFyc2VyQ29udGV4dCA9IHtcbiAgICBob3N0LFxuICAgIG1ldGFkYXRhOiBuZXcgSnNvbldvcmtzcGFjZU1ldGFkYXRhKHBhdGgsIGFzdCwgcmF3KSxcbiAgICB0cmFja0NoYW5nZXM6IHRydWUsXG4gICAgdW5wcmVmaXhlZFdvcmtzcGFjZUV4dGVuc2lvbnM6IG5ldyBTZXQoW1xuICAgICAgLi4uQU5HVUxBUl9XT1JLU1BBQ0VfRVhURU5TSU9OUyxcbiAgICAgIC4uLihvcHRpb25zLmFsbG93ZWRXb3Jrc3BhY2VFeHRlbnNpb25zID8/IFtdKSxcbiAgICBdKSxcbiAgICB1bnByZWZpeGVkUHJvamVjdEV4dGVuc2lvbnM6IG5ldyBTZXQoW1xuICAgICAgLi4uQU5HVUxBUl9QUk9KRUNUX0VYVEVOU0lPTlMsXG4gICAgICAuLi4ob3B0aW9ucy5hbGxvd2VkUHJvamVjdEV4dGVuc2lvbnMgPz8gW10pLFxuICAgIF0pLFxuICAgIGVycm9yKG1lc3NhZ2UsIF9ub2RlKSB7XG4gICAgICAvLyBUT0RPOiBEaWFnbm9zdGljIHJlcG9ydGluZyBzdXBwb3J0XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSxcbiAgICB3YXJuKG1lc3NhZ2UsIF9ub2RlKSB7XG4gICAgICAvLyBUT0RPOiBEaWFnbm9zdGljIHJlcG9ydGluZyBzdXBwb3J0XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIH0sXG4gIH07XG5cbiAgY29uc3Qgd29ya3NwYWNlID0gcGFyc2VXb3Jrc3BhY2UoYXN0LCBjb250ZXh0KTtcblxuICByZXR1cm4gd29ya3NwYWNlO1xufVxuXG5mdW5jdGlvbiBwYXJzZVdvcmtzcGFjZSh3b3Jrc3BhY2VOb2RlOiBOb2RlLCBjb250ZXh0OiBQYXJzZXJDb250ZXh0KTogV29ya3NwYWNlRGVmaW5pdGlvbiB7XG4gIGNvbnN0IGpzb25NZXRhZGF0YSA9IGNvbnRleHQubWV0YWRhdGE7XG4gIGxldCBwcm9qZWN0cztcbiAgbGV0IGV4dGVuc2lvbnM6IFJlY29yZDxzdHJpbmcsIEpzb25WYWx1ZT4gfCB1bmRlZmluZWQ7XG4gIGlmICghY29udGV4dC50cmFja0NoYW5nZXMpIHtcbiAgICBleHRlbnNpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfVxuXG4gIC8vIFRPRE86IGBnZXROb2RlVmFsdWVgIC0gbG9va3MgcG90ZW50aWFsbHkgZXhwZW5zaXZlIHNpbmNlIGl0IHdhbGtzIHRoZSB3aG9sZSB0cmVlIGFuZCBpbnN0YW50aWF0ZXMgdGhlIGZ1bGwgb2JqZWN0IHN0cnVjdHVyZSBlYWNoIHRpbWUuXG4gIC8vIE1pZ2h0IGJlIHNvbWV0aGluZyB0byBsb29rIGF0IG1vdmluZyBmb3J3YXJkIHRvIG9wdGltaXplLlxuICBjb25zdCB3b3Jrc3BhY2VOb2RlVmFsdWUgPSBnZXROb2RlVmFsdWUod29ya3NwYWNlTm9kZSk7XG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxKc29uVmFsdWU+KHdvcmtzcGFjZU5vZGVWYWx1ZSkpIHtcbiAgICBpZiAobmFtZSA9PT0gJyRzY2hlbWEnIHx8IG5hbWUgPT09ICd2ZXJzaW9uJykge1xuICAgICAgLy8gc2tpcFxuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3Byb2plY3RzJykge1xuICAgICAgY29uc3Qgbm9kZXMgPSBmaW5kTm9kZUF0TG9jYXRpb24od29ya3NwYWNlTm9kZSwgWydwcm9qZWN0cyddKTtcbiAgICAgIGlmICghaXNKc29uT2JqZWN0KHZhbHVlKSB8fCAhbm9kZXMpIHtcbiAgICAgICAgY29udGV4dC5lcnJvcignSW52YWxpZCBcInByb2plY3RzXCIgZmllbGQgZm91bmQ7IGV4cGVjdGVkIGFuIG9iamVjdC4nLCB2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwcm9qZWN0cyA9IHBhcnNlUHJvamVjdHNPYmplY3Qobm9kZXMsIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNvbnRleHQudW5wcmVmaXhlZFdvcmtzcGFjZUV4dGVuc2lvbnMuaGFzKG5hbWUpICYmICEvXlthLXpdezEsM30tLiovLnRlc3QobmFtZSkpIHtcbiAgICAgICAgY29udGV4dC53YXJuKGBXb3Jrc3BhY2UgZXh0ZW5zaW9uIHdpdGggaW52YWxpZCBuYW1lICgke25hbWV9KSBmb3VuZC5gLCBuYW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChleHRlbnNpb25zKSB7XG4gICAgICAgIGV4dGVuc2lvbnNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgY29sbGVjdGlvbkxpc3RlbmVyOiBEZWZpbml0aW9uQ29sbGVjdGlvbkxpc3RlbmVyPFByb2plY3REZWZpbml0aW9uPiB8IHVuZGVmaW5lZDtcbiAgaWYgKGNvbnRleHQudHJhY2tDaGFuZ2VzKSB7XG4gICAgY29sbGVjdGlvbkxpc3RlbmVyID0gKG5hbWUsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICBqc29uTWV0YWRhdGEuYWRkQ2hhbmdlKFsncHJvamVjdHMnLCBuYW1lXSwgbmV3VmFsdWUsICdwcm9qZWN0Jyk7XG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHByb2plY3RDb2xsZWN0aW9uID0gbmV3IFByb2plY3REZWZpbml0aW9uQ29sbGVjdGlvbihwcm9qZWN0cywgY29sbGVjdGlvbkxpc3RlbmVyKTtcblxuICByZXR1cm4ge1xuICAgIFtKc29uV29ya3NwYWNlU3ltYm9sXToganNvbk1ldGFkYXRhLFxuICAgIHByb2plY3RzOiBwcm9qZWN0Q29sbGVjdGlvbixcbiAgICAvLyBJZiBub3QgdHJhY2tpbmcgY2hhbmdlcyB0aGUgYGV4dGVuc2lvbnNgIHZhcmlhYmxlIHdpbGwgY29udGFpbiB0aGUgcGFyc2VkXG4gICAgLy8gdmFsdWVzLiAgT3RoZXJ3aXNlIHRoZSBleHRlbnNpb25zIGFyZSB0cmFja2VkIHZpYSBhIHZpcnR1YWwgQVNUIG9iamVjdC5cbiAgICBleHRlbnNpb25zOlxuICAgICAgZXh0ZW5zaW9ucyA/P1xuICAgICAgY3JlYXRlVmlydHVhbEFzdE9iamVjdCh3b3Jrc3BhY2VOb2RlVmFsdWUsIHtcbiAgICAgICAgZXhjbHVkZTogWyckc2NoZW1hJywgJ3ZlcnNpb24nLCAncHJvamVjdHMnXSxcbiAgICAgICAgbGlzdGVuZXIocGF0aCwgdmFsdWUpIHtcbiAgICAgICAgICBqc29uTWV0YWRhdGEuYWRkQ2hhbmdlKHBhdGgsIHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICB9IGFzIFdvcmtzcGFjZURlZmluaXRpb247XG59XG5cbmZ1bmN0aW9uIHBhcnNlUHJvamVjdHNPYmplY3QoXG4gIHByb2plY3RzTm9kZTogTm9kZSxcbiAgY29udGV4dDogUGFyc2VyQ29udGV4dCxcbik6IFJlY29yZDxzdHJpbmcsIFByb2plY3REZWZpbml0aW9uPiB7XG4gIGNvbnN0IHByb2plY3RzOiBSZWNvcmQ8c3RyaW5nLCBQcm9qZWN0RGVmaW5pdGlvbj4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxKc29uVmFsdWU+KGdldE5vZGVWYWx1ZShwcm9qZWN0c05vZGUpKSkge1xuICAgIGNvbnN0IG5vZGVzID0gZmluZE5vZGVBdExvY2F0aW9uKHByb2plY3RzTm9kZSwgW25hbWVdKTtcbiAgICBpZiAoIWlzSnNvbk9iamVjdCh2YWx1ZSkgfHwgIW5vZGVzKSB7XG4gICAgICBjb250ZXh0Lndhcm4oJ1NraXBwaW5nIGludmFsaWQgcHJvamVjdCB2YWx1ZTsgZXhwZWN0ZWQgYW4gb2JqZWN0LicsIHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHByb2plY3RzW25hbWVdID0gcGFyc2VQcm9qZWN0KG5hbWUsIG5vZGVzLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBwcm9qZWN0cztcbn1cblxuZnVuY3Rpb24gcGFyc2VQcm9qZWN0KFxuICBwcm9qZWN0TmFtZTogc3RyaW5nLFxuICBwcm9qZWN0Tm9kZTogTm9kZSxcbiAgY29udGV4dDogUGFyc2VyQ29udGV4dCxcbik6IFByb2plY3REZWZpbml0aW9uIHtcbiAgY29uc3QganNvbk1ldGFkYXRhID0gY29udGV4dC5tZXRhZGF0YTtcbiAgbGV0IHRhcmdldHM7XG4gIGxldCBoYXNUYXJnZXRzID0gZmFsc2U7XG4gIGxldCBleHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBKc29uVmFsdWU+IHwgdW5kZWZpbmVkO1xuICBsZXQgcHJvcGVydGllczogUmVjb3JkPCdyb290JyB8ICdzb3VyY2VSb290JyB8ICdwcmVmaXgnLCBzdHJpbmc+IHwgdW5kZWZpbmVkO1xuICBpZiAoIWNvbnRleHQudHJhY2tDaGFuZ2VzKSB7XG4gICAgLy8gSWYgbm90IHRyYWNraW5nIGNoYW5nZXMsIHRoZSBwYXJzZXIgd2lsbCBzdG9yZSB0aGUgdmFsdWVzIGRpcmVjdGx5IGluIHN0YW5kYXJkIG9iamVjdHNcbiAgICBleHRlbnNpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBwcm9wZXJ0aWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHByb2plY3ROb2RlVmFsdWUgPSBnZXROb2RlVmFsdWUocHJvamVjdE5vZGUpO1xuICBpZiAoISgncm9vdCcgaW4gcHJvamVjdE5vZGVWYWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2plY3QgXCIke3Byb2plY3ROYW1lfVwiIGlzIG1pc3NpbmcgYSByZXF1aXJlZCBwcm9wZXJ0eSBcInJvb3RcIi5gKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxKc29uVmFsdWU+KHByb2plY3ROb2RlVmFsdWUpKSB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlICd0YXJnZXRzJzpcbiAgICAgIGNhc2UgJ2FyY2hpdGVjdCc6XG4gICAgICAgIGNvbnN0IG5vZGVzID0gZmluZE5vZGVBdExvY2F0aW9uKHByb2plY3ROb2RlLCBbbmFtZV0pO1xuICAgICAgICBpZiAoIWlzSnNvbk9iamVjdCh2YWx1ZSkgfHwgIW5vZGVzKSB7XG4gICAgICAgICAgY29udGV4dC5lcnJvcihgSW52YWxpZCBcIiR7bmFtZX1cIiBmaWVsZCBmb3VuZDsgZXhwZWN0ZWQgYW4gb2JqZWN0LmAsIHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBoYXNUYXJnZXRzID0gdHJ1ZTtcbiAgICAgICAgdGFyZ2V0cyA9IHBhcnNlVGFyZ2V0c09iamVjdChwcm9qZWN0TmFtZSwgbm9kZXMsIGNvbnRleHQpO1xuICAgICAgICBqc29uTWV0YWRhdGEuaGFzTGVnYWN5VGFyZ2V0c05hbWUgPSBuYW1lID09PSAnYXJjaGl0ZWN0JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwcmVmaXgnOlxuICAgICAgY2FzZSAncm9vdCc6XG4gICAgICBjYXNlICdzb3VyY2VSb290JzpcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb250ZXh0Lndhcm4oYFByb2plY3QgcHJvcGVydHkgXCIke25hbWV9XCIgc2hvdWxkIGJlIGEgc3RyaW5nLmAsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcGVydGllcykge1xuICAgICAgICAgIHByb3BlcnRpZXNbbmFtZV0gPSB2YWx1ZSBhcyBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoIWNvbnRleHQudW5wcmVmaXhlZFByb2plY3RFeHRlbnNpb25zLmhhcyhuYW1lKSAmJiAhL15bYS16XXsxLDN9LS4qLy50ZXN0KG5hbWUpKSB7XG4gICAgICAgICAgY29udGV4dC53YXJuKFxuICAgICAgICAgICAgYFByb2plY3QgJyR7cHJvamVjdE5hbWV9JyBjb250YWlucyBleHRlbnNpb24gd2l0aCBpbnZhbGlkIG5hbWUgKCR7bmFtZX0pLmAsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4dGVuc2lvbnMpIHtcbiAgICAgICAgICBleHRlbnNpb25zW25hbWVdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgbGV0IGNvbGxlY3Rpb25MaXN0ZW5lcjogRGVmaW5pdGlvbkNvbGxlY3Rpb25MaXN0ZW5lcjxUYXJnZXREZWZpbml0aW9uPiB8IHVuZGVmaW5lZDtcbiAgaWYgKGNvbnRleHQudHJhY2tDaGFuZ2VzKSB7XG4gICAgY29sbGVjdGlvbkxpc3RlbmVyID0gKG5hbWUsIG5ld1ZhbHVlLCBjb2xsZWN0aW9uKSA9PiB7XG4gICAgICBpZiAoaGFzVGFyZ2V0cykge1xuICAgICAgICBqc29uTWV0YWRhdGEuYWRkQ2hhbmdlKFsncHJvamVjdHMnLCBwcm9qZWN0TmFtZSwgJ3RhcmdldHMnLCBuYW1lXSwgbmV3VmFsdWUsICd0YXJnZXQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGpzb25NZXRhZGF0YS5hZGRDaGFuZ2UoXG4gICAgICAgICAgWydwcm9qZWN0cycsIHByb2plY3ROYW1lLCAndGFyZ2V0cyddLFxuICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgJ3RhcmdldGNvbGxlY3Rpb24nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjb25zdCBiYXNlID0ge1xuICAgIHRhcmdldHM6IG5ldyBUYXJnZXREZWZpbml0aW9uQ29sbGVjdGlvbih0YXJnZXRzLCBjb2xsZWN0aW9uTGlzdGVuZXIpLFxuICAgIC8vIElmIG5vdCB0cmFja2luZyBjaGFuZ2VzIHRoZSBgZXh0ZW5zaW9uc2AgdmFyaWFibGUgd2lsbCBjb250YWluIHRoZSBwYXJzZWRcbiAgICAvLyB2YWx1ZXMuICBPdGhlcndpc2UgdGhlIGV4dGVuc2lvbnMgYXJlIHRyYWNrZWQgdmlhIGEgdmlydHVhbCBBU1Qgb2JqZWN0LlxuICAgIGV4dGVuc2lvbnM6XG4gICAgICBleHRlbnNpb25zID8/XG4gICAgICBjcmVhdGVWaXJ0dWFsQXN0T2JqZWN0KHByb2plY3ROb2RlVmFsdWUsIHtcbiAgICAgICAgZXhjbHVkZTogWydhcmNoaXRlY3QnLCAncHJlZml4JywgJ3Jvb3QnLCAnc291cmNlUm9vdCcsICd0YXJnZXRzJ10sXG4gICAgICAgIGxpc3RlbmVyKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgICAganNvbk1ldGFkYXRhLmFkZENoYW5nZShbJ3Byb2plY3RzJywgcHJvamVjdE5hbWUsIC4uLnBhdGhdLCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgfTtcblxuICBjb25zdCBiYXNlS2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoYmFzZSkpO1xuICBjb25zdCBwcm9qZWN0ID1cbiAgICBwcm9wZXJ0aWVzID8/XG4gICAgY3JlYXRlVmlydHVhbEFzdE9iamVjdDxQcm9qZWN0RGVmaW5pdGlvbj4ocHJvamVjdE5vZGVWYWx1ZSwge1xuICAgICAgaW5jbHVkZTogWydwcmVmaXgnLCAncm9vdCcsICdzb3VyY2VSb290JywgLi4uYmFzZUtleXNdLFxuICAgICAgbGlzdGVuZXIocGF0aCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKCFiYXNlS2V5cy5oYXMocGF0aFswXSkpIHtcbiAgICAgICAgICBqc29uTWV0YWRhdGEuYWRkQ2hhbmdlKFsncHJvamVjdHMnLCBwcm9qZWN0TmFtZSwgLi4ucGF0aF0sIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihwcm9qZWN0LCBiYXNlKSBhcyBQcm9qZWN0RGVmaW5pdGlvbjtcbn1cblxuZnVuY3Rpb24gcGFyc2VUYXJnZXRzT2JqZWN0KFxuICBwcm9qZWN0TmFtZTogc3RyaW5nLFxuICB0YXJnZXRzTm9kZTogTm9kZSxcbiAgY29udGV4dDogUGFyc2VyQ29udGV4dCxcbik6IFJlY29yZDxzdHJpbmcsIFRhcmdldERlZmluaXRpb24+IHtcbiAgY29uc3QganNvbk1ldGFkYXRhID0gY29udGV4dC5tZXRhZGF0YTtcbiAgY29uc3QgdGFyZ2V0czogUmVjb3JkPHN0cmluZywgVGFyZ2V0RGVmaW5pdGlvbj4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxKc29uVmFsdWU+KGdldE5vZGVWYWx1ZSh0YXJnZXRzTm9kZSkpKSB7XG4gICAgaWYgKCFpc0pzb25PYmplY3QodmFsdWUpKSB7XG4gICAgICBjb250ZXh0Lndhcm4oJ1NraXBwaW5nIGludmFsaWQgdGFyZ2V0IHZhbHVlOyBleHBlY3RlZCBhbiBvYmplY3QuJywgdmFsdWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQudHJhY2tDaGFuZ2VzKSB7XG4gICAgICB0YXJnZXRzW25hbWVdID0gY3JlYXRlVmlydHVhbEFzdE9iamVjdDxUYXJnZXREZWZpbml0aW9uPih2YWx1ZSwge1xuICAgICAgICBpbmNsdWRlOiBbJ2J1aWxkZXInLCAnb3B0aW9ucycsICdjb25maWd1cmF0aW9ucycsICdkZWZhdWx0Q29uZmlndXJhdGlvbiddLFxuICAgICAgICBsaXN0ZW5lcihwYXRoLCB2YWx1ZSkge1xuICAgICAgICAgIGpzb25NZXRhZGF0YS5hZGRDaGFuZ2UoWydwcm9qZWN0cycsIHByb2plY3ROYW1lLCAndGFyZ2V0cycsIG5hbWUsIC4uLnBhdGhdLCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0c1tuYW1lXSA9IHZhbHVlIGFzIHVua25vd24gYXMgVGFyZ2V0RGVmaW5pdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0cztcbn1cbiJdfQ==
@@ -111,4 +111,3 @@ function getCurrentValue(target, property) {
111
111
  }
112
112
  return undefined;
113
113
  }
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvd29ya3NwYWNlL2pzb24vdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILHFDQUE0RTtBQWU1RSxTQUFnQixzQkFBc0IsQ0FDcEMsSUFBNEIsRUFDNUIsVUFJSSxFQUFFO0lBRU4sTUFBTSxRQUFRLEdBQW1CLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUU7UUFDcEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTztTQUNSO1FBRUQsSUFBSSxRQUFRLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsRixhQUFhO1lBQ2IsT0FBTztTQUNSO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLHdFQUF3RTtZQUN4RSxxREFBcUQ7WUFDckQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzdDO2FBQU07WUFDTCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUMsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUNYLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxFQUM3QyxFQUFFLEVBQ0YsUUFBUSxFQUNSLElBQUksR0FB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Q0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMxRCxDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7SUFDdkQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2hELE9BQU8sTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDMUI7SUFFRCxJQUFJLE1BQU0sSUFBSSxRQUFRLElBQUksTUFBTSxFQUFFO1FBQ2hDLE9BQVEsTUFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN6QztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgSnNvbkFycmF5LCBKc29uT2JqZWN0LCBKc29uVmFsdWUsIGlzSnNvbk9iamVjdCB9IGZyb20gJy4uLy4uL2pzb24nO1xuXG5leHBvcnQgdHlwZSBDaGFuZ2VMaXN0ZW5lciA9IChwYXRoOiBzdHJpbmdbXSwgbmV3VmFsdWU6IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcblxudHlwZSBDaGFuZ2VSZXBvcnRlciA9IChcbiAgcGF0aDogc3RyaW5nW10sXG4gIHRhcmdldDogSnNvbk9iamVjdCB8IEpzb25BcnJheSxcbiAgb2xkVmFsdWU6IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCxcbiAgbmV3VmFsdWU6IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCxcbikgPT4gdm9pZDtcblxuLy8gbGliLmVzNSBQcm9wZXJ0eUtleSBpcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wgd2hpY2ggZG9lc24ndCBvdmVybGFwIFByb3h5SGFuZGxlciBQcm9wZXJ0eUtleSB3aGljaCBpcyBzdHJpbmcgfCBzeW1ib2wuXG4vLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy80Mjg5NFxudHlwZSBQcm94eVByb3BlcnR5S2V5ID0gc3RyaW5nIHwgc3ltYm9sO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVmlydHVhbEFzdE9iamVjdDxUIGV4dGVuZHMgb2JqZWN0ID0gSnNvbk9iamVjdD4oXG4gIHJvb3Q6IEpzb25PYmplY3QgfCBKc29uQXJyYXksXG4gIG9wdGlvbnM6IHtcbiAgICBleGNsdWRlPzogc3RyaW5nW107XG4gICAgaW5jbHVkZT86IHN0cmluZ1tdO1xuICAgIGxpc3RlbmVyPzogQ2hhbmdlTGlzdGVuZXI7XG4gIH0gPSB7fSxcbik6IFQge1xuICBjb25zdCByZXBvcnRlcjogQ2hhbmdlUmVwb3J0ZXIgPSAocGF0aCwgdGFyZ2V0LCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+IHtcbiAgICBpZiAoIW9wdGlvbnMubGlzdGVuZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAob2xkVmFsdWUgPT09IG5ld1ZhbHVlIHx8IEpTT04uc3RyaW5naWZ5KG9sZFZhbHVlKSA9PT0gSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpKSB7XG4gICAgICAvLyBzYW1lIHZhbHVlXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgLy8gRm9yIGFycmF5cyB3ZSByZW1vdmUgdGhlIGluZGV4IGFuZCB1cGRhdGUgdGhlIGVudGlyZSB2YWx1ZSBhcyBrZWVwaW5nXG4gICAgICAvLyB0cmFjayBvZiBjaGFuZ2VzIGJ5IGluZGljZXMgY2FuIGJlIHJhdGhlciBjb21wbGV4LlxuICAgICAgb3B0aW9ucy5saXN0ZW5lcihwYXRoLnNsaWNlKDAsIC0xKSwgdGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucy5saXN0ZW5lcihwYXRoLCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBjcmVhdGUoXG4gICAgQXJyYXkuaXNBcnJheShyb290KSA/IFsuLi5yb290XSA6IHsgLi4ucm9vdCB9LFxuICAgIFtdLFxuICAgIHJlcG9ydGVyLFxuICAgIG5ldyBTZXQob3B0aW9ucy5leGNsdWRlKSxcbiAgICBvcHRpb25zLmluY2x1ZGU/Lmxlbmd0aCA/IG5ldyBTZXQob3B0aW9ucy5pbmNsdWRlKSA6IHVuZGVmaW5lZCxcbiAgKSBhcyBUO1xufVxuXG5mdW5jdGlvbiBjcmVhdGUoXG4gIG9iajogSnNvbk9iamVjdCB8IEpzb25BcnJheSxcbiAgcGF0aDogc3RyaW5nW10sXG4gIHJlcG9ydGVyOiBDaGFuZ2VSZXBvcnRlcixcbiAgZXhjbHVkZWQgPSBuZXcgU2V0PFByb3h5UHJvcGVydHlLZXk+KCksXG4gIGluY2x1ZGVkPzogU2V0PFByb3h5UHJvcGVydHlLZXk+LFxuKSB7XG4gIHJldHVybiBuZXcgUHJveHkob2JqLCB7XG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldDoge30sIHA6IFByb3h5UHJvcGVydHlLZXkpOiBQcm9wZXJ0eURlc2NyaXB0b3IgfCB1bmRlZmluZWQge1xuICAgICAgaWYgKGV4Y2x1ZGVkLmhhcyhwKSB8fCAoaW5jbHVkZWQgJiYgIWluY2x1ZGVkLmhhcyhwKSkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcCk7XG4gICAgfSxcbiAgICBoYXModGFyZ2V0OiB7fSwgcDogUHJveHlQcm9wZXJ0eUtleSk6IGJvb2xlYW4ge1xuICAgICAgaWYgKHR5cGVvZiBwID09PSAnc3ltYm9sJyB8fCBleGNsdWRlZC5oYXMocCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gUmVmbGVjdC5oYXModGFyZ2V0LCBwKTtcbiAgICB9LFxuICAgIGdldCh0YXJnZXQ6IHt9LCBwOiBQcm94eVByb3BlcnR5S2V5KTogdW5rbm93biB7XG4gICAgICBpZiAoZXhjbHVkZWQuaGFzKHApIHx8IChpbmNsdWRlZCAmJiAhaW5jbHVkZWQuaGFzKHApKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZSA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcCk7XG4gICAgICBpZiAodHlwZW9mIHAgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKChpc0pzb25PYmplY3QodmFsdWUpICYmICEodmFsdWUgaW5zdGFuY2VvZiBNYXApKSB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlKHZhbHVlLCBbLi4ucGF0aCwgcF0sIHJlcG9ydGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldCh0YXJnZXQ6IHt9LCBwOiBQcm94eVByb3BlcnR5S2V5LCB2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgICAgaWYgKGV4Y2x1ZGVkLmhhcyhwKSB8fCAoaW5jbHVkZWQgJiYgIWluY2x1ZGVkLmhhcyhwKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBzZXR0aW5nIHRvIHVuZGVmaW5lZCBpcyBlcXVpdmFsZW50IHRvIGEgZGVsZXRlLlxuICAgICAgICByZXR1cm4gdGhpcy5kZWxldGVQcm9wZXJ0eT8uKHRhcmdldCwgcCkgPz8gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgcCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwgcCwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleGlzdGluZ1ZhbHVlID0gZ2V0Q3VycmVudFZhbHVlKHRhcmdldCwgcCk7XG4gICAgICBpZiAoUmVmbGVjdC5zZXQodGFyZ2V0LCBwLCB2YWx1ZSkpIHtcbiAgICAgICAgcmVwb3J0ZXIoWy4uLnBhdGgsIHBdLCB0YXJnZXQsIGV4aXN0aW5nVmFsdWUsIHZhbHVlIGFzIEpzb25WYWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGRlbGV0ZVByb3BlcnR5KHRhcmdldDoge30sIHA6IFByb3h5UHJvcGVydHlLZXkpOiBib29sZWFuIHtcbiAgICAgIGlmIChleGNsdWRlZC5oYXMocCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHAgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSBnZXRDdXJyZW50VmFsdWUodGFyZ2V0LCBwKTtcbiAgICAgIGlmIChSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcCkpIHtcbiAgICAgICAgcmVwb3J0ZXIoWy4uLnBhdGgsIHBdLCB0YXJnZXQsIGV4aXN0aW5nVmFsdWUsIHVuZGVmaW5lZCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0OiB7fSwgcDogUHJveHlQcm9wZXJ0eUtleSwgYXR0cmlidXRlczogUHJvcGVydHlEZXNjcmlwdG9yKTogYm9vbGVhbiB7XG4gICAgICBpZiAodHlwZW9mIHAgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcCwgYXR0cmlidXRlcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIG93bktleXModGFyZ2V0OiB7fSk6IFByb3h5UHJvcGVydHlLZXlbXSB7XG4gICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCkuZmlsdGVyKFxuICAgICAgICAocCkgPT4gIWV4Y2x1ZGVkLmhhcyhwKSAmJiAoIWluY2x1ZGVkIHx8IGluY2x1ZGVkLmhhcyhwKSksXG4gICAgICApO1xuICAgIH0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50VmFsdWUodGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5OiBzdHJpbmcpOiBKc29uVmFsdWUgfCB1bmRlZmluZWQge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpICYmIGlzRmluaXRlKCtwcm9wZXJ0eSkpIHtcbiAgICByZXR1cm4gdGFyZ2V0Wytwcm9wZXJ0eV07XG4gIH1cblxuICBpZiAodGFyZ2V0ICYmIHByb3BlcnR5IGluIHRhcmdldCkge1xuICAgIHJldHVybiAodGFyZ2V0IGFzIEpzb25PYmplY3QpW3Byb3BlcnR5XTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -128,4 +128,3 @@ function updateJsonWorkspace(metadata) {
128
128
  }
129
129
  return content;
130
130
  }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvd29ya3NwYWNlL2pzb24vd3JpdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILCtDQUFrRDtBQUlsRCx5Q0FLb0I7QUFFYixLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLFNBQThCLEVBQzlCLElBQW1CLEVBQ25CLElBQWEsRUFDYixVQUVJLEVBQUU7SUFFTixNQUFNLFFBQVEsR0FBSSxTQUFxQyxDQUFDLDhCQUFtQixDQUFDLENBQUM7SUFFN0UsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtZQUN4QixPQUFPO1NBQ1I7UUFDRCxpQ0FBaUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3hEO1NBQU07UUFDTCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1QztRQUVELE1BQU0sR0FBRyxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDbkM7QUFDSCxDQUFDO0FBN0JELGdEQTZCQztBQUVELFNBQVMsb0JBQW9CLENBQUMsU0FBOEIsRUFBRSxN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QUNoQyxNQUFNLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsUUFBUSxDQUFDO0lBRW5ELEtBQUssTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3hELHVEQUF1RDtRQUN2RCxJQUFJLG9CQUFvQixJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDckQsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztTQUMzQjtRQUVELG1EQUFtRDtRQUNuRCx5SEFBeUg7UUFDekgsNkdBQTZHO1FBQzdHLE1BQU0sS0FBSyxHQUFHLElBQUEscUJBQU0sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDbkUsaUJBQWlCLEVBQUU7Z0JBQ2pCLFlBQVksRUFBRSxJQUFJO2dCQUNsQixPQUFPLEVBQUUsQ0FBQzthQUNYO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLElBQUEseUJBQVUsRUFBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDdEM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGFwcGx5RWRpdHMsIG1vZGlmeSB9IGZyb20gJ2pzb25jLXBhcnNlcic7XG5pbXBvcnQgeyBKc29uT2JqZWN0LCBKc29uVmFsdWUgfSBmcm9tICcuLi8uLi9qc29uJztcbmltcG9ydCB7IFByb2plY3REZWZpbml0aW9uLCBUYXJnZXREZWZpbml0aW9uLCBXb3Jrc3BhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgV29ya3NwYWNlSG9zdCB9IGZyb20gJy4uL2hvc3QnO1xuaW1wb3J0IHtcbiAgSnNvbkNoYW5nZSxcbiAgSnNvbldvcmtzcGFjZURlZmluaXRpb24sXG4gIEpzb25Xb3Jrc3BhY2VNZXRhZGF0YSxcbiAgSnNvbldvcmtzcGFjZVN5bWJvbCxcbn0gZnJvbSAnLi9tZXRhZGF0YSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUpzb25Xb3Jrc3BhY2UoXG4gIHdvcmtzcGFjZTogV29ya3NwYWNlRGVmaW5pdGlvbixcbiAgaG9zdDogV29ya3NwYWNlSG9zdCxcbiAgcGF0aD86IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHNjaGVtYT86IHN0cmluZztcbiAgfSA9IHt9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gKHdvcmtzcGFjZSBhcyBKc29uV29ya3NwYWNlRGVmaW5pdGlvbilbSnNvbldvcmtzcGFjZVN5bWJvbF07XG5cbiAgaWYgKG1ldGFkYXRhKSB7XG4gICAgaWYgKCFtZXRhZGF0YS5oYXNDaGFuZ2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIHVwZGF0ZSBleGlzdGluZyBKU09OIHdvcmtzcGFjZVxuICAgIGNvbnN0IGRhdGEgPSB1cGRhdGVKc29uV29ya3NwYWNlKG1ldGFkYXRhKTtcblxuICAgIHJldHVybiBob3N0LndyaXRlRmlsZShwYXRoID8/IG1ldGFkYXRhLmZpbGVQYXRoLCBkYXRhKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBzZXJpYWxpemUgZGlyZWN0bHlcbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGF0aCBvcHRpb24gaXMgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYmogPSBjb252ZXJ0SnNvbldvcmtzcGFjZSh3b3Jrc3BhY2UsIG9wdGlvbnMuc2NoZW1hKTtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAyKTtcblxuICAgIHJldHVybiBob3N0LndyaXRlRmlsZShwYXRoLCBkYXRhKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb252ZXJ0SnNvbldvcmtzcGFjZSh3b3Jrc3BhY2U6IFdvcmtzcGFjZURlZmluaXRpb24sIHNjaGVtYT86IHN0cmluZyk6IEpzb25PYmplY3Qge1xuICBjb25zdCBvYmogPSB7XG4gICAgJHNjaGVtYTogc2NoZW1hIHx8ICcuL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jbGkvbGliL2NvbmZpZy9zY2hlbWEuanNvbicsXG4gICAgdmVyc2lvbjogMSxcbiAgICAuLi53b3Jrc3BhY2UuZXh0ZW5zaW9ucyxcbiAgICAuLi4oaXNFbXB0eSh3b3Jrc3BhY2UucHJvamVjdHMpXG4gICAgICA/IHt9XG4gICAgICA6IHsgcHJvamVjdHM6IGNvbnZlcnRKc29uUHJvamVjdENvbGxlY3Rpb24od29ya3NwYWNlLnByb2plY3RzKSB9KSxcbiAgfTtcblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0SnNvblByb2plY3RDb2xsZWN0aW9uKFxuICBjb2xsZWN0aW9uOiBJdGVyYWJsZTxbc3RyaW5nLCBQcm9qZWN0RGVmaW5pdGlvbl0+LFxuKTogSnNvbk9iamVjdCB7XG4gIGNvbnN0IHByb2plY3RzID0gT2JqZWN0LmNyZWF0ZShudWxsKSBhcyBKc29uT2JqZWN0O1xuXG4gIGZvciAoY29uc3QgW3Byb2plY3ROYW1lLCBwcm9qZWN0XSBvZiBjb2xsZWN0aW9uKSB7XG4gICAgcHJvamVjdHNbcHJvamVjdE5hbWVdID0gY29udmVydEpzb25Qcm9qZWN0KHByb2plY3QpO1xuICB9XG5cbiAgcmV0dXJuIHByb2plY3RzO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0SnNvblByb2plY3QocHJvamVjdDogUHJvamVjdERlZmluaXRpb24pOiBKc29uT2JqZWN0IHtcbiAgbGV0IHRhcmdldHM6IEpzb25PYmplY3QgfCB1bmRlZmluZWQ7XG4gIGlmIChwcm9qZWN0LnRhcmdldHMuc2l6ZSA+IDApIHtcbiAgICB0YXJnZXRzID0gT2JqZWN0LmNyZWF0ZShudWxsKSBhcyBKc29uT2JqZWN0O1xuICAgIGZvciAoY29uc3QgW3RhcmdldE5hbWUsIHRhcmdldF0gb2YgcHJvamVjdC50YXJnZXRzKSB7XG4gICAgICB0YXJnZXRzW3RhcmdldE5hbWVdID0gY29udmVydEpzb25UYXJnZXQodGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvYmogPSB7XG4gICAgLi4ucHJvamVjdC5leHRlbnNpb25zLFxuICAgIHJvb3Q6IHByb2plY3Qucm9vdCxcbiAgICAuLi4ocHJvamVjdC5zb3VyY2VSb290ID09PSB1bmRlZmluZWQgPyB7fSA6IHsgc291cmNlUm9vdDogcHJvamVjdC5zb3VyY2VSb290IH0pLFxuICAgIC4uLihwcm9qZWN0LnByZWZpeCA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHByZWZpeDogcHJvamVjdC5wcmVmaXggfSksXG4gICAgLi4uKHRhcmdldHMgPT09IHVuZGVmaW5lZCA/IHt9IDogeyBhcmNoaXRlY3Q6IHRhcmdldHMgfSksXG4gIH07XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gaXNFbXB0eShvYmo6IG9iamVjdCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gb2JqID09PSB1bmRlZmluZWQgfHwgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRKc29uVGFyZ2V0KHRhcmdldDogVGFyZ2V0RGVmaW5pdGlvbik6IEpzb25PYmplY3Qge1xuICByZXR1cm4ge1xuICAgIGJ1aWxkZXI6IHRhcmdldC5idWlsZGVyLFxuICAgIC4uLihpc0VtcHR5KHRhcmdldC5vcHRpb25zKSA/IHt9IDogeyBvcHRpb25zOiB0YXJnZXQub3B0aW9ucyBhcyBKc29uT2JqZWN0IH0pLFxuICAgIC4uLihpc0VtcHR5KHRhcmdldC5jb25maWd1cmF0aW9ucylcbiAgICAgID8ge31cbiAgICAgIDogeyBjb25maWd1cmF0aW9uczogdGFyZ2V0LmNvbmZpZ3VyYXRpb25zIGFzIEpzb25PYmplY3QgfSksXG4gICAgLi4uKHRhcmdldC5kZWZhdWx0Q29uZmlndXJhdGlvbiA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHt9XG4gICAgICA6IHsgZGVmYXVsdENvbmZpZ3VyYXRpb246IHRhcmdldC5kZWZhdWx0Q29uZmlndXJhdGlvbiB9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydEpzb25UYXJnZXRDb2xsZWN0aW9uKGNvbGxlY3Rpb246IEl0ZXJhYmxlPFtzdHJpbmcsIFRhcmdldERlZmluaXRpb25dPik6IEpzb25PYmplY3Qge1xuICBjb25zdCB0YXJnZXRzID0gT2JqZWN0LmNyZWF0ZShudWxsKSBhcyBKc29uT2JqZWN0O1xuXG4gIGZvciAoY29uc3QgW3Byb2plY3ROYW1lLCB0YXJnZXRdIG9mIGNvbGxlY3Rpb24pIHtcbiAgICB0YXJnZXRzW3Byb2plY3ROYW1lXSA9IGNvbnZlcnRKc29uVGFyZ2V0KHRhcmdldCk7XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0cztcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUoXG4gIHZhbHVlOiBKc29uQ2hhbmdlWyd2YWx1ZSddIHwgdW5kZWZpbmVkLFxuICB0eXBlOiBKc29uQ2hhbmdlWyd0eXBlJ10sXG4pOiBKc29uVmFsdWUgfCB1bmRlZmluZWQge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdwcm9qZWN0JzpcbiAgICAgIHJldHVybiBjb252ZXJ0SnNvblByb2plY3QodmFsdWUgYXMgUHJvamVjdERlZmluaXRpb24pO1xuICAgIGNhc2UgJ3Byb2plY3Rjb2xsZWN0aW9uJzpcbiAgICAgIGNvbnN0IHByb2plY3RzID0gY29udmVydEpzb25Qcm9qZWN0Q29sbGVjdGlvbih2YWx1ZSBhcyBJdGVyYWJsZTxbc3RyaW5nLCBQcm9qZWN0RGVmaW5pdGlvbl0+KTtcblxuICAgICAgcmV0dXJuIGlzRW1wdHkocHJvamVjdHMpID8gdW5kZWZpbmVkIDogcHJvamVjdHM7XG4gICAgY2FzZSAndGFyZ2V0JzpcbiAgICAgIHJldHVybiBjb252ZXJ0SnNvblRhcmdldCh2YWx1ZSBhcyBUYXJnZXREZWZpbml0aW9uKTtcbiAgICBjYXNlICd0YXJnZXRjb2xsZWN0aW9uJzpcbiAgICAgIGNvbnN0IHRhcmdldHMgPSBjb252ZXJ0SnNvblRhcmdldENvbGxlY3Rpb24odmFsdWUgYXMgSXRlcmFibGU8W3N0cmluZywgVGFyZ2V0RGVmaW5pdGlvbl0+KTtcblxuICAgICAgcmV0dXJuIGlzRW1wdHkodGFyZ2V0cykgPyB1bmRlZmluZWQgOiB0YXJnZXRzO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdmFsdWUgYXMgSnNvblZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUpzb25Xb3Jrc3BhY2UobWV0YWRhdGE6IEpzb25Xb3Jrc3BhY2VNZXRhZGF0YSk6IHN0cmluZyB7XG4gIGxldCB7IHJhdzogY29udGVudCB9ID0gbWV0YWRhdGE7XG4gIGNvbnN0IHsgY2hhbmdlcywgaGFzTGVnYWN5VGFyZ2V0c05hbWUgfSA9IG1ldGFkYXRhO1xuXG4gIGZvciAoY29uc3QgeyBqc29uUGF0aCwgdmFsdWUsIHR5cGUgfSBvZiBjaGFuZ2VzLnZhbHVlcygpKSB7XG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGtleSB0byB1c2UgaWYgKGFyY2hpdGVjdCBvciB0YXJnZXRzKVxuICAgIGlmIChoYXNMZWdhY3lUYXJnZXRzTmFtZSAmJiBqc29uUGF0aFsyXSA9PT0gJ3RhcmdldHMnKSB7XG4gICAgICBqc29uUGF0aFsyXSA9ICdhcmNoaXRlY3QnO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGBtb2RpZnlgIHJlLXBhcnNlcyB0aGUgY29udGVudCBldmVyeSB0aW1lLlxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9ub2RlLWpzb25jLXBhcnNlci9ibG9iLzM1ZDk0Y2Q3MWJkNDhmOTc4NDQ1M2IyNDM5MjYyYzkzOGUyMWQ0OWIvc3JjL2ltcGwvZWRpdC50cyNMMThcbiAgICAvLyBJZGVhbGx5IHRoaXMgc2hvdWxkIGFjY2VwdCBhIHN0cmluZyBvciBhbiBBU1QgdG8gYXZvaWQgdGhlIHBvdGVudGlhbGx5IGV4cGVuc2l2ZSByZXBlYXQgcGFyc2luZyBvcGVyYXRpb24uXG4gICAgY29uc3QgZWRpdHMgPSBtb2RpZnkoY29udGVudCwganNvblBhdGgsIG5vcm1hbGl6ZVZhbHVlKHZhbHVlLCB0eXBlKSwge1xuICAgICAgZm9ybWF0dGluZ09wdGlvbnM6IHtcbiAgICAgICAgaW5zZXJ0U3BhY2VzOiB0cnVlLFxuICAgICAgICB0YWJTaXplOiAyLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnRlbnQgPSBhcHBseUVkaXRzKGNvbnRlbnQsIGVkaXRzKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZW50O1xufVxuIl19