ngx-dynamic-entity 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +129 -139
  2. package/esm2022/lib/field-types/array-field.component.mjs +112 -104
  3. package/esm2022/lib/field-types/boolean-field.component.mjs +62 -61
  4. package/esm2022/lib/field-types/checkbox-field.component.mjs +48 -47
  5. package/esm2022/lib/field-types/currency-field.component.mjs +54 -53
  6. package/esm2022/lib/field-types/date-field.component.mjs +46 -45
  7. package/esm2022/lib/field-types/dropdown-field.component.mjs +89 -87
  8. package/esm2022/lib/field-types/email-field.component.mjs +64 -63
  9. package/esm2022/lib/field-types/entity-ref-field.component.mjs +85 -71
  10. package/esm2022/lib/field-types/field-component.contract.mjs +2 -0
  11. package/esm2022/lib/field-types/file-field.component.mjs +88 -87
  12. package/esm2022/lib/field-types/group-field.component.mjs +50 -50
  13. package/esm2022/lib/field-types/image-field.component.mjs +92 -91
  14. package/esm2022/lib/field-types/month-year-field.component.mjs +80 -79
  15. package/esm2022/lib/field-types/multi-select-field.component.mjs +66 -65
  16. package/esm2022/lib/field-types/number-field.component.mjs +71 -75
  17. package/esm2022/lib/field-types/password-field.component.mjs +68 -67
  18. package/esm2022/lib/field-types/radio-field.component.mjs +66 -65
  19. package/esm2022/lib/field-types/text-field.component.mjs +81 -74
  20. package/esm2022/lib/field-types/textarea-field.component.mjs +48 -47
  21. package/esm2022/lib/form/dynamic-field/dynamic-field.component.mjs +53 -6
  22. package/esm2022/lib/form/dynamic-form.component.mjs +309 -20
  23. package/esm2022/lib/form/dynamic-record-form.component.mjs +36 -11
  24. package/esm2022/lib/providers/provide-field-types.mjs +1 -1
  25. package/esm2022/lib/providers/provide-ngx-dynamic-entity.mjs +8 -2
  26. package/esm2022/lib/services/cascade-data.service.mjs +2 -2
  27. package/esm2022/lib/services/entity-ref-cache.mjs +1 -1
  28. package/esm2022/lib/services/entity-ref-registry.service.mjs +2 -2
  29. package/esm2022/lib/services/entity-ref-selection.service.mjs +1 -1
  30. package/esm2022/lib/services/entity-reference.service.mjs +1 -1
  31. package/esm2022/lib/services/field-registry.service.mjs +1 -1
  32. package/esm2022/lib/services/file-upload.service.mjs +1 -1
  33. package/esm2022/lib/services/lookup-registry.service.mjs +2 -2
  34. package/esm2022/lib/services/rbac.service.mjs +1 -1
  35. package/esm2022/lib/services/validation-messages.service.mjs +56 -0
  36. package/esm2022/lib/services/validator-registry.service.mjs +35 -2
  37. package/esm2022/lib/tokens/injection-tokens.mjs +35 -6
  38. package/esm2022/public-api.mjs +23 -2
  39. package/fesm2022/ngx-dynamic-entity.mjs +1754 -1236
  40. package/fesm2022/ngx-dynamic-entity.mjs.map +1 -1
  41. package/lib/field-types/array-field.component.d.ts +7 -1
  42. package/lib/field-types/dropdown-field.component.d.ts +2 -1
  43. package/lib/field-types/entity-ref-field.component.d.ts +12 -2
  44. package/lib/field-types/field-component.contract.d.ts +49 -0
  45. package/lib/field-types/group-field.component.d.ts +1 -1
  46. package/lib/field-types/multi-select-field.component.d.ts +1 -1
  47. package/lib/field-types/number-field.component.d.ts +1 -0
  48. package/lib/field-types/radio-field.component.d.ts +1 -1
  49. package/lib/field-types/text-field.component.d.ts +10 -2
  50. package/lib/form/dynamic-field/dynamic-field.component.d.ts +39 -4
  51. package/lib/form/dynamic-form.component.d.ts +155 -8
  52. package/lib/form/dynamic-record-form.component.d.ts +13 -2
  53. package/lib/providers/provide-ngx-dynamic-entity.d.ts +25 -3
  54. package/lib/services/cascade-data.service.d.ts +1 -1
  55. package/lib/services/entity-ref-registry.service.d.ts +1 -1
  56. package/lib/services/lookup-registry.service.d.ts +1 -1
  57. package/lib/services/validation-messages.service.d.ts +43 -0
  58. package/lib/services/validator-registry.service.d.ts +13 -1
  59. package/lib/tokens/injection-tokens.d.ts +42 -7
  60. package/package.json +17 -18
  61. package/public-api.d.ts +12 -0
  62. package/styles.css +579 -0
@@ -6,7 +6,7 @@ import * as i0 from "@angular/core";
6
6
  /**
7
7
  * CascadeDataService — loads entity-reference options and applies parent→child cascades.
8
8
  *
9
- * Loaders come from the registry only (ADR-006). This service owns the three things a
9
+ * Loaders come from the registry only. This service owns the three things a
10
10
  * field component should not: resolving the loader, coercing whatever it returned
11
11
  * (array | Promise | Observable) into a Promise, and filtering by the parent's value.
12
12
  */
@@ -126,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
126
126
  type: Injectable,
127
127
  args: [{ providedIn: 'root' }]
128
128
  }] });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZS1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2Nhc2NhZGUtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVwRTs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ1osUUFBUSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLFVBQVUsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUU3RCw4RkFBOEY7SUFDN0UsUUFBUSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0lBRTdELCtFQUErRTtJQUMvRSxZQUFZLENBQUMsS0FBd0I7UUFDbkMsT0FBTyxLQUFLLENBQUMsZUFBZSxFQUFFLGVBQWUsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxxREFBcUQ7SUFDckQsT0FBTyxDQUFDLEtBQXdCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUNSLEtBQXdCLEVBQ3hCLE1BQThCLEVBQUU7UUFFaEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFP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TUFBTSxDQUFDLENBQUM7Z0JBQ3ZCLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUNGLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQXBJVSxrQkFBa0I7NEdBQWxCLGtCQUFrQixjQURMLE1BQU07OzRGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHtcclxuICBFbnRpdHlGb3JtQ29uZmlnLFxyXG4gIE5lc3RlZEZpZWxkQ29uZmlnLFxyXG4gIE5lc3RlZFRhYkNvbmZpZyxcclxuICBSZWZlcmVuY2VMb2FkZXJDb250ZXh0LFxyXG4gIFJlZmVyZW5jZU9wdGlvbixcclxufSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XHJcbmltcG9ydCB7IGFwcGx5Q2FzY2FkZUZpbHRlciB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcclxuaW1wb3J0IHsgRW50aXR5UmVmUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktcmVmLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnRpdHlSZWZlcmVuY2VTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktcmVmZXJlbmNlLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIENhc2NhZGVEYXRhU2VydmljZSDigJQgbG9hZHMgZW50aXR5LXJlZmVyZW5jZSBvcHRpb25zIGFuZCBhcHBsaWVzIHBhcmVudOKGkmNoaWxkIGNhc2NhZGVzLlxyXG4gKlxyXG4gKiBMb2FkZXJzIGNvbWUgZnJvbSB0aGUgcmVnaXN0cnkgb25seSAoQURSLTAwNikuIFRoaXMgc2VydmljZSBvd25zIHRoZSB0aHJlZSB0aGluZ3MgYVxyXG4gKiBmaWVsZCBjb21wb25lbnQgc2hvdWxkIG5vdDogcmVzb2x2aW5nIHRoZSBsb2FkZXIsIGNvZXJjaW5nIHdoYXRldmVyIGl0IHJldHVybmVkXHJcbiAqIChhcnJheSB8IFByb21pc2UgfCBPYnNlcnZhYmxlKSBpbnRvIGEgUHJvbWlzZSwgYW5kIGZpbHRlcmluZyBieSB0aGUgcGFyZW50J3MgdmFsdWUuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQ2FzY2FkZURhdGFTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID0gaW5qZWN0KEVudGl0eVJlZlJlZ2lzdHJ5U2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWZlcmVuY2VzID0gaW5qZWN0KEVudGl0eVJlZmVyZW5jZVNlcnZpY2UpO1xyXG5cclxuICAvKiogUHJlbG9hZCBydW5zIGJ5IGZvcm1Db25maWdJZCwgc28gYSBzZWNvbmQgY2FsbCBqb2lucyB0aGUgZmlyc3QgcmF0aGVyIHRoYW4gcmUtZmV0Y2hpbmcuICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVsb2FkcyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+PigpO1xyXG5cclxuICAvKiogUmVnaXN0cnkga2V5IGZvciBhIGZpZWxkOiBleHBsaWNpdCBgbGlua2VkRW50aXR5S2V5YCwgZWxzZSB0aGUgZmllbGQgaWQuICovXHJcbiAgZW50aXR5S2V5Rm9yKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZmllbGQuZW50aXR5UmVmZXJlbmNlPy5saW5rZWRFbnRpdHlLZXkgPz8gZmllbGQuaWQ7XHJcbiAgfVxyXG5cclxuICAvKiogV2hldGhlciBhIGxvYWRlciBpcyByZWdpc3RlcmVkIGZvciB0aGlzIGZpZWxkLiAqL1xyXG4gIGNhbkxvYWQoZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5oYXModGhpcy5lbnRpdHlLZXlGb3IoZmllbGQpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgdGhlIG9wdGlvbnMgZm9yIGEgZmllbGQsIGNhc2NhZGUtZmlsdGVyZWQgYWdhaW5zdCBgcGFyZW50VmFsdWVgLlxyXG4gICAqIFJldHVybnMgYFtdYCB3aGVuIG5vIGxvYWRlciBpcyByZWdpc3RlcmVkLCBvciB3aGVuIGEgY2FzY2FkZSBjaGlsZCBoYXMgbm8gcGFyZW50IHZhbHVlIHlldC5cclxuICAgKi9cclxuICBhc3luYyBsb2FkKFxyXG4gICAgZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnLFxyXG4gICAgY3R4OiBSZWZlcmVuY2VMb2FkZXJDb250ZXh0ID0ge30sXHJcbiAgKTogUHJvbWlzZTxSZWZlcmVuY2VPcHRpb25bXT4ge1xyXG4gICAgY29uc3QgY2ZnID0gZmllbGQuZW50aXR5UmVmZXJlbmNlO1xyXG4gICAgaWYgKCF0aGlzLmNhbkxvYWQoZmllbGQpKSByZXR1cm4gW107XHJcblxyXG4gICAgLy8gQSBjYXNjYWRlIGNoaWxkIHdpdGggbm8gcGFyZW50IHNlbGVjdGlvbiBtdXN0IG9mZmVyIG5vdGhpbmcuXHJcbiAgICBjb25zdCBoYXNQYXJlbnRWYWx1ZSA9XHJcbiAgICAgIGN0eC5wYXJlbnRWYWx1ZSAhPT0gbnVsbCAmJiBjdHgucGFyZW50VmFsdWUgIT09IHVuZGVmaW5lZCAmJiBjdHgucGFyZW50VmFsdWUgIT09ICcnO1xyXG4gICAgaWYgKGNmZz8ucGFyZW50RmllbGQgJiYgIWhhc1BhcmVudFZhbHVlKSByZXR1cm4gW107XHJcblxyXG4gICAgY29uc3QgbGFuZyA9IGN0eC5sYW5nID8/ICdlbic7XHJcblxyXG4gICAgLy8gV2hlbiB0aGUgY2FzY2FkZSBjYW4gYmUgcmVzb2x2ZWQgbG9jYWxseSAoYGxvb2t1cEZpbHRlcmAvYGxvb2t1cFBhdGhgKSwgZmV0Y2ggdGhlXHJcbiAgICAvLyB1bmZpbHRlcmVkIHNldCBvbmNlIGFuZCBmaWx0ZXIgcGVyIHBhcmVudCBiZWxvdyDigJQgc3dpdGNoaW5nIHBhcmVudCB0aGVuIGNvc3RzIG5vdGhpbmcuXHJcbiAgICAvLyBPdGhlcndpc2UgdGhlIGxvYWRlciBpcyB0aGUgb25seSB0aGluZyB0aGF0IGNhbiBuYXJyb3cgdGhlIGxpc3QsIHNvIGBwYXJlbnRWYWx1ZWAgaXNcclxuICAgIC8vIHBhc3NlZCB0aHJvdWdoIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNhY2hlIGlkZW50aXR5IChvbmUgZW50cnkgcGVyIHBhcmVudCkuXHJcbiAgICBjb25zdCBmaWx0ZXJzTG9jYWxseSA9ICEhKGNmZz8ubG9va3VwRmlsdGVyIHx8IGNmZz8ubG9va3VwUGF0aCk7XHJcblxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHRoaXMucmVmZXJlbmNlcy5sb2FkKHRoaXMuZW50aXR5S2V5Rm9yKGZpZWxkKSwge1xyXG4gICAgICAuLi5jdHgsXHJcbiAgICAgIHBhcmVudFZhbHVlOiBmaWx0ZXJzTG9jYWxseSA/IHVuZGVmaW5lZCA6IGN0eC5wYXJlbnRWYWx1ZSxcclxuICAgICAgZmlsdGVyczogeyAuLi4oY2ZnPy5maWx0ZXJzID8/IHt9KSwgLi4uKGN0eC5maWx0ZXJzID8/IHt9KSB9LFxyXG4gICAgICBkaXNwbGF5RmllbGRzOiBjZmc/LmRpc3BsYXlGaWVsZHMsXHJcbiAgICAgIGxhbmcsXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gYXBwbHlDYXNjYWRlRmlsdGVyKG9wdGlvbnMsIGN0eC5wYXJlbnRWYWx1ZSwgY2ZnLCBsYW5nKTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgOKUgCBQcmVsb2FkIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICAvKipcclxuICAgKiBXYXJtIHRoZSBjYWNoZSBmb3IgZXZlcnkgZW50aXR5IGEgY29uZmlnJ3MgY2FzY2FkZXMgZGVwZW5kIG9uLCBzbyBjaGFuZ2luZyBhIHBhcmVudFxyXG4gICAqIHJlc29sdmVzIGZyb20gbWVtb3J5IGluc3RlYWQgb2YgYSByb3VuZC10cmlwLlxyXG4gICAqXHJcbiAgICogSWRlbXBvdGVudCBwZXIgYGZvcm1Db25maWdJZGA6IGNhbGxpbmcgaXQgYWdhaW4gcmV0dXJucyB0aGUgaW4tZmxpZ2h0IG9yIGNvbXBsZXRlZCBydW5cclxuICAgKiByYXRoZXIgdGhhbiByZS1mZXRjaGluZy5cclxuICAgKi9cclxuICBpbml0aWFsaXplQ2FzY2FkZURhdGEoZm9ybUNvbmZpZ0lkOiBzdHJpbmcsIGNvbmZpZzogRW50aXR5Rm9ybUNvbmZpZywgbGFuZyA9ICdlbicpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5wcmVsb2Fkcy5nZXQoZm9ybUNvbmZpZ0lkKTtcclxuICAgIGlmIChleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nO1xyXG5cclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuY2FzY2FkZUZpZWxkcyhjb25maWcpO1xyXG4gICAgY29uc3QgcnVuID0gUHJvbWlzZS5hbGwoXHJcbiAgICAgIGZpZWxkcy5tYXAoZmllbGQgPT5cclxuICAgICAgICB0aGlzLnJlZmVyZW5jZXMubG9hZCh0aGlzLmVudGl0eUtleUZvcihmaWVsZCksIHtcclxuICAgICAgICAgIGZpbHRlcnM6IGZpZWxkLmVudGl0eVJlZmVyZW5jZT8uZmlsdGVycyxcclxuICAgICAgICAgIGRpc3BsYXlGaWVsZHM6IGZpZWxkLmVudGl0eVJlZmVyZW5jZT8uZGlzcGxheUZpZWxkcyxcclxuICAgICAgICAgIGxhbmcsXHJcbiAgICAgICAgfSksXHJcbiAgICAgICksXHJcbiAgICApLnRoZW4oKCkgPT4gdW5kZWZpbmVkKTtcclxuXHJcbiAgICB0aGlzLnByZWxvYWRzLnNldChmb3JtQ29uZmlnSWQsIHJ1bik7XHJcbiAgICByZXR1cm4gcnVuO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJlc29sdmVzIHRydWUgb25jZSBgaW5pdGlhbGl6ZUNhc2NhZGVEYXRhYCBmb3IgdGhpcyBjb25maWcgaGFzIGZpbmlzaGVkLiAqL1xyXG4gIGFzeW5jIHdhaXRGb3JEYXRhKGZvcm1Db25maWdJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBydW4gPSB0aGlzLnByZWxvYWRzLmdldChmb3JtQ29uZmlnSWQpO1xyXG4gICAgaWYgKCFydW4pIHJldHVybiBmYWxzZTtcclxuICAgIGF3YWl0IHJ1bjtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hpbGQgb3B0aW9ucyBmb3IgYSBwYXJlbnQgc2VsZWN0aW9uLCBmcm9tIGNhY2hlIG9ubHkg4oCUIG5vIGxvYWQgaXMgdHJpZ2dlcmVkLlxyXG4gICAqIFJldHVybnMgYFtdYCB3aGVuIHRoZSBlbnRpdHkgaGFzIG5vdCBiZWVuIHByZWxvYWRlZC5cclxuICAgKi9cclxuICBnZXRDYWNoZWRDaGlsZE9wdGlvbnMoXHJcbiAgICBmaWVsZDogTmVzdGVkRmllbGRDb25maWcsXHJcbiAgICBwYXJlbnRWYWx1ZTogdW5rbm93bixcclxuICAgIGxhbmcgPSAnZW4nLFxyXG4gICk6IFJlZmVyZW5jZU9wdGlvbltdIHtcclxuICAgIGNvbnN0IGNmZyA9IGZpZWxkLmVudGl0eVJlZmVyZW5jZTtcclxuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMucmVmZXJlbmNlcy5wZWVrKHRoaXMuZW50aXR5S2V5Rm9yKGZpZWxkKSwge1xyXG4gICAgICBmaWx0ZXJzOiBjZmc/LmZpbHRlcnMsXHJcbiAgICAgIGRpc3BsYXlGaWVsZHM6IGNmZz8uZGlzcGxheUZpZWxkcyxcclxuICAgICAgbGFuZyxcclxuICAgIH0pO1xyXG4gICAgaWYgKCFjYWNoZWQpIHJldHVybiBbXTtcclxuICAgIHJldHVybiBhcHBseUNhc2NhZGVGaWx0ZXIoY2FjaGVkLCBwYXJlbnRWYWx1ZSwgY2ZnLCBsYW5nKTtcclxuICB9XHJcblxyXG4gIC8qKiBGb3JnZXQgdGhlIHByZWxvYWQgZm9yIG9uZSBjb25maWcuIFRoZSBvcHRpb24gY2FjaGUgaXRzZWxmIGlzIHVudG91Y2hlZC4gKi9cclxuICBjbGVhckNhY2hlKGZvcm1Db25maWdJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnByZWxvYWRzLmRlbGV0ZShmb3JtQ29uZmlnSWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEV2ZXJ5IGVudGl0eS1yZWYgZmllbGQgaW4gdGhlIGNvbmZpZyB0aGF0IHBhcnRpY2lwYXRlcyBpbiBhIGNhc2NhZGUuICovXHJcbiAgcHJpdmF0ZSBjYXNjYWRlRmllbGRzKGNvbmZpZzogRW50aXR5Rm9ybUNvbmZpZyk6IE5lc3RlZEZpZWxkQ29uZmlnW10ge1xyXG4gICAgY29uc3QgZm91bmQ6IE5lc3RlZEZpZWxkQ29uZmlnW10gPSBbXTtcclxuICAgIGNvbnN0IHdhbGtGaWVsZHMgPSAoZmllbGRzOiBOZXN0ZWRGaWVsZENvbmZpZ1tdIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzID8/IFtdKSB7XHJcbiAgICAgICAgY29uc3QgY2ZnID0gZmllbGQuZW50aXR5UmVmZXJlbmNlO1xyXG4gICAgICAgIGlmIChjZmc/LmVuYWJsZWQgJiYgKGNmZy5wYXJlbnRGaWVsZCB8fCBjZmcubG9va3VwUGF0aCB8fCBjZmcubG9va3VwRmlsdGVyKSkge1xyXG4gICAgICAgICAgZm91bmQucHVzaChmaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdhbGtGaWVsZHMoZmllbGQuY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgd2Fsa1RhYnMgPSAodGFiczogTmVzdGVkVGFiQ29uZmlnW10gfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgZm9yIChjb25zdCB0YWIgb2YgdGFicyA/PyBbXSkge1xyXG4gICAgICAgIHdhbGtGaWVsZHModGFiLmZpZWxkcyk7XHJcbiAgICAgICAgd2Fsa1RhYnModGFiLmNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHdhbGtUYWJzKGNvbmZpZz8udGFicyk7XHJcbiAgICByZXR1cm4gZm91bmQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZS1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2Nhc2NhZGUtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVwRTs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ1osUUFBUSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLFVBQVUsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUU3RCw4RkFBOEY7SUFDN0UsUUFBUSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0lBRTdELCtFQUErRTtJQUMvRSxZQUFZLENBQUMsS0FBd0I7UUFDbkMsT0FBTyxLQUFLLENBQUMsZUFBZSxFQUFFLGVBQWUsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxxREFBcUQ7SUFDckQsT0FBTyxDQUFDLEtBQXdCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUNSLEtBQXdCLEVBQ3hCLE1BQThCLEVBQUU7UUFFaEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFP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TUFBTSxDQUFDLENBQUM7Z0JBQ3ZCLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUNGLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQXBJVSxrQkFBa0I7NEdBQWxCLGtCQUFrQixjQURMLE1BQU07OzRGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEVudGl0eUZvcm1Db25maWcsXG4gIE5lc3RlZEZpZWxkQ29uZmlnLFxuICBOZXN0ZWRUYWJDb25maWcsXG4gIFJlZmVyZW5jZUxvYWRlckNvbnRleHQsXG4gIFJlZmVyZW5jZU9wdGlvbixcbn0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlDYXNjYWRlRmlsdGVyIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgRW50aXR5UmVmUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktcmVmLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW50aXR5UmVmZXJlbmNlU2VydmljZSB9IGZyb20gJy4vZW50aXR5LXJlZmVyZW5jZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBDYXNjYWRlRGF0YVNlcnZpY2Ug4oCUIGxvYWRzIGVudGl0eS1yZWZlcmVuY2Ugb3B0aW9ucyBhbmQgYXBwbGllcyBwYXJlbnTihpJjaGlsZCBjYXNjYWRlcy5cbiAqXG4gKiBMb2FkZXJzIGNvbWUgZnJvbSB0aGUgcmVnaXN0cnkgb25seS4gVGhpcyBzZXJ2aWNlIG93bnMgdGhlIHRocmVlIHRoaW5ncyBhXG4gKiBmaWVsZCBjb21wb25lbnQgc2hvdWxkIG5vdDogcmVzb2x2aW5nIHRoZSBsb2FkZXIsIGNvZXJjaW5nIHdoYXRldmVyIGl0IHJldHVybmVkXG4gKiAoYXJyYXkgfCBQcm9taXNlIHwgT2JzZXJ2YWJsZSkgaW50byBhIFByb21pc2UsIGFuZCBmaWx0ZXJpbmcgYnkgdGhlIHBhcmVudCdzIHZhbHVlLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENhc2NhZGVEYXRhU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0cnkgPSBpbmplY3QoRW50aXR5UmVmUmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWZlcmVuY2VzID0gaW5qZWN0KEVudGl0eVJlZmVyZW5jZVNlcnZpY2UpO1xuXG4gIC8qKiBQcmVsb2FkIHJ1bnMgYnkgZm9ybUNvbmZpZ0lkLCBzbyBhIHNlY29uZCBjYWxsIGpvaW5zIHRoZSBmaXJzdCByYXRoZXIgdGhhbiByZS1mZXRjaGluZy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwcmVsb2FkcyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+PigpO1xuXG4gIC8qKiBSZWdpc3RyeSBrZXkgZm9yIGEgZmllbGQ6IGV4cGxpY2l0IGBsaW5rZWRFbnRpdHlLZXlgLCBlbHNlIHRoZSBmaWVsZCBpZC4gKi9cbiAgZW50aXR5S2V5Rm9yKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZpZWxkLmVudGl0eVJlZmVyZW5jZT8ubGlua2VkRW50aXR5S2V5ID8/IGZpZWxkLmlkO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgYSBsb2FkZXIgaXMgcmVnaXN0ZXJlZCBmb3IgdGhpcyBmaWVsZC4gKi9cbiAgY2FuTG9hZChmaWVsZDogTmVzdGVkRmllbGRDb25maWcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5oYXModGhpcy5lbnRpdHlLZXlGb3IoZmllbGQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBvcHRpb25zIGZvciBhIGZpZWxkLCBjYXNjYWRlLWZpbHRlcmVkIGFnYWluc3QgYHBhcmVudFZhbHVlYC5cbiAgICogUmV0dXJucyBgW11gIHdoZW4gbm8gbG9hZGVyIGlzIHJlZ2lzdGVyZWQsIG9yIHdoZW4gYSBjYXNjYWRlIGNoaWxkIGhhcyBubyBwYXJlbnQgdmFsdWUgeWV0LlxuICAgKi9cbiAgYXN5bmMgbG9hZChcbiAgICBmaWVsZDogTmVzdGVkRmllbGRDb25maWcsXG4gICAgY3R4OiBSZWZlcmVuY2VMb2FkZXJDb250ZXh0ID0ge30sXG4gICk6IFByb21pc2U8UmVmZXJlbmNlT3B0aW9uW10+IHtcbiAgICBjb25zdCBjZmcgPSBmaWVsZC5lbnRpdHlSZWZlcmVuY2U7XG4gICAgaWYgKCF0aGlzLmNhbkxvYWQoZmllbGQpKSByZXR1cm4gW107XG5cbiAgICAvLyBBIGNhc2NhZGUgY2hpbGQgd2l0aCBubyBwYXJlbnQgc2VsZWN0aW9uIG11c3Qgb2ZmZXIgbm90aGluZy5cbiAgICBjb25zdCBoYXNQYXJlbnRWYWx1ZSA9XG4gICAgICBjdHgucGFyZW50VmFsdWUgIT09IG51bGwgJiYgY3R4LnBhcmVudFZhbHVlICE9PSB1bmRlZmluZWQgJiYgY3R4LnBhcmVudFZhbHVlICE9PSAnJztcbiAgICBpZiAoY2ZnPy5wYXJlbnRGaWVsZCAmJiAhaGFzUGFyZW50VmFsdWUpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGxhbmcgPSBjdHgubGFuZyA/PyAnZW4nO1xuXG4gICAgLy8gV2hlbiB0aGUgY2FzY2FkZSBjYW4gYmUgcmVzb2x2ZWQgbG9jYWxseSAoYGxvb2t1cEZpbHRlcmAvYGxvb2t1cFBhdGhgKSwgZmV0Y2ggdGhlXG4gICAgLy8gdW5maWx0ZXJlZCBzZXQgb25jZSBhbmQgZmlsdGVyIHBlciBwYXJlbnQgYmVsb3cg4oCUIHN3aXRjaGluZyBwYXJlbnQgdGhlbiBjb3N0cyBub3RoaW5nLlxuICAgIC8vIE90aGVyd2lzZSB0aGUgbG9hZGVyIGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgY2FuIG5hcnJvdyB0aGUgbGlzdCwgc28gYHBhcmVudFZhbHVlYCBpc1xuICAgIC8vIHBhc3NlZCB0aHJvdWdoIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNhY2hlIGlkZW50aXR5IChvbmUgZW50cnkgcGVyIHBhcmVudCkuXG4gICAgY29uc3QgZmlsdGVyc0xvY2FsbHkgPSAhIShjZmc/Lmxvb2t1cEZpbHRlciB8fCBjZmc/Lmxvb2t1cFBhdGgpO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHRoaXMucmVmZXJlbmNlcy5sb2FkKHRoaXMuZW50aXR5S2V5Rm9yKGZpZWxkKSwge1xuICAgICAgLi4uY3R4LFxuICAgICAgcGFyZW50VmFsdWU6IGZpbHRlcnNMb2NhbGx5ID8gdW5kZWZpbmVkIDogY3R4LnBhcmVudFZhbHVlLFxuICAgICAgZmlsdGVyczogeyAuLi4oY2ZnPy5maWx0ZXJzID8/IHt9KSwgLi4uKGN0eC5maWx0ZXJzID8/IHt9KSB9LFxuICAgICAgZGlzcGxheUZpZWxkczogY2ZnPy5kaXNwbGF5RmllbGRzLFxuICAgICAgbGFuZyxcbiAgICB9KTtcblxuICAgIHJldHVybiBhcHBseUNhc2NhZGVGaWx0ZXIob3B0aW9ucywgY3R4LnBhcmVudFZhbHVlLCBjZmcsIGxhbmcpO1xuICB9XG5cbiAgLy8g4pSA4pSA4pSAIFByZWxvYWQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqXG4gICAqIFdhcm0gdGhlIGNhY2hlIGZvciBldmVyeSBlbnRpdHkgYSBjb25maWcncyBjYXNjYWRlcyBkZXBlbmQgb24sIHNvIGNoYW5naW5nIGEgcGFyZW50XG4gICAqIHJlc29sdmVzIGZyb20gbWVtb3J5IGluc3RlYWQgb2YgYSByb3VuZC10cmlwLlxuICAgKlxuICAgKiBJZGVtcG90ZW50IHBlciBgZm9ybUNvbmZpZ0lkYDogY2FsbGluZyBpdCBhZ2FpbiByZXR1cm5zIHRoZSBpbi1mbGlnaHQgb3IgY29tcGxldGVkIHJ1blxuICAgKiByYXRoZXIgdGhhbiByZS1mZXRjaGluZy5cbiAgICovXG4gIGluaXRpYWxpemVDYXNjYWRlRGF0YShmb3JtQ29uZmlnSWQ6IHN0cmluZywgY29uZmlnOiBFbnRpdHlGb3JtQ29uZmlnLCBsYW5nID0gJ2VuJyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5wcmVsb2Fkcy5nZXQoZm9ybUNvbmZpZ0lkKTtcbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcblxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuY2FzY2FkZUZpZWxkcyhjb25maWcpO1xuICAgIGNvbnN0IHJ1biA9IFByb21pc2UuYWxsKFxuICAgICAgZmllbGRzLm1hcChmaWVsZCA9PlxuICAgICAgICB0aGlzLnJlZmVyZW5jZXMubG9hZCh0aGlzLmVudGl0eUtleUZvcihmaWVsZCksIHtcbiAgICAgICAgICBmaWx0ZXJzOiBmaWVsZC5lbnRpdHlSZWZlcmVuY2U/LmZpbHRlcnMsXG4gICAgICAgICAgZGlzcGxheUZpZWxkczogZmllbGQuZW50aXR5UmVmZXJlbmNlPy5kaXNwbGF5RmllbGRzLFxuICAgICAgICAgIGxhbmcsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApLnRoZW4oKCkgPT4gdW5kZWZpbmVkKTtcblxuICAgIHRoaXMucHJlbG9hZHMuc2V0KGZvcm1Db25maWdJZCwgcnVuKTtcbiAgICByZXR1cm4gcnVuO1xuICB9XG5cbiAgLyoqIFJlc29sdmVzIHRydWUgb25jZSBgaW5pdGlhbGl6ZUNhc2NhZGVEYXRhYCBmb3IgdGhpcyBjb25maWcgaGFzIGZpbmlzaGVkLiAqL1xuICBhc3luYyB3YWl0Rm9yRGF0YShmb3JtQ29uZmlnSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMucHJlbG9hZHMuZ2V0KGZvcm1Db25maWdJZCk7XG4gICAgaWYgKCFydW4pIHJldHVybiBmYWxzZTtcbiAgICBhd2FpdCBydW47XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hpbGQgb3B0aW9ucyBmb3IgYSBwYXJlbnQgc2VsZWN0aW9uLCBmcm9tIGNhY2hlIG9ubHkg4oCUIG5vIGxvYWQgaXMgdHJpZ2dlcmVkLlxuICAgKiBSZXR1cm5zIGBbXWAgd2hlbiB0aGUgZW50aXR5IGhhcyBub3QgYmVlbiBwcmVsb2FkZWQuXG4gICAqL1xuICBnZXRDYWNoZWRDaGlsZE9wdGlvbnMoXG4gICAgZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnLFxuICAgIHBhcmVudFZhbHVlOiB1bmtub3duLFxuICAgIGxhbmcgPSAnZW4nLFxuICApOiBSZWZlcmVuY2VPcHRpb25bXSB7XG4gICAgY29uc3QgY2ZnID0gZmllbGQuZW50aXR5UmVmZXJlbmNlO1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMucmVmZXJlbmNlcy5wZWVrKHRoaXMuZW50aXR5S2V5Rm9yKGZpZWxkKSwge1xuICAgICAgZmlsdGVyczogY2ZnPy5maWx0ZXJzLFxuICAgICAgZGlzcGxheUZpZWxkczogY2ZnPy5kaXNwbGF5RmllbGRzLFxuICAgICAgbGFuZyxcbiAgICB9KTtcbiAgICBpZiAoIWNhY2hlZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBhcHBseUNhc2NhZGVGaWx0ZXIoY2FjaGVkLCBwYXJlbnRWYWx1ZSwgY2ZnLCBsYW5nKTtcbiAgfVxuXG4gIC8qKiBGb3JnZXQgdGhlIHByZWxvYWQgZm9yIG9uZSBjb25maWcuIFRoZSBvcHRpb24gY2FjaGUgaXRzZWxmIGlzIHVudG91Y2hlZC4gKi9cbiAgY2xlYXJDYWNoZShmb3JtQ29uZmlnSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucHJlbG9hZHMuZGVsZXRlKGZvcm1Db25maWdJZCk7XG4gIH1cblxuICAvKiogRXZlcnkgZW50aXR5LXJlZiBmaWVsZCBpbiB0aGUgY29uZmlnIHRoYXQgcGFydGljaXBhdGVzIGluIGEgY2FzY2FkZS4gKi9cbiAgcHJpdmF0ZSBjYXNjYWRlRmllbGRzKGNvbmZpZzogRW50aXR5Rm9ybUNvbmZpZyk6IE5lc3RlZEZpZWxkQ29uZmlnW10ge1xuICAgIGNvbnN0IGZvdW5kOiBOZXN0ZWRGaWVsZENvbmZpZ1tdID0gW107XG4gICAgY29uc3Qgd2Fsa0ZpZWxkcyA9IChmaWVsZHM6IE5lc3RlZEZpZWxkQ29uZmlnW10gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzID8/IFtdKSB7XG4gICAgICAgIGNvbnN0IGNmZyA9IGZpZWxkLmVudGl0eVJlZmVyZW5jZTtcbiAgICAgICAgaWYgKGNmZz8uZW5hYmxlZCAmJiAoY2ZnLnBhcmVudEZpZWxkIHx8IGNmZy5sb29rdXBQYXRoIHx8IGNmZy5sb29rdXBGaWx0ZXIpKSB7XG4gICAgICAgICAgZm91bmQucHVzaChmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgd2Fsa0ZpZWxkcyhmaWVsZC5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCB3YWxrVGFicyA9ICh0YWJzOiBOZXN0ZWRUYWJDb25maWdbXSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgZm9yIChjb25zdCB0YWIgb2YgdGFicyA/PyBbXSkge1xuICAgICAgICB3YWxrRmllbGRzKHRhYi5maWVsZHMpO1xuICAgICAgICB3YWxrVGFicyh0YWIuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH07XG4gICAgd2Fsa1RhYnMoY29uZmlnPy50YWJzKTtcbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cbn1cbiJdfQ==
@@ -17,4 +17,4 @@ export class InMemoryEntityRefCacheStore {
17
17
  this.map.clear();
18
18
  }
19
19
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZi1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvZW50aXR5LXJlZi1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQkEsOEVBQThFO0FBQzlFLE1BQU0sT0FBTywyQkFBMkI7SUFDckIsR0FBRyxHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO0lBRTVELEdBQUcsQ0FBQyxHQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUF3QjtRQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFXO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlZmVyZW5jZU9wdGlvbiB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBCYWNraW5nIHN0b3JlIGZvciBjYWNoZWQgcmVmZXJlbmNlIG9wdGlvbnMuXHJcbiAqXHJcbiAqIFBsdWdnYWJsZSBvbiBwdXJwb3NlLiBUaGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGtlcHQgaXRzIGNhY2hlIGluIGEgc2VydmljZSBpbnN0YW5jZSxcclxuICogc28gZXZlcnkgZW50aXR5IGxhYmVsIHdhcyByZS1mZXRjaGVkIG9uIGEgYnJvd3NlciByZWZyZXNoIChpc3N1ZSAjMjIgaW4gdGhlIGFyY2hpdGVjdHVyZVxyXG4gKiBkb2MpLiBBIGNvbnN1bWVyIHRoYXQgd2FudHMgdGhlIGNhY2hlIHRvIHN1cnZpdmUgYSByZWxvYWQgY2FuIGJhY2sgdGhpcyB3aXRoXHJcbiAqIHNlc3Npb25TdG9yYWdlOyB0aGUgZGVmYXVsdCBrZWVwcyBpdCBpbiBtZW1vcnksIHdoaWNoIGlzIHRoZSByaWdodCBjYWxsIGZvciBhIGxpYnJhcnlcclxuICogdGhhdCBtdXN0IG5vdCBzaWxlbnRseSBwZXJzaXN0IGEgdGVuYW50J3MgZGF0YS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5UmVmQ2FjaGVTdG9yZSB7XHJcbiAgZ2V0KGtleTogc3RyaW5nKTogUmVmZXJlbmNlT3B0aW9uW10gfCB1bmRlZmluZWQ7XHJcbiAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogUmVmZXJlbmNlT3B0aW9uW10pOiB2b2lkO1xyXG4gIGRlbGV0ZShrZXk6IHN0cmluZyk6IHZvaWQ7XHJcbiAgLyoqIEV2ZXJ5IGtleSBjdXJyZW50bHkgaGVsZCDigJQgdXNlZCBmb3IgcHJlZml4IGludmFsaWRhdGlvbiBvZiBvbmUgZW50aXR5LiAqL1xyXG4gIGtleXMoKTogc3RyaW5nW107XHJcbiAgY2xlYXIoKTogdm9pZDtcclxufVxyXG5cclxuLyoqIERlZmF1bHQgaW4tbWVtb3J5IHN0b3JlLiBMaXZlcyBhcyBsb25nIGFzIHRoZSBpbmplY3RvciB0aGF0IGNyZWF0ZWQgaXQuICovXHJcbmV4cG9ydCBjbGFzcyBJbk1lbW9yeUVudGl0eVJlZkNhY2hlU3RvcmUgaW1wbGVtZW50cyBFbnRpdHlSZWZDYWNoZVN0b3JlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZWZlcmVuY2VPcHRpb25bXT4oKTtcclxuXHJcbiAgZ2V0KGtleTogc3RyaW5nKTogUmVmZXJlbmNlT3B0aW9uW10gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwLmdldChrZXkpO1xyXG4gIH1cclxuXHJcbiAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogUmVmZXJlbmNlT3B0aW9uW10pOiB2b2lkIHtcclxuICAgIHRoaXMubWFwLnNldChrZXksIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5tYXAuZGVsZXRlKGtleSk7XHJcbiAgfVxyXG5cclxuICBrZXlzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbLi4udGhpcy5tYXAua2V5cygpXTtcclxuICB9XHJcblxyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYXAuY2xlYXIoKTtcclxuICB9XHJcbn1cclxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZi1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvZW50aXR5LXJlZi1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQkEsOEVBQThFO0FBQzlFLE1BQU0sT0FBTywyQkFBMkI7SUFDckIsR0FBRyxHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO0lBRTVELEdBQUcsQ0FBQyxHQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUF3QjtRQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFXO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlZmVyZW5jZU9wdGlvbiB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcblxuLyoqXG4gKiBCYWNraW5nIHN0b3JlIGZvciBjYWNoZWQgcmVmZXJlbmNlIG9wdGlvbnMuXG4gKlxuICogUGx1Z2dhYmxlIG9uIHB1cnBvc2UuIFRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24ga2VwdCBpdHMgY2FjaGUgaW4gYSBzZXJ2aWNlIGluc3RhbmNlLFxuICogc28gZXZlcnkgZW50aXR5IGxhYmVsIHdhcyByZS1mZXRjaGVkIG9uIGEgYnJvd3NlciByZWZyZXNoIChpc3N1ZSAjMjIgaW4gdGhlIGFyY2hpdGVjdHVyZVxuICogZG9jKS4gQSBjb25zdW1lciB0aGF0IHdhbnRzIHRoZSBjYWNoZSB0byBzdXJ2aXZlIGEgcmVsb2FkIGNhbiBiYWNrIHRoaXMgd2l0aFxuICogc2Vzc2lvblN0b3JhZ2U7IHRoZSBkZWZhdWx0IGtlZXBzIGl0IGluIG1lbW9yeSwgd2hpY2ggaXMgdGhlIHJpZ2h0IGNhbGwgZm9yIGEgbGlicmFyeVxuICogdGhhdCBtdXN0IG5vdCBzaWxlbnRseSBwZXJzaXN0IGEgdGVuYW50J3MgZGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlSZWZDYWNoZVN0b3JlIHtcbiAgZ2V0KGtleTogc3RyaW5nKTogUmVmZXJlbmNlT3B0aW9uW10gfCB1bmRlZmluZWQ7XG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IFJlZmVyZW5jZU9wdGlvbltdKTogdm9pZDtcbiAgZGVsZXRlKGtleTogc3RyaW5nKTogdm9pZDtcbiAgLyoqIEV2ZXJ5IGtleSBjdXJyZW50bHkgaGVsZCDigJQgdXNlZCBmb3IgcHJlZml4IGludmFsaWRhdGlvbiBvZiBvbmUgZW50aXR5LiAqL1xuICBrZXlzKCk6IHN0cmluZ1tdO1xuICBjbGVhcigpOiB2b2lkO1xufVxuXG4vKiogRGVmYXVsdCBpbi1tZW1vcnkgc3RvcmUuIExpdmVzIGFzIGxvbmcgYXMgdGhlIGluamVjdG9yIHRoYXQgY3JlYXRlZCBpdC4gKi9cbmV4cG9ydCBjbGFzcyBJbk1lbW9yeUVudGl0eVJlZkNhY2hlU3RvcmUgaW1wbGVtZW50cyBFbnRpdHlSZWZDYWNoZVN0b3JlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBuZXcgTWFwPHN0cmluZywgUmVmZXJlbmNlT3B0aW9uW10+KCk7XG5cbiAgZ2V0KGtleTogc3RyaW5nKTogUmVmZXJlbmNlT3B0aW9uW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm1hcC5nZXQoa2V5KTtcbiAgfVxuXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IFJlZmVyZW5jZU9wdGlvbltdKTogdm9pZCB7XG4gICAgdGhpcy5tYXAuc2V0KGtleSwgdmFsdWUpO1xuICB9XG5cbiAgZGVsZXRlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5tYXAuZGVsZXRlKGtleSk7XG4gIH1cblxuICBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMubWFwLmtleXMoKV07XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLm1hcC5jbGVhcigpO1xuICB9XG59XG4iXX0=
@@ -3,7 +3,7 @@ import { ENTITY_REF_REGISTRY } from '../tokens/injection-tokens';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
5
5
  * EntityRefRegistryService — resolves entity-ref option loader functions.
6
- * ADR-006: Entity-ref options come ONLY from this registry.
6
+ * Entity-ref options come ONLY from this registry.
7
7
  * Never pass loaders via @Input() on field components.
8
8
  *
9
9
  * Consumers register loaders via provideNgxDynamicEntity({ entityRefs: { clients: () => [...] } }).
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
28
28
  type: Injectable,
29
29
  args: [{ providedIn: 'root' }]
30
30
  }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZi1yZWdpc3RyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9lbnRpdHktcmVmLXJlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRWpFOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2xCLFFBQVEsR0FDdkIsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQWlDLENBQUM7SUFFOUY7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLFNBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxHQUFHLENBQUMsU0FBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO3dHQWRVLHdCQUF3Qjs0R0FBeEIsd0JBQXdCLGNBRFgsTUFBTTs7NEZBQ25CLHdCQUF3QjtrQkFEcEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHR5cGUgeyBFbnRpdHlSZWZlcmVuY2VMb2FkZXIgfSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XHJcbmltcG9ydCB7IEVOVElUWV9SRUZfUkVHSVNUUlkgfSBmcm9tICcuLi90b2tlbnMvaW5qZWN0aW9uLXRva2Vucyc7XHJcblxyXG4vKipcclxuICogRW50aXR5UmVmUmVnaXN0cnlTZXJ2aWNlIOKAlCByZXNvbHZlcyBlbnRpdHktcmVmIG9wdGlvbiBsb2FkZXIgZnVuY3Rpb25zLlxyXG4gKiBBRFItMDA2OiBFbnRpdHktcmVmIG9wdGlvbnMgY29tZSBPTkxZIGZyb20gdGhpcyByZWdpc3RyeS5cclxuICogTmV2ZXIgcGFzcyBsb2FkZXJzIHZpYSBASW5wdXQoKSBvbiBmaWVsZCBjb21wb25lbnRzLlxyXG4gKlxyXG4gKiBDb25zdW1lcnMgcmVnaXN0ZXIgbG9hZGVycyB2aWEgcHJvdmlkZU5neER5bmFtaWNFbnRpdHkoeyBlbnRpdHlSZWZzOiB7IGNsaWVudHM6ICgpID0+IFsuLi5dIH0gfSkuXHJcbiAqIEVudGl0eVJlZkZpZWxkQ29tcG9uZW50IGluamVjdHMgdGhpcyBzZXJ2aWNlIGFuZCBjYWxscyByZXNvbHZlKGZpZWxkLmNvbXBvbmVudCA/PyBmaWVsZC5pZCkuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgRW50aXR5UmVmUmVnaXN0cnlTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID1cclxuICAgIGluamVjdChFTlRJVFlfUkVGX1JFR0lTVFJZLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IG5ldyBNYXA8c3RyaW5nLCBFbnRpdHlSZWZlcmVuY2VMb2FkZXI+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgb3B0aW9uIGxvYWRlciBmb3IgYW4gZW50aXR5IGtleS5cclxuICAgKiBAcmV0dXJucyBUaGUgbG9hZGVyLCBvciBudWxsIGlmIG5vbmUgaXMgcmVnaXN0ZXJlZC5cclxuICAgKi9cclxuICByZXNvbHZlKGVudGl0eUtleTogc3RyaW5nKTogRW50aXR5UmVmZXJlbmNlTG9hZGVyIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQoZW50aXR5S2V5KSA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgaGFzKGVudGl0eUtleTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5oYXMoZW50aXR5S2V5KTtcclxuICB9XHJcbn1cclxuIl19
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZi1yZWdpc3RyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9lbnRpdHktcmVmLXJlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRWpFOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2xCLFFBQVEsR0FDdkIsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQWlDLENBQUM7SUFFOUY7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLFNBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxHQUFHLENBQUMsU0FBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO3dHQWRVLHdCQUF3Qjs0R0FBeEIsd0JBQXdCLGNBRFgsTUFBTTs7NEZBQ25CLHdCQUF3QjtrQkFEcEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgRW50aXR5UmVmZXJlbmNlTG9hZGVyIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgRU5USVRZX1JFRl9SRUdJU1RSWSB9IGZyb20gJy4uL3Rva2Vucy9pbmplY3Rpb24tdG9rZW5zJztcblxuLyoqXG4gKiBFbnRpdHlSZWZSZWdpc3RyeVNlcnZpY2Ug4oCUIHJlc29sdmVzIGVudGl0eS1yZWYgb3B0aW9uIGxvYWRlciBmdW5jdGlvbnMuXG4gKiBFbnRpdHktcmVmIG9wdGlvbnMgY29tZSBPTkxZIGZyb20gdGhpcyByZWdpc3RyeS5cbiAqIE5ldmVyIHBhc3MgbG9hZGVycyB2aWEgQElucHV0KCkgb24gZmllbGQgY29tcG9uZW50cy5cbiAqXG4gKiBDb25zdW1lcnMgcmVnaXN0ZXIgbG9hZGVycyB2aWEgcHJvdmlkZU5neER5bmFtaWNFbnRpdHkoeyBlbnRpdHlSZWZzOiB7IGNsaWVudHM6ICgpID0+IFsuLi5dIH0gfSkuXG4gKiBFbnRpdHlSZWZGaWVsZENvbXBvbmVudCBpbmplY3RzIHRoaXMgc2VydmljZSBhbmQgY2FsbHMgcmVzb2x2ZShmaWVsZC5jb21wb25lbnQgPz8gZmllbGQuaWQpLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEVudGl0eVJlZlJlZ2lzdHJ5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0cnkgPVxuICAgIGluamVjdChFTlRJVFlfUkVGX1JFR0lTVFJZLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IG5ldyBNYXA8c3RyaW5nLCBFbnRpdHlSZWZlcmVuY2VMb2FkZXI+KCk7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb3B0aW9uIGxvYWRlciBmb3IgYW4gZW50aXR5IGtleS5cbiAgICogQHJldHVybnMgVGhlIGxvYWRlciwgb3IgbnVsbCBpZiBub25lIGlzIHJlZ2lzdGVyZWQuXG4gICAqL1xuICByZXNvbHZlKGVudGl0eUtleTogc3RyaW5nKTogRW50aXR5UmVmZXJlbmNlTG9hZGVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuZ2V0KGVudGl0eUtleSkgPz8gbnVsbDtcbiAgfVxuXG4gIGhhcyhlbnRpdHlLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmhhcyhlbnRpdHlLZXkpO1xuICB9XG59XG4iXX0=
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
24
24
  type: Injectable,
25
25
  args: [{ providedIn: 'root' }]
26
26
  }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZi1zZWxlY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvZW50aXR5LXJlZi1zZWxlY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBUy9COzs7Ozs7Ozs7R0FTRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFDbkIsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO0lBRXBELFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWxELElBQUksQ0FBQyxPQUFlLEVBQUUsTUFBOEI7UUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO3dHQVBVLHlCQUF5Qjs0R0FBekIseUJBQXlCLGNBRFosTUFBTTs7NEZBQ25CLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHR5cGUgeyBSZWZlcmVuY2VPcHRpb24gfSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVJlZlNlbGVjdGlvbiB7XHJcbiAgZmllbGRJZDogc3RyaW5nO1xyXG4gIC8qKiBUaGUgY2hvc2VuIG9wdGlvbiwgb3IgYG51bGxgIHdoZW4gdGhlIHNlbGVjdGlvbiB3YXMgY2xlYXJlZC4gKi9cclxuICBvcHRpb246IFJlZmVyZW5jZU9wdGlvbiB8IG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFbnRpdHlSZWZTZWxlY3Rpb25TZXJ2aWNlIOKAlCB0aGUgY2hhbm5lbCBhbiBlbnRpdHktcmVmIGZpZWxkIHVzZXMgdG8gcHVibGlzaCAqd2hpY2ggcmVjb3JkKlxyXG4gKiB0aGUgdXNlciBwaWNrZWQsIHNvIHRoZSBvd25pbmcgZm9ybSBjYW4gcnVuIGBhdXRvUGF0Y2hgIGFnYWluc3QgaXQuXHJcbiAqXHJcbiAqIFRoZSBjb250cm9sIHZhbHVlIGFsb25lIGlzIG5vdCBlbm91Z2g6IGBhdXRvUGF0Y2hgIGNvcGllcyBmaWVsZHMgb3V0IG9mIHRoZSBzZWxlY3RlZFxyXG4gKiByZWNvcmQsIHdoaWNoIG9ubHkgdGhlIGZpZWxkIGNvbXBvbmVudCBoYXMgYWZ0ZXIgbG9hZGluZyBpdHMgb3B0aW9ucy5cclxuICpcclxuICogUHJvdmlkZWQgYXQgYER5bmFtaWNGb3JtQ29tcG9uZW50YCBsZXZlbCBzbyBlYWNoIGZvcm0gaW5zdGFuY2UgZ2V0cyBpdHMgb3duIGNoYW5uZWw7XHJcbiAqIHRoZSBgcm9vdGAgZmFsbGJhY2sga2VlcHMgc3RhbmRhbG9uZSBmaWVsZCBjb21wb25lbnRzIGluamVjdGFibGUgaW4gaXNvbGF0aW9uLlxyXG4gKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEVudGl0eVJlZlNlbGVjdGlvblNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3ViamVjdCA9IG5ldyBTdWJqZWN0PEVudGl0eVJlZlNlbGVjdGlvbj4oKTtcclxuXHJcbiAgcmVhZG9ubHkgc2VsZWN0aW9uJCA9IHRoaXMuc3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgZW1pdChmaWVsZElkOiBzdHJpbmcsIG9wdGlvbjogUmVmZXJlbmNlT3B0aW9uIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJqZWN0Lm5leHQoeyBmaWVsZElkLCBvcHRpb24gfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZi1zZWxlY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvZW50aXR5LXJlZi1zZWxlY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBUy9COzs7Ozs7Ozs7R0FTRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFDbkIsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO0lBRXBELFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWxELElBQUksQ0FBQyxPQUFlLEVBQUUsTUFBOEI7UUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO3dHQVBVLHlCQUF5Qjs0R0FBekIseUJBQXlCLGNBRFosTUFBTTs7NEZBQ25CLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IFJlZmVyZW5jZU9wdGlvbiB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlSZWZTZWxlY3Rpb24ge1xuICBmaWVsZElkOiBzdHJpbmc7XG4gIC8qKiBUaGUgY2hvc2VuIG9wdGlvbiwgb3IgYG51bGxgIHdoZW4gdGhlIHNlbGVjdGlvbiB3YXMgY2xlYXJlZC4gKi9cbiAgb3B0aW9uOiBSZWZlcmVuY2VPcHRpb24gfCBudWxsO1xufVxuXG4vKipcbiAqIEVudGl0eVJlZlNlbGVjdGlvblNlcnZpY2Ug4oCUIHRoZSBjaGFubmVsIGFuIGVudGl0eS1yZWYgZmllbGQgdXNlcyB0byBwdWJsaXNoICp3aGljaCByZWNvcmQqXG4gKiB0aGUgdXNlciBwaWNrZWQsIHNvIHRoZSBvd25pbmcgZm9ybSBjYW4gcnVuIGBhdXRvUGF0Y2hgIGFnYWluc3QgaXQuXG4gKlxuICogVGhlIGNvbnRyb2wgdmFsdWUgYWxvbmUgaXMgbm90IGVub3VnaDogYGF1dG9QYXRjaGAgY29waWVzIGZpZWxkcyBvdXQgb2YgdGhlIHNlbGVjdGVkXG4gKiByZWNvcmQsIHdoaWNoIG9ubHkgdGhlIGZpZWxkIGNvbXBvbmVudCBoYXMgYWZ0ZXIgbG9hZGluZyBpdHMgb3B0aW9ucy5cbiAqXG4gKiBQcm92aWRlZCBhdCBgRHluYW1pY0Zvcm1Db21wb25lbnRgIGxldmVsIHNvIGVhY2ggZm9ybSBpbnN0YW5jZSBnZXRzIGl0cyBvd24gY2hhbm5lbDtcbiAqIHRoZSBgcm9vdGAgZmFsbGJhY2sga2VlcHMgc3RhbmRhbG9uZSBmaWVsZCBjb21wb25lbnRzIGluamVjdGFibGUgaW4gaXNvbGF0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEVudGl0eVJlZlNlbGVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YmplY3QgPSBuZXcgU3ViamVjdDxFbnRpdHlSZWZTZWxlY3Rpb24+KCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0aW9uJCA9IHRoaXMuc3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBlbWl0KGZpZWxkSWQ6IHN0cmluZywgb3B0aW9uOiBSZWZlcmVuY2VPcHRpb24gfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zdWJqZWN0Lm5leHQoeyBmaWVsZElkLCBvcHRpb24gfSk7XG4gIH1cbn1cbiJdfQ==
@@ -165,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
165
165
  type: Injectable,
166
166
  args: [{ providedIn: 'root' }]
167
167
  }] });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZmVyZW5jZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9lbnRpdHktcmVmZXJlbmNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTbkQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixXQUFXLEdBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFekUsZ0dBQWdHO0FBQ2hHLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztBQUV0Qjs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsTUFBTSxPQUFPLHNCQUFzQjtJQUNoQixRQUFRLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRXhELGtFQUFrRTtJQUNqRCxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUM7SUFDMUUsdURBQXVEO0lBQ3RDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUVwRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQWlCLEVBQUUsTUFBOEIsRUFBRTtRQUM1RCxNQUFNLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUU7WUFDNUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1lBQ3BCLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtZQUNoQyxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7U0FDN0Is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QUFFLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDakQsd0VBQXdFO29CQUN4RSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN2QywyRUFBMkU7b0JBQzNFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUMxQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBb0MsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxjQUFjLENBQUMsS0FBYztRQUNuQyxPQUFPLENBQ0wsT0FBTyxLQUFLLEtBQUssUUFBUTtZQUN6QixLQUFLLEtBQUssSUFBSTtZQUNkLE9BQVEsS0FBeUMsQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUMzRSxDQUFDO0lBQ0osQ0FBQztJQUVELHlGQUF5RjtJQUN6RixPQUFPLENBQUMsQ0FBVSxFQUFFLENBQVUsRUFBRSxJQUFJLEdBQUcsSUFBSTtRQUN6QyxPQUFPLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7d0dBaEtVLHNCQUFzQjs0R0FBdEIsc0JBQXNCLGNBRFQsTUFBTTs7NEZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHR5cGUge1xyXG4gIEVudGl0eVJlZmVyZW5jZUxvYWRlcixcclxuICBSYXdSZWZlcmVuY2VJdGVtLFxyXG4gIFJlZmVyZW5jZUxvYWRlckNvbnRleHQsXHJcbiAgUmVmZXJlbmNlTG9hZGVyUmVzdWx0LFxyXG4gIFJlZmVyZW5jZU9wdGlvbixcclxuICBTdWJzY3JpYmFibGUsXHJcbn0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIGJ1aWxkUmVmZXJlbmNlQ2FjaGVLZXksXHJcbiAgZW50aXR5S2V5RnJvbUNhY2hlS2V5LFxyXG4gIG5vcm1hbGl6ZVJlZmVyZW5jZU9wdGlvbnMsXHJcbiAgcmVzb2x2ZUxhYmVsLFxyXG4gIHZhbHVlc01hdGNoLFxyXG59IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcclxuaW1wb3J0IHsgRU5USVRZX1JFRl9DQUNIRV9TVE9SRSB9IGZyb20gJy4uL3Rva2Vucy9pbmplY3Rpb24tdG9rZW5zJztcclxuaW1wb3J0IHsgRW50aXR5UmVmUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktcmVmLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5cclxuLyoqIExhYmVsLWNhY2hlIGZpZWxkIHNlcGFyYXRvci4gS2VwdCBvdXQgb2YgdGVtcGxhdGUgbGl0ZXJhbHMgc28gaXQgc3RheXMgdmlzaWJsZSBpbiBzb3VyY2UuICovXHJcbmNvbnN0IExBQkVMX1NFUCA9ICd8JztcclxuXHJcbi8qKlxyXG4gKiBFbnRpdHlSZWZlcmVuY2VTZXJ2aWNlIOKAlCB0aGUgY2FjaGUgaW4gZnJvbnQgb2YgY29uc3VtZXItcmVnaXN0ZXJlZCBvcHRpb24gbG9hZGVycy5cclxuICpcclxuICogVGhyZWUgbGF5ZXJzLCBtYXRjaGluZyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uOlxyXG4gKiAgMS4gKipvcHRpb25zKiog4oCUIHJlc29sdmVkIGBSZWZlcmVuY2VPcHRpb25bXWAgcGVyIChlbnRpdHksIGxhbmcsIGRpc3BsYXlGaWVsZHMsIGZpbHRlcnMpLlxyXG4gKiAgMi4gKippbi1mbGlnaHQqKiDigJQgdGhlIHBlbmRpbmcgUHJvbWlzZSwgc28gTiBmaWVsZHMgcmVmZXJlbmNpbmcgb25lIGVudGl0eSB0cmlnZ2VyIG9uZVxyXG4gKiAgICAgbG9hZCByYXRoZXIgdGhhbiBOLiBUaGlzIGlzIHRoZSBsYXllciB0aGF0IGFjdHVhbGx5IHJlbW92ZXMgZHVwbGljYXRlIEhUVFAgY2FsbHM7XHJcbiAqICAgICBhbiBvcHRpb25zIGNhY2hlIGFsb25lIGRvZXMgbm90aGluZyBmb3IgY29uY3VycmVudCBmaXJzdCBsb2Fkcy5cclxuICogIDMuICoqbGFiZWxzKiog4oCUIHN5bmNocm9ub3VzIHZhbHVlIOKGkiB0ZXh0LCBmb3IgcmVuZGVyaW5nIGEgc3RvcmVkIHJlZmVyZW5jZSB3aXRob3V0XHJcbiAqICAgICB3YWl0aW5nIG9uIGEgbG9hZC5cclxuICpcclxuICogSW52YWxpZGF0aW9uIGlzIHBlciBlbnRpdHksIG5vdCBnbG9iYWwuIFRoZSByZWZlcmVuY2UgY291bGQgb25seSBgY2xlYXJDYWNoZSgpYCBldmVyeXRoaW5nXHJcbiAqIChpc3N1ZSAjMTYpLCBzbyBzYXZpbmcgb25lIHJlY29yZCByZS1mZXRjaGVkIGV2ZXJ5IGVudGl0eSdzIG9wdGlvbnMuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgRW50aXR5UmVmZXJlbmNlU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWdpc3RyeSA9IGluamVjdChFbnRpdHlSZWZSZWdpc3RyeVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoRU5USVRZX1JFRl9DQUNIRV9TVE9SRSk7XHJcblxyXG4gIC8qKiBMb2FkcyBpbiBwcm9ncmVzcywga2V5ZWQgdGhlIHNhbWUgd2F5IGFzIHRoZSBvcHRpb25zIGNhY2hlLiAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5GbGlnaHQgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxSZWZlcmVuY2VPcHRpb25bXT4+KCk7XHJcbiAgLyoqIGBlbnRpdHlLZXl8bGFuZ3xjYW5vbmljYWxWYWx1ZWAgLT4gZGlzcGxheSB0ZXh0LiAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGFiZWxzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9ucyBmb3IgYW4gZW50aXR5LCBmcm9tIGNhY2hlIHdoZW4gcHJlc2VudC5cclxuICAgKiBDb25jdXJyZW50IGNhbGxlcnMgd2l0aCB0aGUgc2FtZSBrZXkgc2hhcmUgb25lIGxvYWQuXHJcbiAgICovXHJcbiAgYXN5bmMgbG9hZChlbnRpdHlLZXk6IHN0cmluZywgY3R4OiBSZWZlcmVuY2VMb2FkZXJDb250ZXh0ID0ge30pOiBQcm9taXNlPFJlZmVyZW5jZU9wdGlvbltdPiB7XHJcbiAgICBjb25zdCBrZXkgPSBidWlsZFJlZmVyZW5jZUNhY2hlS2V5KGVudGl0eUtleSwge1xyXG4gICAgICBsYW5nOiBjdHgubGFuZyxcclxuICAgICAgZmlsdGVyczogY3R4LmZpbHRlcnMsXHJcbiAgICAgIGRpc3BsYXlGaWVsZHM6IGN0eC5kaXNwbGF5RmllbGRzLFxyXG4gICAgICBwYXJlbnRWYWx1ZTogY3R4LnBhcmVudFZhbHVlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5zdG9yZS5nZXQoa2V5KTtcclxuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XHJcblxyXG4gICAgY29uc3QgcGVuZGluZyA9IHRoaXMuaW5GbGlnaHQuZ2V0KGtleSk7XHJcbiAgICBpZiAocGVuZGluZykgcmV0dXJuIHBlbmRpbmc7XHJcblxyXG4gICAgY29uc3QgbG9hZGVyID0gdGhpcy5yZWdpc3RyeS5yZXNvbHZlKGVudGl0eUtleSk7XHJcbiAgICBpZiAoIWxvYWRlcikgcmV0dXJuIFtdO1xyXG5cclxuICAgIGNvbnN0IGxvYWQgPSB0aGlzLmludm9rZShsb2FkZXIsIGN0eClcclxuICAgICAgLnRoZW4ocmF3ID0+IHtcclxuICAgICAgICAvLyBkaXNwbGF5RmllbGRzIGRyaXZlIGxhYmVsIGJ1aWxkaW5nLCB3aGljaCBpcyB3aHkgdGhleSBhcmUgcGFydCBvZiB0aGUgY2FjaGUga2V5LlxyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBub3JtYWxpemVSZWZlcmVuY2VPcHRpb25zKFxyXG4gICAgICAgICAgcmF3IGFzIFJhd1JlZmVyZW5jZUl0ZW1bXSxcclxuICAgICAgICAgIGN0eC5kaXNwbGF5RmllbGRzID8geyBlbmFibGVkOiB0cnVlLCBkaXNwbGF5RmllbGRzOiBjdHguZGlzcGxheUZpZWxkcyB9IDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgY3R4LmxhbmcgPz8gJ2VuJyxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc3RvcmUuc2V0KGtleSwgb3B0aW9ucyk7XHJcbiAgICAgICAgdGhpcy5yZW1lbWJlckxhYmVscyhlbnRpdHlLZXksIGN0eC5sYW5nID8/ICdlbicsIG9wdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBBIGZhaWxlZCBsb2FkIHJlc29sdmVzIHRvIFtdIGZvciB0aGUgY2FsbGVyIGJ1dCBpcyBuZXZlciB3cml0dGVuIHRvIHRoZSBzdG9yZSwgc28gYVxyXG4gICAgLy8gdHJhbnNpZW50IGVycm9yIGlzIHJldHJpZWQgb24gdGhlIG5leHQgY2FsbCBpbnN0ZWFkIG9mIHBvaXNvbmluZyB0aGUgY2FjaGUuIE9ubHkgdGhlXHJcbiAgICAvLyBgLnRoZW5gIGFib3ZlIGNhY2hlcywgYW5kIGEgcmVqZWN0aW9uIHNraXBzIGl0LlxyXG4gICAgY29uc3QgZ3VhcmRlZCA9IGxvYWRcclxuICAgICAgLmNhdGNoKCgpID0+IFtdIGFzIFJlZmVyZW5jZU9wdGlvbltdKVxyXG4gICAgICAuZmluYWxseSgoKSA9PiB0aGlzLmluRmxpZ2h0LmRlbGV0ZShrZXkpKTtcclxuXHJcbiAgICB0aGlzLmluRmxpZ2h0LnNldChrZXksIGd1YXJkZWQpO1xyXG4gICAgcmV0dXJuIGd1YXJkZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogQ2FjaGVkIG9wdGlvbnMgd2l0aG91dCB0cmlnZ2VyaW5nIGEgbG9hZC4gYHVuZGVmaW5lZGAgd2hlbiBub3QgY2FjaGVkLiAqL1xyXG4gIHBlZWsoZW50aXR5S2V5OiBzdHJpbmcsIGN0eDogUmVmZXJlbmNlTG9hZGVyQ29udGV4dCA9IHt9KTogUmVmZXJlbmNlT3B0aW9uW10gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0KFxyXG4gICAgICBidWlsZFJlZmVyZW5jZUNhY2hlS2V5KGVudGl0eUtleSwge1xyXG4gICAgICAgIGxhbmc6IGN0eC5sYW5nLFxyXG4gICAgICAgIGZpbHRlcnM6IGN0eC5maWx0ZXJzLFxyXG4gICAgICAgIGRpc3BsYXlGaWVsZHM6IGN0eC5kaXNwbGF5RmllbGRzLFxyXG4gICAgICAgIHBhcmVudFZhbHVlOiBjdHgucGFyZW50VmFsdWUsXHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgdGV4dCBmb3IgYSBzdG9yZWQgcmVmZXJlbmNlIHZhbHVlLCBzeW5jaHJvbm91c2x5LlxyXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgd2hlbiB0aGUgZW50aXR5J3Mgb3B0aW9ucyBoYXZlIG5ldmVyIGJlZW4gbG9hZGVkLlxyXG4gICAqL1xyXG4gIGxhYmVsRm9yKGVudGl0eUtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgbGFuZyA9ICdlbicpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMubGFiZWxzLmdldCh0aGlzLmxhYmVsS2V5KGVudGl0eUtleSwgbGFuZywgdmFsdWUpKTtcclxuICB9XHJcblxyXG4gIC8qKiBEcm9wIGV2ZXJ5dGhpbmcgY2FjaGVkIGZvciBvbmUgZW50aXR5LCBsZWF2aW5nIG90aGVyIGVudGl0aWVzIGludGFjdC4gKi9cclxuICBpbnZhbGlkYXRlKGVudGl0eUtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLnN0b3JlLmtleXMoKSkge1xyXG4gICAgICBpZiAoZW50aXR5S2V5RnJvbUNhY2hlS2V5KGtleSkgPT09IGVudGl0eUtleSkgdGhpcy5zdG9yZS5kZWxldGUoa2V5KTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IG9mIFsuLi50aGlzLmluRmxpZ2h0LmtleXMoKV0pIHtcclxuICAgICAgaWYgKGVudGl0eUtleUZyb21DYWNoZUtleShrZXkpID09PSBlbnRpdHlLZXkpIHRoaXMuaW5GbGlnaHQuZGVsZXRlKGtleSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcmVmaXggPSBgJHtlbnRpdHlLZXl9JHtMQUJFTF9TRVB9YDtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIFsuLi50aGlzLmxhYmVscy5rZXlzKCldKSB7XHJcbiAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChwcmVmaXgpKSB0aGlzLmxhYmVscy5kZWxldGUoa2V5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5jbGVhcigpO1xyXG4gICAgdGhpcy5pbkZsaWdodC5jbGVhcigpO1xyXG4gICAgdGhpcy5sYWJlbHMuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtZW1iZXJMYWJlbHMoZW50aXR5S2V5OiBzdHJpbmcsIGxhbmc6IHN0cmluZywgb3B0aW9uczogUmVmZXJlbmNlT3B0aW9uW10pOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcclxuICAgICAgdGhpcy5sYWJlbHMuc2V0KHRoaXMubGFiZWxLZXkoZW50aXR5S2V5LCBsYW5nLCBvcHRpb24udmFsdWUpLCBvcHRpb24ubGFiZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIExhYmVsLWNhY2hlIGtleS4gQW4gb2JqZWN0IHZhbHVlIGNvbGxhcHNlcyB0byBpdHMgcmVzb2x2ZWQgdGV4dCBmb3IgdGhlIGFjdGl2ZSBsYW5ndWFnZS4gKi9cclxuICBwcml2YXRlIGxhYmVsS2V5KGVudGl0eUtleTogc3RyaW5nLCBsYW5nOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGNhbm9uaWNhbCA9XHJcbiAgICAgIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcclxuICAgICAgICA/IHJlc29sdmVMYWJlbCh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBsYW5nKVxyXG4gICAgICAgIDogU3RyaW5nKHZhbHVlID8/ICcnKTtcclxuICAgIHJldHVybiBbZW50aXR5S2V5LCBsYW5nLCBjYW5vbmljYWxdLmpvaW4oTEFCRUxfU0VQKTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgOKUgCBMb2FkZXIgcmVzdWx0IGNvZXJjaW9uIChhcnJheSB8IFByb21pc2UgfCBPYnNlcnZhYmxlKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgcHJpdmF0ZSBpbnZva2UoXHJcbiAgICBsb2FkZXI6IEVudGl0eVJlZmVyZW5jZUxvYWRlcixcclxuICAgIGN0eDogUmVmZXJlbmNlTG9hZGVyQ29udGV4dCxcclxuICApOiBQcm9taXNlPFJlZmVyZW5jZU9wdGlvbltdPiB7XHJcbiAgICBsZXQgcmVzdWx0OiBSZWZlcmVuY2VMb2FkZXJSZXN1bHQ7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXN1bHQgPSBsb2FkZXIoY3R4KTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAvLyBSZWplY3QgcmF0aGVyIHRoYW4gcmVzb2x2ZSBlbXB0eTogYGxvYWRgIG11c3QgYmUgYWJsZSB0byB0ZWxsIGZhaWx1cmUgZnJvbVxyXG4gICAgICAvLyBcIm5vIG1hdGNoZXNcIiwgb3IgaXQgd291bGQgY2FjaGUgdGhlIGZhaWx1cmUuXHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvUHJvbWlzZShyZXN1bHQ6IFJlZmVyZW5jZUxvYWRlclJlc3VsdCk6IFByb21pc2U8UmVmZXJlbmNlT3B0aW9uW10+IHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcclxuICAgIGlmICh0aGlzLmlzU3Vic2NyaWJhYmxlKHJlc3VsdCkpIHtcclxuICAgICAgLy8gRmlyc3QgZW1pc3Npb24gd2lucywgc28gYW4gT2JzZXJ2YWJsZSB0aGF0IHN0YXlzIG9wZW4gc3RpbGwgcmVzb2x2ZXMgdGhlIGxvYWQuXHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxSZWZlcmVuY2VPcHRpb25bXT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGxldCBzZXR0bGVkID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3Qgc2V0dGxlID0gKGZuOiAoKSA9PiB2b2lkKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgc2V0dGxlZCA9IHRydWU7XHJcbiAgICAgICAgICBmbigpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmVzdWx0LnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiB2YWx1ZSA9PiBzZXR0bGUoKCkgPT4gcmVzb2x2ZSh2YWx1ZSA/PyBbXSkpLFxyXG4gICAgICAgICAgLy8gQW4gZXJyb3Jpbmcgc3RyZWFtIGlzIGEgZmFpbGVkIGxvYWQsIG5vdCBhbiBlbXB0eSBvbmUg4oCUIHNlZSBgaW52b2tlYC5cclxuICAgICAgICAgIGVycm9yOiBlcnIgPT4gc2V0dGxlKCgpID0+IHJlamVjdChlcnIpKSxcclxuICAgICAgICAgIC8vIENvbXBsZXRpbmcgd2l0aG91dCBlbWl0dGluZyBpcyBhIGxlZ2l0aW1hdGUgZW1wdHkgcmVzdWx0LCBhbmQgaXMgY2FjaGVkLlxyXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHNldHRsZSgoKSA9PiByZXNvbHZlKFtdKSksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQgYXMgUHJvbWlzZTxSZWZlcmVuY2VPcHRpb25bXT4pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1N1YnNjcmliYWJsZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFN1YnNjcmliYWJsZTxSZWZlcmVuY2VPcHRpb25bXT4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxyXG4gICAgICB2YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICB0eXBlb2YgKHZhbHVlIGFzIFN1YnNjcmliYWJsZTxSZWZlcmVuY2VPcHRpb25bXT4pLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKiBFeHBvc2VkIGZvciBjYXNjYWRlIGZpbHRlcmluZywgd2hpY2ggbWF0Y2hlcyBhIHBhcmVudCB2YWx1ZSBhZ2FpbnN0IG9wdGlvbiB2YWx1ZXMuICovXHJcbiAgbWF0Y2hlcyhhOiB1bmtub3duLCBiOiB1bmtub3duLCBsYW5nID0gJ2VuJyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlc01hdGNoKGEsIGIsIGxhbmcpO1xyXG4gIH1cclxufVxyXG4iXX0=
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZmVyZW5jZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9lbnRpdHktcmVmZXJlbmNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTbkQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixXQUFXLEdBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFekUsZ0dBQWdHO0FBQ2hHLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztBQUV0Qjs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsTUFBTSxPQUFPLHNCQUFzQjtJQUNoQixRQUFRLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRXhELGtFQUFrRTtJQUNqRCxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUM7SUFDMUUsdURBQXVEO0lBQ3RDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUVwRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQWlCLEVBQUUsTUFBOEIsRUFBRTtRQUM1RCxNQUFNLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUU7WUFDNUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1lBQ3BCLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtZQUNoQyxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7U0FDN0Is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QUFFLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDakQsd0VBQXdFO29CQUN4RSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN2QywyRUFBMkU7b0JBQzNFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUMxQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBb0MsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxjQUFjLENBQUMsS0FBYztRQUNuQyxPQUFPLENBQ0wsT0FBTyxLQUFLLEtBQUssUUFBUTtZQUN6QixLQUFLLEtBQUssSUFBSTtZQUNkLE9BQVEsS0FBeUMsQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUMzRSxDQUFDO0lBQ0osQ0FBQztJQUVELHlGQUF5RjtJQUN6RixPQUFPLENBQUMsQ0FBVSxFQUFFLENBQVUsRUFBRSxJQUFJLEdBQUcsSUFBSTtRQUN6QyxPQUFPLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7d0dBaEtVLHNCQUFzQjs0R0FBdEIsc0JBQXNCLGNBRFQsTUFBTTs7NEZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtcbiAgRW50aXR5UmVmZXJlbmNlTG9hZGVyLFxuICBSYXdSZWZlcmVuY2VJdGVtLFxuICBSZWZlcmVuY2VMb2FkZXJDb250ZXh0LFxuICBSZWZlcmVuY2VMb2FkZXJSZXN1bHQsXG4gIFJlZmVyZW5jZU9wdGlvbixcbiAgU3Vic2NyaWJhYmxlLFxufSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XG5pbXBvcnQge1xuICBidWlsZFJlZmVyZW5jZUNhY2hlS2V5LFxuICBlbnRpdHlLZXlGcm9tQ2FjaGVLZXksXG4gIG5vcm1hbGl6ZVJlZmVyZW5jZU9wdGlvbnMsXG4gIHJlc29sdmVMYWJlbCxcbiAgdmFsdWVzTWF0Y2gsXG59IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcbmltcG9ydCB7IEVOVElUWV9SRUZfQ0FDSEVfU1RPUkUgfSBmcm9tICcuLi90b2tlbnMvaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBFbnRpdHlSZWZSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL2VudGl0eS1yZWYtcmVnaXN0cnkuc2VydmljZSc7XG5cbi8qKiBMYWJlbC1jYWNoZSBmaWVsZCBzZXBhcmF0b3IuIEtlcHQgb3V0IG9mIHRlbXBsYXRlIGxpdGVyYWxzIHNvIGl0IHN0YXlzIHZpc2libGUgaW4gc291cmNlLiAqL1xuY29uc3QgTEFCRUxfU0VQID0gJ3wnO1xuXG4vKipcbiAqIEVudGl0eVJlZmVyZW5jZVNlcnZpY2Ug4oCUIHRoZSBjYWNoZSBpbiBmcm9udCBvZiBjb25zdW1lci1yZWdpc3RlcmVkIG9wdGlvbiBsb2FkZXJzLlxuICpcbiAqIFRocmVlIGxheWVycywgbWF0Y2hpbmcgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbjpcbiAqICAxLiAqKm9wdGlvbnMqKiDigJQgcmVzb2x2ZWQgYFJlZmVyZW5jZU9wdGlvbltdYCBwZXIgKGVudGl0eSwgbGFuZywgZGlzcGxheUZpZWxkcywgZmlsdGVycykuXG4gKiAgMi4gKippbi1mbGlnaHQqKiDigJQgdGhlIHBlbmRpbmcgUHJvbWlzZSwgc28gTiBmaWVsZHMgcmVmZXJlbmNpbmcgb25lIGVudGl0eSB0cmlnZ2VyIG9uZVxuICogICAgIGxvYWQgcmF0aGVyIHRoYW4gTi4gVGhpcyBpcyB0aGUgbGF5ZXIgdGhhdCBhY3R1YWxseSByZW1vdmVzIGR1cGxpY2F0ZSBIVFRQIGNhbGxzO1xuICogICAgIGFuIG9wdGlvbnMgY2FjaGUgYWxvbmUgZG9lcyBub3RoaW5nIGZvciBjb25jdXJyZW50IGZpcnN0IGxvYWRzLlxuICogIDMuICoqbGFiZWxzKiog4oCUIHN5bmNocm9ub3VzIHZhbHVlIOKGkiB0ZXh0LCBmb3IgcmVuZGVyaW5nIGEgc3RvcmVkIHJlZmVyZW5jZSB3aXRob3V0XG4gKiAgICAgd2FpdGluZyBvbiBhIGxvYWQuXG4gKlxuICogSW52YWxpZGF0aW9uIGlzIHBlciBlbnRpdHksIG5vdCBnbG9iYWwuIFRoZSByZWZlcmVuY2UgY291bGQgb25seSBgY2xlYXJDYWNoZSgpYCBldmVyeXRoaW5nXG4gKiAoaXNzdWUgIzE2KSwgc28gc2F2aW5nIG9uZSByZWNvcmQgcmUtZmV0Y2hlZCBldmVyeSBlbnRpdHkncyBvcHRpb25zLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEVudGl0eVJlZmVyZW5jZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID0gaW5qZWN0KEVudGl0eVJlZlJlZ2lzdHJ5U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoRU5USVRZX1JFRl9DQUNIRV9TVE9SRSk7XG5cbiAgLyoqIExvYWRzIGluIHByb2dyZXNzLCBrZXllZCB0aGUgc2FtZSB3YXkgYXMgdGhlIG9wdGlvbnMgY2FjaGUuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5GbGlnaHQgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxSZWZlcmVuY2VPcHRpb25bXT4+KCk7XG4gIC8qKiBgZW50aXR5S2V5fGxhbmd8Y2Fub25pY2FsVmFsdWVgIC0+IGRpc3BsYXkgdGV4dC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBsYWJlbHMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBhbiBlbnRpdHksIGZyb20gY2FjaGUgd2hlbiBwcmVzZW50LlxuICAgKiBDb25jdXJyZW50IGNhbGxlcnMgd2l0aCB0aGUgc2FtZSBrZXkgc2hhcmUgb25lIGxvYWQuXG4gICAqL1xuICBhc3luYyBsb2FkKGVudGl0eUtleTogc3RyaW5nLCBjdHg6IFJlZmVyZW5jZUxvYWRlckNvbnRleHQgPSB7fSk6IFByb21pc2U8UmVmZXJlbmNlT3B0aW9uW10+IHtcbiAgICBjb25zdCBrZXkgPSBidWlsZFJlZmVyZW5jZUNhY2hlS2V5KGVudGl0eUtleSwge1xuICAgICAgbGFuZzogY3R4LmxhbmcsXG4gICAgICBmaWx0ZXJzOiBjdHguZmlsdGVycyxcbiAgICAgIGRpc3BsYXlGaWVsZHM6IGN0eC5kaXNwbGF5RmllbGRzLFxuICAgICAgcGFyZW50VmFsdWU6IGN0eC5wYXJlbnRWYWx1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuc3RvcmUuZ2V0KGtleSk7XG4gICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcblxuICAgIGNvbnN0IHBlbmRpbmcgPSB0aGlzLmluRmxpZ2h0LmdldChrZXkpO1xuICAgIGlmIChwZW5kaW5nKSByZXR1cm4gcGVuZGluZztcblxuICAgIGNvbnN0IGxvYWRlciA9IHRoaXMucmVnaXN0cnkucmVzb2x2ZShlbnRpdHlLZXkpO1xuICAgIGlmICghbG9hZGVyKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBsb2FkID0gdGhpcy5pbnZva2UobG9hZGVyLCBjdHgpXG4gICAgICAudGhlbihyYXcgPT4ge1xuICAgICAgICAvLyBkaXNwbGF5RmllbGRzIGRyaXZlIGxhYmVsIGJ1aWxkaW5nLCB3aGljaCBpcyB3aHkgdGhleSBhcmUgcGFydCBvZiB0aGUgY2FjaGUga2V5LlxuICAgICAgICBjb25zdCBvcHRpb25zID0gbm9ybWFsaXplUmVmZXJlbmNlT3B0aW9ucyhcbiAgICAgICAgICByYXcgYXMgUmF3UmVmZXJlbmNlSXRlbVtdLFxuICAgICAgICAgIGN0eC5kaXNwbGF5RmllbGRzID8geyBlbmFibGVkOiB0cnVlLCBkaXNwbGF5RmllbGRzOiBjdHguZGlzcGxheUZpZWxkcyB9IDogdW5kZWZpbmVkLFxuICAgICAgICAgIGN0eC5sYW5nID8/ICdlbicsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3RvcmUuc2V0KGtleSwgb3B0aW9ucyk7XG4gICAgICAgIHRoaXMucmVtZW1iZXJMYWJlbHMoZW50aXR5S2V5LCBjdHgubGFuZyA/PyAnZW4nLCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgICB9KTtcblxuICAgIC8vIEEgZmFpbGVkIGxvYWQgcmVzb2x2ZXMgdG8gW10gZm9yIHRoZSBjYWxsZXIgYnV0IGlzIG5ldmVyIHdyaXR0ZW4gdG8gdGhlIHN0b3JlLCBzbyBhXG4gICAgLy8gdHJhbnNpZW50IGVycm9yIGlzIHJldHJpZWQgb24gdGhlIG5leHQgY2FsbCBpbnN0ZWFkIG9mIHBvaXNvbmluZyB0aGUgY2FjaGUuIE9ubHkgdGhlXG4gICAgLy8gYC50aGVuYCBhYm92ZSBjYWNoZXMsIGFuZCBhIHJlamVjdGlvbiBza2lwcyBpdC5cbiAgICBjb25zdCBndWFyZGVkID0gbG9hZFxuICAgICAgLmNhdGNoKCgpID0+IFtdIGFzIFJlZmVyZW5jZU9wdGlvbltdKVxuICAgICAgLmZpbmFsbHkoKCkgPT4gdGhpcy5pbkZsaWdodC5kZWxldGUoa2V5KSk7XG5cbiAgICB0aGlzLmluRmxpZ2h0LnNldChrZXksIGd1YXJkZWQpO1xuICAgIHJldHVybiBndWFyZGVkO1xuICB9XG5cbiAgLyoqIENhY2hlZCBvcHRpb25zIHdpdGhvdXQgdHJpZ2dlcmluZyBhIGxvYWQuIGB1bmRlZmluZWRgIHdoZW4gbm90IGNhY2hlZC4gKi9cbiAgcGVlayhlbnRpdHlLZXk6IHN0cmluZywgY3R4OiBSZWZlcmVuY2VMb2FkZXJDb250ZXh0ID0ge30pOiBSZWZlcmVuY2VPcHRpb25bXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0KFxuICAgICAgYnVpbGRSZWZlcmVuY2VDYWNoZUtleShlbnRpdHlLZXksIHtcbiAgICAgICAgbGFuZzogY3R4LmxhbmcsXG4gICAgICAgIGZpbHRlcnM6IGN0eC5maWx0ZXJzLFxuICAgICAgICBkaXNwbGF5RmllbGRzOiBjdHguZGlzcGxheUZpZWxkcyxcbiAgICAgICAgcGFyZW50VmFsdWU6IGN0eC5wYXJlbnRWYWx1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheSB0ZXh0IGZvciBhIHN0b3JlZCByZWZlcmVuY2UgdmFsdWUsIHN5bmNocm9ub3VzbHkuXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgd2hlbiB0aGUgZW50aXR5J3Mgb3B0aW9ucyBoYXZlIG5ldmVyIGJlZW4gbG9hZGVkLlxuICAgKi9cbiAgbGFiZWxGb3IoZW50aXR5S2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBsYW5nID0gJ2VuJyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzLmdldCh0aGlzLmxhYmVsS2V5KGVudGl0eUtleSwgbGFuZywgdmFsdWUpKTtcbiAgfVxuXG4gIC8qKiBEcm9wIGV2ZXJ5dGhpbmcgY2FjaGVkIGZvciBvbmUgZW50aXR5LCBsZWF2aW5nIG90aGVyIGVudGl0aWVzIGludGFjdC4gKi9cbiAgaW52YWxpZGF0ZShlbnRpdHlLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuc3RvcmUua2V5cygpKSB7XG4gICAgICBpZiAoZW50aXR5S2V5RnJvbUNhY2hlS2V5KGtleSkgPT09IGVudGl0eUtleSkgdGhpcy5zdG9yZS5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgWy4uLnRoaXMuaW5GbGlnaHQua2V5cygpXSkge1xuICAgICAgaWYgKGVudGl0eUtleUZyb21DYWNoZUtleShrZXkpID09PSBlbnRpdHlLZXkpIHRoaXMuaW5GbGlnaHQuZGVsZXRlKGtleSk7XG4gICAgfVxuICAgIGNvbnN0IHByZWZpeCA9IGAke2VudGl0eUtleX0ke0xBQkVMX1NFUH1gO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIFsuLi50aGlzLmxhYmVscy5rZXlzKCldKSB7XG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgocHJlZml4KSkgdGhpcy5sYWJlbHMuZGVsZXRlKGtleSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5jbGVhcigpO1xuICAgIHRoaXMuaW5GbGlnaHQuY2xlYXIoKTtcbiAgICB0aGlzLmxhYmVscy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1lbWJlckxhYmVscyhlbnRpdHlLZXk6IHN0cmluZywgbGFuZzogc3RyaW5nLCBvcHRpb25zOiBSZWZlcmVuY2VPcHRpb25bXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgIHRoaXMubGFiZWxzLnNldCh0aGlzLmxhYmVsS2V5KGVudGl0eUtleSwgbGFuZywgb3B0aW9uLnZhbHVlKSwgb3B0aW9uLmxhYmVsKTtcbiAgICB9XG4gIH1cblxuICAvKiogTGFiZWwtY2FjaGUga2V5LiBBbiBvYmplY3QgdmFsdWUgY29sbGFwc2VzIHRvIGl0cyByZXNvbHZlZCB0ZXh0IGZvciB0aGUgYWN0aXZlIGxhbmd1YWdlLiAqL1xuICBwcml2YXRlIGxhYmVsS2V5KGVudGl0eUtleTogc3RyaW5nLCBsYW5nOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBjYW5vbmljYWwgPVxuICAgICAgdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgICA/IHJlc29sdmVMYWJlbCh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBsYW5nKVxuICAgICAgICA6IFN0cmluZyh2YWx1ZSA/PyAnJyk7XG4gICAgcmV0dXJuIFtlbnRpdHlLZXksIGxhbmcsIGNhbm9uaWNhbF0uam9pbihMQUJFTF9TRVApO1xuICB9XG5cbiAgLy8g4pSA4pSA4pSAIExvYWRlciByZXN1bHQgY29lcmNpb24gKGFycmF5IHwgUHJvbWlzZSB8IE9ic2VydmFibGUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIHByaXZhdGUgaW52b2tlKFxuICAgIGxvYWRlcjogRW50aXR5UmVmZXJlbmNlTG9hZGVyLFxuICAgIGN0eDogUmVmZXJlbmNlTG9hZGVyQ29udGV4dCxcbiAgKTogUHJvbWlzZTxSZWZlcmVuY2VPcHRpb25bXT4ge1xuICAgIGxldCByZXN1bHQ6IFJlZmVyZW5jZUxvYWRlclJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gbG9hZGVyKGN0eCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBSZWplY3QgcmF0aGVyIHRoYW4gcmVzb2x2ZSBlbXB0eTogYGxvYWRgIG11c3QgYmUgYWJsZSB0byB0ZWxsIGZhaWx1cmUgZnJvbVxuICAgICAgLy8gXCJubyBtYXRjaGVzXCIsIG9yIGl0IHdvdWxkIGNhY2hlIHRoZSBmYWlsdXJlLlxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZShyZXN1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1Byb21pc2UocmVzdWx0OiBSZWZlcmVuY2VMb2FkZXJSZXN1bHQpOiBQcm9taXNlPFJlZmVyZW5jZU9wdGlvbltdPiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICAgIGlmICh0aGlzLmlzU3Vic2NyaWJhYmxlKHJlc3VsdCkpIHtcbiAgICAgIC8vIEZpcnN0IGVtaXNzaW9uIHdpbnMsIHNvIGFuIE9ic2VydmFibGUgdGhhdCBzdGF5cyBvcGVuIHN0aWxsIHJlc29sdmVzIHRoZSBsb2FkLlxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPFJlZmVyZW5jZU9wdGlvbltdPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGxldCBzZXR0bGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHNldHRsZSA9IChmbjogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgICAgIGlmIChzZXR0bGVkKSByZXR1cm47XG4gICAgICAgICAgc2V0dGxlZCA9IHRydWU7XG4gICAgICAgICAgZm4oKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmVzdWx0LnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogdmFsdWUgPT4gc2V0dGxlKCgpID0+IHJlc29sdmUodmFsdWUgPz8gW10pKSxcbiAgICAgICAgICAvLyBBbiBlcnJvcmluZyBzdHJlYW0gaXMgYSBmYWlsZWQgbG9hZCwgbm90IGFuIGVtcHR5IG9uZSDigJQgc2VlIGBpbnZva2VgLlxuICAgICAgICAgIGVycm9yOiBlcnIgPT4gc2V0dGxlKCgpID0+IHJlamVjdChlcnIpKSxcbiAgICAgICAgICAvLyBDb21wbGV0aW5nIHdpdGhvdXQgZW1pdHRpbmcgaXMgYSBsZWdpdGltYXRlIGVtcHR5IHJlc3VsdCwgYW5kIGlzIGNhY2hlZC5cbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4gc2V0dGxlKCgpID0+IHJlc29sdmUoW10pKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQgYXMgUHJvbWlzZTxSZWZlcmVuY2VPcHRpb25bXT4pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1N1YnNjcmliYWJsZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFN1YnNjcmliYWJsZTxSZWZlcmVuY2VPcHRpb25bXT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgdHlwZW9mICh2YWx1ZSBhcyBTdWJzY3JpYmFibGU8UmVmZXJlbmNlT3B0aW9uW10+KS5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbidcbiAgICApO1xuICB9XG5cbiAgLyoqIEV4cG9zZWQgZm9yIGNhc2NhZGUgZmlsdGVyaW5nLCB3aGljaCBtYXRjaGVzIGEgcGFyZW50IHZhbHVlIGFnYWluc3Qgb3B0aW9uIHZhbHVlcy4gKi9cbiAgbWF0Y2hlcyhhOiB1bmtub3duLCBiOiB1bmtub3duLCBsYW5nID0gJ2VuJyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWx1ZXNNYXRjaChhLCBiLCBsYW5nKTtcbiAgfVxufVxuIl19
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
52
52
  type: Injectable,
53
53
  args: [{ providedIn: 'root' }]
54
54
  }], ctorParameters: () => [] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvZmllbGQtcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRWxGOzs7Ozs7Ozs7R0FTRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFDZCxnQkFBZ0IsR0FDL0IsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQXFCLENBQUM7SUFDakUsZUFBZSxHQUFHLElBQUksR0FBRyxFQUFxQixDQUFDO0lBRWhFO1FBQ0UsNEZBQTRGO1FBQzVGLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsUUFBUSxDQUFDLElBQVksRUFBRSxTQUFvQjtRQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxXQUFXLENBQUMsR0FBOEI7UUFDeEMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsU0FBaUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUM3RixDQUFDO0lBRUQsd0RBQXdEO0lBQ3hELEdBQUcsQ0FBQyxTQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELDhGQUE4RjtJQUM5RixlQUFlO1FBQ2IsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEcsQ0FBQzt3R0F4Q1Usb0JBQW9COzRHQUFwQixvQkFBb0IsY0FEUCxNQUFNOzs0RkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFR5cGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGSUVMRF9UWVBFX1JFR0lTVFJZLCBGSUVMRF9UWVBFX1NFVFMgfSBmcm9tICcuLi90b2tlbnMvaW5qZWN0aW9uLXRva2Vucyc7XHJcblxyXG4vKipcclxuICogRmllbGRSZWdpc3RyeVNlcnZpY2Ug4oCUIHJlc29sdmVzIGZpZWxkIHR5cGUgc3RyaW5ncyB0byBBbmd1bGFyIGNvbXBvbmVudCBjbGFzc2VzLlxyXG4gKlxyXG4gKiAqKlRyZWUtc2hha2luZyBjb250cmFjdDoqKiB0aGlzIHNlcnZpY2UgaG9sZHMgKm5vKiBzdGF0aWMgaW1wb3J0cyBvZiBmaWVsZCBjb21wb25lbnRzLlxyXG4gKiBOb3RoaW5nIGlzIGJ1bmRsZWQgdW50aWwgc29tZXRoaW5nIHJlZ2lzdGVycyBpdCwgd2hpY2ggaXMgd2hhdCBtYWtlcyB0aGUgYnVpbHQtaW5zXHJcbiAqIG9wdC1pbi4gUmVnaXN0ZXIgdGhlbSB3aXRoIGBwcm92aWRlQnVpbHRJbkZpZWxkVHlwZXMoKWAgKGFsbCAxOSBrZXlzKSBvciBhIG5hcnJvd2VyXHJcbiAqIHN1YnNldCB2aWEgYHByb3ZpZGVGaWVsZFR5cGVzKHsgLi4uIH0pYCDigJQgc2VlIGBwcm92aWRlcnMvcHJvdmlkZS1maWVsZC10eXBlcy50c2AuXHJcbiAqXHJcbiAqIFJlc29sdXRpb24gb3JkZXI6IGNvbnN1bWVyIHRva2VuIHJlZ2lzdHJ5IOKGkiBydW50aW1lIHJlZ2lzdHJhdGlvbnMg4oaSIG5vdGhpbmcuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgRmllbGRSZWdpc3RyeVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uc3VtZXJSZWdpc3RyeSA9XHJcbiAgICBpbmplY3QoRklFTERfVFlQRV9SRUdJU1RSWSwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyBuZXcgTWFwPHN0cmluZywgVHlwZTxhbnk+PigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZHluYW1pY1JlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsIFR5cGU8YW55Pj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAvLyBTZXRzIGNvbnRyaWJ1dGVkIGJ5IHByb3ZpZGVGaWVsZFR5cGVzKCkvcHJvdmlkZUJ1aWx0SW5GaWVsZFR5cGVzKCksIGluIGRlY2xhcmF0aW9uIG9yZGVyLlxyXG4gICAgZm9yIChjb25zdCBzZXQgb2YgaW5qZWN0KEZJRUxEX1RZUEVfU0VUUywgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyBbXSkge1xyXG4gICAgICB0aGlzLnJlZ2lzdGVyQWxsKHNldCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogUmVnaXN0ZXIgYSBmaWVsZCB0eXBlIGNvbXBvbmVudCBtYXBwaW5nIGF0IHJ1bnRpbWUuICovXHJcbiAgcmVnaXN0ZXIodHlwZTogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGU8YW55Pik6IHZvaWQge1xyXG4gICAgdGhpcy5keW5hbWljUmVnaXN0cnkuc2V0KHR5cGUsIGNvbXBvbmVudCk7XHJcbiAgfVxyXG5cclxuICAvKiogUmVnaXN0ZXIgbXVsdGlwbGUgZmllbGQgdHlwZSBjb21wb25lbnQgbWFwcGluZ3MgYXQgcnVudGltZS4gKi9cclxuICByZWdpc3RlckFsbChtYXA6IFJlY29yZDxzdHJpbmcsIFR5cGU8YW55Pj4pOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgW3R5cGUsIGNvbXBdIG9mIE9iamVjdC5lbnRyaWVzKG1hcCkpIHtcclxuICAgICAgdGhpcy5keW5hbWljUmVnaXN0cnkuc2V0KHR5cGUsIGNvbXApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb2x2ZSBhIGZpZWxkIHR5cGUgc3RyaW5nIHRvIGEgY29tcG9uZW50IGNsYXNzLlxyXG4gICAqIENvbnN1bWVyIHRva2VuIHJlZ2lzdHJ5IHRha2VzIHByaW9yaXR5IG92ZXIgcnVudGltZSByZWdpc3RyYXRpb25zLlxyXG4gICAqL1xyXG4gIHJlc29sdmUoZmllbGRUeXBlOiBzdHJpbmcpOiBUeXBlPGFueT4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnN1bWVyUmVnaXN0cnkuZ2V0KGZpZWxkVHlwZSkgPz8gdGhpcy5keW5hbWljUmVnaXN0cnkuZ2V0KGZpZWxkVHlwZSkgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKiBDaGVjayBpZiBhIGZpZWxkIHR5cGUgaGFzIGEgcmVnaXN0ZXJlZCBjb21wb25lbnQuICovXHJcbiAgaGFzKGZpZWxkVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25zdW1lclJlZ2lzdHJ5LmhhcyhmaWVsZFR5cGUpIHx8IHRoaXMuZHluYW1pY1JlZ2lzdHJ5LmhhcyhmaWVsZFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEV2ZXJ5IHJlZ2lzdGVyZWQgZmllbGQgdHlwZSBrZXkuIENvbnN1bWVyIG92ZXJyaWRlcyBhbmQgcnVudGltZSByZWdpc3RyYXRpb25zIGNvbWJpbmVkLiAqL1xyXG4gIHJlZ2lzdGVyZWRUeXBlcygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gWy4uLm5ldyBTZXQoWy4uLnRoaXMuZHluYW1pY1JlZ2lzdHJ5LmtleXMoKSwgLi4udGhpcy5jb25zdW1lclJlZ2lzdHJ5LmtleXMoKV0pXS5zb3J0KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvZmllbGQtcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRWxGOzs7Ozs7Ozs7R0FTRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFDZCxnQkFBZ0IsR0FDL0IsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQXFCLENBQUM7SUFDakUsZUFBZSxHQUFHLElBQUksR0FBRyxFQUFxQixDQUFDO0lBRWhFO1FBQ0UsNEZBQTRGO1FBQzVGLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsUUFBUSxDQUFDLElBQVksRUFBRSxTQUFvQjtRQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxXQUFXLENBQUMsR0FBOEI7UUFDeEMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsU0FBaUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUM3RixDQUFDO0lBRUQsd0RBQXdEO0lBQ3hELEdBQUcsQ0FBQyxTQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELDhGQUE4RjtJQUM5RixlQUFlO1FBQ2IsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEcsQ0FBQzt3R0F4Q1Usb0JBQW9COzRHQUFwQixvQkFBb0IsY0FEUCxNQUFNOzs0RkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFR5cGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRklFTERfVFlQRV9SRUdJU1RSWSwgRklFTERfVFlQRV9TRVRTIH0gZnJvbSAnLi4vdG9rZW5zL2luamVjdGlvbi10b2tlbnMnO1xuXG4vKipcbiAqIEZpZWxkUmVnaXN0cnlTZXJ2aWNlIOKAlCByZXNvbHZlcyBmaWVsZCB0eXBlIHN0cmluZ3MgdG8gQW5ndWxhciBjb21wb25lbnQgY2xhc3Nlcy5cbiAqXG4gKiAqKlRyZWUtc2hha2luZyBjb250cmFjdDoqKiB0aGlzIHNlcnZpY2UgaG9sZHMgKm5vKiBzdGF0aWMgaW1wb3J0cyBvZiBmaWVsZCBjb21wb25lbnRzLlxuICogTm90aGluZyBpcyBidW5kbGVkIHVudGlsIHNvbWV0aGluZyByZWdpc3RlcnMgaXQsIHdoaWNoIGlzIHdoYXQgbWFrZXMgdGhlIGJ1aWx0LWluc1xuICogb3B0LWluLiBSZWdpc3RlciB0aGVtIHdpdGggYHByb3ZpZGVCdWlsdEluRmllbGRUeXBlcygpYCAoYWxsIDE5IGtleXMpIG9yIGEgbmFycm93ZXJcbiAqIHN1YnNldCB2aWEgYHByb3ZpZGVGaWVsZFR5cGVzKHsgLi4uIH0pYCDigJQgc2VlIGBwcm92aWRlcnMvcHJvdmlkZS1maWVsZC10eXBlcy50c2AuXG4gKlxuICogUmVzb2x1dGlvbiBvcmRlcjogY29uc3VtZXIgdG9rZW4gcmVnaXN0cnkg4oaSIHJ1bnRpbWUgcmVnaXN0cmF0aW9ucyDihpIgbm90aGluZy5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGaWVsZFJlZ2lzdHJ5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uc3VtZXJSZWdpc3RyeSA9XG4gICAgaW5qZWN0KEZJRUxEX1RZUEVfUkVHSVNUUlksIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gbmV3IE1hcDxzdHJpbmcsIFR5cGU8YW55Pj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkeW5hbWljUmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgVHlwZTxhbnk+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIFNldHMgY29udHJpYnV0ZWQgYnkgcHJvdmlkZUZpZWxkVHlwZXMoKS9wcm92aWRlQnVpbHRJbkZpZWxkVHlwZXMoKSwgaW4gZGVjbGFyYXRpb24gb3JkZXIuXG4gICAgZm9yIChjb25zdCBzZXQgb2YgaW5qZWN0KEZJRUxEX1RZUEVfU0VUUywgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyBbXSkge1xuICAgICAgdGhpcy5yZWdpc3RlckFsbChzZXQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZWdpc3RlciBhIGZpZWxkIHR5cGUgY29tcG9uZW50IG1hcHBpbmcgYXQgcnVudGltZS4gKi9cbiAgcmVnaXN0ZXIodHlwZTogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGU8YW55Pik6IHZvaWQge1xuICAgIHRoaXMuZHluYW1pY1JlZ2lzdHJ5LnNldCh0eXBlLCBjb21wb25lbnQpO1xuICB9XG5cbiAgLyoqIFJlZ2lzdGVyIG11bHRpcGxlIGZpZWxkIHR5cGUgY29tcG9uZW50IG1hcHBpbmdzIGF0IHJ1bnRpbWUuICovXG4gIHJlZ2lzdGVyQWxsKG1hcDogUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+Pik6IHZvaWQge1xuICAgIGZvciAoY29uc3QgW3R5cGUsIGNvbXBdIG9mIE9iamVjdC5lbnRyaWVzKG1hcCkpIHtcbiAgICAgIHRoaXMuZHluYW1pY1JlZ2lzdHJ5LnNldCh0eXBlLCBjb21wKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSBhIGZpZWxkIHR5cGUgc3RyaW5nIHRvIGEgY29tcG9uZW50IGNsYXNzLlxuICAgKiBDb25zdW1lciB0b2tlbiByZWdpc3RyeSB0YWtlcyBwcmlvcml0eSBvdmVyIHJ1bnRpbWUgcmVnaXN0cmF0aW9ucy5cbiAgICovXG4gIHJlc29sdmUoZmllbGRUeXBlOiBzdHJpbmcpOiBUeXBlPGFueT4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdW1lclJlZ2lzdHJ5LmdldChmaWVsZFR5cGUpID8/IHRoaXMuZHluYW1pY1JlZ2lzdHJ5LmdldChmaWVsZFR5cGUpID8/IG51bGw7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgYSBmaWVsZCB0eXBlIGhhcyBhIHJlZ2lzdGVyZWQgY29tcG9uZW50LiAqL1xuICBoYXMoZmllbGRUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdW1lclJlZ2lzdHJ5LmhhcyhmaWVsZFR5cGUpIHx8IHRoaXMuZHluYW1pY1JlZ2lzdHJ5LmhhcyhmaWVsZFR5cGUpO1xuICB9XG5cbiAgLyoqIEV2ZXJ5IHJlZ2lzdGVyZWQgZmllbGQgdHlwZSBrZXkuIENvbnN1bWVyIG92ZXJyaWRlcyBhbmQgcnVudGltZSByZWdpc3RyYXRpb25zIGNvbWJpbmVkLiAqL1xuICByZWdpc3RlcmVkVHlwZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4ubmV3IFNldChbLi4udGhpcy5keW5hbWljUmVnaXN0cnkua2V5cygpLCAuLi50aGlzLmNvbnN1bWVyUmVnaXN0cnkua2V5cygpXSldLnNvcnQoKTtcbiAgfVxufVxuIl19
@@ -86,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
86
86
  type: Injectable,
87
87
  args: [{ providedIn: 'root' }]
88
88
  }] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvZmlsZS11cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRTVEOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyxpQkFBaUI7SUFDWCxPQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXRFLElBQUksVUFBVTtRQUNaLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELDhEQUE4RDtJQUN0RCxRQUFRLENBQUMsSUFBVTtRQUN6QixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFVO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1FBRTVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEQsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLGFBQWEsQ0FBQyxHQUErQjtRQUMzQyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3RCLElBQUksR0FBRyxDQUFDLEdBQUc7WUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDNUIsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFdBQVcsSUFBSSxPQUFPLEdBQUcsQ0FBQyxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDeEYsT0FBTyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBa0I7UUFDakMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTztRQUM3QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFdBQVcsSUFBSSxPQUFPLEdBQUcsQ0FBQyxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDNUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFNBQVMsQ0FDZixNQUF5RTtRQUV6RSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksT0FBTyxDQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNuRCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBQ2YsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO3dCQUNaLElBQUksT0FBTzs0QkFBRSxPQUFPO3dCQUNwQixPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDakIsQ0FBQztvQkFDRCxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7d0JBQ1gsSUFBSSxPQUFPOzRCQUFFLE9BQU87d0JBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNkLENBQUM7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDYixJQUFJLE9BQU87NEJBQUUsT0FBTzt3QkFDcEIsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDZixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQyxDQUFDO29CQUMzRSxDQUFDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUE4QyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFjO1FBQ25DLE9BQU8sQ0FDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3pCLEtBQUssS0FBSyxJQUFJO1lBQ2QsT0FBUSxLQUFvQyxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQ3RFLENBQUM7SUFDSixDQUFDO3dHQTNFVSxpQkFBaUI7NEdBQWpCLGlCQUFpQixjQURKLE1BQU07OzRGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgRmlsZVJlZiwgU3Vic2NyaWJhYmxlLCBVcGxvYWRSZXN1bHQgfSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XHJcbmltcG9ydCB7IFVQTE9BRF9IQU5ETEVSIH0gZnJvbSAnLi4vdG9rZW5zL2luamVjdGlvbi10b2tlbnMnO1xyXG5cclxuLyoqXHJcbiAqIEZpbGVVcGxvYWRTZXJ2aWNlIOKAlCB0aGUgc2luZ2xlIHBsYWNlIGltYWdlLWZpZWxkIGFuZCBmaWxlLWZpZWxkIGFncmVlIG9uIGhvdyBhXHJcbiAqIHNlbGVjdGVkIGBGaWxlYCBiZWNvbWVzIGEgYEZpbGVSZWZgLlxyXG4gKlxyXG4gKiBXaXRoIGBVUExPQURfSEFORExFUmAgcmVnaXN0ZXJlZCB0aGUgZmlsZSBpcyBwZXJzaXN0ZWQgYW5kIHN0b3JlZCBhcyBgeyB1cmwgfWA7XHJcbiAqIHdpdGhvdXQgb25lIGl0IGlzIHN0b3JlZCBhcyBgeyBmaWxlIH1gIGZvciB0aGUgY29uc3VtZXIgdG8gdXBsb2FkIGF0IHN1Ym1pdCB0aW1lLlxyXG4gKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZXIgPSBpbmplY3QoVVBMT0FEX0hBTkRMRVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcblxyXG4gIGdldCBoYXNIYW5kbGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5oYW5kbGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqIE1ldGFkYXRhIGNvbW1vbiB0byBib3RoIHBlcnNpc3RlZCBhbmQgdW5wZXJzaXN0ZWQgcmVmcy4gKi9cclxuICBwcml2YXRlIGRlc2NyaWJlKGZpbGU6IEZpbGUpOiBGaWxlUmVmIHtcclxuICAgIHJldHVybiB7IG5hbWU6IGZpbGUubmFtZSwgc2l6ZTogZmlsZS5zaXplLCBtaW1lVHlwZTogZmlsZS50eXBlIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUdXJuIGEgc2VsZWN0ZWQgRmlsZSBpbnRvIHRoZSB2YWx1ZSB0byBzdG9yZSBvbiB0aGUgY29udHJvbC5cclxuICAgKiBAdGhyb3dzIHdoZW4gYSByZWdpc3RlcmVkIGhhbmRsZXIgcmVqZWN0cyDigJQgY2FsbGVycyBzdXJmYWNlIGl0IGFzIGEgZmllbGQgZXJyb3IuXHJcbiAgICovXHJcbiAgYXN5bmMgdG9GaWxlUmVmKGZpbGU6IEZpbGUpOiBQcm9taXNlPEZpbGVSZWY+IHtcclxuICAgIGNvbnN0IG1ldGEgPSB0aGlzLmRlc2NyaWJlKGZpbGUpO1xyXG4gICAgaWYgKCF0aGlzLmhhbmRsZXIpIHJldHVybiB7IC4uLm1ldGEsIGZpbGUgfTtcclxuXHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm5vcm1hbGl6ZSh0aGlzLmhhbmRsZXIoZmlsZSkpO1xyXG4gICAgcmV0dXJuIHsgLi4ubWV0YSwgdXJsOiByZXN1bHQudXJsLCBuYW1lOiByZXN1bHQubmFtZSA/PyBtZXRhLm5hbWUgfTtcclxuICB9XHJcblxyXG4gIC8qKiBPYmplY3QgVVJMIGZvciBwcmV2aWV3aW5nIGFuIHVucGVyc2lzdGVkIEZpbGUuIENhbGxlcnMgbXVzdCByZXZva2UgaXQuICovXHJcbiAgcHJldmlld1VybEZvcihyZWY6IEZpbGVSZWYgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAoIXJlZikgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAocmVmLnVybCkgcmV0dXJuIHJlZi51cmw7XHJcbiAgICBpZiAocmVmLmZpbGUgJiYgdHlwZW9mIFVSTCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFVSTC5jcmVhdGVPYmplY3RVUkwgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwocmVmLmZpbGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICByZXZva2VQcmV2aWV3VXJsKHVybDogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKCF1cmwgfHwgIXVybC5zdGFydHNXaXRoKCdibG9iOicpKSByZXR1cm47XHJcbiAgICBpZiAodHlwZW9mIFVSTCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFVSTC5yZXZva2VPYmplY3RVUkwgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBub3JtYWxpemUoXHJcbiAgICByZXN1bHQ6IFVwbG9hZFJlc3VsdCB8IFByb21pc2U8VXBsb2FkUmVzdWx0PiB8IFN1YnNjcmliYWJsZTxVcGxvYWRSZXN1bHQ+LFxyXG4gICk6IFByb21pc2U8VXBsb2FkUmVzdWx0PiB7XHJcbiAgICBpZiAodGhpcy5pc1N1YnNjcmliYWJsZShyZXN1bHQpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxVcGxvYWRSZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBsZXQgc2V0dGxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHJlc3VsdC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogdmFsdWUgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IGVyciA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZXR0bGVkKSByZXR1cm47XHJcbiAgICAgICAgICAgIHNldHRsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignVXBsb2FkIGhhbmRsZXIgY29tcGxldGVkIHdpdGhvdXQgZW1pdHRpbmcgYSByZXN1bHQuJykpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCBhcyBVcGxvYWRSZXN1bHQgfCBQcm9taXNlPFVwbG9hZFJlc3VsdD4pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1N1YnNjcmliYWJsZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFN1YnNjcmliYWJsZTxVcGxvYWRSZXN1bHQ+IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgdHlwZW9mICh2YWx1ZSBhcyBTdWJzY3JpYmFibGU8VXBsb2FkUmVzdWx0Pikuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvZmlsZS11cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRTVEOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyxpQkFBaUI7SUFDWCxPQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXRFLElBQUksVUFBVTtRQUNaLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELDhEQUE4RDtJQUN0RCxRQUFRLENBQUMsSUFBVTtRQUN6QixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFVO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1FBRTVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEQsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLGFBQWEsQ0FBQyxHQUErQjtRQUMzQyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3RCLElBQUksR0FBRyxDQUFDLEdBQUc7WUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDNUIsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFdBQVcsSUFBSSxPQUFPLEdBQUcsQ0FBQyxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDeEYsT0FBTyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBa0I7UUFDakMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTztRQUM3QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFdBQVcsSUFBSSxPQUFPLEdBQUcsQ0FBQyxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDNUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFNBQVMsQ0FDZixNQUF5RTtRQUV6RSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksT0FBTyxDQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNuRCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBQ2YsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO3dCQUNaLElBQUksT0FBTzs0QkFBRSxPQUFPO3dCQUNwQixPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDakIsQ0FBQztvQkFDRCxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7d0JBQ1gsSUFBSSxPQUFPOzRCQUFFLE9BQU87d0JBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNkLENBQUM7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDYixJQUFJLE9BQU87NEJBQUUsT0FBTzt3QkFDcEIsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDZixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQyxDQUFDO29CQUMzRSxDQUFDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUE4QyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFjO1FBQ25DLE9BQU8sQ0FDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3pCLEtBQUssS0FBSyxJQUFJO1lBQ2QsT0FBUSxLQUFvQyxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQ3RFLENBQUM7SUFDSixDQUFDO3dHQTNFVSxpQkFBaUI7NEdBQWpCLGlCQUFpQixjQURKLE1BQU07OzRGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEZpbGVSZWYsIFN1YnNjcmliYWJsZSwgVXBsb2FkUmVzdWx0IH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgVVBMT0FEX0hBTkRMRVIgfSBmcm9tICcuLi90b2tlbnMvaW5qZWN0aW9uLXRva2Vucyc7XG5cbi8qKlxuICogRmlsZVVwbG9hZFNlcnZpY2Ug4oCUIHRoZSBzaW5nbGUgcGxhY2UgaW1hZ2UtZmllbGQgYW5kIGZpbGUtZmllbGQgYWdyZWUgb24gaG93IGFcbiAqIHNlbGVjdGVkIGBGaWxlYCBiZWNvbWVzIGEgYEZpbGVSZWZgLlxuICpcbiAqIFdpdGggYFVQTE9BRF9IQU5ETEVSYCByZWdpc3RlcmVkIHRoZSBmaWxlIGlzIHBlcnNpc3RlZCBhbmQgc3RvcmVkIGFzIGB7IHVybCB9YDtcbiAqIHdpdGhvdXQgb25lIGl0IGlzIHN0b3JlZCBhcyBgeyBmaWxlIH1gIGZvciB0aGUgY29uc3VtZXIgdG8gdXBsb2FkIGF0IHN1Ym1pdCB0aW1lLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVyID0gaW5qZWN0KFVQTE9BRF9IQU5ETEVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIGdldCBoYXNIYW5kbGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuaGFuZGxlcjtcbiAgfVxuXG4gIC8qKiBNZXRhZGF0YSBjb21tb24gdG8gYm90aCBwZXJzaXN0ZWQgYW5kIHVucGVyc2lzdGVkIHJlZnMuICovXG4gIHByaXZhdGUgZGVzY3JpYmUoZmlsZTogRmlsZSk6IEZpbGVSZWYge1xuICAgIHJldHVybiB7IG5hbWU6IGZpbGUubmFtZSwgc2l6ZTogZmlsZS5zaXplLCBtaW1lVHlwZTogZmlsZS50eXBlIH07XG4gIH1cblxuICAvKipcbiAgICogVHVybiBhIHNlbGVjdGVkIEZpbGUgaW50byB0aGUgdmFsdWUgdG8gc3RvcmUgb24gdGhlIGNvbnRyb2wuXG4gICAqIEB0aHJvd3Mgd2hlbiBhIHJlZ2lzdGVyZWQgaGFuZGxlciByZWplY3RzIOKAlCBjYWxsZXJzIHN1cmZhY2UgaXQgYXMgYSBmaWVsZCBlcnJvci5cbiAgICovXG4gIGFzeW5jIHRvRmlsZVJlZihmaWxlOiBGaWxlKTogUHJvbWlzZTxGaWxlUmVmPiB7XG4gICAgY29uc3QgbWV0YSA9IHRoaXMuZGVzY3JpYmUoZmlsZSk7XG4gICAgaWYgKCF0aGlzLmhhbmRsZXIpIHJldHVybiB7IC4uLm1ldGEsIGZpbGUgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubm9ybWFsaXplKHRoaXMuaGFuZGxlcihmaWxlKSk7XG4gICAgcmV0dXJuIHsgLi4ubWV0YSwgdXJsOiByZXN1bHQudXJsLCBuYW1lOiByZXN1bHQubmFtZSA/PyBtZXRhLm5hbWUgfTtcbiAgfVxuXG4gIC8qKiBPYmplY3QgVVJMIGZvciBwcmV2aWV3aW5nIGFuIHVucGVyc2lzdGVkIEZpbGUuIENhbGxlcnMgbXVzdCByZXZva2UgaXQuICovXG4gIHByZXZpZXdVcmxGb3IocmVmOiBGaWxlUmVmIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghcmVmKSByZXR1cm4gbnVsbDtcbiAgICBpZiAocmVmLnVybCkgcmV0dXJuIHJlZi51cmw7XG4gICAgaWYgKHJlZi5maWxlICYmIHR5cGVvZiBVUkwgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBVUkwuY3JlYXRlT2JqZWN0VVJMID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChyZWYuZmlsZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV2b2tlUHJldmlld1VybCh1cmw6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXVybCB8fCAhdXJsLnN0YXJ0c1dpdGgoJ2Jsb2I6JykpIHJldHVybjtcbiAgICBpZiAodHlwZW9mIFVSTCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFVSTC5yZXZva2VPYmplY3RVUkwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZShcbiAgICByZXN1bHQ6IFVwbG9hZFJlc3VsdCB8IFByb21pc2U8VXBsb2FkUmVzdWx0PiB8IFN1YnNjcmliYWJsZTxVcGxvYWRSZXN1bHQ+LFxuICApOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIGlmICh0aGlzLmlzU3Vic2NyaWJhYmxlKHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxVcGxvYWRSZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IHNldHRsZWQgPSBmYWxzZTtcbiAgICAgICAgcmVzdWx0LnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogdmFsdWUgPT4ge1xuICAgICAgICAgICAgaWYgKHNldHRsZWQpIHJldHVybjtcbiAgICAgICAgICAgIHNldHRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChzZXR0bGVkKSByZXR1cm47XG4gICAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChzZXR0bGVkKSByZXR1cm47XG4gICAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1VwbG9hZCBoYW5kbGVyIGNvbXBsZXRlZCB3aXRob3V0IGVtaXR0aW5nIGEgcmVzdWx0LicpKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCBhcyBVcGxvYWRSZXN1bHQgfCBQcm9taXNlPFVwbG9hZFJlc3VsdD4pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1N1YnNjcmliYWJsZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFN1YnNjcmliYWJsZTxVcGxvYWRSZXN1bHQ+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiAodmFsdWUgYXMgU3Vic2NyaWJhYmxlPFVwbG9hZFJlc3VsdD4pLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -217,7 +217,7 @@ const hostLastConfig = new WeakMap();
217
217
  * Point a choice component's `options` signal at the right source (parity plan §6.3).
218
218
  *
219
219
  * Called from the `field` / `language` input setters of `dropdown`, `radio` and `multiSelect` —
220
- * the wiring is theirs, the decision is the service's, which is what keeps the ADR-008
220
+ * the wiring is theirs, the decision is the service's, which is what keeps the field
221
221
  * five-input contract intact: options are never pushed in as a sixth input.
222
222
  *
223
223
  * Setters rather than `ngOnChanges` on purpose. `ngOnChanges` only fires for inputs Angular
@@ -243,4 +243,4 @@ export function refreshChoiceOptions(host, lookups) {
243
243
  host.options.set(options);
244
244
  });
245
245
  }
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvb2t1cC1yZWdpc3RyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQVd4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUU3RCw4RkFBOEY7QUFDOUYsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBRWhCOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNmLFFBQVEsR0FDdkIsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUE0QixDQUFDO0lBRXJGLDJDQUEyQztJQUMxQixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFDL0QsZ0dBQWdHO0lBQy9FLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztJQUMvRCx5Q0FBeUM7SUFDeEIsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFxQyxDQUFDO0lBQ3pFLGdGQUFnRjtJQUMvRCxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFcEQsR0FBRyxDQUFDLFFBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBZ0IsRUFBRSxJQUFJLEdBQUcsSUFBSTtRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLE1BQU07WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUUxQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxJQUFJLE9BQU87WUFBRSxPQUFPLE9BQU8sQ0FBQztRQUU1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLE1BQU0sS0FBSyxTQUFTO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdDLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBRUgseUZBQXlGO1FBQ3pGLHFGQUFxRjtRQUNyRixNQUFNLE9BQU8sR0FBRyxJQUFJO2FBQ2pCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFzQixDQUFDO2FBQ25DLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLElBQUksQ0FBQyxRQUFnQixFQUFFLElBQUksR0FBRyxJQUFJO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLFFBQWdCLEVBQUUsSUFBSSxHQUFHLElBQUk7UUFDckMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxRQUFRLENBQUMsUUFBNEIsRUFBRSxLQUFjLEVBQUUsSUFBSSxHQUFHLElBQUk7UUFDaEUsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUU7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUN6RixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakUsSUFBSSxHQUFHO2dCQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0ZBQWdGO0lBRWhGLHFFQUFxRTtJQUNyRSxZQUFZLENBQUMsS0FBb0M7UUFDL0MsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsS0FBb0MsRUFBRSxJQUFJLEdBQUcsSUFBSTtRQUMxRCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNO1lBQUUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLGNBQWMsQ0FBQyxLQUFvQyxFQUFFLElBQUksR0FBRyxJQUFJO1FBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFNLENBQUMsUUFBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCx1RUFBdUU7SUFDdkUsVUFBVSxDQUFDLFFBQWdCO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLEdBQUcsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ25DLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztvQkFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztnQkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCwrRUFBK0U7SUFFdkUsUUFBUSxDQUFDLFFBQWdCLEVBQUUsSUFBWTtRQUM3QyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sUUFBUSxDQUFDLFFBQWdCLEVBQUUsSUFBWSxFQUFFLElBQVk7UUFDM0QsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCx3RkFBd0Y7SUFDaEYsY0FBYyxDQUFDLFFBQWdCLEVBQUUsSUFBWSxFQUFFLE9BQXlCO1FBQzlFLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDN0IsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsT0FBTztnQkFBRSxTQUFTO1lBQ3ZCLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDaEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELDhEQUE4RDtJQUN0RCxjQUFjLENBQUMsS0FBYyxFQUFFLElBQVk7UUFDakQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWdDLENBQUMsQ0FBQyxNQUFNLENBQ2xFLENBQUMsQ0FBQyxFQUFlLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FDdEQsQ0FBQztZQUNGLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxLQUErQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsZ0ZBQWdGO0lBRXhFLE1BQU0sQ0FBQyxNQUF3QixFQUFFLElBQVk7UUFDbkQsSUFBSSxNQUF3QixDQUFDO1FBQzdCLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFFLE1BQTJCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDMUYsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixzRkFBc0Y7WUFDdEYsdUNBQXVDO1lBQ3ZDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxTQUFTLENBQUMsTUFBd0I7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoQyw0RUFBNEU7WUFDNUUsT0FBTyxJQUFJLE9BQU8sQ0FBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQzNELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUFjLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxPQUFPO3dCQUFFLE9BQU87b0JBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2YsRUFBRSxFQUFFLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDO2dCQUNGLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBQ2YsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ2pELEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3ZDLHlFQUF5RTtvQkFDekUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUF1QyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFjO1FBQ25DLE9BQU8sQ0FDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3pCLEtBQUssS0FBSyxJQUFJO1lBQ2QsT0FBUSxLQUE0QyxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQzlFLENBQUM7SUFDSixDQUFDO3dHQTFNVSxxQkFBcUI7NEdBQXJCLHFCQUFxQixjQURSLE1BQU07OzRGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXFObEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWtFLENBQUM7QUFFckc7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFzQixFQUFFLE9BQThCO0lBQ3pGLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JFLE9BQU87SUFDVCxDQUFDO0lBQ0QsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFFckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPO0lBRTlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO0lBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDM0IsS0FBSyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNwRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUk7WUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIHR5cGUgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtcbiAgRHJvcGRvd25PcHRpb24sXG4gIExvb2t1cExpc3RMb2FkZXIsXG4gIExvb2t1cExpc3RSZXN1bHQsXG4gIExvb2t1cExpc3RTb3VyY2UsXG4gIExvb2t1cExpc3RWYWx1ZSxcbiAgTmVzdGVkRmllbGRDb25maWcsXG4gIFJhd0xvb2t1cExpc3RWYWx1ZSxcbiAgU3Vic2NyaWJhYmxlLFxufSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XG5pbXBvcnQgeyBsb29rdXBWYWx1ZXNUb09wdGlvbnMsIG5vcm1hbGl6ZUxvb2t1cFZhbHVlcywgcmVzb2x2ZUxhYmVsIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgTE9PS1VQX1JFR0lTVFJZIH0gZnJvbSAnLi4vdG9rZW5zL2luamVjdGlvbi10b2tlbnMnO1xuXG4vKiogQ2FjaGUta2V5IGZpZWxkIHNlcGFyYXRvci4gS2VwdCBvdXQgb2YgdGVtcGxhdGUgbGl0ZXJhbHMgc28gaXQgc3RheXMgdmlzaWJsZSBpbiBzb3VyY2UuICovXG5jb25zdCBTRVAgPSAnfCc7XG5cbi8qKlxuICogTG9va3VwUmVnaXN0cnlTZXJ2aWNlIOKAlCB0aGUgY2FjaGUgaW4gZnJvbnQgb2YgY29uc3VtZXItcmVnaXN0ZXJlZCBtYXN0ZXIgbGlzdHMuXG4gKlxuICogVGhyZWUgbGF5ZXJzLCBkZWxpYmVyYXRlbHkgdGhlIHNhbWUgc2hhcGUgYXMgYEVudGl0eVJlZmVyZW5jZVNlcnZpY2VgLCBiZWNhdXNlIHRoZSBwcm9ibGVtIGlzXG4gKiB0aGUgc2FtZTogb25lIGxpc3QgaXMgdHlwaWNhbGx5IHVzZWQgYnkgbWFueSBmaWVsZHMgYWNyb3NzIG1hbnkgZW50aXRpZXMuXG4gKiAgMS4gKipvcHRpb25zKiog4oCUIHJlc29sdmVkIGBEcm9wZG93bk9wdGlvbltdYCBwZXIgKGxpc3QgbmFtZSwgbGFuZykuXG4gKiAgMi4gKippbi1mbGlnaHQqKiDigJQgdGhlIHBlbmRpbmcgUHJvbWlzZSwgc28gTiBmaWVsZHMgb24gb25lIGxpc3QgdHJpZ2dlciBvbmUgbG9hZCwgbm90IE4uXG4gKiAgMy4gKipsYWJlbHMqKiDigJQgc3luY2hyb25vdXMgdmFsdWUg4oaSIHRleHQgKHBhcml0eSBwbGFuIMKnNi4yKS4gVGhpcyBpcyBub3QgYSBuaWNldHk6IHNpbmNlXG4gKiAgICAgYHZpZXdNb2RlYCBkZWZhdWx0cyB0byB0cnVlIGEgcmVjb3JkIG9wZW5zIHJlYWQtb25seSwgc28gcmVuZGVyaW5nIGEgc3RvcmVkIHZhbHVlIGFzXG4gKiAgICAgdGV4dCBpcyB0aGUgKmZpcnN0KiB0aGluZyBhIGBsaXN0TmFtZWAgZmllbGQgaGFzIHRvIGRvLiBBbiBhc3luYy1vbmx5IHJlZ2lzdHJ5IHdvdWxkXG4gKiAgICAgcGFpbnQgdGhlIHJhdyBzdG9yZWQgdmFsdWUgYW5kIHRoZW4gZmxpcCwgb24gZXZlcnkgcmVjb3JkIG9wZW4uXG4gKlxuICogQSBmYWlsZWQgbG9hZCByZWplY3RzIGFuZCBjYWNoZXMgbm90aGluZywgc28gb25lIHRyYW5zaWVudCBlcnJvciBkb2VzIG5vdCBzZXJ2ZSBhbiBlbXB0eVxuICogbGlzdCBmb3JldmVyIOKAlCB0aGUgc2FtZSBmaXggbWFkZSBmb3IgZW50aXR5IHJlZmVyZW5jZXMgaW4gcGhhc2UgNS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb29rdXBSZWdpc3RyeVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID1cbiAgICBpbmplY3QoTE9PS1VQX1JFR0lTVFJZLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IG5ldyBNYXA8c3RyaW5nLCBMb29rdXBMaXN0U291cmNlPigpO1xuXG4gIC8qKiBgbGlzdE5hbWV8bGFuZ2AgLT4gcmVzb2x2ZWQgb3B0aW9ucy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zID0gbmV3IE1hcDxzdHJpbmcsIERyb3Bkb3duT3B0aW9uW10+KCk7XG4gIC8qKiBgbGlzdE5hbWV8bGFuZ2AgLT4gbm9ybWFsaXNlZCB2YWx1ZXMsIHNvIGEgY29uc3VtZXIgY2FuIHJlYWNoIGBjb2RlYCAvIGBpc1N5c3RlbURlZmluZWRgLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlcyA9IG5ldyBNYXA8c3RyaW5nLCBMb29rdXBMaXN0VmFsdWVbXT4oKTtcbiAgLyoqIExvYWRzIGluIHByb2dyZXNzLCBrZXllZCBhcyBhYm92ZS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpbkZsaWdodCA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPERyb3Bkb3duT3B0aW9uW10+PigpO1xuICAvKiogYGxpc3ROYW1lfGxhbmd8dGV4dGAgLT4gZGlzcGxheSB0ZXh0LCBmb3IgdGhlIHN5bmNocm9ub3VzIHJlYWQtb25seSBwYXRoLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxhYmVscyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgaGFzKGxpc3ROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5oYXMobGlzdE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGEgbmFtZWQgbGlzdCwgZnJvbSBjYWNoZSB3aGVuIHByZXNlbnQuXG4gICAqIENvbmN1cnJlbnQgY2FsbGVycyB3aXRoIHRoZSBzYW1lIGtleSBzaGFyZSBvbmUgbG9hZC5cbiAgICovXG4gIGFzeW5jIGxvYWQobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBQcm9taXNlPERyb3Bkb3duT3B0aW9uW10+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKTtcblxuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMub3B0aW9ucy5nZXQoa2V5KTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgcGVuZGluZyA9IHRoaXMuaW5GbGlnaHQuZ2V0KGtleSk7XG4gICAgaWYgKHBlbmRpbmcpIHJldHVybiBwZW5kaW5nO1xuXG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5yZWdpc3RyeS5nZXQobGlzdE5hbWUpO1xuICAgIGlmIChzb3VyY2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgbG9hZCA9IHRoaXMuaW52b2tlKHNvdXJjZSwgbGFuZykudGhlbihyYXcgPT4ge1xuICAgICAgY29uc3QgdmFsdWVzID0gbm9ybWFsaXplTG9va3VwVmFsdWVzKHJhdyk7XG4gICAgICBjb25zdCBvcHRpb25zID0gbG9va3VwVmFsdWVzVG9PcHRpb25zKHZhbHVlcyk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoa2V5LCB2YWx1ZXMpO1xuICAgICAgdGhpcy5vcHRpb25zLnNldChrZXksIG9wdGlvbnMpO1xuICAgICAgdGhpcy5yZW1lbWJlckxhYmVscyhsaXN0TmFtZSwgbGFuZywgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9KTtcblxuICAgIC8vIE9ubHkgdGhlIGAudGhlbmAgYWJvdmUgd3JpdGVzIHRvIHRoZSBjYWNoZSwgYW5kIGEgcmVqZWN0aW9uIHNraXBzIGl0OiB0aGUgY2FsbGVyIHN0aWxsXG4gICAgLy8gZ2V0cyBhbiBlbXB0eSBsaXN0LCBidXQgdGhlIG5leHQgY2FsbCByZXRyaWVzIGluc3RlYWQgb2YgcmVhZGluZyBhIHBvaXNvbmVkIGVudHJ5LlxuICAgIGNvbnN0IGd1YXJkZWQgPSBsb2FkXG4gICAgICAuY2F0Y2goKCkgPT4gW10gYXMgRHJvcGRvd25PcHRpb25bXSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMuaW5GbGlnaHQuZGVsZXRlKGtleSkpO1xuXG4gICAgdGhpcy5pbkZsaWdodC5zZXQoa2V5LCBndWFyZGVkKTtcbiAgICByZXR1cm4gZ3VhcmRlZDtcbiAgfVxuXG4gIC8qKiBDYWNoZWQgb3B0aW9ucyB3aXRob3V0IHRyaWdnZXJpbmcgYSBsb2FkLiBgdW5kZWZpbmVkYCB3aGVuIG5vdCBsb2FkZWQuICovXG4gIHBlZWsobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBEcm9wZG93bk9wdGlvbltdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCh0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FjaGVkIGxpc3QgdmFsdWVzLCBjYXJyeWluZyBgX2lkYCwgYGNvZGVgLCBgaXNTeXN0ZW1EZWZpbmVkYCBhbmQgYGZyb21gLlxuICAgKiBUaGUgbGlicmFyeSBuZXZlciByZWFkcyB0aG9zZTsgdGhpcyBpcyB0aGUgc2VhbSBmb3IgYSBjb25zdW1lciB0aGF0IG5lZWRzIHRoZW0uXG4gICAqL1xuICB2YWx1ZXNGb3IobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBMb29rdXBMaXN0VmFsdWVbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmdldCh0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheSB0ZXh0IGZvciBhIHN0b3JlZCB2YWx1ZSwgc3luY2hyb25vdXNseS4gYHVuZGVmaW5lZGAgd2hlbiB0aGUgbGlzdCBoYXMgbm90IGxvYWRlZFxuICAgKiBvciBob2xkcyBubyBtYXRjaGluZyB2YWx1ZSDigJQgdGhlIGNhbGxlciBrZWVwcyBpdHMgb3duIGZhbGxiYWNrLCB3aGljaCBpcyB0aGUgc3RvcmVkIHRleHQuXG4gICAqXG4gICAqIEV2ZXJ5IGxhbmd1YWdlIG9mIGFuIG9wdGlvbiBpcyBpbmRleGVkLCBzbyBhIHJlY29yZCBzYXZlZCB1bmRlciBvbmUgbGFuZ3VhZ2UgcmVuZGVycyBpblxuICAgKiBhbm90aGVyOiBhIHZhbHVlIHN0b3JlZCBhcyBgJ0FrdGl2J2AgcmVzb2x2ZXMgdG8gYCdBY3RpdmUnYCB1bmRlciBgbGFuZzogJ2VuJ2AuXG4gICAqL1xuICBsYWJlbEZvcihsaXN0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLCB2YWx1ZTogdW5rbm93biwgbGFuZyA9ICdlbicpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghbGlzdE5hbWUgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCB0ZXh0IG9mIHRoaXMuY2FuZGlkYXRlVGV4dHModmFsdWUsIGxhbmcpKSB7XG4gICAgICBjb25zdCBoaXQgPSB0aGlzLmxhYmVscy5nZXQodGhpcy5sYWJlbEtleShsaXN0TmFtZSwgbGFuZywgdGV4dCkpO1xuICAgICAgaWYgKGhpdCkgcmV0dXJuIGhpdDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBGaWVsZC1sZXZlbCByZXNvbHV0aW9uIOKAlCBpbmxpbmUgb3B0aW9ucyB3aW4sIGVsc2UgYGxpc3ROYW1lYCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKiogVHJ1ZSB3aGVuIHRoaXMgZmllbGQncyBvcHRpb25zIGhhdmUgdG8gY29tZSBmcm9tIHRoZSByZWdpc3RyeS4gKi9cbiAgbmVlZHNSZXNvbHZlKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWZpZWxkPy5saXN0TmFtZSAmJiAhZmllbGQub3B0aW9ucz8ubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIHRvIHJlbmRlciByaWdodCBub3csIHdpdGhvdXQgYXdhaXRpbmc6IGlubGluZSBvcHRpb25zLCBlbHNlIHdoYXRldmVyIHRoZVxuICAgKiByZWdpc3RyeSBhbHJlYWR5IGhvbGRzLiBFbXB0eSBvbiBhIGNvbGQgbWlzcyDigJQgcGFpciB3aXRoIGByZXNvbHZlT3B0aW9uc2AuXG4gICAqL1xuICBvcHRpb25zRm9yKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyB8IHVuZGVmaW5lZCwgbGFuZyA9ICdlbicpOiBEcm9wZG93bk9wdGlvbltdIHtcbiAgICBpZiAoIWZpZWxkKSByZXR1cm4gW107XG4gICAgaWYgKGZpZWxkLm9wdGlvbnM/Lmxlbmd0aCkgcmV0dXJuIGZpZWxkLm9wdGlvbnM7XG4gICAgaWYgKCFmaWVsZC5saXN0TmFtZSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB0aGlzLnBlZWsoZmllbGQubGlzdE5hbWUsIGxhbmcpID8/IFtdO1xuICB9XG5cbiAgLyoqIFRoZSBvcHRpb25zIGZvciBhIGZpZWxkLCBsb2FkaW5nIHRoZSBuYW1lZCBsaXN0IGlmIG5lZWRlZC4gKi9cbiAgcmVzb2x2ZU9wdGlvbnMoZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnIHwgdW5kZWZpbmVkLCBsYW5nID0gJ2VuJyk6IFByb21pc2U8RHJvcGRvd25PcHRpb25bXT4ge1xuICAgIGlmICghdGhpcy5uZWVkc1Jlc29sdmUoZmllbGQpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMub3B0aW9uc0ZvcihmaWVsZCwgbGFuZykpO1xuICAgIHJldHVybiB0aGlzLmxvYWQoZmllbGQhLmxpc3ROYW1lISwgbGFuZyk7XG4gIH1cblxuICAvKiogRHJvcCBldmVyeXRoaW5nIGNhY2hlZCBmb3Igb25lIGxpc3QsIGxlYXZpbmcgb3RoZXIgbGlzdHMgaW50YWN0LiAqL1xuICBpbnZhbGlkYXRlKGxpc3ROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVmaXggPSBgJHtsaXN0TmFtZX0ke1NFUH1gO1xuICAgIGZvciAoY29uc3QgbWFwIG9mIFt0aGlzLm9wdGlvbnMsIHRoaXMudmFsdWVzLCB0aGlzLmluRmxpZ2h0XSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgWy4uLm1hcC5rZXlzKCldKSB7XG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChwcmVmaXgpKSBtYXAuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIFsuLi50aGlzLmxhYmVscy5rZXlzKCldKSB7XG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgocHJlZml4KSkgdGhpcy5sYWJlbHMuZGVsZXRlKGtleSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25zLmNsZWFyKCk7XG4gICAgdGhpcy52YWx1ZXMuY2xlYXIoKTtcbiAgICB0aGlzLmluRmxpZ2h0LmNsZWFyKCk7XG4gICAgdGhpcy5sYWJlbHMuY2xlYXIoKTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBJbnRlcm5hbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBjYWNoZUtleShsaXN0TmFtZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBbbGlzdE5hbWUsIGxhbmddLmpvaW4oU0VQKTtcbiAgfVxuXG4gIHByaXZhdGUgbGFiZWxLZXkobGlzdE5hbWU6IHN0cmluZywgbGFuZzogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBbbGlzdE5hbWUsIGxhbmcsIHRleHRdLmpvaW4oU0VQKTtcbiAgfVxuXG4gIC8qKiBJbmRleCBhbiBvcHRpb24gdW5kZXIgZXZlcnkgbGFuZ3VhZ2UgaXQgY2Fycmllcywgc28gYW55IHN0b3JlZCBzcGVsbGluZyBmaW5kcyBpdC4gKi9cbiAgcHJpdmF0ZSByZW1lbWJlckxhYmVscyhsaXN0TmFtZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcsIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICBjb25zdCBkaXNwbGF5ID0gcmVzb2x2ZUxhYmVsKG9wdGlvbiwgbGFuZyk7XG4gICAgICBpZiAoIWRpc3BsYXkpIGNvbnRpbnVlO1xuICAgICAgZm9yIChjb25zdCB0ZXh0IG9mIE9iamVjdC52YWx1ZXMob3B0aW9uKSkge1xuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQgIT09ICcnKSB7XG4gICAgICAgICAgdGhpcy5sYWJlbHMuc2V0KHRoaXMubGFiZWxLZXkobGlzdE5hbWUsIGxhbmcsIHRleHQpLCBkaXNwbGF5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgdGV4dHMgYSBzdG9yZWQgdmFsdWUgY291bGQgaGF2ZSBiZWVuIGluZGV4ZWQgdW5kZXIuICovXG4gIHByaXZhdGUgY2FuZGlkYXRlVGV4dHModmFsdWU6IHVua25vd24sIGxhbmc6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgdGV4dHMgPSBPYmplY3QudmFsdWVzKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5maWx0ZXIoXG4gICAgICAgICh2KTogdiBpcyBzdHJpbmcgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYgIT09ICcnLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUxhYmVsKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGxhbmcpO1xuICAgICAgcmV0dXJuIHJlc29sdmVkID8gW3Jlc29sdmVkLCAuLi50ZXh0c10gOiB0ZXh0cztcbiAgICB9XG4gICAgcmV0dXJuIFtTdHJpbmcodmFsdWUpXTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBTb3VyY2UgY29lcmNpb24gKHZhbHVlcyB8IGxvYWRlciwgYXJyYXkgfCBQcm9taXNlIHwgT2JzZXJ2YWJsZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBpbnZva2Uoc291cmNlOiBMb29rdXBMaXN0U291cmNlLCBsYW5nOiBzdHJpbmcpOiBQcm9taXNlPFJhd0xvb2t1cExpc3RWYWx1ZVtdPiB7XG4gICAgbGV0IHJlc3VsdDogTG9va3VwTGlzdFJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gdHlwZW9mIHNvdXJjZSA9PT0gJ2Z1bmN0aW9uJyA/IChzb3VyY2UgYXMgTG9va3VwTGlzdExvYWRlcikoeyBsYW5nIH0pIDogc291cmNlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gUmVqZWN0IHJhdGhlciB0aGFuIHJlc29sdmUgZW1wdHk6IGBsb2FkYCBtdXN0IGJlIGFibGUgdG8gdGVsbCBmYWlsdXJlIGZyb20gYW4gZW1wdHlcbiAgICAgIC8vIGxpc3QsIG9yIGl0IHdvdWxkIGNhY2hlIHRoZSBmYWlsdXJlLlxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZShyZXN1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1Byb21pc2UocmVzdWx0OiBMb29rdXBMaXN0UmVzdWx0KTogUHJvbWlzZTxSYXdMb29rdXBMaXN0VmFsdWVbXT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICBpZiAodGhpcy5pc1N1YnNjcmliYWJsZShyZXN1bHQpKSB7XG4gICAgICAvLyBGaXJzdCBlbWlzc2lvbiB3aW5zLCBzbyBhIHN0cmVhbSB0aGF0IHN0YXlzIG9wZW4gc3RpbGwgcmVzb2x2ZXMgdGhlIGxvYWQuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8UmF3TG9va3VwTGlzdFZhbHVlW10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IHNldHRsZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2V0dGxlID0gKGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgICAgaWYgKHNldHRsZWQpIHJldHVybjtcbiAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICBmbigpO1xuICAgICAgICB9O1xuICAgICAgICByZXN1bHQuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiB2YWx1ZSA9PiBzZXR0bGUoKCkgPT4gcmVzb2x2ZSh2YWx1ZSA/PyBbXSkpLFxuICAgICAgICAgIGVycm9yOiBlcnIgPT4gc2V0dGxlKCgpID0+IHJlamVjdChlcnIpKSxcbiAgICAgICAgICAvLyBDb21wbGV0aW5nIHdpdGhvdXQgZW1pdHRpbmcgaXMgYSBsZWdpdGltYXRlIGVtcHR5IGxpc3QsIGFuZCBpcyBjYWNoZWQuXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHNldHRsZSgoKSA9PiByZXNvbHZlKFtdKSksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0IGFzIFByb21pc2U8UmF3TG9va3VwTGlzdFZhbHVlW10+KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTdWJzY3JpYmFibGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTdWJzY3JpYmFibGU8UmF3TG9va3VwTGlzdFZhbHVlW10+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiAodmFsdWUgYXMgU3Vic2NyaWJhYmxlPFJhd0xvb2t1cExpc3RWYWx1ZVtdPikuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nXG4gICAgKTtcbiAgfVxufVxuXG4vKiogQSBjaG9pY2UgZmllbGQgY29tcG9uZW50LCBhcyBmYXIgYXMgb3B0aW9uIHJlc29sdXRpb24gaXMgY29uY2VybmVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaG9pY2VPcHRpb25Ib3N0IHtcbiAgcmVhZG9ubHkgZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBsYW5ndWFnZTogc3RyaW5nO1xuICByZWFkb25seSBvcHRpb25zOiBXcml0YWJsZVNpZ25hbDxEcm9wZG93bk9wdGlvbltdPjtcbn1cblxuY29uc3QgaG9zdExhc3RDb25maWcgPSBuZXcgV2Vha01hcDxDaG9pY2VPcHRpb25Ib3N0LCB7IGZpZWxkPzogTmVzdGVkRmllbGRDb25maWc7IGxhbmc/OiBzdHJpbmcgfT4oKTtcblxuLyoqXG4gKiBQb2ludCBhIGNob2ljZSBjb21wb25lbnQncyBgb3B0aW9uc2Agc2lnbmFsIGF0IHRoZSByaWdodCBzb3VyY2UgKHBhcml0eSBwbGFuIMKnNi4zKS5cbiAqXG4gKiBDYWxsZWQgZnJvbSB0aGUgYGZpZWxkYCAvIGBsYW5ndWFnZWAgaW5wdXQgc2V0dGVycyBvZiBgZHJvcGRvd25gLCBgcmFkaW9gIGFuZCBgbXVsdGlTZWxlY3RgIOKAlFxuICogdGhlIHdpcmluZyBpcyB0aGVpcnMsIHRoZSBkZWNpc2lvbiBpcyB0aGUgc2VydmljZSdzLCB3aGljaCBpcyB3aGF0IGtlZXBzIHRoZSBBRFItMDA4XG4gKiBmaXZlLWlucHV0IGNvbnRyYWN0IGludGFjdDogb3B0aW9ucyBhcmUgbmV2ZXIgcHVzaGVkIGluIGFzIGEgc2l4dGggaW5wdXQuXG4gKlxuICogU2V0dGVycyByYXRoZXIgdGhhbiBgbmdPbkNoYW5nZXNgIG9uIHB1cnBvc2UuIGBuZ09uQ2hhbmdlc2Agb25seSBmaXJlcyBmb3IgaW5wdXRzIEFuZ3VsYXJcbiAqIGl0c2VsZiBzZXRzLCBzbyBhIGNvbXBvbmVudCB3aG9zZSBgZmllbGRgIGlzIGFzc2lnbmVkIGRpcmVjdGx5IOKAlCB3aGljaCB0aGUgZmllbGQgc3BlY3MgZG8sXG4gKiBhbmQgYW55IGNvbnN1bWVyIGhvbGRpbmcgYSBgQ29tcG9uZW50UmVmYCBtYXkgZG8g4oCUIHdvdWxkIHJlbmRlciBubyBvcHRpb25zIGF0IGFsbC5cbiAqXG4gKiBQYWludHMgc3luY2hyb25vdXNseSBmaXJzdCAoaW5saW5lIG9wdGlvbnMsIG9yIGEgd2FybSBsaXN0KSwgdGhlbiBmaWxscyBpbiB3aGVuIGEgY29sZCBsaXN0XG4gKiBsYW5kcy4gVGhlIGxhdGUgcmVzdWx0IGlzIGRyb3BwZWQgaWYgdGhlIGZpZWxkIG9yIGxhbmd1YWdlIGNoYW5nZWQgd2hpbGUgaXQgd2FzIGluIGZsaWdodC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZnJlc2hDaG9pY2VPcHRpb25zKGhvc3Q6IENob2ljZU9wdGlvbkhvc3QsIGxvb2t1cHM6IExvb2t1cFJlZ2lzdHJ5U2VydmljZSk6IHZvaWQge1xuICBjb25zdCBsYXN0ID0gaG9zdExhc3RDb25maWcuZ2V0KGhvc3QpO1xuICBpZiAobGFzdCAmJiBsYXN0LmZpZWxkID09PSBob3N0LmZpZWxkICYmIGxhc3QubGFuZyA9PT0gaG9zdC5sYW5ndWFnZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBob3N0TGFzdENvbmZpZy5zZXQoaG9zdCwgeyBmaWVsZDogaG9zdC5maWVsZCwgbGFuZzogaG9zdC5sYW5ndWFnZSB9KTtcblxuICBob3N0Lm9wdGlvbnMuc2V0KGxvb2t1cHMub3B0aW9uc0Zvcihob3N0LmZpZWxkLCBob3N0Lmxhbmd1YWdlKSk7XG4gIGlmICghbG9va3Vwcy5uZWVkc1Jlc29sdmUoaG9zdC5maWVsZCkpIHJldHVybjtcblxuICBjb25zdCBsaXN0TmFtZSA9IGhvc3QuZmllbGQ/Lmxpc3ROYW1lO1xuICBjb25zdCBsYW5nID0gaG9zdC5sYW5ndWFnZTtcbiAgdm9pZCBsb29rdXBzLnJlc29sdmVPcHRpb25zKGhvc3QuZmllbGQsIGhvc3QubGFuZ3VhZ2UpLnRoZW4ob3B0aW9ucyA9PiB7XG4gICAgaWYgKGhvc3QuZmllbGQ/Lmxpc3ROYW1lID09PSBsaXN0TmFtZSAmJiBob3N0Lmxhbmd1YWdlID09PSBsYW5nKSBob3N0Lm9wdGlvbnMuc2V0KG9wdGlvbnMpO1xuICB9KTtcbn1cbiJdfQ==
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvb2t1cC1yZWdpc3RyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQVd4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUU3RCw4RkFBOEY7QUFDOUYsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBRWhCOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNmLFFBQVEsR0FDdkIsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUE0QixDQUFDO0lBRXJGLDJDQUEyQztJQUMxQixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFDL0QsZ0dBQWdHO0lBQy9FLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztJQUMvRCx5Q0FBeUM7SUFDeEIsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFxQyxDQUFDO0lBQ3pFLGdGQUFnRjtJQUMvRCxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFcEQsR0FBRyxDQUFDLFFBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBZ0IsRUFBRSxJQUFJLEdBQUcsSUFBSTtRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEs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QUFPO0lBRTlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO0lBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDM0IsS0FBSyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNwRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUk7WUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIHR5cGUgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtcbiAgRHJvcGRvd25PcHRpb24sXG4gIExvb2t1cExpc3RMb2FkZXIsXG4gIExvb2t1cExpc3RSZXN1bHQsXG4gIExvb2t1cExpc3RTb3VyY2UsXG4gIExvb2t1cExpc3RWYWx1ZSxcbiAgTmVzdGVkRmllbGRDb25maWcsXG4gIFJhd0xvb2t1cExpc3RWYWx1ZSxcbiAgU3Vic2NyaWJhYmxlLFxufSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XG5pbXBvcnQgeyBsb29rdXBWYWx1ZXNUb09wdGlvbnMsIG5vcm1hbGl6ZUxvb2t1cFZhbHVlcywgcmVzb2x2ZUxhYmVsIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgTE9PS1VQX1JFR0lTVFJZIH0gZnJvbSAnLi4vdG9rZW5zL2luamVjdGlvbi10b2tlbnMnO1xuXG4vKiogQ2FjaGUta2V5IGZpZWxkIHNlcGFyYXRvci4gS2VwdCBvdXQgb2YgdGVtcGxhdGUgbGl0ZXJhbHMgc28gaXQgc3RheXMgdmlzaWJsZSBpbiBzb3VyY2UuICovXG5jb25zdCBTRVAgPSAnfCc7XG5cbi8qKlxuICogTG9va3VwUmVnaXN0cnlTZXJ2aWNlIOKAlCB0aGUgY2FjaGUgaW4gZnJvbnQgb2YgY29uc3VtZXItcmVnaXN0ZXJlZCBtYXN0ZXIgbGlzdHMuXG4gKlxuICogVGhyZWUgbGF5ZXJzLCBkZWxpYmVyYXRlbHkgdGhlIHNhbWUgc2hhcGUgYXMgYEVudGl0eVJlZmVyZW5jZVNlcnZpY2VgLCBiZWNhdXNlIHRoZSBwcm9ibGVtIGlzXG4gKiB0aGUgc2FtZTogb25lIGxpc3QgaXMgdHlwaWNhbGx5IHVzZWQgYnkgbWFueSBmaWVsZHMgYWNyb3NzIG1hbnkgZW50aXRpZXMuXG4gKiAgMS4gKipvcHRpb25zKiog4oCUIHJlc29sdmVkIGBEcm9wZG93bk9wdGlvbltdYCBwZXIgKGxpc3QgbmFtZSwgbGFuZykuXG4gKiAgMi4gKippbi1mbGlnaHQqKiDigJQgdGhlIHBlbmRpbmcgUHJvbWlzZSwgc28gTiBmaWVsZHMgb24gb25lIGxpc3QgdHJpZ2dlciBvbmUgbG9hZCwgbm90IE4uXG4gKiAgMy4gKipsYWJlbHMqKiDigJQgc3luY2hyb25vdXMgdmFsdWUg4oaSIHRleHQgKHBhcml0eSBwbGFuIMKnNi4yKS4gVGhpcyBpcyBub3QgYSBuaWNldHk6IHNpbmNlXG4gKiAgICAgYHZpZXdNb2RlYCBkZWZhdWx0cyB0byB0cnVlIGEgcmVjb3JkIG9wZW5zIHJlYWQtb25seSwgc28gcmVuZGVyaW5nIGEgc3RvcmVkIHZhbHVlIGFzXG4gKiAgICAgdGV4dCBpcyB0aGUgKmZpcnN0KiB0aGluZyBhIGBsaXN0TmFtZWAgZmllbGQgaGFzIHRvIGRvLiBBbiBhc3luYy1vbmx5IHJlZ2lzdHJ5IHdvdWxkXG4gKiAgICAgcGFpbnQgdGhlIHJhdyBzdG9yZWQgdmFsdWUgYW5kIHRoZW4gZmxpcCwgb24gZXZlcnkgcmVjb3JkIG9wZW4uXG4gKlxuICogQSBmYWlsZWQgbG9hZCByZWplY3RzIGFuZCBjYWNoZXMgbm90aGluZywgc28gb25lIHRyYW5zaWVudCBlcnJvciBkb2VzIG5vdCBzZXJ2ZSBhbiBlbXB0eVxuICogbGlzdCBmb3JldmVyIOKAlCB0aGUgc2FtZSBmaXggbWFkZSBmb3IgZW50aXR5IHJlZmVyZW5jZXMgaW4gcGhhc2UgNS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb29rdXBSZWdpc3RyeVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID1cbiAgICBpbmplY3QoTE9PS1VQX1JFR0lTVFJZLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IG5ldyBNYXA8c3RyaW5nLCBMb29rdXBMaXN0U291cmNlPigpO1xuXG4gIC8qKiBgbGlzdE5hbWV8bGFuZ2AgLT4gcmVzb2x2ZWQgb3B0aW9ucy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zID0gbmV3IE1hcDxzdHJpbmcsIERyb3Bkb3duT3B0aW9uW10+KCk7XG4gIC8qKiBgbGlzdE5hbWV8bGFuZ2AgLT4gbm9ybWFsaXNlZCB2YWx1ZXMsIHNvIGEgY29uc3VtZXIgY2FuIHJlYWNoIGBjb2RlYCAvIGBpc1N5c3RlbURlZmluZWRgLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlcyA9IG5ldyBNYXA8c3RyaW5nLCBMb29rdXBMaXN0VmFsdWVbXT4oKTtcbiAgLyoqIExvYWRzIGluIHByb2dyZXNzLCBrZXllZCBhcyBhYm92ZS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpbkZsaWdodCA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPERyb3Bkb3duT3B0aW9uW10+PigpO1xuICAvKiogYGxpc3ROYW1lfGxhbmd8dGV4dGAgLT4gZGlzcGxheSB0ZXh0LCBmb3IgdGhlIHN5bmNocm9ub3VzIHJlYWQtb25seSBwYXRoLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxhYmVscyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgaGFzKGxpc3ROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5oYXMobGlzdE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGEgbmFtZWQgbGlzdCwgZnJvbSBjYWNoZSB3aGVuIHByZXNlbnQuXG4gICAqIENvbmN1cnJlbnQgY2FsbGVycyB3aXRoIHRoZSBzYW1lIGtleSBzaGFyZSBvbmUgbG9hZC5cbiAgICovXG4gIGFzeW5jIGxvYWQobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBQcm9taXNlPERyb3Bkb3duT3B0aW9uW10+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKTtcblxuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMub3B0aW9ucy5nZXQoa2V5KTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgcGVuZGluZyA9IHRoaXMuaW5GbGlnaHQuZ2V0KGtleSk7XG4gICAgaWYgKHBlbmRpbmcpIHJldHVybiBwZW5kaW5nO1xuXG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5yZWdpc3RyeS5nZXQobGlzdE5hbWUpO1xuICAgIGlmIChzb3VyY2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgbG9hZCA9IHRoaXMuaW52b2tlKHNvdXJjZSwgbGFuZykudGhlbihyYXcgPT4ge1xuICAgICAgY29uc3QgdmFsdWVzID0gbm9ybWFsaXplTG9va3VwVmFsdWVzKHJhdyk7XG4gICAgICBjb25zdCBvcHRpb25zID0gbG9va3VwVmFsdWVzVG9PcHRpb25zKHZhbHVlcyk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoa2V5LCB2YWx1ZXMpO1xuICAgICAgdGhpcy5vcHRpb25zLnNldChrZXksIG9wdGlvbnMpO1xuICAgICAgdGhpcy5yZW1lbWJlckxhYmVscyhsaXN0TmFtZSwgbGFuZywgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9KTtcblxuICAgIC8vIE9ubHkgdGhlIGAudGhlbmAgYWJvdmUgd3JpdGVzIHRvIHRoZSBjYWNoZSwgYW5kIGEgcmVqZWN0aW9uIHNraXBzIGl0OiB0aGUgY2FsbGVyIHN0aWxsXG4gICAgLy8gZ2V0cyBhbiBlbXB0eSBsaXN0LCBidXQgdGhlIG5leHQgY2FsbCByZXRyaWVzIGluc3RlYWQgb2YgcmVhZGluZyBhIHBvaXNvbmVkIGVudHJ5LlxuICAgIGNvbnN0IGd1YXJkZWQgPSBsb2FkXG4gICAgICAuY2F0Y2goKCkgPT4gW10gYXMgRHJvcGRvd25PcHRpb25bXSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMuaW5GbGlnaHQuZGVsZXRlKGtleSkpO1xuXG4gICAgdGhpcy5pbkZsaWdodC5zZXQoa2V5LCBndWFyZGVkKTtcbiAgICByZXR1cm4gZ3VhcmRlZDtcbiAgfVxuXG4gIC8qKiBDYWNoZWQgb3B0aW9ucyB3aXRob3V0IHRyaWdnZXJpbmcgYSBsb2FkLiBgdW5kZWZpbmVkYCB3aGVuIG5vdCBsb2FkZWQuICovXG4gIHBlZWsobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBEcm9wZG93bk9wdGlvbltdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCh0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FjaGVkIGxpc3QgdmFsdWVzLCBjYXJyeWluZyBgX2lkYCwgYGNvZGVgLCBgaXNTeXN0ZW1EZWZpbmVkYCBhbmQgYGZyb21gLlxuICAgKiBUaGUgbGlicmFyeSBuZXZlciByZWFkcyB0aG9zZTsgdGhpcyBpcyB0aGUgc2VhbSBmb3IgYSBjb25zdW1lciB0aGF0IG5lZWRzIHRoZW0uXG4gICAqL1xuICB2YWx1ZXNGb3IobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBMb29rdXBMaXN0VmFsdWVbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmdldCh0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheSB0ZXh0IGZvciBhIHN0b3JlZCB2YWx1ZSwgc3luY2hyb25vdXNseS4gYHVuZGVmaW5lZGAgd2hlbiB0aGUgbGlzdCBoYXMgbm90IGxvYWRlZFxuICAgKiBvciBob2xkcyBubyBtYXRjaGluZyB2YWx1ZSDigJQgdGhlIGNhbGxlciBrZWVwcyBpdHMgb3duIGZhbGxiYWNrLCB3aGljaCBpcyB0aGUgc3RvcmVkIHRleHQuXG4gICAqXG4gICAqIEV2ZXJ5IGxhbmd1YWdlIG9mIGFuIG9wdGlvbiBpcyBpbmRleGVkLCBzbyBhIHJlY29yZCBzYXZlZCB1bmRlciBvbmUgbGFuZ3VhZ2UgcmVuZGVycyBpblxuICAgKiBhbm90aGVyOiBhIHZhbHVlIHN0b3JlZCBhcyBgJ0FrdGl2J2AgcmVzb2x2ZXMgdG8gYCdBY3RpdmUnYCB1bmRlciBgbGFuZzogJ2VuJ2AuXG4gICAqL1xuICBsYWJlbEZvcihsaXN0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLCB2YWx1ZTogdW5rbm93biwgbGFuZyA9ICdlbicpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghbGlzdE5hbWUgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCB0ZXh0IG9mIHRoaXMuY2FuZGlkYXRlVGV4dHModmFsdWUsIGxhbmcpKSB7XG4gICAgICBjb25zdCBoaXQgPSB0aGlzLmxhYmVscy5nZXQodGhpcy5sYWJlbEtleShsaXN0TmFtZSwgbGFuZywgdGV4dCkpO1xuICAgICAgaWYgKGhpdCkgcmV0dXJuIGhpdDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBGaWVsZC1sZXZlbCByZXNvbHV0aW9uIOKAlCBpbmxpbmUgb3B0aW9ucyB3aW4sIGVsc2UgYGxpc3ROYW1lYCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKiogVHJ1ZSB3aGVuIHRoaXMgZmllbGQncyBvcHRpb25zIGhhdmUgdG8gY29tZSBmcm9tIHRoZSByZWdpc3RyeS4gKi9cbiAgbmVlZHNSZXNvbHZlKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWZpZWxkPy5saXN0TmFtZSAmJiAhZmllbGQub3B0aW9ucz8ubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIHRvIHJlbmRlciByaWdodCBub3csIHdpdGhvdXQgYXdhaXRpbmc6IGlubGluZSBvcHRpb25zLCBlbHNlIHdoYXRldmVyIHRoZVxuICAgKiByZWdpc3RyeSBhbHJlYWR5IGhvbGRzLiBFbXB0eSBvbiBhIGNvbGQgbWlzcyDigJQgcGFpciB3aXRoIGByZXNvbHZlT3B0aW9uc2AuXG4gICAqL1xuICBvcHRpb25zRm9yKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyB8IHVuZGVmaW5lZCwgbGFuZyA9ICdlbicpOiBEcm9wZG93bk9wdGlvbltdIHtcbiAgICBpZiAoIWZpZWxkKSByZXR1cm4gW107XG4gICAgaWYgKGZpZWxkLm9wdGlvbnM/Lmxlbmd0aCkgcmV0dXJuIGZpZWxkLm9wdGlvbnM7XG4gICAgaWYgKCFmaWVsZC5saXN0TmFtZSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB0aGlzLnBlZWsoZmllbGQubGlzdE5hbWUsIGxhbmcpID8/IFtdO1xuICB9XG5cbiAgLyoqIFRoZSBvcHRpb25zIGZvciBhIGZpZWxkLCBsb2FkaW5nIHRoZSBuYW1lZCBsaXN0IGlmIG5lZWRlZC4gKi9cbiAgcmVzb2x2ZU9wdGlvbnMoZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnIHwgdW5kZWZpbmVkLCBsYW5nID0gJ2VuJyk6IFByb21pc2U8RHJvcGRvd25PcHRpb25bXT4ge1xuICAgIGlmICghdGhpcy5uZWVkc1Jlc29sdmUoZmllbGQpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMub3B0aW9uc0ZvcihmaWVsZCwgbGFuZykpO1xuICAgIHJldHVybiB0aGlzLmxvYWQoZmllbGQhLmxpc3ROYW1lISwgbGFuZyk7XG4gIH1cblxuICAvKiogRHJvcCBldmVyeXRoaW5nIGNhY2hlZCBmb3Igb25lIGxpc3QsIGxlYXZpbmcgb3RoZXIgbGlzdHMgaW50YWN0LiAqL1xuICBpbnZhbGlkYXRlKGxpc3ROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVmaXggPSBgJHtsaXN0TmFtZX0ke1NFUH1gO1xuICAgIGZvciAoY29uc3QgbWFwIG9mIFt0aGlzLm9wdGlvbnMsIHRoaXMudmFsdWVzLCB0aGlzLmluRmxpZ2h0XSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgWy4uLm1hcC5rZXlzKCldKSB7XG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChwcmVmaXgpKSBtYXAuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIFsuLi50aGlzLmxhYmVscy5rZXlzKCldKSB7XG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgocHJlZml4KSkgdGhpcy5sYWJlbHMuZGVsZXRlKGtleSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25zLmNsZWFyKCk7XG4gICAgdGhpcy52YWx1ZXMuY2xlYXIoKTtcbiAgICB0aGlzLmluRmxpZ2h0LmNsZWFyKCk7XG4gICAgdGhpcy5sYWJlbHMuY2xlYXIoKTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBJbnRlcm5hbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBjYWNoZUtleShsaXN0TmFtZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBbbGlzdE5hbWUsIGxhbmddLmpvaW4oU0VQKTtcbiAgfVxuXG4gIHByaXZhdGUgbGFiZWxLZXkobGlzdE5hbWU6IHN0cmluZywgbGFuZzogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBbbGlzdE5hbWUsIGxhbmcsIHRleHRdLmpvaW4oU0VQKTtcbiAgfVxuXG4gIC8qKiBJbmRleCBhbiBvcHRpb24gdW5kZXIgZXZlcnkgbGFuZ3VhZ2UgaXQgY2Fycmllcywgc28gYW55IHN0b3JlZCBzcGVsbGluZyBmaW5kcyBpdC4gKi9cbiAgcHJpdmF0ZSByZW1lbWJlckxhYmVscyhsaXN0TmFtZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcsIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICBjb25zdCBkaXNwbGF5ID0gcmVzb2x2ZUxhYmVsKG9wdGlvbiwgbGFuZyk7XG4gICAgICBpZiAoIWRpc3BsYXkpIGNvbnRpbnVlO1xuICAgICAgZm9yIChjb25zdCB0ZXh0IG9mIE9iamVjdC52YWx1ZXMob3B0aW9uKSkge1xuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQgIT09ICcnKSB7XG4gICAgICAgICAgdGhpcy5sYWJlbHMuc2V0KHRoaXMubGFiZWxLZXkobGlzdE5hbWUsIGxhbmcsIHRleHQpLCBkaXNwbGF5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgdGV4dHMgYSBzdG9yZWQgdmFsdWUgY291bGQgaGF2ZSBiZWVuIGluZGV4ZWQgdW5kZXIuICovXG4gIHByaXZhdGUgY2FuZGlkYXRlVGV4dHModmFsdWU6IHVua25vd24sIGxhbmc6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgdGV4dHMgPSBPYmplY3QudmFsdWVzKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5maWx0ZXIoXG4gICAgICAgICh2KTogdiBpcyBzdHJpbmcgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYgIT09ICcnLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUxhYmVsKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGxhbmcpO1xuICAgICAgcmV0dXJuIHJlc29sdmVkID8gW3Jlc29sdmVkLCAuLi50ZXh0c10gOiB0ZXh0cztcbiAgICB9XG4gICAgcmV0dXJuIFtTdHJpbmcodmFsdWUpXTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBTb3VyY2UgY29lcmNpb24gKHZhbHVlcyB8IGxvYWRlciwgYXJyYXkgfCBQcm9taXNlIHwgT2JzZXJ2YWJsZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBpbnZva2Uoc291cmNlOiBMb29rdXBMaXN0U291cmNlLCBsYW5nOiBzdHJpbmcpOiBQcm9taXNlPFJhd0xvb2t1cExpc3RWYWx1ZVtdPiB7XG4gICAgbGV0IHJlc3VsdDogTG9va3VwTGlzdFJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gdHlwZW9mIHNvdXJjZSA9PT0gJ2Z1bmN0aW9uJyA/IChzb3VyY2UgYXMgTG9va3VwTGlzdExvYWRlcikoeyBsYW5nIH0pIDogc291cmNlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gUmVqZWN0IHJhdGhlciB0aGFuIHJlc29sdmUgZW1wdHk6IGBsb2FkYCBtdXN0IGJlIGFibGUgdG8gdGVsbCBmYWlsdXJlIGZyb20gYW4gZW1wdHlcbiAgICAgIC8vIGxpc3QsIG9yIGl0IHdvdWxkIGNhY2hlIHRoZSBmYWlsdXJlLlxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZShyZXN1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1Byb21pc2UocmVzdWx0OiBMb29rdXBMaXN0UmVzdWx0KTogUHJvbWlzZTxSYXdMb29rdXBMaXN0VmFsdWVbXT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICBpZiAodGhpcy5pc1N1YnNjcmliYWJsZShyZXN1bHQpKSB7XG4gICAgICAvLyBGaXJzdCBlbWlzc2lvbiB3aW5zLCBzbyBhIHN0cmVhbSB0aGF0IHN0YXlzIG9wZW4gc3RpbGwgcmVzb2x2ZXMgdGhlIGxvYWQuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8UmF3TG9va3VwTGlzdFZhbHVlW10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IHNldHRsZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2V0dGxlID0gKGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgICAgaWYgKHNldHRsZWQpIHJldHVybjtcbiAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICBmbigpO1xuICAgICAgICB9O1xuICAgICAgICByZXN1bHQuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiB2YWx1ZSA9PiBzZXR0bGUoKCkgPT4gcmVzb2x2ZSh2YWx1ZSA/PyBbXSkpLFxuICAgICAgICAgIGVycm9yOiBlcnIgPT4gc2V0dGxlKCgpID0+IHJlamVjdChlcnIpKSxcbiAgICAgICAgICAvLyBDb21wbGV0aW5nIHdpdGhvdXQgZW1pdHRpbmcgaXMgYSBsZWdpdGltYXRlIGVtcHR5IGxpc3QsIGFuZCBpcyBjYWNoZWQuXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHNldHRsZSgoKSA9PiByZXNvbHZlKFtdKSksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0IGFzIFByb21pc2U8UmF3TG9va3VwTGlzdFZhbHVlW10+KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTdWJzY3JpYmFibGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTdWJzY3JpYmFibGU8UmF3TG9va3VwTGlzdFZhbHVlW10+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiAodmFsdWUgYXMgU3Vic2NyaWJhYmxlPFJhd0xvb2t1cExpc3RWYWx1ZVtdPikuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nXG4gICAgKTtcbiAgfVxufVxuXG4vKiogQSBjaG9pY2UgZmllbGQgY29tcG9uZW50LCBhcyBmYXIgYXMgb3B0aW9uIHJlc29sdXRpb24gaXMgY29uY2VybmVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaG9pY2VPcHRpb25Ib3N0IHtcbiAgcmVhZG9ubHkgZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBsYW5ndWFnZTogc3RyaW5nO1xuICByZWFkb25seSBvcHRpb25zOiBXcml0YWJsZVNpZ25hbDxEcm9wZG93bk9wdGlvbltdPjtcbn1cblxuY29uc3QgaG9zdExhc3RDb25maWcgPSBuZXcgV2Vha01hcDxDaG9pY2VPcHRpb25Ib3N0LCB7IGZpZWxkPzogTmVzdGVkRmllbGRDb25maWc7IGxhbmc/OiBzdHJpbmcgfT4oKTtcblxuLyoqXG4gKiBQb2ludCBhIGNob2ljZSBjb21wb25lbnQncyBgb3B0aW9uc2Agc2lnbmFsIGF0IHRoZSByaWdodCBzb3VyY2UgKHBhcml0eSBwbGFuIMKnNi4zKS5cbiAqXG4gKiBDYWxsZWQgZnJvbSB0aGUgYGZpZWxkYCAvIGBsYW5ndWFnZWAgaW5wdXQgc2V0dGVycyBvZiBgZHJvcGRvd25gLCBgcmFkaW9gIGFuZCBgbXVsdGlTZWxlY3RgIOKAlFxuICogdGhlIHdpcmluZyBpcyB0aGVpcnMsIHRoZSBkZWNpc2lvbiBpcyB0aGUgc2VydmljZSdzLCB3aGljaCBpcyB3aGF0IGtlZXBzIHRoZSBmaWVsZFxuICogZml2ZS1pbnB1dCBjb250cmFjdCBpbnRhY3Q6IG9wdGlvbnMgYXJlIG5ldmVyIHB1c2hlZCBpbiBhcyBhIHNpeHRoIGlucHV0LlxuICpcbiAqIFNldHRlcnMgcmF0aGVyIHRoYW4gYG5nT25DaGFuZ2VzYCBvbiBwdXJwb3NlLiBgbmdPbkNoYW5nZXNgIG9ubHkgZmlyZXMgZm9yIGlucHV0cyBBbmd1bGFyXG4gKiBpdHNlbGYgc2V0cywgc28gYSBjb21wb25lbnQgd2hvc2UgYGZpZWxkYCBpcyBhc3NpZ25lZCBkaXJlY3RseSDigJQgd2hpY2ggdGhlIGZpZWxkIHNwZWNzIGRvLFxuICogYW5kIGFueSBjb25zdW1lciBob2xkaW5nIGEgYENvbXBvbmVudFJlZmAgbWF5IGRvIOKAlCB3b3VsZCByZW5kZXIgbm8gb3B0aW9ucyBhdCBhbGwuXG4gKlxuICogUGFpbnRzIHN5bmNocm9ub3VzbHkgZmlyc3QgKGlubGluZSBvcHRpb25zLCBvciBhIHdhcm0gbGlzdCksIHRoZW4gZmlsbHMgaW4gd2hlbiBhIGNvbGQgbGlzdFxuICogbGFuZHMuIFRoZSBsYXRlIHJlc3VsdCBpcyBkcm9wcGVkIGlmIHRoZSBmaWVsZCBvciBsYW5ndWFnZSBjaGFuZ2VkIHdoaWxlIGl0IHdhcyBpbiBmbGlnaHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNoQ2hvaWNlT3B0aW9ucyhob3N0OiBDaG9pY2VPcHRpb25Ib3N0LCBsb29rdXBzOiBMb29rdXBSZWdpc3RyeVNlcnZpY2UpOiB2b2lkIHtcbiAgY29uc3QgbGFzdCA9IGhvc3RMYXN0Q29uZmlnLmdldChob3N0KTtcbiAgaWYgKGxhc3QgJiYgbGFzdC5maWVsZCA9PT0gaG9zdC5maWVsZCAmJiBsYXN0LmxhbmcgPT09IGhvc3QubGFuZ3VhZ2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaG9zdExhc3RDb25maWcuc2V0KGhvc3QsIHsgZmllbGQ6IGhvc3QuZmllbGQsIGxhbmc6IGhvc3QubGFuZ3VhZ2UgfSk7XG5cbiAgaG9zdC5vcHRpb25zLnNldChsb29rdXBzLm9wdGlvbnNGb3IoaG9zdC5maWVsZCwgaG9zdC5sYW5ndWFnZSkpO1xuICBpZiAoIWxvb2t1cHMubmVlZHNSZXNvbHZlKGhvc3QuZmllbGQpKSByZXR1cm47XG5cbiAgY29uc3QgbGlzdE5hbWUgPSBob3N0LmZpZWxkPy5saXN0TmFtZTtcbiAgY29uc3QgbGFuZyA9IGhvc3QubGFuZ3VhZ2U7XG4gIHZvaWQgbG9va3Vwcy5yZXNvbHZlT3B0aW9ucyhob3N0LmZpZWxkLCBob3N0Lmxhbmd1YWdlKS50aGVuKG9wdGlvbnMgPT4ge1xuICAgIGlmIChob3N0LmZpZWxkPy5saXN0TmFtZSA9PT0gbGlzdE5hbWUgJiYgaG9zdC5sYW5ndWFnZSA9PT0gbGFuZykgaG9zdC5vcHRpb25zLnNldChvcHRpb25zKTtcbiAgfSk7XG59XG4iXX0=
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
43
43
  type: Injectable,
44
44
  args: [{ providedIn: 'root' }]
45
45
  }] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmJhYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9yYmFjLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsSUFBSSxtQkFBbUIsRUFBRSxvQkFBb0IsSUFBSSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFMUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQUNMLFdBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTlFOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxTQUFtQixFQUFFLGFBQXdCO1FBQ3pELElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLG9CQUFvQixDQUFDLFFBQWtCLEVBQUUsT0FBaUIsRUFBRSxTQUFtQjtRQUM3RSxPQUFPLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxnQkFBZ0IsQ0FBQyxTQUFtQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsZUFBZSxDQUFDLEtBQXdCLEVBQUUsR0FBZ0MsRUFBRSxNQUF3QixFQUFFLFNBQW1CO1FBQ3ZILE9BQU8sbUJBQW1CLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELGNBQWMsQ0FBQyxNQUF3QixFQUFFLFNBQW1CO1FBQzFELE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUM7WUFDaEUsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDO1lBQ2hFLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQztTQUNyRSxDQUFDO0lBQ0osQ0FBQzt3R0FsQ1UsV0FBVzs0R0FBWCxXQUFXLGNBREUsTUFBTTs7NEZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgRW50aXR5Rm9ybUNvbmZpZywgTmVzdGVkRmllbGRDb25maWcsIE5lc3RlZFRhYkNvbmZpZyB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcclxuaW1wb3J0IHsgc2hvdWxkTWFza0ZpZWxkIGFzIGNvcmVTaG91bGRNYXNrRmllbGQsIHJlc29sdmVFZmZlY3RpdmVNYXNrIGFzIGNvcmVSZXNvbHZlRWZmZWN0aXZlTWFzayB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcclxuaW1wb3J0IHsgTUFTS0VEX1JPTEVTIH0gZnJvbSAnLi4vdG9rZW5zL2luamVjdGlvbi10b2tlbnMnO1xyXG5cclxuLyoqXHJcbiAqIFJiYWNTZXJ2aWNlIOKAlCBBTEwgcGVybWlzc2lvbiBjaGVja3MgYW5kIG1hc2tpbmcgbG9naWMgbGl2ZSBoZXJlLlxyXG4gKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFJiYWNTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IG1hc2tlZFJvbGVzID0gaW5qZWN0KE1BU0tFRF9ST0xFUywgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgYW55IG9mIHRoZSB1c2VyJ3Mgcm9sZXMgc2F0aXNmeSB0aGUgcmVxdWlyZWQgcm9sZXMuXHJcbiAgICogaGFzUGVybWlzc2lvbihyb2xlcywgdW5kZWZpbmVkKSDihpIgdHJ1ZSAobm8gcmVzdHJpY3Rpb24pLlxyXG4gICAqL1xyXG4gIGhhc1Blcm1pc3Npb24odXNlclJvbGVzOiBzdHJpbmdbXSwgcmVxdWlyZWRSb2xlcz86IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXJlcXVpcmVkUm9sZXM/Lmxlbmd0aCkgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gdXNlclJvbGVzLnNvbWUociA9PiByZXF1aXJlZFJvbGVzLmluY2x1ZGVzKHIpKTtcclxuICB9XHJcblxyXG4gIC8qKiAzLWxldmVsIE9SIHJlc29sdXRpb24gKi9cclxuICByZXNvbHZlRWZmZWN0aXZlTWFzayhmb3JtTWFzaz86IGJvb2xlYW4sIHRhYk1hc2s/OiBib29sZWFuLCBmaWVsZE1hc2s/OiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29yZVJlc29sdmVFZmZlY3RpdmVNYXNrKGZvcm1NYXNrLCB0YWJNYXNrLCBmaWVsZE1hc2spO1xyXG4gIH1cclxuXHJcbiAgLyoqIENoZWNrIGlmIHRoZSB1c2VyJ3Mgcm9sZXMgaW5jbHVkZSBhbnkgbWFza2VkIHJvbGUgKi9cclxuICBpc1VzZXJNYXNrZWRSb2xlKHVzZXJSb2xlczogc3RyaW5nW10pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm1hc2tlZFJvbGVzLnNvbWUociA9PiB1c2VyUm9sZXMuaW5jbHVkZXMocikpO1xyXG4gIH1cclxuXHJcbiAgLyoqIERldGVybWluZSBpZiBhIHNwZWNpZmljIGZpZWxkIHNob3VsZCBiZSBtYXNrZWQgZm9yIHRoaXMgdXNlciAqL1xyXG4gIHNob3VsZE1hc2tGaWVsZChmaWVsZDogTmVzdGVkRmllbGRDb25maWcsIHRhYjogTmVzdGVkVGFiQ29uZmlnIHwgdW5kZWZpbmVkLCBjb25maWc6IEVudGl0eUZvcm1Db25maWcsIHVzZXJSb2xlczogc3RyaW5nW10pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb3JlU2hvdWxkTWFza0ZpZWxkKGZpZWxkLCB0YWIsIGNvbmZpZywgdXNlclJvbGVzLCB0aGlzLm1hc2tlZFJvbGVzKTtcclxuICB9XHJcblxyXG4gIC8qKiBHZXQgdmlldy9lZGl0L2RlbGV0ZSBwZXJtaXNzaW9ucyBmb3IgYSBjb25maWcgKi9cclxuICBnZXRQZXJtaXNzaW9ucyhjb25maWc6IEVudGl0eUZvcm1Db25maWcsIHVzZXJSb2xlczogc3RyaW5nW10pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNhblZpZXc6IHRoaXMuaGFzUGVybWlzc2lvbih1c2VyUm9sZXMsIGNvbmZpZy5wZXJtaXNzaW9ucz8udmlldyksXHJcbiAgICAgIGNhbkVkaXQ6IHRoaXMuaGFzUGVybWlzc2lvbih1c2VyUm9sZXMsIGNvbmZpZy5wZXJtaXNzaW9ucz8uZWRpdCksXHJcbiAgICAgIGNhbkRlbGV0ZTogdGhpcy5oYXNQZXJtaXNzaW9uKHVzZXJSb2xlcywgY29uZmlnLnBlcm1pc3Npb25zPy5kZWxldGUpLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmJhYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9yYmFjLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsSUFBSSxtQkFBbUIsRUFBRSxvQkFBb0IsSUFBSSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFMUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQUNMLFdBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTlFOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxTQUFtQixFQUFFLGFBQXdCO1FBQ3pELElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLG9CQUFvQixDQUFDLFFBQWtCLEVBQUUsT0FBaUIsRUFBRSxTQUFtQjtRQUM3RSxPQUFPLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxnQkFBZ0IsQ0FBQyxTQUFtQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsZUFBZSxDQUFDLEtBQXdCLEVBQUUsR0FBZ0MsRUFBRSxNQUF3QixFQUFFLFNBQW1CO1FBQ3ZILE9BQU8sbUJBQW1CLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELGNBQWMsQ0FBQyxNQUF3QixFQUFFLFNBQW1CO1FBQzFELE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUM7WUFDaEUsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDO1lBQ2hFLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQztTQUNyRSxDQUFDO0lBQ0osQ0FBQzt3R0FsQ1UsV0FBVzs0R0FBWCxXQUFXLGNBREUsTUFBTTs7NEZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEVudGl0eUZvcm1Db25maWcsIE5lc3RlZEZpZWxkQ29uZmlnLCBOZXN0ZWRUYWJDb25maWcgfSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XG5pbXBvcnQgeyBzaG91bGRNYXNrRmllbGQgYXMgY29yZVNob3VsZE1hc2tGaWVsZCwgcmVzb2x2ZUVmZmVjdGl2ZU1hc2sgYXMgY29yZVJlc29sdmVFZmZlY3RpdmVNYXNrIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgTUFTS0VEX1JPTEVTIH0gZnJvbSAnLi4vdG9rZW5zL2luamVjdGlvbi10b2tlbnMnO1xuXG4vKipcbiAqIFJiYWNTZXJ2aWNlIOKAlCBBTEwgcGVybWlzc2lvbiBjaGVja3MgYW5kIG1hc2tpbmcgbG9naWMgbGl2ZSBoZXJlLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJiYWNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXNrZWRSb2xlcyA9IGluamVjdChNQVNLRURfUk9MRVMsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gW107XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFueSBvZiB0aGUgdXNlcidzIHJvbGVzIHNhdGlzZnkgdGhlIHJlcXVpcmVkIHJvbGVzLlxuICAgKiBoYXNQZXJtaXNzaW9uKHJvbGVzLCB1bmRlZmluZWQpIOKGkiB0cnVlIChubyByZXN0cmljdGlvbikuXG4gICAqL1xuICBoYXNQZXJtaXNzaW9uKHVzZXJSb2xlczogc3RyaW5nW10sIHJlcXVpcmVkUm9sZXM/OiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghcmVxdWlyZWRSb2xlcz8ubGVuZ3RoKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gdXNlclJvbGVzLnNvbWUociA9PiByZXF1aXJlZFJvbGVzLmluY2x1ZGVzKHIpKTtcbiAgfVxuXG4gIC8qKiAzLWxldmVsIE9SIHJlc29sdXRpb24gKi9cbiAgcmVzb2x2ZUVmZmVjdGl2ZU1hc2soZm9ybU1hc2s/OiBib29sZWFuLCB0YWJNYXNrPzogYm9vbGVhbiwgZmllbGRNYXNrPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb3JlUmVzb2x2ZUVmZmVjdGl2ZU1hc2soZm9ybU1hc2ssIHRhYk1hc2ssIGZpZWxkTWFzayk7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGhlIHVzZXIncyByb2xlcyBpbmNsdWRlIGFueSBtYXNrZWQgcm9sZSAqL1xuICBpc1VzZXJNYXNrZWRSb2xlKHVzZXJSb2xlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tYXNrZWRSb2xlcy5zb21lKHIgPT4gdXNlclJvbGVzLmluY2x1ZGVzKHIpKTtcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBmaWVsZCBzaG91bGQgYmUgbWFza2VkIGZvciB0aGlzIHVzZXIgKi9cbiAgc2hvdWxkTWFza0ZpZWxkKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZywgdGFiOiBOZXN0ZWRUYWJDb25maWcgfCB1bmRlZmluZWQsIGNvbmZpZzogRW50aXR5Rm9ybUNvbmZpZywgdXNlclJvbGVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb3JlU2hvdWxkTWFza0ZpZWxkKGZpZWxkLCB0YWIsIGNvbmZpZywgdXNlclJvbGVzLCB0aGlzLm1hc2tlZFJvbGVzKTtcbiAgfVxuXG4gIC8qKiBHZXQgdmlldy9lZGl0L2RlbGV0ZSBwZXJtaXNzaW9ucyBmb3IgYSBjb25maWcgKi9cbiAgZ2V0UGVybWlzc2lvbnMoY29uZmlnOiBFbnRpdHlGb3JtQ29uZmlnLCB1c2VyUm9sZXM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNhblZpZXc6IHRoaXMuaGFzUGVybWlzc2lvbih1c2VyUm9sZXMsIGNvbmZpZy5wZXJtaXNzaW9ucz8udmlldyksXG4gICAgICBjYW5FZGl0OiB0aGlzLmhhc1Blcm1pc3Npb24odXNlclJvbGVzLCBjb25maWcucGVybWlzc2lvbnM/LmVkaXQpLFxuICAgICAgY2FuRGVsZXRlOiB0aGlzLmhhc1Blcm1pc3Npb24odXNlclJvbGVzLCBjb25maWcucGVybWlzc2lvbnM/LmRlbGV0ZSksXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,56 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { VALIDATION_MESSAGES } from '../tokens/injection-tokens';
3
+ import * as i0 from "@angular/core";
4
+ /** The built-in English messages. Every key here can be overridden individually. */
5
+ export const DEFAULT_VALIDATION_MESSAGES = {
6
+ required: 'This field is required.',
7
+ requiredSelection: 'Please select an option.',
8
+ email: 'Please enter a valid email address.',
9
+ pattern: 'Invalid format.',
10
+ minlength: (_lang, err) => `Minimum ${err?.requiredLength} characters required.`,
11
+ maxlength: (_lang, err) => `Maximum ${err?.requiredLength} characters allowed.`,
12
+ min: (_lang, err) => `Value must be at least ${err?.min}.`,
13
+ max: (_lang, err) => `Value must not exceed ${err?.max}.`,
14
+ invalid: 'Invalid value.',
15
+ invalidNumber: 'Invalid number.',
16
+ invalidSelection: 'Invalid selection.',
17
+ };
18
+ export class ValidationMessagesService {
19
+ overrides = inject(VALIDATION_MESSAGES, { optional: true }) ?? {};
20
+ /**
21
+ * The message for the first error present, in the order the caller lists.
22
+ *
23
+ * Order is the caller's because it is field-specific: a dropdown wants
24
+ * `requiredSelection` where a text input wants `required`, and the first match wins so the
25
+ * most specific message is the one shown.
26
+ */
27
+ resolve(errors, language, order, fallbackKey = 'invalid') {
28
+ if (!errors)
29
+ return '';
30
+ for (const entry of order) {
31
+ // A tuple maps an Angular error key to a different message key: a dropdown raises the
32
+ // standard `required` error but reads better as "Please select an option", and both
33
+ // messages stay independently overridable.
34
+ const [errorKey, messageKey] = typeof entry === 'string' ? [entry, entry] : entry;
35
+ // `errors[errorKey]` is usually an object of detail, but `required` is simply `true`.
36
+ if (errors[errorKey] === undefined)
37
+ continue;
38
+ return this.messageFor(messageKey, language, errors[errorKey]);
39
+ }
40
+ return this.messageFor(fallbackKey, language, null);
41
+ }
42
+ /** One message by key, honouring an override before the default. */
43
+ messageFor(key, language, error) {
44
+ const message = this.overrides[key] ?? DEFAULT_VALIDATION_MESSAGES[key];
45
+ if (message === undefined)
46
+ return '';
47
+ return typeof message === 'function' ? message(language, error) : message;
48
+ }
49
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidationMessagesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
50
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidationMessagesService, providedIn: 'root' });
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidationMessagesService, decorators: [{
53
+ type: Injectable,
54
+ args: [{ providedIn: 'root' }]
55
+ }] });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy92YWxpZGF0aW9uLW1lc3NhZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBMkJqRSxvRkFBb0Y7QUFDcEYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQXNDO0lBQzVFLFFBQVEsRUFBRSx5QkFBeUI7SUFDbkMsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQzdDLEtBQUssRUFBRSxxQ0FBcUM7SUFDNUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxjQUFjLHVCQUF1QjtJQUNoRixTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxjQUFjLHNCQUFzQjtJQUMvRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQywwQkFBMEIsR0FBRyxFQUFFLEdBQUcsR0FBRztJQUMxRCxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLEdBQUcsR0FBRztJQUN6RCxPQUFPLEVBQUUsZ0JBQWdCO0lBQ3pCLGFBQWEsRUFBRSxpQkFBaUI7SUFDaEMsZ0JBQWdCLEVBQUUsb0JBQW9CO0NBQ3ZDLENBQUM7QUFHRixNQUFNLE9BQU8seUJBQXlCO0lBQ25CLFNBQVMsR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkY7Ozs7OztPQU1HO0lBQ0gsT0FBTyxDQUNMLE1BQTJDLEVBQzNDLFFBQWdCLEVBQ2hCLEtBQTRFLEVBQzVFLFdBQVcsR0FBRyxTQUFTO1FBRXZCLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFdkIsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUMxQixzRkFBc0Y7WUFDdEYsb0ZBQW9GO1lBQ3BGLDJDQUEyQztZQUMzQyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNsRixzRkFBc0Y7WUFDdEYsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssU0FBUztnQkFBRSxTQUFTO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLFVBQVUsQ0FBQyxHQUFXLEVBQUUsUUFBZ0IsRUFBRSxLQUFjO1FBQ3RELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksMkJBQTJCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEUsSUFBSSxPQUFPLEtBQUssU0FBUztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLE9BQU8sT0FBTyxPQUFPLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDNUUsQ0FBQzt3R0FuQ1UseUJBQXlCOzRHQUF6Qix5QkFBeUIsY0FEWixNQUFNOzs0RkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVkFMSURBVElPTl9NRVNTQUdFUyB9IGZyb20gJy4uL3Rva2Vucy9pbmplY3Rpb24tdG9rZW5zJztcblxuLyoqXG4gKiBSZXNvbHZlcyBhbiBBbmd1bGFyIGBWYWxpZGF0aW9uRXJyb3JzYCBvYmplY3QgdG8gdGhlIG1lc3NhZ2Ugc2hvd24gdW5kZXIgYSBmaWVsZC5cbiAqXG4gKiBUaGVzZSBzdHJpbmdzIHVzZWQgdG8gYmUgaGFyZGNvZGVkIEVuZ2xpc2ggbGl0ZXJhbHMgaW5zaWRlIGVhY2ggZmllbGQgY29tcG9uZW50LCBzbyBhXG4gKiBHZXJtYW4gZm9ybSBtZWFudCByZS1pbXBsZW1lbnRpbmcgZXZlcnkgZmllbGQgdHlwZSDigJQgdGhlIGxhYmVscyBob25vdXJlZCBgbGFuZ3VhZ2VgIHdoaWxlXG4gKiB0aGUgZXJyb3JzIHVuZGVybmVhdGggdGhlbSBkaWQgbm90LlxuICpcbiAqIEEgbWVzc2FnZSBpcyBhIHBsYWluIHN0cmluZywgb3IgYSBmdW5jdGlvbiB3aGVuIGl0IG5lZWRzIHRoZSBlcnJvcidzIG93biBkZXRhaWxcbiAqIChgbWlubGVuZ3RoLnJlcXVpcmVkTGVuZ3RoYCwgYG1pbi5taW5gLCBhbmQgc28gb24pLiBUaGUgYWN0aXZlIGBsYW5ndWFnZWAgaXMgcGFzc2VkXG4gKiB0aHJvdWdoLCBzbyBvbmUgcmVnaXN0cmF0aW9uIGNhbiBzZXJ2ZSBldmVyeSBsb2NhbGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZU5neER5bmFtaWNFbnRpdHkoe1xuICogICB2YWxpZGF0aW9uTWVzc2FnZXM6IHtcbiAqICAgICByZXF1aXJlZDogbGFuZyA9PiAobGFuZyA9PT0gJ2RlJyA/ICdQZmxpY2h0ZmVsZC4nIDogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyksXG4gKiAgICAgbWlubGVuZ3RoOiAobGFuZywgZXJyKSA9PiBgTWluZGVzdGVucyAke2VyclsncmVxdWlyZWRMZW5ndGgnXX0gWmVpY2hlbi5gLFxuICogICB9LFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBVbnJlZ2lzdGVyZWQga2V5cyBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHRzIGJlbG93LCBzbyBvdmVycmlkaW5nIG9uZSBtZXNzYWdlIGRvZXMgbm90XG4gKiBtZWFuIHN1cHBseWluZyB0aGVtIGFsbC5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbk1lc3NhZ2UgPSBzdHJpbmcgfCAoKGxhbmd1YWdlOiBzdHJpbmcsIGVycm9yOiBhbnkpID0+IHN0cmluZyk7XG5cbi8qKiBUaGUgYnVpbHQtaW4gRW5nbGlzaCBtZXNzYWdlcy4gRXZlcnkga2V5IGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gaW5kaXZpZHVhbGx5LiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVkFMSURBVElPTl9NRVNTQUdFUzogUmVjb3JkPHN0cmluZywgVmFsaWRhdGlvbk1lc3NhZ2U+ID0ge1xuICByZXF1aXJlZDogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyxcbiAgcmVxdWlyZWRTZWxlY3Rpb246ICdQbGVhc2Ugc2VsZWN0IGFuIG9wdGlvbi4nLFxuICBlbWFpbDogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuJyxcbiAgcGF0dGVybjogJ0ludmFsaWQgZm9ybWF0LicsXG4gIG1pbmxlbmd0aDogKF9sYW5nLCBlcnIpID0+IGBNaW5pbXVtICR7ZXJyPy5yZXF1aXJlZExlbmd0aH0gY2hhcmFjdGVycyByZXF1aXJlZC5gLFxuICBtYXhsZW5ndGg6IChfbGFuZywgZXJyKSA9PiBgTWF4aW11bSAke2Vycj8ucmVxdWlyZWRMZW5ndGh9IGNoYXJhY3RlcnMgYWxsb3dlZC5gLFxuICBtaW46IChfbGFuZywgZXJyKSA9PiBgVmFsdWUgbXVzdCBiZSBhdCBsZWFzdCAke2Vycj8ubWlufS5gLFxuICBtYXg6IChfbGFuZywgZXJyKSA9PiBgVmFsdWUgbXVzdCBub3QgZXhjZWVkICR7ZXJyPy5tYXh9LmAsXG4gIGludmFsaWQ6ICdJbnZhbGlkIHZhbHVlLicsXG4gIGludmFsaWROdW1iZXI6ICdJbnZhbGlkIG51bWJlci4nLFxuICBpbnZhbGlkU2VsZWN0aW9uOiAnSW52YWxpZCBzZWxlY3Rpb24uJyxcbn07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcnJpZGVzID0gaW5qZWN0KFZBTElEQVRJT05fTUVTU0FHRVMsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8ge307XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIGZvciB0aGUgZmlyc3QgZXJyb3IgcHJlc2VudCwgaW4gdGhlIG9yZGVyIHRoZSBjYWxsZXIgbGlzdHMuXG4gICAqXG4gICAqIE9yZGVyIGlzIHRoZSBjYWxsZXIncyBiZWNhdXNlIGl0IGlzIGZpZWxkLXNwZWNpZmljOiBhIGRyb3Bkb3duIHdhbnRzXG4gICAqIGByZXF1aXJlZFNlbGVjdGlvbmAgd2hlcmUgYSB0ZXh0IGlucHV0IHdhbnRzIGByZXF1aXJlZGAsIGFuZCB0aGUgZmlyc3QgbWF0Y2ggd2lucyBzbyB0aGVcbiAgICogbW9zdCBzcGVjaWZpYyBtZXNzYWdlIGlzIHRoZSBvbmUgc2hvd24uXG4gICAqL1xuICByZXNvbHZlKFxuICAgIGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgbGFuZ3VhZ2U6IHN0cmluZyxcbiAgICBvcmRlcjogcmVhZG9ubHkgKHN0cmluZyB8IHJlYWRvbmx5IFtlcnJvcktleTogc3RyaW5nLCBtZXNzYWdlS2V5OiBzdHJpbmddKVtdLFxuICAgIGZhbGxiYWNrS2V5ID0gJ2ludmFsaWQnLFxuICApOiBzdHJpbmcge1xuICAgIGlmICghZXJyb3JzKSByZXR1cm4gJyc7XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIG9yZGVyKSB7XG4gICAgICAvLyBBIHR1cGxlIG1hcHMgYW4gQW5ndWxhciBlcnJvciBrZXkgdG8gYSBkaWZmZXJlbnQgbWVzc2FnZSBrZXk6IGEgZHJvcGRvd24gcmFpc2VzIHRoZVxuICAgICAgLy8gc3RhbmRhcmQgYHJlcXVpcmVkYCBlcnJvciBidXQgcmVhZHMgYmV0dGVyIGFzIFwiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb25cIiwgYW5kIGJvdGhcbiAgICAgIC8vIG1lc3NhZ2VzIHN0YXkgaW5kZXBlbmRlbnRseSBvdmVycmlkYWJsZS5cbiAgICAgIGNvbnN0IFtlcnJvcktleSwgbWVzc2FnZUtleV0gPSB0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnID8gW2VudHJ5LCBlbnRyeV0gOiBlbnRyeTtcbiAgICAgIC8vIGBlcnJvcnNbZXJyb3JLZXldYCBpcyB1c3VhbGx5IGFuIG9iamVjdCBvZiBkZXRhaWwsIGJ1dCBgcmVxdWlyZWRgIGlzIHNpbXBseSBgdHJ1ZWAuXG4gICAgICBpZiAoZXJyb3JzW2Vycm9yS2V5XSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VGb3IobWVzc2FnZUtleSwgbGFuZ3VhZ2UsIGVycm9yc1tlcnJvcktleV0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9yKGZhbGxiYWNrS2V5LCBsYW5ndWFnZSwgbnVsbCk7XG4gIH1cblxuICAvKiogT25lIG1lc3NhZ2UgYnkga2V5LCBob25vdXJpbmcgYW4gb3ZlcnJpZGUgYmVmb3JlIHRoZSBkZWZhdWx0LiAqL1xuICBtZXNzYWdlRm9yKGtleTogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMub3ZlcnJpZGVzW2tleV0gPz8gREVGQVVMVF9WQUxJREFUSU9OX01FU1NBR0VTW2tleV07XG4gICAgaWYgKG1lc3NhZ2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuICAgIHJldHVybiB0eXBlb2YgbWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJyA/IG1lc3NhZ2UobGFuZ3VhZ2UsIGVycm9yKSA6IG1lc3NhZ2U7XG4gIH1cbn1cbiJdfQ==