@workflow/world-local 5.0.0-beta.5 → 5.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/config.js +1 -1
  2. package/dist/fs.d.ts +3 -0
  3. package/dist/fs.d.ts.map +1 -1
  4. package/dist/fs.js +7 -3
  5. package/dist/index.js +1 -1
  6. package/dist/init.js +1 -1
  7. package/dist/instrumentObject.js +1 -1
  8. package/dist/queue.js +1 -1
  9. package/dist/storage/events-storage.d.ts.map +1 -1
  10. package/dist/storage/events-storage.js +59 -18
  11. package/dist/storage/filters.js +1 -1
  12. package/dist/storage/helpers.js +1 -1
  13. package/dist/storage/hooks-storage.js +1 -1
  14. package/dist/storage/index.js +1 -1
  15. package/dist/storage/legacy.d.ts.map +1 -1
  16. package/dist/storage/legacy.js +2 -1
  17. package/dist/storage/runs-storage.d.ts +5 -1
  18. package/dist/storage/runs-storage.d.ts.map +1 -1
  19. package/dist/storage/runs-storage.js +72 -3
  20. package/dist/storage/steps-storage.js +1 -1
  21. package/dist/storage.js +1 -1
  22. package/dist/streamer.js +1 -1
  23. package/dist/telemetry.js +1 -1
  24. package/dist/test-helpers.js +1 -1
  25. package/dist/util.js +1 -1
  26. package/package.json +4 -4
  27. package/dist/config.js.map +0 -1
  28. package/dist/fs.js.map +0 -1
  29. package/dist/index.js.map +0 -1
  30. package/dist/init.js.map +0 -1
  31. package/dist/instrumentObject.js.map +0 -1
  32. package/dist/queue.js.map +0 -1
  33. package/dist/storage/events-storage.js.map +0 -1
  34. package/dist/storage/filters.js.map +0 -1
  35. package/dist/storage/helpers.js.map +0 -1
  36. package/dist/storage/hooks-storage.js.map +0 -1
  37. package/dist/storage/index.js.map +0 -1
  38. package/dist/storage/legacy.js.map +0 -1
  39. package/dist/storage/runs-storage.js.map +0 -1
  40. package/dist/storage/steps-storage.js.map +0 -1
  41. package/dist/storage.js.map +0 -1
  42. package/dist/streamer.js.map +0 -1
  43. package/dist/telemetry.js.map +0 -1
  44. package/dist/test-helpers.js.map +0 -1
  45. package/dist/util.js.map +0 -1
package/dist/config.js CHANGED
@@ -41,4 +41,4 @@ export async function resolveBaseUrl(config) {
41
41
  }
42
42
  throw new Error('Unable to resolve base URL for workflow queue.');
43
43
  }
44
- //# sourceMappingURL=config.js.map
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtJQUM3QixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksZ0JBQWdCLENBQUM7QUFDakUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxDQUFDO0FBRWpELE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFO0lBQzdCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQztBQUM3QyxDQUFDLENBQUM7QUEwQkYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBUyxHQUFHLEVBQUU7SUFDdEMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQyxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBRXBDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDOUIsQ0FBQyxDQUFDLENBQUM7QUFFSDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQUMsTUFBdUI7SUFDMUQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsMkVBQTJFO0lBQzNFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDcEMsT0FBTyxvQkFBb0IsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsT0FBTyxvQkFBb0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxlQUFlLEVBQUUsQ0FBQztJQUM3QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sb0JBQW9CLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFdvcmtmbG93UG9ydCB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9nZXQtcG9ydCc7XG5pbXBvcnQgeyBvbmNlIH0gZnJvbSAnLi91dGlsLmpzJztcblxuY29uc3QgZ2V0RGF0YURpckZyb21FbnYgPSAoKSA9PiB7XG4gIHJldHVybiBwcm9jZXNzLmVudi5XT1JLRkxPV19MT0NBTF9EQVRBX0RJUiB8fCAnLndvcmtmbG93LWRhdGEnO1xufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTiA9ICdhbGwnO1xuXG5jb25zdCBnZXRCYXNlVXJsRnJvbUVudiA9ICgpID0+IHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMO1xufTtcblxuZXhwb3J0IHR5cGUgQ29uZmlnID0ge1xuICBkYXRhRGlyOiBzdHJpbmc7XG4gIHBvcnQ/OiBudW1iZXI7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHN0YXJ0KCkgc2hvdWxkIHJlLWVucXVldWUgcGVuZGluZy9ydW5uaW5nIHJ1bnMgZnJvbSBzdG9yYWdlLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLiBUZXN0IGhhcm5lc3NlcyB0aGF0IGFsd2F5cyBzdGFydCBmcm9tIGEgY2xlYW4gc2xhdGUgY2FuXG4gICAqIGRpc2FibGUgcmVjb3ZlcnkgdG8gYXZvaWQgcmVwbGF5aW5nIHN0YWxlIHJ1bnMuXG4gICAqL1xuICByZWNvdmVyQWN0aXZlUnVucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25hbCB0YWcgdG8gc2NvcGUgZmlsZXN5c3RlbSBvcGVyYXRpb25zLlxuICAgKiBXaGVuIHNldCwgZmlsZXMgYXJlIHdyaXR0ZW4gYXMgYHtpZH0ue3RhZ30uanNvbmAgYW5kIGBjbGVhcigpYCBvbmx5IGRlbGV0ZXNcbiAgICogZmlsZXMgbWF0Y2hpbmcgdGhpcyB0YWcuIFVzZWQgYnkgdml0ZXN0IHRvIGlzb2xhdGUgdGVzdCBkYXRhIGluIHRoZSBzaGFyZWRcbiAgICogYC53b3JrZmxvdy1kYXRhYCBkaXJlY3RvcnkuXG4gICAqL1xuICB0YWc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgZmx1c2ggaW50ZXJ2YWwgKGluIG1zKSBmb3IgYnVmZmVyZWQgc3RyZWFtIHdyaXRlcy5cbiAgICogRGVmYXVsdCBpcyAxMG1zLiBTZXQgdG8gMCBmb3IgaW1tZWRpYXRlIGZsdXNoaW5nLlxuICAgKi9cbiAgc3RyZWFtRmx1c2hJbnRlcnZhbE1zPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbmZpZyA9IG9uY2U8Q29uZmlnPigoKSA9PiB7XG4gIGNvbnN0IGRhdGFEaXIgPSBnZXREYXRhRGlyRnJvbUVudigpO1xuICBjb25zdCBiYXNlVXJsID0gZ2V0QmFzZVVybEZyb21FbnYoKTtcblxuICByZXR1cm4geyBkYXRhRGlyLCBiYXNlVXJsIH07XG59KTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgYmFzZSBVUkwgZm9yIHF1ZXVlIHJlcXVlc3RzIGZvbGxvd2luZyB0aGUgcHJpb3JpdHkgb3JkZXI6XG4gKiAxLiBjb25maWcuYmFzZVVybCAoaGlnaGVzdCBwcmlvcml0eSAtIGZ1bGwgb3ZlcnJpZGUgZnJvbSBhcmdzKVxuICogMi4gV09SS0ZMT1dfTE9DQUxfQkFTRV9VUkwgZW52IHZhciAoY2hlY2tlZCBkaXJlY3RseSB0byBoYW5kbGUgbGF0ZSBlbnYgdmFyIHNldHRpbmcpXG4gKiAzLiBjb25maWcucG9ydCAoZXhwbGljaXQgcG9ydCBvdmVycmlkZSBmcm9tIGFyZ3MpXG4gKiA0LiBQT1JUIGVudiB2YXIgKGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24pXG4gKiA1LiBBdXRvLWRldGVjdGVkIHBvcnQgdmlhIGdldFBvcnQgKGRldGVjdCBhY3R1YWwgbGlzdGVuaW5nIHBvcnQpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlQmFzZVVybChjb25maWc6IFBhcnRpYWw8Q29uZmlnPik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmIChjb25maWcuYmFzZVVybCkge1xuICAgIHJldHVybiBjb25maWcuYmFzZVVybDtcbiAgfVxuXG4gIC8vIENoZWNrIGVudiB2YXIgZGlyZWN0bHkgaW4gY2FzZSBpdCB3YXMgc2V0IGFmdGVyIHRoZSBjb25maWcgd2FzIGNhY2hlZFxuICAvLyBUaGlzIGlzIGltcG9ydGFudCBmb3IgQ0xJIHRvb2xzIHRoYXQgc2V0IHRoZSBlbnYgdmFyIGFmdGVyIG1vZHVsZSBpbXBvcnRcbiAgaWYgKHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjb25maWcucG9ydCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtjb25maWcucG9ydH1gO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52LlBPUlQpIHtcbiAgICByZXR1cm4gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwcm9jZXNzLmVudi5QT1JUfWA7XG4gIH1cblxuICBjb25zdCBkZXRlY3RlZFBvcnQgPSBhd2FpdCBnZXRXb3JrZmxvd1BvcnQoKTtcbiAgaWYgKGRldGVjdGVkUG9ydCkge1xuICAgIHJldHVybiBgaHR0cDovL2xvY2FsaG9zdDoke2RldGVjdGVkUG9ydH1gO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcmVzb2x2ZSBiYXNlIFVSTCBmb3Igd29ya2Zsb3cgcXVldWUuJyk7XG59XG4iXX0=
package/dist/fs.d.ts CHANGED
@@ -17,6 +17,9 @@ export declare class UnsafeEntityIdError extends WorkflowWorldError {
17
17
  * - empty
18
18
  * - starting with `.` (blocks `.`, `..`, `.locks`, `.tmp`, and other
19
19
  * hidden or reserved filenames)
20
+ * - containing `.` (would collide with the `.tag` / `.json` suffix the
21
+ * tagging logic strips from filenames; see {@link stripTag} /
22
+ * {@link getObjectCreatedAt})
20
23
  * - containing `/`, `\`, or a NUL byte
21
24
  *
22
25
  * This is the primary defense against path-traversal attacks where a
package/dist/fs.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"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"}
package/dist/fs.js CHANGED
@@ -23,7 +23,7 @@ function truncateForError(value) {
23
23
  */
24
24
  export class UnsafeEntityIdError extends WorkflowWorldError {
25
25
  constructor(kind, value) {
26
- super(`Unsafe ${kind} "${truncateForError(value)}": must not be empty, start with ".", or contain path separators or null bytes`);
26
+ super(`Unsafe ${kind} "${truncateForError(value)}": must not be empty, contain ".", "/", "\\", or null bytes`);
27
27
  this.name = 'UnsafeEntityIdError';
28
28
  }
29
29
  static is(value) {
@@ -36,6 +36,9 @@ export class UnsafeEntityIdError extends WorkflowWorldError {
36
36
  * - empty
37
37
  * - starting with `.` (blocks `.`, `..`, `.locks`, `.tmp`, and other
38
38
  * hidden or reserved filenames)
39
+ * - containing `.` (would collide with the `.tag` / `.json` suffix the
40
+ * tagging logic strips from filenames; see {@link stripTag} /
41
+ * {@link getObjectCreatedAt})
39
42
  * - containing `/`, `\`, or a NUL byte
40
43
  *
41
44
  * This is the primary defense against path-traversal attacks where a
@@ -53,7 +56,8 @@ export function assertSafeEntityId(kind, value) {
53
56
  value.startsWith('.') ||
54
57
  value.includes('/') ||
55
58
  value.includes('\\') ||
56
- value.includes('\0')) {
59
+ value.includes('\0') ||
60
+ value.includes('.')) {
57
61
  throw new UnsafeEntityIdError(kind, value);
58
62
  }
59
63
  }
@@ -485,4 +489,4 @@ export async function paginatedFileSystemQuery(config) {
485
489
  hasMore,
486
490
  };
487
491
  }
488
- //# sourceMappingURL=fs.js.map
492
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRW5EOzs7OztHQUtHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFjO0lBQ3RDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2YsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQUN6RCxZQUFZLElBQVksRUFBRSxLQUFhO1FBQ3JDLEtBQUssQ0FDSCxVQUFVLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsNkRBQTZELENBQ3hHLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWM7UUFDdEIsT0FBTyxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUM7SUFDeEUsQ0FBQztDQUNGO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQVksRUFBRSxLQUFhO0lBQzVELElBQ0UsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ3JCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQ25CLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQ25CLENBQUM7UUFDRCxNQUFNLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsT0FBZSxFQUNmLEdBQUcsUUFBa0I7SUFFckIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELElBQUksTUFBTSxLQUFLLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzNFLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUM7QUFFL0M7Ozs7O0dBS0c7QUFDSCxLQUFLLFVBQVUsZ0JBQWdCLENBQzdCLEVBQW9CLEVBQ3BCLFVBQVUsR0FBRyxDQUFDO0lBRWQsSUFBSSxDQUFDLFNBQVM7UUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBRTVCLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFFdkIsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxJQUFJLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNwQixDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLFdBQVcsR0FDZixPQUFPLEdBQUcsVUFBVSxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxXQUFXO2dCQUFFLE1BQU0sS0FBSyxDQUFDO1lBQzlCLGtDQUFrQztZQUNsQyxNQUFNLEtBQUssR0FBRyxXQUFXLEdBQUcsQ0FBQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQztJQUNELHFEQUFxRDtJQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVELHdFQUF3RTtBQUN4RSw4RkFBOEY7QUFDOUYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBRTVDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDOzs7Ozs7R0FNRztBQUNILE1BQU0sV0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBRS9DOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLE1BQWM7SUFDckMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsTUFBYyxFQUFFLEdBQVc7SUFDaEQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsT0FBZSxFQUNmLFNBQWlCLEVBQ2pCLE1BQWMsRUFDZCxHQUFZO0lBRVosa0JBQWtCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLElBQUksR0FBRyxLQUFLLFNBQVM7UUFBRSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQztJQUNsRSxPQUFPLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG9CQUFvQixDQUN4QyxPQUFlLEVBQ2YsU0FBaUIsRUFDakIsTUFBYyxFQUNkLE1BQW9CLEVBQ3BCLEdBQVk7SUFFWixrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsSUFBSSxHQUFHLEtBQUssU0FBUztRQUFFLGtCQUFrQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1IsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQzNCLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsRUFDOUQsTUFBTSxDQUNQLENBQUM7UUFDRixJQUFJLE1BQU0sS0FBSyxJQUFJO1lBQUUsT0FBTyxNQUFNLENBQUM7SUFDckMsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUNiLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxFQUN2RCxNQUFNLENBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FDbkMsT0FBZSxFQUNmLEdBQVc7SUFFWCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQzlCLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUssS0FBYSxDQUFDLElBQUksS0FBSyxRQUFRO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDaEQsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsMEJBQTBCLENBQzlDLE9BQWUsRUFDZixHQUFXLEVBQ1gsU0FBaUI7SUFFakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDckMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSyxLQUFhLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNoRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxTQUFTLENBQUMsT0FBZTtJQUM3QyxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUFDLE9BQU8sTUFBTSxFQUFFLENBQUM7UUFDaEIsMkJBQTJCO0lBQzdCLENBQUM7QUFDSCxDQUFDO0FBTUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFZLEVBQUUsS0FBYztJQUN2RCxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxPQUFPO1lBQ0wsTUFBTSxFQUFFLFlBQVk7WUFDcEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztTQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFZLEVBQUUsS0FBYztJQUN0RCxJQUNFLEtBQUssS0FBSyxJQUFJO1FBQ2QsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN4QixLQUFhLENBQUMsTUFBTSxLQUFLLFlBQVk7UUFDdEMsT0FBUSxLQUFhLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFDdkMsQ0FBQztRQUNELE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBRSxLQUFhLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUM3QixRQUFnQixFQUNoQixJQUFTLEVBQ1QsSUFBbUI7SUFFbkIsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLEtBQUssQ0FDekIsUUFBZ0IsRUFDaEIsSUFBcUIsRUFDckIsSUFBbUI7SUFFbkIsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUNyQiw4RUFBOEU7UUFDOUUsNkVBQTZFO1FBQzdFLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLG1CQUFtQixDQUMzQixRQUFRLFFBQVEsMENBQTBDLENBQzNELENBQUM7UUFDSixDQUFDO1FBRUQsNEVBQTRFO1FBQzVFLElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQixzREFBc0Q7WUFDdEQsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0IsUUFBUSxRQUFRLDBDQUEwQyxDQUMzRCxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsc0RBQXNEO1lBQ3RELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxHQUFHLFFBQVEsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQzdDLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztJQUM1QixJQUFJLENBQUM7UUFDSCxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDeEMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0sZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1RCwyREFBMkQ7UUFDM0QsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsNERBQTREO1FBQzVELElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsTUFBTSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsUUFBUSxDQUM1QixRQUFnQixFQUNoQixPQUFxQjtJQUVyQixJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSyxLQUFhLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQUMsUUFBZ0I7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FBQyxRQUFnQjtJQUMvQyxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFLLEtBQWEsQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUFFLE1BQU0sS0FBSyxDQUFDO0lBQ3BELENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUNsQyxRQUFnQixFQUNoQixJQUFZO0lBRVosTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztRQUNwQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUFDLE9BQWU7SUFDakQsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLE9BQWUsRUFDZixTQUFpQjtJQUVqQixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsT0FBTyxLQUFLO2FBQ1QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3BDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUssS0FBYSxDQUFDLElBQUksS0FBSyxRQUFRO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDaEQsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQW9CRCxTQUFTLFdBQVcsQ0FBQyxNQUEwQjtJQUM3QyxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXpCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsT0FBTztRQUNMLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJO0tBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsU0FBZSxFQUFFLEVBQXNCO0lBQzNELE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzNFLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLHdCQUF3QixDQUM1QyxNQUF5QztJQUV6QyxNQUFNLEVBQ0osU0FBUyxFQUNULE1BQU0sRUFDTixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEdBQUcsTUFBTSxFQUNsQixLQUFLLEdBQUcsRUFBRSxFQUNWLE1BQU0sRUFDTixZQUFZLEVBQ1osS0FBSyxHQUNOLEdBQUcsTUFBTSxDQUFDO0lBRVgsMEVBQTBFO0lBQzFFLDBFQUEwRTtJQUMxRSxzRUFBc0U7SUFDdEUsb0VBQW9FO0lBQ3BFLHFFQUFxRTtJQUNyRSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM3QixrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUvQyxrQ0FBa0M7SUFDbEMsTUFBTSxlQUFlLEdBQUcsVUFBVTtRQUNoQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ1osTUFBTSxlQUFlLEdBQUcsWUFBWTtRQUNsQyxDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDdEMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUVwQix1RkFBdUY7SUFDdkYsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLElBQUksZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBRXZDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakIsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ25ELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLENBQUM7WUFDcEQsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsOENBQThDO2dCQUM5Qyw0RUFBNEU7Z0JBQzVFLGlGQUFpRjtnQkFDakYsMkRBQTJEO2dCQUMzRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwRCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBRXhDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNwQiwrREFBK0Q7b0JBQy9ELE9BQU8sU0FBUyxLQUFLLE1BQU07d0JBQ3pCLENBQUMsQ0FBQyxRQUFRLElBQUksVUFBVTt3QkFDeEIsQ0FBQyxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUM7Z0JBQzdCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixxQ0FBcUM7b0JBQ3JDLE9BQU8sU0FBUyxLQUFLLE1BQU07d0JBQ3pCLENBQUMsQ0FBQyxRQUFRLEdBQUcsVUFBVTt3QkFDdkIsQ0FBQyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7Z0JBQzVCLENBQUM7WUFDSCxDQUFDO1lBQ0QsMEVBQTBFO1lBQzFFLDREQUE0RDtZQUM1RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFEQUFxRDtJQUNyRCxNQUFNLFVBQVUsR0FBUSxFQUFFLENBQUM7SUFFM0IsS0FBSyxNQUFNLE1BQU0sSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsQ0FBQztRQUN4RCxJQUFJLElBQUksR0FBYSxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztZQUN4Qiw0RUFBNEU7WUFDNUUsNEVBQTRFO1lBQzVFLG1GQUFtRjtZQUNuRiwyQ0FBMkM7WUFDM0MsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsSUFBSSxDQUNWLGlCQUFpQixNQUFNLDJCQUEyQixLQUFLLENBQUMsT0FBTyxFQUFFLENBQ2xFLENBQUM7Z0JBQ0YsU0FBUztZQUNYLENBQUM7WUFDRCxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1Qsd0NBQXdDO1lBQ3hDLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFBRSxTQUFTO1lBRXRDLGdFQUFnRTtZQUNoRSx5REFBeUQ7WUFDekQsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFFcEQsSUFBSSxTQUFTLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQ3pCLDZDQUE2QztvQkFDN0MsSUFBSSxRQUFRLEdBQUcsVUFBVTt3QkFBRSxTQUFTO29CQUNwQyw0RUFBNEU7b0JBQzVFLElBQUksUUFBUSxLQUFLLFVBQVUsSUFBSSxZQUFZLENBQUMsRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUN4RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzNCLElBQUksTUFBTSxJQUFJLFlBQVksQ0FBQyxFQUFFOzRCQUFFLFNBQVM7b0JBQzFDLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLDRDQUE0QztvQkFDNUMsSUFBSSxRQUFRLEdBQUcsVUFBVTt3QkFBRSxTQUFTO29CQUNwQyw0RUFBNEU7b0JBQzVFLElBQUksUUFBUSxLQUFLLFVBQVUsSUFBSSxZQUFZLENBQUMsRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUN4RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzNCLElBQUksTUFBTSxJQUFJLFlBQVksQ0FBQyxFQUFFOzRCQUFFLFNBQVM7b0JBQzFDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFFRCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQseUVBQXlFO0lBQ3pFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLE1BQU0sY0FBYyxHQUFHLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFM0UsdUVBQXVFO1FBQ3ZFLElBQUksY0FBYyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNsQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLE9BQU8sU0FBUyxLQUFLLEtBQUs7Z0JBQ3hCLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztnQkFDeEIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsc0JBQXNCO0lBQ3RCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUNoRSxNQUFNLFVBQVUsR0FDZCxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDZCxDQUFDLENBQUMsWUFBWSxDQUNWLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDakMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDakM7UUFDSCxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRVgsT0FBTztRQUNMLElBQUksRUFBRSxLQUFLO1FBQ1gsTUFBTSxFQUFFLFVBQVU7UUFDbEIsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBFbnRpdHlDb25mbGljdEVycm9yLCBXb3JrZmxvd1dvcmxkRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgUGFnaW5hdGVkUmVzcG9uc2UgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgbW9ub3RvbmljRmFjdG9yeSB9IGZyb20gJ3VsaWQnO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5cbmNvbnN0IHVsaWQgPSBtb25vdG9uaWNGYWN0b3J5KCgpID0+IE1hdGgucmFuZG9tKCkpO1xuXG4vKipcbiAqIFRydW5jYXRlIGEgcG9zc2libHktdW50cnVzdGVkIHZhbHVlIGZvciBpbmNsdXNpb24gaW4gYW4gZXJyb3IgbWVzc2FnZS5cbiAqIEtlZXBzIGVycm9yIG91dHB1dCBhY3Rpb25hYmxlIGZvciBkZXZlbG9wZXJzIGluIGRldiBtb2RlIHdoaWxlIGxpbWl0aW5nXG4gKiB0aGUgYW1vdW50IG9mIGF0dGFja2VyLWNvbnRyb2xsZWQgZGF0YSByZWZsZWN0ZWQgYmFjayBpZiBhIGB3b3JsZC1sb2NhbGBcbiAqIGJhY2tlbmQgaXMgZXZlciBydW4gaW4gYSBjb250ZXh0IHRoYXQgc3VyZmFjZXMgdGhlc2UgbWVzc2FnZXMgdG8gY2xpZW50cy5cbiAqL1xuZnVuY3Rpb24gdHJ1bmNhdGVGb3JFcnJvcih2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIGNvbnN0IHMgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBNQVggPSA0ODtcbiAgcmV0dXJuIHMubGVuZ3RoID4gTUFYID8gYCR7cy5zbGljZSgwLCBNQVgpfeKApmAgOiBzO1xufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGEgY2FsbGVyLXN1cHBsaWVkIGVudGl0eSBJRCBjb250YWlucyBjaGFyYWN0ZXJzIHRoYXQgd291bGRcbiAqIGVzY2FwZSB0aGUgc3RvcmFnZSByb290IChwYXRoIHRyYXZlcnNhbCkgb3Igb3RoZXJ3aXNlIHByb2R1Y2UgYW4gdW5zYWZlXG4gKiBmaWxlbmFtZS4gRXh0ZW5kcyB7QGxpbmsgV29ya2Zsb3dXb3JsZEVycm9yfSBzbyB0aGUgcGxhdGZvcm0ncyBzdGFuZGFyZFxuICogZXJyb3ItdG8tSFRUUCBtYXBwaW5nIGhhbmRsZXMgaXQgYWxvbmdzaWRlIG90aGVyIHdvcmxkLWxheWVyIGVycm9ycy5cbiAqL1xuZXhwb3J0IGNsYXNzIFVuc2FmZUVudGl0eUlkRXJyb3IgZXh0ZW5kcyBXb3JrZmxvd1dvcmxkRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihraW5kOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBVbnNhZmUgJHtraW5kfSBcIiR7dHJ1bmNhdGVGb3JFcnJvcih2YWx1ZSl9XCI6IG11c3Qgbm90IGJlIGVtcHR5LCBjb250YWluIFwiLlwiLCBcIi9cIiwgXCJcXFxcXCIsIG9yIG51bGwgYnl0ZXNgXG4gICAgKTtcbiAgICB0aGlzLm5hbWUgPSAnVW5zYWZlRW50aXR5SWRFcnJvcic7XG4gIH1cblxuICBzdGF0aWMgaXModmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBVbnNhZmVFbnRpdHlJZEVycm9yIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFcnJvciAmJiB2YWx1ZS5uYW1lID09PSAnVW5zYWZlRW50aXR5SWRFcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSB0aGF0IGEgc3RyaW5nIGlzIHNhZmUgdG8gZW1iZWQgaW4gYSBmaWxlc3lzdGVtIHBhdGggYXMgYSBzaW5nbGVcbiAqIHBhdGggY29tcG9uZW50LiBSZWplY3RzIHZhbHVlcyB0aGF0IGFyZTpcbiAqICAgLSBlbXB0eVxuICogICAtIHN0YXJ0aW5nIHdpdGggYC5gIChibG9ja3MgYC5gLCBgLi5gLCBgLmxvY2tzYCwgYC50bXBgLCBhbmQgb3RoZXJcbiAqICAgICBoaWRkZW4gb3IgcmVzZXJ2ZWQgZmlsZW5hbWVzKVxuICogICAtIGNvbnRhaW5pbmcgYC5gICh3b3VsZCBjb2xsaWRlIHdpdGggdGhlIGAudGFnYCAvIGAuanNvbmAgc3VmZml4IHRoZVxuICogICAgIHRhZ2dpbmcgbG9naWMgc3RyaXBzIGZyb20gZmlsZW5hbWVzOyBzZWUge0BsaW5rIHN0cmlwVGFnfSAvXG4gKiAgICAge0BsaW5rIGdldE9iamVjdENyZWF0ZWRBdH0pXG4gKiAgIC0gY29udGFpbmluZyBgL2AsIGBcXGAsIG9yIGEgTlVMIGJ5dGVcbiAqXG4gKiBUaGlzIGlzIHRoZSBwcmltYXJ5IGRlZmVuc2UgYWdhaW5zdCBwYXRoLXRyYXZlcnNhbCBhdHRhY2tzIHdoZXJlIGFcbiAqIHJlcXVlc3QgYm9keSBzdXBwbGllcyBhIGBydW5JZGAgLyBgc3RlcElkYCAvIGBjb3JyZWxhdGlvbklkYCBjb250YWluaW5nXG4gKiBgLi4vYCBzZXF1ZW5jZXMgdG8gcmVhZCBvciB3cml0ZSBmaWxlcyBvdXRzaWRlIHRoZSBzdG9yYWdlIHJvb3QuXG4gKiB7QGxpbmsgcmVzb2x2ZVdpdGhpbkJhc2V9IHByb3ZpZGVzIGEgYmVsdC1hbmQtc3VzcGVuZGVycyBjb250YWlubWVudFxuICogY2hlY2sgYXQgdGhlIHBvaW50IG9mIGBwYXRoLmpvaW5gIGZvciBkZWZlbnNlIGluIGRlcHRoLlxuICpcbiAqIEBwYXJhbSBraW5kIC0gSHVtYW4tcmVhZGFibGUgbGFiZWwgdXNlZCBpbiB0aGUgZXJyb3IgbWVzc2FnZSAoZS5nLiBcInJ1bklkXCIpXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gdmFsaWRhdGU7IHRocm93cyB7QGxpbmsgVW5zYWZlRW50aXR5SWRFcnJvcn1cbiAqICAgaWYgdGhlIHZhbHVlIGlzIG5vdCBzYWZlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U2FmZUVudGl0eUlkKGtpbmQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoXG4gICAgdmFsdWUubGVuZ3RoID09PSAwIHx8XG4gICAgdmFsdWUuc3RhcnRzV2l0aCgnLicpIHx8XG4gICAgdmFsdWUuaW5jbHVkZXMoJy8nKSB8fFxuICAgIHZhbHVlLmluY2x1ZGVzKCdcXFxcJykgfHxcbiAgICB2YWx1ZS5pbmNsdWRlcygnXFwwJykgfHxcbiAgICB2YWx1ZS5pbmNsdWRlcygnLicpXG4gICkge1xuICAgIHRocm93IG5ldyBVbnNhZmVFbnRpdHlJZEVycm9yKGtpbmQsIHZhbHVlKTtcbiAgfVxufVxuXG4vKipcbiAqIEpvaW4gYGJhc2VkaXJgIHdpdGggYW4gZW50aXR5LXJlbGF0aXZlIHBhdGggYW5kIGFzc2VydCB0aGUgcmVzdWx0IHN0YXlzXG4gKiBpbnNpZGUgYGJhc2VkaXJgLiBDb21wbGVtZW50cyB7QGxpbmsgYXNzZXJ0U2FmZUVudGl0eUlkfTogcGVyLWVudHJ5LXBvaW50XG4gKiB2YWxpZGF0aW9uIGlzIHRoZSBwcmltYXJ5IGRlZmVuc2UsIGFuZCB0aGlzIGZpbmFsIGNoZWNrIGNhdGNoZXMgYW55IHBhdGhcbiAqIGVzY2FwZSB0aGF0IHNsaXBwZWQgcGFzdCAoZS5nLiBhIG5ldyBjYWxsIHNpdGUgdGhhdCBmb3Jnb3QgdG8gdmFsaWRhdGUsXG4gKiBvciBhbiB1bnVzdWFsIGNoYXJhY3RlciBjb21iaW5hdGlvbiBvbiBhIGZ1dHVyZSBmaWxlc3lzdGVtKS4gVGhyb3dzXG4gKiB7QGxpbmsgVW5zYWZlRW50aXR5SWRFcnJvcn0gaWYgdGhlIGpvaW5lZCBwYXRoIGVzY2FwZXMgYGJhc2VkaXJgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVdpdGhpbkJhc2UoXG4gIGJhc2VkaXI6IHN0cmluZyxcbiAgLi4uc2VnbWVudHM6IHN0cmluZ1tdXG4pOiBzdHJpbmcge1xuICBjb25zdCByZXNvbHZlZEJhc2UgPSBwYXRoLnJlc29sdmUoYmFzZWRpcik7XG4gIGNvbnN0IGpvaW5lZCA9IHBhdGgucmVzb2x2ZShiYXNlZGlyLCAuLi5zZWdtZW50cyk7XG4gIGlmIChqb2luZWQgIT09IHJlc29sdmVkQmFzZSAmJiAham9pbmVkLnN0YXJ0c1dpdGgocmVzb2x2ZWRCYXNlICsgcGF0aC5zZXApKSB7XG4gICAgdGhyb3cgbmV3IFVuc2FmZUVudGl0eUlkRXJyb3IoJ3BhdGgnLCBzZWdtZW50cy5qb2luKCcvJykpO1xuICB9XG4gIHJldHVybiBqb2luZWQ7XG59XG5cbmNvbnN0IGlzV2luZG93cyA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG5cbi8qKlxuICogRXhlY3V0ZSBhIGZpbGVzeXN0ZW0gb3BlcmF0aW9uIHdpdGggcmV0cnkgbG9naWMgb24gV2luZG93cy5cbiAqIE9uIFdpbmRvd3MsIGZpbGUgb3BlcmF0aW9ucyBjYW4gZmFpbCB3aXRoIEVQRVJNL0VCVVNZL0VBQ0NFUyB3aGVuIGZpbGVzXG4gKiBhcmUgYnJpZWZseSBsb2NrZWQgYnkgYW5vdGhlciBwcm9jZXNzIG9yIGFudGl2aXJ1cy4gVGhpcyB3cmFwcGVyIGFkZHNcbiAqIGV4cG9uZW50aWFsIGJhY2tvZmYgcmV0cnkgbG9naWMuIE9uIG5vbi1XaW5kb3dzIHBsYXRmb3JtcywgZXhlY3V0ZXMgZGlyZWN0bHkuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdpdGhXaW5kb3dzUmV0cnk8VD4oXG4gIGZuOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBtYXhSZXRyaWVzID0gNVxuKTogUHJvbWlzZTxUPiB7XG4gIGlmICghaXNXaW5kb3dzKSByZXR1cm4gZm4oKTtcblxuICBjb25zdCByZXRyeWFibGVFcnJvcnMgPSBbJ0VQRVJNJywgJ0VCVVNZJywgJ0VBQ0NFUyddO1xuICBjb25zdCBiYXNlRGVsYXlNcyA9IDEwO1xuXG4gIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDw9IG1heFJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZm4oKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zdCBpc1JldHJ5YWJsZSA9XG4gICAgICAgIGF0dGVtcHQgPCBtYXhSZXRyaWVzICYmIHJldHJ5YWJsZUVycm9ycy5pbmNsdWRlcyhlcnJvci5jb2RlKTtcbiAgICAgIGlmICghaXNSZXRyeWFibGUpIHRocm93IGVycm9yO1xuICAgICAgLy8gRXhwb25lbnRpYWwgYmFja29mZiB3aXRoIGppdHRlclxuICAgICAgY29uc3QgZGVsYXkgPSBiYXNlRGVsYXlNcyAqIDIgKiogYXR0ZW1wdCArIE1hdGgucmFuZG9tKCkgKiBiYXNlRGVsYXlNcztcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIGRlbGF5KSk7XG4gICAgfVxuICB9XG4gIC8vIFR5cGVTY3JpcHQ6IHVucmVhY2hhYmxlLCBidXQgc2F0aXNmaWVzIHJldHVybiB0eXBlXG4gIHRocm93IG5ldyBFcnJvcignUmV0cnkgbG9vcCBleGl0ZWQgdW5leHBlY3RlZGx5Jyk7XG59XG5cbi8vIEluLW1lbW9yeSBjYWNoZSBvZiBjcmVhdGVkIGZpbGVzIHRvIGF2b2lkIGV4cGVuc2l2ZSBmcy5hY2Nlc3MoKSBjYWxsc1xuLy8gVGhpcyBpcyBzYWZlIGJlY2F1c2Ugd2Ugb25seSB3cml0ZSBvbmNlIHBlciBmaWxlIHBhdGggKG5vIG92ZXJ3cml0ZXMgd2l0aG91dCBleHBsaWNpdCBmbGFnKVxuY29uc3QgY3JlYXRlZEZpbGVzQ2FjaGUgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuLyoqXG4gKiBDbGVhciB0aGUgY3JlYXRlZCBmaWxlcyBjYWNoZS4gVXNlZnVsIGZvciB0ZXN0aW5nIG9yIHdoZW4gZmlsZXMgYXJlIGRlbGV0ZWQgZXh0ZXJuYWxseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ3JlYXRlZEZpbGVzQ2FjaGUoKTogdm9pZCB7XG4gIGNyZWF0ZWRGaWxlc0NhY2hlLmNsZWFyKCk7XG59XG5cbmV4cG9ydCB7IHVsaWRUb0RhdGUgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuXG4vKipcbiAqIFJlZ2V4IG1hdGNoaW5nIGEgdGFnIHN1ZmZpeCBvbiBhIGZpbGVJZCAoYWZ0ZXIgYC5qc29uYCBoYXMgYmVlbiBzdHJpcHBlZCkuXG4gKiBFLmcuLCBgd3J1bl9BQkMudml0ZXN0LTBgIOKGkiB0aGUgYC52aXRlc3QtMGAgcGFydC5cbiAqIFRhZ3Mgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcnMgYW5kIGh5cGhlbnMuXG4gKiBFbnRpdHkgSURzIChVTElEcywgc3RlcF9OLCBldGMuKSBuZXZlciBjb250YWluIGRvdHMsIHNvIHRoZSBmaXJzdCBkb3RcbiAqIGFsd2F5cyBtYXJrcyB0aGUgdGFnIGJvdW5kYXJ5LlxuICovXG5jb25zdCBUQUdfUEFUVEVSTiA9IC9cXC5bYS16QS1aXVthLXpBLVowLTktXSokLztcblxuLyoqXG4gKiBTdHJpcCBhIHRhZyBzdWZmaXggZnJvbSBhIGZpbGVJZC5cbiAqIGB3cnVuX0FCQy52aXRlc3QtMGAg4oaSIGB3cnVuX0FCQ2BcbiAqIGB3cnVuX0FCQ2Ag4oaSIGB3cnVuX0FCQ2AgKG5vLW9wIGlmIG5vIHRhZylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwVGFnKGZpbGVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZpbGVJZC5yZXBsYWNlKFRBR19QQVRURVJOLCAnJyk7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGZpbGVJZCBiZWxvbmdzIHRvIGEgc3BlY2lmaWMgdGFnLlxuICogYHdydW5fQUJDLnZpdGVzdC0wYCBiZWxvbmdzIHRvIGB2aXRlc3QtMGAuXG4gKiBVbnRhZ2dlZCBmaWxlSWRzIG5ldmVyIG1hdGNoIGEgdGFnLXNjb3BlZCBsb29rdXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNUYWcoZmlsZUlkOiBzdHJpbmcsIHRhZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBmaWxlSWQuZW5kc1dpdGgoYC4ke3RhZ31gKTtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgZmlsZSBwYXRoIGZvciBhbiBlbnRpdHksIHdpdGggb3B0aW9uYWwgdGFnIGVtYmVkZGVkIGluIHRoZSBmaWxlbmFtZS5cbiAqIGB0YWdnZWRQYXRoKCcvZGF0YScsICdydW5zJywgJ3dydW5fQUJDJywgJ3ZpdGVzdC0wJylgIOKGkiBgL2RhdGEvcnVucy93cnVuX0FCQy52aXRlc3QtMC5qc29uYFxuICogYHRhZ2dlZFBhdGgoJy9kYXRhJywgJ3J1bnMnLCAnd3J1bl9BQkMnKWAg4oaSIGAvZGF0YS9ydW5zL3dydW5fQUJDLmpzb25gXG4gKlxuICogVGhlIGBmaWxlSWRgIGFuZCBgdGFnYCBhcmUgdmFsaWRhdGVkIHdpdGgge0BsaW5rIGFzc2VydFNhZmVFbnRpdHlJZH0gYW5kXG4gKiB0aGUgcmVzdWx0IGlzIGNvbnRhaW5tZW50LWNoZWNrZWQgd2l0aCB7QGxpbmsgcmVzb2x2ZVdpdGhpbkJhc2V9IHRvXG4gKiBwcmV2ZW50IHBhdGgtdHJhdmVyc2FsIGF0dGFja3Mgd2hlbiB2YWx1ZXMgYXJlIGRlcml2ZWQgZnJvbSB1bnRydXN0ZWRcbiAqIHJlcXVlc3QgaW5wdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWdnZWRQYXRoKFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIGVudGl0eURpcjogc3RyaW5nLFxuICBmaWxlSWQ6IHN0cmluZyxcbiAgdGFnPzogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBhc3NlcnRTYWZlRW50aXR5SWQoJ2ZpbGVJZCcsIGZpbGVJZCk7XG4gIGlmICh0YWcgIT09IHVuZGVmaW5lZCkgYXNzZXJ0U2FmZUVudGl0eUlkKCd0YWcnLCB0YWcpO1xuICBjb25zdCBmaWxlbmFtZSA9IHRhZyA/IGAke2ZpbGVJZH0uJHt0YWd9Lmpzb25gIDogYCR7ZmlsZUlkfS5qc29uYDtcbiAgcmV0dXJuIHJlc29sdmVXaXRoaW5CYXNlKGJhc2VkaXIsIGVudGl0eURpciwgZmlsZW5hbWUpO1xufVxuXG4vKipcbiAqIFJlYWQgYSBKU09OIGVudGl0eSB3aXRoIHRhZ2dlZCBmYWxsYmFjay5cbiAqIFdoZW4gYSB0YWcgaXMgc2V0LCB0cmllcyB0aGUgdGFnZ2VkIHBhdGggZmlyc3QsIHRoZW4gZmFsbHMgYmFjayB0byB0aGVcbiAqIHVudGFnZ2VkIHBhdGggKHNvIGEgdGFnZ2VkIHdvcmxkIGNhbiByZWFkIGVudGl0aWVzIHdyaXR0ZW4gd2l0aG91dCBhIHRhZykuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkSlNPTldpdGhGYWxsYmFjazxUPihcbiAgYmFzZWRpcjogc3RyaW5nLFxuICBlbnRpdHlEaXI6IHN0cmluZyxcbiAgZmlsZUlkOiBzdHJpbmcsXG4gIHNjaGVtYTogei5ab2RUeXBlPFQ+LFxuICB0YWc/OiBzdHJpbmdcbik6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgYXNzZXJ0U2FmZUVudGl0eUlkKCdmaWxlSWQnLCBmaWxlSWQpO1xuICBpZiAodGFnICE9PSB1bmRlZmluZWQpIGFzc2VydFNhZmVFbnRpdHlJZCgndGFnJywgdGFnKTtcbiAgaWYgKHRhZykge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlYWRKU09OKFxuICAgICAgcmVzb2x2ZVdpdGhpbkJhc2UoYmFzZWRpciwgZW50aXR5RGlyLCBgJHtmaWxlSWR9LiR7dGFnfS5qc29uYCksXG4gICAgICBzY2hlbWFcbiAgICApO1xuICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIHJlYWRKU09OKFxuICAgIHJlc29sdmVXaXRoaW5CYXNlKGJhc2VkaXIsIGVudGl0eURpciwgYCR7ZmlsZUlkfS5qc29uYCksXG4gICAgc2NoZW1hXG4gICk7XG59XG5cbi8qKlxuICogTGlzdCBhbGwgZmlsZW5hbWVzIGluIGEgZGlyZWN0b3J5IHRoYXQgaGF2ZSBhIHNwZWNpZmljIHRhZy5cbiAqIFJldHVybnMgZnVsbCBmaWxlbmFtZXMgKGUuZy4sIGB3cnVuX0FCQy52aXRlc3QtMC5qc29uYCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0VGFnZ2VkRmlsZXMoXG4gIGRpclBhdGg6IHN0cmluZyxcbiAgdGFnOiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3Qgc3VmZml4ID0gYC4ke3RhZ30uanNvbmA7XG4gIHRyeSB7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGRpclBhdGgpO1xuICAgIHJldHVybiBmaWxlcy5maWx0ZXIoKGYpID0+IGYuZW5kc1dpdGgoc3VmZml4KSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKChlcnJvciBhcyBhbnkpLmNvZGUgPT09ICdFTk9FTlQnKSByZXR1cm4gW107XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBMaXN0IGFsbCBmaWxlbmFtZXMgaW4gYSBkaXJlY3RvcnkgdGhhdCBoYXZlIGEgc3BlY2lmaWMgdGFnIGFuZCBleHRlbnNpb24uXG4gKiBSZXR1cm5zIGZ1bGwgZmlsZW5hbWVzIChlLmcuLCBgc3RyZWFtLWNobmtfQUJDLnZpdGVzdC0wLmJpbmApLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdFRhZ2dlZEZpbGVzQnlFeHRlbnNpb24oXG4gIGRpclBhdGg6IHN0cmluZyxcbiAgdGFnOiBzdHJpbmcsXG4gIGV4dGVuc2lvbjogc3RyaW5nXG4pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IHN1ZmZpeCA9IGAuJHt0YWd9JHtleHRlbnNpb259YDtcbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIoZGlyUGF0aCk7XG4gICAgcmV0dXJuIGZpbGVzLmZpbHRlcigoZikgPT4gZi5lbmRzV2l0aChzdWZmaXgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoKGVycm9yIGFzIGFueSkuY29kZSA9PT0gJ0VOT0VOVCcpIHJldHVybiBbXTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlRGlyKGRpclBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLm1rZGlyKGRpclBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICAvLyBJZ25vcmUgaWYgYWxyZWFkeSBleGlzdHNcbiAgfVxufVxuXG5pbnRlcmZhY2UgV3JpdGVPcHRpb25zIHtcbiAgb3ZlcndyaXRlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDdXN0b20gSlNPTiByZXBsYWNlciB0aGF0IGVuY29kZXMgVWludDhBcnJheSBhcyBiYXNlNjQgc3RyaW5ncy5cbiAqIEZvcm1hdDogeyBfX3R5cGU6ICdVaW50OEFycmF5JywgZGF0YTogJzxiYXNlNjQ+JyB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqc29uUmVwbGFjZXIoX2tleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZTogJ1VpbnQ4QXJyYXknLFxuICAgICAgZGF0YTogQnVmZmVyLmZyb20odmFsdWUpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICB9O1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBDdXN0b20gSlNPTiByZXZpdmVyIHRoYXQgZGVjb2RlcyBiYXNlNjQgc3RyaW5ncyBiYWNrIHRvIFVpbnQ4QXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqc29uUmV2aXZlcihfa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gIGlmIChcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAodmFsdWUgYXMgYW55KS5fX3R5cGUgPT09ICdVaW50OEFycmF5JyAmJlxuICAgIHR5cGVvZiAodmFsdWUgYXMgYW55KS5kYXRhID09PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oKHZhbHVlIGFzIGFueSkuZGF0YSwgJ2Jhc2U2NCcpKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUpTT04oXG4gIGZpbGVQYXRoOiBzdHJpbmcsXG4gIGRhdGE6IGFueSxcbiAgb3B0cz86IFdyaXRlT3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiB3cml0ZShmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoZGF0YSwganNvblJlcGxhY2VyLCAyKSwgb3B0cyk7XG59XG5cbi8qKlxuICogV3JpdGVzIGRhdGEgdG8gYSBmaWxlIHVzaW5nIGF0b21pYyB3cml0ZS1yZW5hbWUgcGF0dGVybi5cbiAqXG4gKiBOb3RlOiBXaGlsZSB0aGlzIGZ1bmN0aW9uIHVzZXMgdGVtcCBmaWxlcyB0byBhdm9pZCBwYXJ0aWFsIHdyaXRlcyxcbiAqIGl0IGRvZXMgbm90IHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGNvbmN1cnJlbnQgd3JpdGVzIGZyb20gbXVsdGlwbGVcbiAqIHByb2Nlc3Nlcy4gSW4gYSBtdWx0aS13cml0ZXIgc2NlbmFyaW8sIHRoZSBsYXN0IHdyaXRlciB3aW5zLlxuICogRm9yIHByb2R1Y3Rpb24gdXNlIHdpdGggbXVsdGlwbGUgd3JpdGVycywgY29uc2lkZXIgdXNpbmcgYSBwcm9wZXJcbiAqIGRhdGFiYXNlIG9yIGxvY2tpbmcgbWVjaGFuaXNtLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGUoXG4gIGZpbGVQYXRoOiBzdHJpbmcsXG4gIGRhdGE6IHN0cmluZyB8IEJ1ZmZlcixcbiAgb3B0cz86IFdyaXRlT3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghb3B0cz8ub3ZlcndyaXRlKSB7XG4gICAgLy8gRmFzdCBwYXRoOiBjaGVjayBpbi1tZW1vcnkgY2FjaGUgZmlyc3QgdG8gYXZvaWQgZXhwZW5zaXZlIGZzLmFjY2VzcygpIGNhbGxzXG4gICAgLy8gVGhpcyBwcm92aWRlcyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCB3aGVuIGNyZWF0aW5nIG1hbnkgZmlsZXNcbiAgICBpZiAoY3JlYXRlZEZpbGVzQ2FjaGUuaGFzKGZpbGVQYXRoKSkge1xuICAgICAgdGhyb3cgbmV3IEVudGl0eUNvbmZsaWN0RXJyb3IoXG4gICAgICAgIGBGaWxlICR7ZmlsZVBhdGh9IGFscmVhZHkgZXhpc3RzIGFuZCAnb3ZlcndyaXRlJyBpcyBmYWxzZWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gU2xvdyBwYXRoOiBjaGVjayBmaWxlc3lzdGVtIGZvciBmaWxlcyBjcmVhdGVkIGJlZm9yZSB0aGlzIHByb2Nlc3Mgc3RhcnRlZFxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5hY2Nlc3MoZmlsZVBhdGgpO1xuICAgICAgLy8gRmlsZSBleGlzdHMgb24gZGlzaywgYWRkIHRvIGNhY2hlIGZvciBmdXR1cmUgY2hlY2tzXG4gICAgICBjcmVhdGVkRmlsZXNDYWNoZS5hZGQoZmlsZVBhdGgpO1xuICAgICAgdGhyb3cgbmV3IEVudGl0eUNvbmZsaWN0RXJyb3IoXG4gICAgICAgIGBGaWxlICR7ZmlsZVBhdGh9IGFscmVhZHkgZXhpc3RzIGFuZCAnb3ZlcndyaXRlJyBpcyBmYWxzZWBcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgLy8gSWYgZmlsZSBkb2Vzbid0IGV4aXN0IChFTk9FTlQpLCBjb250aW51ZSB3aXRoIHdyaXRlXG4gICAgICBpZiAoZXJyb3IuY29kZSAhPT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgdGVtcFBhdGggPSBgJHtmaWxlUGF0aH0udG1wLiR7dWxpZCgpfWA7XG4gIGxldCB0ZW1wRmlsZUNyZWF0ZWQgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHRlbXBQYXRoLCBkYXRhKTtcbiAgICB0ZW1wRmlsZUNyZWF0ZWQgPSB0cnVlO1xuICAgIGF3YWl0IHdpdGhXaW5kb3dzUmV0cnkoKCkgPT4gZnMucmVuYW1lKHRlbXBQYXRoLCBmaWxlUGF0aCkpO1xuICAgIC8vIFRyYWNrIHRoaXMgZmlsZSBpbiBjYWNoZSBzbyBmdXR1cmUgd3JpdGVzIGtub3cgaXQgZXhpc3RzXG4gICAgY3JlYXRlZEZpbGVzQ2FjaGUuYWRkKGZpbGVQYXRoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBPbmx5IHRyeSB0byBjbGVhbiB1cCB0ZW1wIGZpbGUgaWYgaXQgd2FzIGFjdHVhbGx5IGNyZWF0ZWRcbiAgICBpZiAodGVtcEZpbGVDcmVhdGVkKSB7XG4gICAgICBhd2FpdCB3aXRoV2luZG93c1JldHJ5KCgpID0+IGZzLnVubGluayh0ZW1wUGF0aCksIDMpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRKU09OPFQ+KFxuICBmaWxlUGF0aDogc3RyaW5nLFxuICBkZWNvZGVyOiB6LlpvZFR5cGU8VD5cbik6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZVBhdGgsICd1dGYtOCcpO1xuICAgIHJldHVybiBkZWNvZGVyLnBhcnNlKEpTT04ucGFyc2UoY29udGVudCwganNvblJldml2ZXIpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoKGVycm9yIGFzIGFueSkuY29kZSA9PT0gJ0VOT0VOVCcpIHJldHVybiBudWxsO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQnVmZmVyKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZVBhdGgpO1xuICByZXR1cm4gY29udGVudDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUpTT04oZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLnVubGluayhmaWxlUGF0aCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKChlcnJvciBhcyBhbnkpLmNvZGUgIT09ICdFTk9FTlQnKSB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIEF0b21pY2FsbHkgY3JlYXRlIGEgZmlsZSB1c2luZyBPX0NSRUFUIHwgT19FWENMIGZsYWdzLlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBmaWxlIHdhcyBjcmVhdGVkLCBmYWxzZSBpZiBpdCBhbHJlYWR5IGV4aXN0cy5cbiAqIFRoaXMgaXMgYXRvbWljIGF0IHRoZSBPUyBsZXZlbCwgc2FmZSBmb3IgY29uY3VycmVudCBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUV4Y2x1c2l2ZShcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgZGF0YTogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlUGF0aCwgZGF0YSwgeyBmbGFnOiAnd3gnIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgaWYgKGVycm9yLmNvZGUgPT09ICdFRVhJU1QnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0SlNPTkZpbGVzKGRpclBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgcmV0dXJuIGxpc3RGaWxlc0J5RXh0ZW5zaW9uKGRpclBhdGgsICcuanNvbicpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdEZpbGVzQnlFeHRlbnNpb24oXG4gIGRpclBhdGg6IHN0cmluZyxcbiAgZXh0ZW5zaW9uOiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIoZGlyUGF0aCk7XG4gICAgcmV0dXJuIGZpbGVzXG4gICAgICAuZmlsdGVyKChmKSA9PiBmLmVuZHNXaXRoKGV4dGVuc2lvbikpXG4gICAgICAubWFwKChmKSA9PiBmLnNsaWNlKDAsIC1leHRlbnNpb24ubGVuZ3RoKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKChlcnJvciBhcyBhbnkpLmNvZGUgPT09ICdFTk9FTlQnKSByZXR1cm4gW107XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFBhZ2luYXRlZEZpbGVTeXN0ZW1RdWVyeUNvbmZpZzxUPiB7XG4gIGRpcmVjdG9yeTogc3RyaW5nO1xuICBzY2hlbWE6IHouWm9kVHlwZTxUPjtcbiAgZmlsZVByZWZpeD86IHN0cmluZztcbiAgZmlsZUlkRmlsdGVyPzogKGZpbGVJZDogc3RyaW5nKSA9PiBib29sZWFuO1xuICBmaWx0ZXI/OiAoaXRlbTogVCkgPT4gYm9vbGVhbjtcbiAgc29ydE9yZGVyPzogJ2FzYycgfCAnZGVzYyc7XG4gIGxpbWl0PzogbnVtYmVyO1xuICBjdXJzb3I/OiBzdHJpbmc7XG4gIGdldENyZWF0ZWRBdChmaWxlbmFtZTogc3RyaW5nKTogRGF0ZSB8IG51bGw7XG4gIGdldElkPyhpdGVtOiBUKTogc3RyaW5nO1xufVxuLy8gQ3Vyc29yIGZvcm1hdDogXCJ0aW1lc3RhbXB8aWRcIiBmb3IgdGllLWJyZWFraW5nXG5pbnRlcmZhY2UgUGFyc2VkQ3Vyc29yIHtcbiAgdGltZXN0YW1wOiBEYXRlO1xuICBpZDogc3RyaW5nIHwgbnVsbDtcbn1cblxuZnVuY3Rpb24gcGFyc2VDdXJzb3IoY3Vyc29yOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBQYXJzZWRDdXJzb3IgfCBudWxsIHtcbiAgaWYgKCFjdXJzb3IpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHBhcnRzID0gY3Vyc29yLnNwbGl0KCd8Jyk7XG4gIHJldHVybiB7XG4gICAgdGltZXN0YW1wOiBuZXcgRGF0ZShwYXJ0c1swXSksXG4gICAgaWQ6IHBhcnRzWzFdIHx8IG51bGwsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUN1cnNvcih0aW1lc3RhbXA6IERhdGUsIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICByZXR1cm4gaWQgPyBgJHt0aW1lc3RhbXAudG9JU09TdHJpbmcoKX18JHtpZH1gIDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYWdpbmF0ZWRGaWxlU3lzdGVtUXVlcnk8VCBleHRlbmRzIHsgY3JlYXRlZEF0OiBEYXRlIH0+KFxuICBjb25maWc6IFBhZ2luYXRlZEZpbGVTeXN0ZW1RdWVyeUNvbmZpZzxUPlxuKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxUPj4ge1xuICBjb25zdCB7XG4gICAgZGlyZWN0b3J5LFxuICAgIHNjaGVtYSxcbiAgICBmaWxlUHJlZml4LFxuICAgIGZpbGVJZEZpbHRlcixcbiAgICBmaWx0ZXIsXG4gICAgc29ydE9yZGVyID0gJ2Rlc2MnLFxuICAgIGxpbWl0ID0gMjAsXG4gICAgY3Vyc29yLFxuICAgIGdldENyZWF0ZWRBdCxcbiAgICBnZXRJZCxcbiAgfSA9IGNvbmZpZztcblxuICAvLyBWYWxpZGF0ZSBmaWxlUHJlZml4ICh0eXBpY2FsbHkgYCR7cnVuSWR9LWApIHNvIHJlcXVlc3QtZGVyaXZlZCBwcmVmaXhlc1xuICAvLyBjb25zaXN0ZW50bHkgcmVqZWN0IHVuc2FmZSBjaGFyYWN0ZXJzLiBmaWxlUHJlZml4IGlzIG9ubHkgdXNlZCBiZWxvdyB0b1xuICAvLyBmaWx0ZXIgcmVhZGRpcigpIHJlc3VsdHMgYnkgcHJlZml4IOKAlCBpdCBkb2Vzbid0IHBhcnRpY2lwYXRlIGluIHBhdGhcbiAgLy8gY29uc3RydWN0aW9uIOKAlCBidXQga2VlcGluZyB0aGUgdmFsaWRhdGlvbiBydWxlIHVuaWZvcm0gYWNyb3NzIHRoZVxuICAvLyBzdG9yYWdlIGxheWVyIGF2b2lkcyBzcGVjaWFsIGNhc2VzIGFuZCBjYXRjaGVzIGJhZCB2YWx1ZXMgZWFybGllci5cbiAgaWYgKGZpbGVQcmVmaXggIT09IHVuZGVmaW5lZCkge1xuICAgIGFzc2VydFNhZmVFbnRpdHlJZCgnZmlsZVByZWZpeCcsIGZpbGVQcmVmaXgpO1xuICB9XG5cbiAgLy8gMS4gR2V0IGFsbCBKU09OIGZpbGVzIGluIGRpcmVjdG9yeVxuICBjb25zdCBmaWxlSWRzID0gYXdhaXQgbGlzdEpTT05GaWxlcyhkaXJlY3RvcnkpO1xuXG4gIC8vIDIuIEZpbHRlciBieSBwcmVmaXggaWYgcHJvdmlkZWRcbiAgY29uc3QgcmVsZXZhbnRGaWxlSWRzID0gZmlsZVByZWZpeFxuICAgID8gZmlsZUlkcy5maWx0ZXIoKGZpbGVJZCkgPT4gZmlsZUlkLnN0YXJ0c1dpdGgoZmlsZVByZWZpeCkpXG4gICAgOiBmaWxlSWRzO1xuICBjb25zdCBmaWx0ZXJlZEZpbGVJZHMgPSBmaWxlSWRGaWx0ZXJcbiAgICA/IHJlbGV2YW50RmlsZUlkcy5maWx0ZXIoZmlsZUlkRmlsdGVyKVxuICAgIDogcmVsZXZhbnRGaWxlSWRzO1xuXG4gIC8vIDMuIFVMSUQgT3B0aW1pemF0aW9uOiBGaWx0ZXIgYnkgY3Vyc29yIHVzaW5nIGZpbGVuYW1lIHRpbWVzdGFtcHMgYmVmb3JlIGxvYWRpbmcgSlNPTlxuICBjb25zdCBwYXJzZWRDdXJzb3IgPSBwYXJzZUN1cnNvcihjdXJzb3IpO1xuICBsZXQgY2FuZGlkYXRlRmlsZUlkcyA9IGZpbHRlcmVkRmlsZUlkcztcblxuICBpZiAocGFyc2VkQ3Vyc29yKSB7XG4gICAgY2FuZGlkYXRlRmlsZUlkcyA9IGZpbHRlcmVkRmlsZUlkcy5maWx0ZXIoKGZpbGVJZCkgPT4ge1xuICAgICAgY29uc3QgZmlsZW5hbWVEYXRlID0gZ2V0Q3JlYXRlZEF0KGAke2ZpbGVJZH0uanNvbmApO1xuICAgICAgaWYgKGZpbGVuYW1lRGF0ZSkge1xuICAgICAgICAvLyBVc2UgZmlsZW5hbWUgdGltZXN0YW1wIGZvciBjdXJzb3IgZmlsdGVyaW5nXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlOiBpZiBwYXJzZWRDdXJzb3IgaGFzIGFuIElEIChmb3IgdGllLWJyZWFraW5nKSxcbiAgICAgICAgLy8gd2UgbmVlZCB0byBpbmNsdWRlIGl0ZW1zIHdpdGggdGhlIHNhbWUgdGltZXN0YW1wIGZvciBsYXRlciBJRC1iYXNlZCBmaWx0ZXJpbmcuXG4gICAgICAgIC8vIElmIG5vIElELCB3ZSBjYW4gdXNlIHN0cmljdCBpbmVxdWFsaXR5IGZvciBvcHRpbWl6YXRpb24uXG4gICAgICAgIGNvbnN0IGN1cnNvclRpbWUgPSBwYXJzZWRDdXJzb3IudGltZXN0YW1wLmdldFRpbWUoKTtcbiAgICAgICAgY29uc3QgZmlsZVRpbWUgPSBmaWxlbmFtZURhdGUuZ2V0VGltZSgpO1xuXG4gICAgICAgIGlmIChwYXJzZWRDdXJzb3IuaWQpIHtcbiAgICAgICAgICAvLyBUaWUtYnJlYWtpbmcgbW9kZTogaW5jbHVkZSBpdGVtcyBhdCBvciBuZWFyIGN1cnNvciB0aW1lc3RhbXBcbiAgICAgICAgICByZXR1cm4gc29ydE9yZGVyID09PSAnZGVzYydcbiAgICAgICAgICAgID8gZmlsZVRpbWUgPD0gY3Vyc29yVGltZVxuICAgICAgICAgICAgOiBmaWxlVGltZSA+PSBjdXJzb3JUaW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE5vIHRpZS1icmVha2luZzogc3RyaWN0IGluZXF1YWxpdHlcbiAgICAgICAgICByZXR1cm4gc29ydE9yZGVyID09PSAnZGVzYydcbiAgICAgICAgICAgID8gZmlsZVRpbWUgPCBjdXJzb3JUaW1lXG4gICAgICAgICAgICA6IGZpbGVUaW1lID4gY3Vyc29yVGltZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQ2FuJ3QgZXh0cmFjdCB0aW1lc3RhbXAgZnJvbSBmaWxlbmFtZSAoZS5nLiwgc3RlcHMgdXNlIHNlcXVlbnRpYWwgSURzKS5cbiAgICAgIC8vIEluY2x1ZGUgdGhlIGZpbGUgYW5kIGRlZmVyIHRvIEpTT04tYmFzZWQgZmlsdGVyaW5nIGJlbG93LlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cblxuICAvLyA0LiBMb2FkIGZpbGVzIGluZGl2aWR1YWxseSBhbmQgY29sbGVjdCB2YWxpZCBpdGVtc1xuICBjb25zdCB2YWxpZEl0ZW1zOiBUW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGZpbGVJZCBvZiBjYW5kaWRhdGVGaWxlSWRzKSB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZGlyZWN0b3J5LCBgJHtmaWxlSWR9Lmpzb25gKTtcbiAgICBsZXQgaXRlbTogVCB8IG51bGwgPSBudWxsO1xuICAgIHRyeSB7XG4gICAgICBpdGVtID0gYXdhaXQgcmVhZEpTT04oZmlsZVBhdGgsIHNjaGVtYSk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIC8vIFdlIGRvbid0IGV4cGVjdCB6b2QgZXJyb3JzIHRvIGhhcHBlbiwgYnV0IGlmIHRoZSBKU09OIGRvZXMgZ2V0IG1hbGZvcm1lZCxcbiAgICAgIC8vIHdlIHNraXAgdGhlIGl0ZW0uIFByZWZlcmFibHksIHdlJ2QgaGF2ZSBhIHdheSB0byBtYXJrIGl0ZW1zIGFzIG1hbGZvcm1lZCxcbiAgICAgIC8vIHNvIHRoYXQgdGhlIFVJIGNhbiBkaXNwbGF5IHRoZW0gYXMgc3VjaCwgd2l0aCByaWNoZXIgbWVzc2FnaW5nLiBJbiB0aGUgbWVhbnRpbWUsXG4gICAgICAvLyB3ZSBqdXN0IGxvZyBhIHdhcm5pbmcgYW5kIHNraXAgdGhlIGl0ZW0uXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgU2tpcHBpbmcgaXRlbSAke2ZpbGVJZH0gZHVlIHRvIG1hbGZvcm1lZCBKU09OOiAke2Vycm9yLm1lc3NhZ2V9YFxuICAgICAgICApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGlmIChpdGVtKSB7XG4gICAgICAvLyBBcHBseSBjdXN0b20gZmlsdGVyIGVhcmx5IGlmIHByb3ZpZGVkXG4gICAgICBpZiAoZmlsdGVyICYmICFmaWx0ZXIoaXRlbSkpIGNvbnRpbnVlO1xuXG4gICAgICAvLyBEb3VibGUtY2hlY2sgY3Vyc29yIGZpbHRlcmluZyB3aXRoIGFjdHVhbCBjcmVhdGVkQXQgZnJvbSBKU09OXG4gICAgICAvLyAoaW4gY2FzZSBVTElEIHRpbWVzdGFtcCBkaWZmZXJzIGZyb20gc3RvcmVkIGNyZWF0ZWRBdClcbiAgICAgIGlmIChwYXJzZWRDdXJzb3IpIHtcbiAgICAgICAgY29uc3QgaXRlbVRpbWUgPSBpdGVtLmNyZWF0ZWRBdC5nZXRUaW1lKCk7XG4gICAgICAgIGNvbnN0IGN1cnNvclRpbWUgPSBwYXJzZWRDdXJzb3IudGltZXN0YW1wLmdldFRpbWUoKTtcblxuICAgICAgICBpZiAoc29ydE9yZGVyID09PSAnZGVzYycpIHtcbiAgICAgICAgICAvLyBGb3IgZGVzY2VuZGluZyBvcmRlciwgc2tpcCBpdGVtcyA+PSBjdXJzb3JcbiAgICAgICAgICBpZiAoaXRlbVRpbWUgPiBjdXJzb3JUaW1lKSBjb250aW51ZTtcbiAgICAgICAgICAvLyBJZiB0aW1lc3RhbXBzIGFyZSBlcXVhbCwgdXNlIElEIGZvciB0aWUtYnJlYWtpbmcgKHNraXAgaWYgSUQgPj0gY3Vyc29ySWQpXG4gICAgICAgICAgaWYgKGl0ZW1UaW1lID09PSBjdXJzb3JUaW1lICYmIHBhcnNlZEN1cnNvci5pZCAmJiBnZXRJZCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbUlkID0gZ2V0SWQoaXRlbSk7XG4gICAgICAgICAgICBpZiAoaXRlbUlkID49IHBhcnNlZEN1cnNvci5pZCkgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZvciBhc2NlbmRpbmcgb3JkZXIsIHNraXAgaXRlbXMgPD0gY3Vyc29yXG4gICAgICAgICAgaWYgKGl0ZW1UaW1lIDwgY3Vyc29yVGltZSkgY29udGludWU7XG4gICAgICAgICAgLy8gSWYgdGltZXN0YW1wcyBhcmUgZXF1YWwsIHVzZSBJRCBmb3IgdGllLWJyZWFraW5nIChza2lwIGlmIElEIDw9IGN1cnNvcklkKVxuICAgICAgICAgIGlmIChpdGVtVGltZSA9PT0gY3Vyc29yVGltZSAmJiBwYXJzZWRDdXJzb3IuaWQgJiYgZ2V0SWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JZCA9IGdldElkKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGl0ZW1JZCA8PSBwYXJzZWRDdXJzb3IuaWQpIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YWxpZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgLy8gNS4gU29ydCBieSBjcmVhdGVkQXQgKGFuZCBieSBJRCBmb3IgdGllLWJyZWFraW5nIGlmIGdldElkIGlzIHByb3ZpZGVkKVxuICB2YWxpZEl0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICBjb25zdCBhVGltZSA9IGEuY3JlYXRlZEF0LmdldFRpbWUoKTtcbiAgICBjb25zdCBiVGltZSA9IGIuY3JlYXRlZEF0LmdldFRpbWUoKTtcbiAgICBjb25zdCB0aW1lQ29tcGFyaXNvbiA9IHNvcnRPcmRlciA9PT0gJ2FzYycgPyBhVGltZSAtIGJUaW1lIDogYlRpbWUgLSBhVGltZTtcblxuICAgIC8vIElmIHRpbWVzdGFtcHMgYXJlIGVxdWFsIGFuZCB3ZSBoYXZlIGdldElkLCB1c2UgSUQgZm9yIHN0YWJsZSBzb3J0aW5nXG4gICAgaWYgKHRpbWVDb21wYXJpc29uID09PSAwICYmIGdldElkKSB7XG4gICAgICBjb25zdCBhSWQgPSBnZXRJZChhKTtcbiAgICAgIGNvbnN0IGJJZCA9IGdldElkKGIpO1xuICAgICAgcmV0dXJuIHNvcnRPcmRlciA9PT0gJ2FzYydcbiAgICAgICAgPyBhSWQubG9jYWxlQ29tcGFyZShiSWQpXG4gICAgICAgIDogYklkLmxvY2FsZUNvbXBhcmUoYUlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGltZUNvbXBhcmlzb247XG4gIH0pO1xuXG4gIC8vIDYuIEFwcGx5IHBhZ2luYXRpb25cbiAgY29uc3QgaGFzTW9yZSA9IHZhbGlkSXRlbXMubGVuZ3RoID4gbGltaXQ7XG4gIGNvbnN0IGl0ZW1zID0gaGFzTW9yZSA/IHZhbGlkSXRlbXMuc2xpY2UoMCwgbGltaXQpIDogdmFsaWRJdGVtcztcbiAgY29uc3QgbmV4dEN1cnNvciA9XG4gICAgaXRlbXMubGVuZ3RoID4gMFxuICAgICAgPyBjcmVhdGVDdXJzb3IoXG4gICAgICAgICAgaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0uY3JlYXRlZEF0LFxuICAgICAgICAgIGdldElkPy4oaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0pXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcblxuICByZXR1cm4ge1xuICAgIGRhdGE6IGl0ZW1zLFxuICAgIGN1cnNvcjogbmV4dEN1cnNvcixcbiAgICBoYXNNb3JlLFxuICB9O1xufVxuIl19
package/dist/index.js CHANGED
@@ -112,4 +112,4 @@ export function createLocalWorld(args) {
112
112
  },
113
113
  };
114
114
  }
115
- //# sourceMappingURL=index.js.map
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUU3QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLE1BQU0sRUFDTixlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLFFBQVEsR0FDVCxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQXNCLE1BQU0sWUFBWSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsbURBQW1EO0FBQ25ELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixXQUFXLEVBRVgsWUFBWSxHQUNiLE1BQU0sV0FBVyxDQUFDO0FBY25COzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFzQjtJQUNyRCxNQUFNLFdBQVcsR0FBRyxJQUFJO1FBQ3RCLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUNoQixNQUFNLENBQUMs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QztnQkFDMUQsTUFBTSxjQUFjLEdBQUcsTUFBTSwwQkFBMEIsQ0FDckQsU0FBUyxFQUNULEdBQUcsRUFDSCxNQUFNLENBQ1AsQ0FBQztnQkFDRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3ZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQ25ELENBQ0YsQ0FBQztnQkFDRixpRUFBaUU7Z0JBQ2pFLHNCQUFzQixFQUFFLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBybSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHsgV29ybGQgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgcmVlbnF1ZXVlQWN0aXZlUnVucywgU1BFQ19WRVJTSU9OX0NVUlJFTlQgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tICcuL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICcuL2NvbmZpZy5qcyc7XG5pbXBvcnQge1xuICBjbGVhckNyZWF0ZWRGaWxlc0NhY2hlLFxuICBkZWxldGVKU09OLFxuICBoYXNUYWcsXG4gIGxpc3RUYWdnZWRGaWxlcyxcbiAgbGlzdFRhZ2dlZEZpbGVzQnlFeHRlbnNpb24sXG4gIHJlYWRKU09OLFxufSBmcm9tICcuL2ZzLmpzJztcbmltcG9ydCB7IGluaXREYXRhRGlyIH0gZnJvbSAnLi9pbml0LmpzJztcbmltcG9ydCB7IGluc3RydW1lbnRPYmplY3QgfSBmcm9tICcuL2luc3RydW1lbnRPYmplY3QuanMnO1xuaW1wb3J0IHsgY3JlYXRlUXVldWUsIHR5cGUgRGlyZWN0SGFuZGxlciB9IGZyb20gJy4vcXVldWUuanMnO1xuaW1wb3J0IHsgaGFzaFRva2VuIH0gZnJvbSAnLi9zdG9yYWdlL2hlbHBlcnMuanMnO1xuaW1wb3J0IHsgY3JlYXRlU3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZS5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTdHJlYW1lciB9IGZyb20gJy4vc3RyZWFtZXIuanMnO1xuXG4vLyBSZS1leHBvcnQgaW5pdCB0eXBlcyBhbmQgdXRpbGl0aWVzIGZvciBjb25zdW1lcnNcbmV4cG9ydCB7XG4gIERhdGFEaXJBY2Nlc3NFcnJvcixcbiAgRGF0YURpclZlcnNpb25FcnJvcixcbiAgZW5zdXJlRGF0YURpcixcbiAgaW5pdERhdGFEaXIsXG4gIHR5cGUgUGFyc2VkVmVyc2lvbixcbiAgcGFyc2VWZXJzaW9uLFxufSBmcm9tICcuL2luaXQuanMnO1xuXG5leHBvcnQgdHlwZSB7IERpcmVjdEhhbmRsZXIgfSBmcm9tICcuL3F1ZXVlLmpzJztcblxuZXhwb3J0IHR5cGUgTG9jYWxXb3JsZCA9IFdvcmxkICYge1xuICAvKiogUmVnaXN0ZXIgYSBkaXJlY3QgaW4tcHJvY2VzcyBoYW5kbGVyIGZvciBhIHF1ZXVlIHByZWZpeCwgYnlwYXNzaW5nIEhUVFAuICovXG4gIHJlZ2lzdGVySGFuZGxlcihcbiAgICBwcmVmaXg6ICdfX3drZl9zdGVwXycgfCAnX193a2Zfd29ya2Zsb3dfJyxcbiAgICBoYW5kbGVyOiBEaXJlY3RIYW5kbGVyXG4gICk6IHZvaWQ7XG4gIC8qKiBDbGVhciBhbGwgd29ya2Zsb3cgZGF0YSAocnVucywgc3RlcHMsIGV2ZW50cywgaG9va3MsIHN0cmVhbXMpLiAqL1xuICBjbGVhcigpOiBQcm9taXNlPHZvaWQ+O1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbG9jYWwgd29ybGQgaW5zdGFuY2UgdGhhdCBjb21iaW5lcyBxdWV1ZSwgc3RvcmFnZSwgYW5kIHN0cmVhbWVyIGZ1bmN0aW9uYWxpdGllcy5cbiAqXG4gKiBAcGFyYW0gYXJncyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gKiBAcGFyYW0gYXJncy5kYXRhRGlyIC0gRGlyZWN0b3J5IGZvciBzdG9yaW5nIHdvcmtmbG93IGRhdGEgKGRlZmF1bHQ6IGAud29ya2Zsb3ctZGF0YS9gKVxuICogQHBhcmFtIGFyZ3MucG9ydCAtIFBvcnQgb3ZlcnJpZGUgZm9yIHF1ZXVlIHRyYW5zcG9ydCAoZGVmYXVsdDogYXV0by1kZXRlY3RlZClcbiAqIEBwYXJhbSBhcmdzLmJhc2VVcmwgLSBGdWxsIGJhc2UgVVJMIG92ZXJyaWRlIGZvciBxdWV1ZSB0cmFuc3BvcnQgKGRlZmF1bHQ6IGBodHRwOi8vbG9jYWxob3N0Ontwb3J0fWApXG4gKiBAcGFyYW0gYXJncy5yZWNvdmVyQWN0aXZlUnVucyAtIFdoZXRoZXIgYHN0YXJ0KClgIHNob3VsZCByZS1lbnF1ZXVlIHBlbmRpbmcvcnVubmluZyBydW5zIGZyb20gc3RvcmFnZSAoZGVmYXVsdDogYHRydWVgKVxuICogQHBhcmFtIGFyZ3MudGFnIC0gT3B0aW9uYWwgdGFnIHRvIHNjb3BlIGZpbGVzIChlLmcuLCBgdml0ZXN0LTBgKS4gV2hlbiBzZXQsIGZpbGVzIGFyZSB3cml0dGVuXG4gKiAgIGFzIGB7aWR9Lnt0YWd9Lmpzb25gIGFuZCBgY2xlYXIoKWAgb25seSBkZWxldGVzIGZpbGVzIG1hdGNoaW5nIHRoaXMgdGFnLlxuICogQHRocm93cyB7RGF0YURpckFjY2Vzc0Vycm9yfSBJZiB0aGUgZGF0YSBkaXJlY3RvcnkgY2Fubm90IGJlIGNyZWF0ZWQgb3IgYWNjZXNzZWRcbiAqIEB0aHJvd3Mge0RhdGFEaXJWZXJzaW9uRXJyb3J9IElmIHRoZSBkYXRhIGRpcmVjdG9yeSB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9jYWxXb3JsZChhcmdzPzogUGFydGlhbDxDb25maWc+KTogTG9jYWxXb3JsZCB7XG4gIGNvbnN0IGRlZmluZWRBcmdzID0gYXJnc1xuICAgID8gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhhcmdzKS5maWx0ZXIoKFssIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAgIClcbiAgICA6IHt9O1xuICBjb25zdCBtZXJnZWRDb25maWcgPSB7IC4uLmNvbmZpZy52YWx1ZSwgLi4uZGVmaW5lZEFyZ3MgfTtcbiAgY29uc3QgdGFnID0gbWVyZ2VkQ29uZmlnLnRhZztcbiAgY29uc3QgcXVldWUgPSBjcmVhdGVRdWV1ZShtZXJnZWRDb25maWcpO1xuICBjb25zdCBzdG9yYWdlID0gY3JlYXRlU3RvcmFnZShtZXJnZWRDb25maWcuZGF0YURpciwgdGFnKTtcbiAgY29uc3QgcmVjb3ZlckFjdGl2ZVJ1bnMgPSBtZXJnZWRDb25maWcucmVjb3ZlckFjdGl2ZVJ1bnMgPz8gdHJ1ZTtcbiAgcmV0dXJuIHtcbiAgICBzcGVjVmVyc2lvbjogU1BFQ19WRVJTSU9OX0NVUlJFTlQsXG4gICAgLi4ucXVldWUsXG4gICAgLi4uc3RvcmFnZSxcbiAgICAuLi5pbnN0cnVtZW50T2JqZWN0KCd3b3JsZC5zdHJlYW1zJywge1xuICAgICAgLi4uY3JlYXRlU3RyZWFtZXIobWVyZ2VkQ29uZmlnLmRhdGFEaXIsIHRhZyksXG4gICAgICAuLi4obWVyZ2VkQ29uZmlnLnN0cmVhbUZsdXNoSW50ZXJ2YWxNcyAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgc3RyZWFtRmx1c2hJbnRlcnZhbE1zOiBtZXJnZWRDb25maWcuc3RyZWFtRmx1c2hJbnRlcnZhbE1zLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgYXN5bmMgc3RhcnQoKSB7XG4gICAgICBhd2FpdCBpbml0RGF0YURpcihtZXJnZWRDb25maWcuZGF0YURpcik7XG4gICAgICBpZiAoIXJlY292ZXJBY3RpdmVSdW5zKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlY292ZXJ5UnVucyA9IHRhZ1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLnN0b3JhZ2UucnVucyxcbiAgICAgICAgICAgIGxpc3Q6ICgocGFyYW1zKSA9PlxuICAgICAgICAgICAgICBzdG9yYWdlLnJ1bnMubGlzdCh7XG4gICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgIGZpbGVJZEZpbHRlcjogKGZpbGVJZCkgPT4gaGFzVGFnKGZpbGVJZCwgdGFnKSxcbiAgICAgICAgICAgICAgfSkpIGFzIHR5cGVvZiBzdG9yYWdlLnJ1bnMubGlzdCxcbiAgICAgICAgICB9XG4gICAgICAgIDogc3RvcmFnZS5ydW5zO1xuICAgICAgYXdhaXQgcmVlbnF1ZXVlQWN0aXZlUnVucyhyZWNvdmVyeVJ1bnMsIHF1ZXVlLnF1ZXVlLCAnd29ybGQtbG9jYWwnKTtcbiAgICB9LFxuICAgIGFzeW5jIGNsb3NlKCkge1xuICAgICAgYXdhaXQgcXVldWUuY2xvc2UoKTtcbiAgICB9LFxuICAgIGFzeW5jIGNsZWFyKCkge1xuICAgICAgaWYgKHRhZykge1xuICAgICAgICAvLyBTZWxlY3RpdmVseSBkZWxldGUgb25seSBmaWxlcyBtYXRjaGluZyB0aGlzIHRhZ1xuICAgICAgICBjb25zdCBiYXNlZGlyID0gbWVyZ2VkQ29uZmlnLmRhdGFEaXI7XG5cbiAgICAgICAgLy8gRGVsZXRlIGhvb2sgdG9rZW4gY29uc3RyYWludCBmaWxlcyBCRUZPUkUgZGVsZXRpbmcgdGhlIGhvb2tzLFxuICAgICAgICAvLyBzaW5jZSB3ZSBuZWVkIHRvIHJlYWQgZWFjaCBob29rIHRvIGV4dHJhY3QgaXRzIHRva2VuIGhhc2guXG4gICAgICAgIC8vIENvbnN0cmFpbnQgZmlsZXMgYXJlIHVudGFnZ2VkICh7c2hhMjU2fS5qc29uKSBzbyBsaXN0VGFnZ2VkRmlsZXNcbiAgICAgICAgLy8gd29uJ3QgZmluZCB0aGVtIOKAlCB3ZSBtdXN0IHJlc29sdmUgdGhlbSB2aWEgdGhlIGhvb2sgZGF0YS5cbiAgICAgICAgY29uc3QgaG9va3NEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ2hvb2tzJyk7XG4gICAgICAgIGNvbnN0IHRhZ2dlZEhvb2tGaWxlcyA9IGF3YWl0IGxpc3RUYWdnZWRGaWxlcyhob29rc0RpciwgdGFnKTtcbiAgICAgICAgY29uc3QgeyBIb29rU2NoZW1hIH0gPSBhd2FpdCBpbXBvcnQoJ0B3b3JrZmxvdy93b3JsZCcpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICB0YWdnZWRIb29rRmlsZXMubWFwKGFzeW5jIChob29rRmlsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaG9vayA9IGF3YWl0IHJlYWRKU09OKFxuICAgICAgICAgICAgICBwYXRoLmpvaW4oaG9va3NEaXIsIGhvb2tGaWxlKSxcbiAgICAgICAgICAgICAgSG9va1NjaGVtYVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChob29rPy50b2tlbikge1xuICAgICAgICAgICAgICBhd2FpdCBkZWxldGVKU09OKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihob29rc0RpciwgJ3Rva2VucycsIGAke2hhc2hUb2tlbihob29rLnRva2VuKX0uanNvbmApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBEZWxldGUgdGFnZ2VkIGVudGl0eSBmaWxlcyBhY3Jvc3MgYWxsIGRpcmVjdG9yaWVzXG4gICAgICAgIGNvbnN0IGVudGl0eURpcnMgPSBbXG4gICAgICAgICAgJ3J1bnMnLFxuICAgICAgICAgICdzdGVwcycsXG4gICAgICAgICAgJ2V2ZW50cycsXG4gICAgICAgICAgJ2hvb2tzJyxcbiAgICAgICAgICAnd2FpdHMnLFxuICAgICAgICAgICdzdHJlYW1zL3J1bnMnLFxuICAgICAgICBdO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICBlbnRpdHlEaXJzLm1hcChhc3luYyAoZGlyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmdWxsRGlyID0gcGF0aC5qb2luKGJhc2VkaXIsIGRpcik7XG4gICAgICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGxpc3RUYWdnZWRGaWxlcyhmdWxsRGlyLCB0YWcpO1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgIGZpbGVzLm1hcCgoZikgPT4gZGVsZXRlSlNPTihwYXRoLmpvaW4oZnVsbERpciwgZikpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICAvLyBDbGVhbiB1cCBsb2NrIGZpbGVzIHVzZWQgZm9yIGF0b21pYyB0ZXJtaW5hbC1zdGF0ZSBndWFyZHNcbiAgICAgICAgYXdhaXQgZnNcbiAgICAgICAgICAucm0ocGF0aC5qb2luKGJhc2VkaXIsICcubG9ja3MnKSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgICAgLy8gRGVsZXRlIHRhZ2dlZCBzdHJlYW0gY2h1bmtzICgue3RhZ30uYmluIGZpbGVzKVxuICAgICAgICBjb25zdCBjaHVua3NEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ3N0cmVhbXMnLCAnY2h1bmtzJyk7XG4gICAgICAgIGNvbnN0IHRhZ2dlZEJpbkZpbGVzID0gYXdhaXQgbGlzdFRhZ2dlZEZpbGVzQnlFeHRlbnNpb24oXG4gICAgICAgICAgY2h1bmtzRGlyLFxuICAgICAgICAgIHRhZyxcbiAgICAgICAgICAnLmJpbidcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgdGFnZ2VkQmluRmlsZXMubWFwKChmKSA9PlxuICAgICAgICAgICAgZnMudW5saW5rKHBhdGguam9pbihjaHVua3NEaXIsIGYpKS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIC8vIENsZWFyIHRoZSBpbi1tZW1vcnkgd3JpdGUgY2FjaGUgc28gZGVsZXRlZCBwYXRocyBhcmUgZm9yZ290dGVuXG4gICAgICAgIGNsZWFyQ3JlYXRlZEZpbGVzQ2FjaGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHJtKG1lcmdlZENvbmZpZy5kYXRhRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICAgIGF3YWl0IGluaXREYXRhRGlyKG1lcmdlZENvbmZpZy5kYXRhRGlyKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl19
package/dist/init.js CHANGED
@@ -265,4 +265,4 @@ export async function initDataDir(dataDir) {
265
265
  throw error;
266
266
  }
267
267
  }
268
- //# sourceMappingURL=init.js.map
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpDLHVEQUF1RDtBQUN2RCxNQUFNLFlBQVksR0FBRyx1QkFBdUIsQ0FBQztBQU83QyxJQUFJLGlCQUFpQixHQUF1QixJQUFJLENBQUM7QUFFakQ7OztHQUdHO0FBQ0gsU0FBUyxZQUFZO0lBQ25CLHFFQUFxRTtJQUNyRSxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYztJQUNsQyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDdEIsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFDakMsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxFQUN2QyxPQUFPLENBQ1IsQ0FBQztZQUNGLGlCQUFpQixHQUFHLElBQUks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Q0FDakIsQ0FBQztRQUVGLE9BQU8sQ0FBQyxLQUFLLENBQ1gsK0RBQStELGFBQWEsQ0FBQyxVQUFVLENBQUMsT0FBTyxhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFDL0gsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUMvQyxDQUFDO1FBQ0YsT0FBTyxDQUFDLEtBQUssQ0FDWCxpRUFBaUU7WUFDL0QsdUJBQXVCLFdBQVcsQ0FBQyxJQUFJLElBQUksZUFBZSxFQUFFLENBQy9ELENBQUM7UUFFRixNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWNjZXNzLFxuICBjb25zdGFudHMsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgdW5saW5rLFxuICB3cml0ZUZpbGUsXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5cbi8qKiBQYWNrYWdlIG5hbWUgLSBoYXJkY29kZWQgc2luY2UgaXQgZG9lc24ndCBjaGFuZ2UgKi9cbmNvbnN0IFBBQ0tBR0VfTkFNRSA9ICdAd29ya2Zsb3cvd29ybGQtbG9jYWwnO1xuXG5pbnRlcmZhY2UgUGFja2FnZUluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbn1cblxubGV0IGNhY2hlZFBhY2thZ2VJbmZvOiBQYWNrYWdlSW5mbyB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIEdldCB0aGUgZGlyZWN0b3J5IHBhdGggZm9yIHRoaXMgbW9kdWxlLlxuICogV29ya3MgaW4gRVNNIGFuZCBmYWxscyBiYWNrIHRvIGEgY29uc3RhbnQgaW4gQ0pTIGNvbnRleHRzICh3aGljaCBzaG91bGRuJ3QgaGFwcGVuKVxuICovXG5mdW5jdGlvbiBnZXRNb2R1bGVEaXIoKTogc3RyaW5nIHwgbnVsbCB7XG4gIC8vIEluIGJ1bmRsZWQgQ0pTIGNvbnRleHRzLCBpbXBvcnQubWV0YS51cmwgbWF5IGJlIHVuZGVmaW5lZCBvciBlbXB0eVxuICBpZiAodHlwZW9mIGltcG9ydC5tZXRhLnVybCA9PT0gJ3N0cmluZycgJiYgaW1wb3J0Lm1ldGEudXJsKSB7XG4gICAgcmV0dXJuIHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhY2thZ2UgbmFtZSBhbmQgdmVyc2lvbiBmcm9tIHBhY2thZ2UuanNvbi5cbiAqIFRoZSByZXN1bHQgaXMgY2FjaGVkIGFmdGVyIHRoZSBmaXJzdCByZWFkLlxuICpcbiAqIEluIGJ1bmRsZWQgY29udGV4dHMgd2hlcmUgcGFja2FnZS5qc29uIGNhbm5vdCBiZSByZWFkLFxuICogcmV0dXJucyAnYnVuZGxlZCcgYXMgdGhlIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQYWNrYWdlSW5mbygpOiBQcm9taXNlPFBhY2thZ2VJbmZvPiB7XG4gIGlmIChjYWNoZWRQYWNrYWdlSW5mbykge1xuICAgIHJldHVybiBjYWNoZWRQYWNrYWdlSW5mbztcbiAgfVxuXG4gIGNvbnN0IG1vZHVsZURpciA9IGdldE1vZHVsZURpcigpO1xuICBpZiAobW9kdWxlRGlyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShcbiAgICAgICAgcGF0aC5qb2luKG1vZHVsZURpciwgJy4uL3BhY2thZ2UuanNvbicpLFxuICAgICAgICAndXRmLTgnXG4gICAgICApO1xuICAgICAgY2FjaGVkUGFja2FnZUluZm8gPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIFBhY2thZ2VJbmZvO1xuICAgICAgcmV0dXJuIGNhY2hlZFBhY2thZ2VJbmZvO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGJ1bmRsZWQgZmFsbGJhY2tcbiAgICB9XG4gIH1cblxuICAvLyBCdW5kbGVkIGNvbnRleHQgLSBwYWNrYWdlLmpzb24gbm90IGFjY2Vzc2libGVcbiAgY2FjaGVkUGFja2FnZUluZm8gPSB7XG4gICAgbmFtZTogUEFDS0FHRV9OQU1FLFxuICAgIHZlcnNpb246ICdidW5kbGVkJyxcbiAgfTtcbiAgcmV0dXJuIGNhY2hlZFBhY2thZ2VJbmZvO1xufVxuXG4vKiogRmlsZW5hbWUgZm9yIHN0b3JpbmcgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiB0aGUgZGF0YSBkaXJlY3RvcnkgKi9cbmNvbnN0IFZFUlNJT05fRklMRU5BTUUgPSAndmVyc2lvbi50eHQnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXJzZWQgc2VtYW50aWMgdmVyc2lvbiB3aXRoIG9wdGlvbmFsIHByZXJlbGVhc2UgdGFnLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFZlcnNpb24ge1xuICBtYWpvcjogbnVtYmVyO1xuICBtaW5vcjogbnVtYmVyO1xuICBwYXRjaDogbnVtYmVyO1xuICBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICByYXc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiB0aGUgZGF0YSBkaXJlY3RvcnkgY2Fubm90IGJlIGFjY2Vzc2VkIG9yIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhRGlyQWNjZXNzRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGRhdGFEaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgY29kZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGRhdGFEaXI6IHN0cmluZywgY29kZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdEYXRhRGlyQWNjZXNzRXJyb3InO1xuICAgIHRoaXMuZGF0YURpciA9IGRhdGFEaXI7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGRhdGEgZGlyZWN0b3J5IHZlcnNpb24gaXMgaW5jb21wYXRpYmxlLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YURpclZlcnNpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgb2xkVmVyc2lvbjogUGFyc2VkVmVyc2lvbjtcbiAgcmVhZG9ubHkgbmV3VmVyc2lvbjogUGFyc2VkVmVyc2lvbjtcbiAgcmVhZG9ubHkgc3VnZ2VzdGVkVmVyc2lvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgb2xkVmVyc2lvbjogUGFyc2VkVmVyc2lvbixcbiAgICBuZXdWZXJzaW9uOiBQYXJzZWRWZXJzaW9uLFxuICAgIHN1Z2dlc3RlZFZlcnNpb24/OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0RhdGFEaXJWZXJzaW9uRXJyb3InO1xuICAgIHRoaXMub2xkVmVyc2lvbiA9IG9sZFZlcnNpb247XG4gICAgdGhpcy5uZXdWZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgICB0aGlzLnN1Z2dlc3RlZFZlcnNpb24gPSBzdWdnZXN0ZWRWZXJzaW9uO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2VzIGEgdmVyc2lvbiBzdHJpbmcgaW50byBpdHMgY29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblN0cmluZyAtIFZlcnNpb24gc3RyaW5nIGxpa2UgXCI0LjAuMVwiIG9yIFwiNC4wLjEtYmV0YS4yMFwiXG4gKiBAcmV0dXJucyBQYXJzZWQgdmVyc2lvbiBvYmplY3Qgd2l0aCBtYWpvciwgbWlub3IsIHBhdGNoLCBhbmQgb3B0aW9uYWwgcHJlcmVsZWFzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWZXJzaW9uKHZlcnNpb25TdHJpbmc6IHN0cmluZyk6IFBhcnNlZFZlcnNpb24ge1xuICAvLyBNYXRjaDogbWFqb3IubWlub3IucGF0Y2ggd2l0aCBvcHRpb25hbCBwcmVyZWxlYXNlXG4gIGNvbnN0IG1hdGNoID0gdmVyc2lvblN0cmluZy5tYXRjaCgvXihcXGQrKVxcLihcXGQrKVxcLihcXGQrKSg/Oi0oLispKT8kLyk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB2ZXJzaW9uIHN0cmluZzogXCIke3ZlcnNpb25TdHJpbmd9XCJgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWFqb3I6IHBhcnNlSW50KG1hdGNoWzFdLCAxMCksXG4gICAgbWlub3I6IHBhcnNlSW50KG1hdGNoWzJdLCAxMCksXG4gICAgcGF0Y2g6IHBhcnNlSW50KG1hdGNoWzNdLCAxMCksXG4gICAgcHJlcmVsZWFzZTogbWF0Y2hbNF0sXG4gICAgcmF3OiB2ZXJzaW9uU3RyaW5nLFxuICB9O1xufVxuXG4vKipcbiAqIEZvcm1hdHMgYSBwYXJzZWQgdmVyc2lvbiBiYWNrIHRvIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VmVyc2lvbih2ZXJzaW9uOiBQYXJzZWRWZXJzaW9uKTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZSA9IGAke3ZlcnNpb24ubWFqb3J9LiR7dmVyc2lvbi5taW5vcn0uJHt2ZXJzaW9uLnBhdGNofWA7XG4gIHJldHVybiB2ZXJzaW9uLnByZXJlbGVhc2UgPyBgJHtiYXNlfS0ke3ZlcnNpb24ucHJlcmVsZWFzZX1gIDogYmFzZTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIHZlcnNpb24gZmlsZSBjb250ZW50IHRvIGV4dHJhY3QgcGFja2FnZSBuYW1lIGFuZCB2ZXJzaW9uLlxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gQ29udGVudCBsaWtlIFwiQHdvcmtmbG93L3dvcmxkLWxvY2FsQDQuMC4xLWJldGEuMjBcIlxuICogQHJldHVybnMgT2JqZWN0IHdpdGggcGFja2FnZU5hbWUgYW5kIHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmVyc2lvbkZpbGUoY29udGVudDogc3RyaW5nKToge1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBQYXJzZWRWZXJzaW9uO1xufSB7XG4gIGNvbnN0IHRyaW1tZWQgPSBjb250ZW50LnRyaW0oKTtcbiAgY29uc3QgbGFzdEF0SW5kZXggPSB0cmltbWVkLmxhc3RJbmRleE9mKCdAJyk7XG5cbiAgaWYgKGxhc3RBdEluZGV4IDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmVyc2lvbiBmaWxlIGNvbnRlbnQ6IFwiJHtjb250ZW50fVwiYCk7XG4gIH1cblxuICBjb25zdCBwYWNrYWdlTmFtZSA9IHRyaW1tZWQuc3Vic3RyaW5nKDAsIGxhc3RBdEluZGV4KTtcbiAgY29uc3QgdmVyc2lvblN0cmluZyA9IHRyaW1tZWQuc3Vic3RyaW5nKGxhc3RBdEluZGV4ICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBwYWNrYWdlTmFtZSxcbiAgICB2ZXJzaW9uOiBwYXJzZVZlcnNpb24odmVyc2lvblN0cmluZyksXG4gIH07XG59XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgdmVyc2lvbiBmaWxlIGNvbnRlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRWZXJzaW9uRmlsZShcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgdmVyc2lvbjogUGFyc2VkVmVyc2lvblxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3BhY2thZ2VOYW1lfUAke2Zvcm1hdFZlcnNpb24odmVyc2lvbil9YDtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIHZlcnNpb24gdXBncmFkZXMgYmV0d2VlbiBvbGQgYW5kIG5ldyB2ZXJzaW9ucy5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIGRhdGEgZGlyZWN0b3J5IHdhcyBjcmVhdGVkIHdpdGggYSBkaWZmZXJlbnQgdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gb2xkVmVyc2lvbiAtIFRoZSB2ZXJzaW9uIHRoYXQgY3JlYXRlZCB0aGUgZGF0YSBkaXJlY3RvcnlcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uXG4gKiBAdGhyb3dzIHtEYXRhRGlyVmVyc2lvbkVycm9yfSBJZiB0aGUgdmVyc2lvbnMgYXJlIGluY29tcGF0aWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBncmFkZVZlcnNpb24oXG4gIG9sZFZlcnNpb246IFBhcnNlZFZlcnNpb24sXG4gIG5ld1ZlcnNpb246IFBhcnNlZFZlcnNpb25cbik6IHZvaWQge1xuICBjb25zb2xlLmxvZyhcbiAgICBgW3dvcmxkLWxvY2FsXSBVcGdyYWRpbmcgZnJvbSB2ZXJzaW9uICR7Zm9ybWF0VmVyc2lvbihvbGRWZXJzaW9uKX0gdG8gJHtmb3JtYXRWZXJzaW9uKG5ld1ZlcnNpb24pfWBcbiAgKTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoZSBkYXRhIGRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIHdyaXRhYmxlLlxuICogQ3JlYXRlcyB0aGUgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gKlxuICogQHBhcmFtIGRhdGFEaXIgLSBUaGUgcGF0aCB0byB0aGUgZGF0YSBkaXJlY3RvcnlcbiAqIEB0aHJvd3Mge0RhdGFEaXJBY2Nlc3NFcnJvcn0gSWYgdGhlIGRpcmVjdG9yeSBjYW5ub3QgYmUgY3JlYXRlZCBvciBhY2Nlc3NlZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlRGF0YURpcihkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYWJzb2x1dGVQYXRoID0gcGF0aC5yZXNvbHZlKGRhdGFEaXIpO1xuXG4gIC8vIFRyeSB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gIHRyeSB7XG4gICAgYXdhaXQgbWtkaXIoYWJzb2x1dGVQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBjb25zdCBub2RlRXJyb3IgPSBlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb247XG4gICAgLy8gRUVYSVNUIGlzIGZpbmUgLSBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHNcbiAgICBpZiAobm9kZUVycm9yLmNvZGUgIT09ICdFRVhJU1QnKSB7XG4gICAgICB0aHJvdyBuZXcgRGF0YURpckFjY2Vzc0Vycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGNyZWF0ZSBkYXRhIGRpcmVjdG9yeSBcIiR7YWJzb2x1dGVQYXRofVwiOiAke25vZGVFcnJvci5tZXNzYWdlfWAsXG4gICAgICAgIGFic29sdXRlUGF0aCxcbiAgICAgICAgbm9kZUVycm9yLmNvZGVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBkaXJlY3RvcnkgaXMgYWNjZXNzaWJsZSAocmVhZGFibGUpXG4gIHRyeSB7XG4gICAgYXdhaXQgYWNjZXNzKGFic29sdXRlUGF0aCwgY29uc3RhbnRzLlJfT0spO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGNvbnN0IG5vZGVFcnJvciA9IGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbjtcbiAgICB0aHJvdyBuZXcgRGF0YURpckFjY2Vzc0Vycm9yKFxuICAgICAgYERhdGEgZGlyZWN0b3J5IFwiJHthYnNvbHV0ZVBhdGh9XCIgaXMgbm90IHJlYWRhYmxlOiAke25vZGVFcnJvci5tZXNzYWdlfWAsXG4gICAgICBhYnNvbHV0ZVBhdGgsXG4gICAgICBub2RlRXJyb3IuY29kZVxuICAgICk7XG4gIH1cblxuICAvLyBWZXJpZnkgdGhlIGRpcmVjdG9yeSBpcyB3cml0YWJsZSBieSBhdHRlbXB0aW5nIHRvIHdyaXRlIGEgdGVtcCBmaWxlXG4gIGNvbnN0IHRlc3RGaWxlID0gcGF0aC5qb2luKFxuICAgIGFic29sdXRlUGF0aCxcbiAgICBgLndvcmtmbG93LXdyaXRlLXRlc3QtJHtEYXRlLm5vdygpfWBcbiAgKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB3cml0ZUZpbGUodGVzdEZpbGUsICcnKTtcbiAgICAvLyBDbGVhbiB1cCB0ZXN0IGZpbGUg4oCUIEVOT0VOVCBkdXJpbmcgY2xlYW51cCBpcyBoYXJtbGVzcyAobWF5IHJhY2VcbiAgICAvLyB3aXRoIGFub3RoZXIgcHJvY2VzcyBwZXJmb3JtaW5nIHRoZSBzYW1lIGNoZWNrIGNvbmN1cnJlbnRseSlcbiAgICBhd2FpdCB1bmxpbmsodGVzdEZpbGUpLmNhdGNoKChlOiBOb2RlSlMuRXJybm9FeGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChlLmNvZGUgIT09ICdFTk9FTlQnKSB0aHJvdyBlO1xuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGNvbnN0IG5vZGVFcnJvciA9IGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbjtcbiAgICB0aHJvdyBuZXcgRGF0YURpckFjY2Vzc0Vycm9yKFxuICAgICAgYERhdGEgZGlyZWN0b3J5IFwiJHthYnNvbHV0ZVBhdGh9XCIgaXMgbm90IHdyaXRhYmxlOiAke25vZGVFcnJvci5tZXNzYWdlfWAsXG4gICAgICBhYnNvbHV0ZVBhdGgsXG4gICAgICBub2RlRXJyb3IuY29kZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgdmVyc2lvbiBmcm9tIHRoZSBkYXRhIGRpcmVjdG9yeSdzIHZlcnNpb24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gZGF0YURpciAtIFBhdGggdG8gdGhlIGRhdGEgZGlyZWN0b3J5XG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHZlcnNpb24gaW5mbywgb3IgbnVsbCBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlYWRWZXJzaW9uRmlsZShkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHtcbiAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogUGFyc2VkVmVyc2lvbjtcbn0gfCBudWxsPiB7XG4gIGNvbnN0IHZlcnNpb25GaWxlUGF0aCA9IHBhdGguam9pbihwYXRoLnJlc29sdmUoZGF0YURpciksIFZFUlNJT05fRklMRU5BTUUpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHZlcnNpb25GaWxlUGF0aCwgJ3V0Zi04Jyk7XG4gICAgcmV0dXJuIHBhcnNlVmVyc2lvbkZpbGUoY29udGVudCk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgY29uc3Qgbm9kZUVycm9yID0gZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uO1xuICAgIGlmIChub2RlRXJyb3IuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIFdyaXRlcyB0aGUgY3VycmVudCB2ZXJzaW9uIHRvIHRoZSBkYXRhIGRpcmVjdG9yeSdzIHZlcnNpb24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gZGF0YURpciAtIFBhdGggdG8gdGhlIGRhdGEgZGlyZWN0b3J5XG4gKiBAcGFyYW0gdmVyc2lvbiAtIFRoZSB2ZXJzaW9uIHRvIHdyaXRlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlVmVyc2lvbkZpbGUoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgdmVyc2lvbjogUGFyc2VkVmVyc2lvblxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHZlcnNpb25GaWxlUGF0aCA9IHBhdGguam9pbihwYXRoLnJlc29sdmUoZGF0YURpciksIFZFUlNJT05fRklMRU5BTUUpO1xuICBjb25zdCBwYWNrYWdlSW5mbyA9IGF3YWl0IGdldFBhY2thZ2VJbmZvKCk7XG4gIGNvbnN0IGNvbnRlbnQgPSBmb3JtYXRWZXJzaW9uRmlsZShwYWNrYWdlSW5mby5uYW1lLCB2ZXJzaW9uKTtcbiAgYXdhaXQgd3JpdGVGaWxlKHZlcnNpb25GaWxlUGF0aCwgY29udGVudCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgc3VnZ2VzdGVkIGRvd25ncmFkZSB2ZXJzaW9uIGJhc2VkIG9uIHRoZSBvbGQgdmVyc2lvbi5cbiAqIElmIGEgc3BlY2lmaWMgdmVyc2lvbiBpcyBzdWdnZXN0ZWQgaW4gdGhlIGVycm9yLCB1c2UgdGhhdC5cbiAqIE90aGVyd2lzZSwgc3VnZ2VzdCB0aGUgcHJldmlvdXMgbWlub3IgdmVyc2lvbiBpZiBwYXRjaCBpcyAwLFxuICogb3IgcHJldmlvdXMgbWFqb3IgdmVyc2lvbiBpZiBtaW5vciBpcyBhbHNvIDAuXG4gKi9cbmZ1bmN0aW9uIGdldFN1Z2dlc3RlZERvd25ncmFkZVZlcnNpb24oXG4gIG9sZFZlcnNpb246IFBhcnNlZFZlcnNpb24sXG4gIHN1Z2dlc3RlZFZlcnNpb24/OiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGlmIChzdWdnZXN0ZWRWZXJzaW9uKSB7XG4gICAgcmV0dXJuIHN1Z2dlc3RlZFZlcnNpb247XG4gIH1cblxuICAvLyBTdWdnZXN0IHRoZSBvbGQgdmVyc2lvbiBhcyB0aGUgZG93bmdyYWRlIHRhcmdldFxuICByZXR1cm4gZm9ybWF0VmVyc2lvbihvbGRWZXJzaW9uKTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgZGF0YSBkaXJlY3RvcnksIGVuc3VyaW5nIGl0IGV4aXN0cywgaXMgYWNjZXNzaWJsZSxcbiAqIGFuZCBoYW5kbGVzIHZlcnNpb24gY29tcGF0aWJpbGl0eS5cbiAqXG4gKiBAcGFyYW0gZGF0YURpciAtIFRoZSBwYXRoIHRvIHRoZSBkYXRhIGRpcmVjdG9yeVxuICogQHRocm93cyB7RGF0YURpckFjY2Vzc0Vycm9yfSBJZiB0aGUgZGlyZWN0b3J5IGNhbm5vdCBiZSBjcmVhdGVkIG9yIGFjY2Vzc2VkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0RGF0YURpcihkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gRmlyc3QgZW5zdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzIGFuZCBpcyBhY2Nlc3NpYmxlXG4gIGF3YWl0IGVuc3VyZURhdGFEaXIoZGF0YURpcik7XG5cbiAgY29uc3QgcGFja2FnZUluZm8gPSBhd2FpdCBnZXRQYWNrYWdlSW5mbygpO1xuICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IHBhcnNlVmVyc2lvbihwYWNrYWdlSW5mby52ZXJzaW9uKTtcblxuICAvLyBSZWFkIGV4aXN0aW5nIHZlcnNpb24gZmlsZVxuICBjb25zdCBleGlzdGluZ1ZlcnNpb25JbmZvID0gYXdhaXQgcmVhZFZlcnNpb25GaWxlKGRhdGFEaXIpO1xuXG4gIGlmIChleGlzdGluZ1ZlcnNpb25JbmZvID09PSBudWxsKSB7XG4gICAgLy8gTmV3IGRhdGEgZGlyZWN0b3J5IC0gd3JpdGUgdGhlIGN1cnJlbnQgdmVyc2lvblxuICAgIGF3YWl0IHdyaXRlVmVyc2lvbkZpbGUoZGF0YURpciwgY3VycmVudFZlcnNpb24pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHsgdmVyc2lvbjogb2xkVmVyc2lvbiB9ID0gZXhpc3RpbmdWZXJzaW9uSW5mbztcblxuICAvLyBDaGVjayBpZiB2ZXJzaW9ucyBhcmUgdGhlIHNhbWUgKG5vIHVwZ3JhZGUgbmVlZGVkKVxuICBpZiAoZm9ybWF0VmVyc2lvbihvbGRWZXJzaW9uKSA9PT0gZm9ybWF0VmVyc2lvbihjdXJyZW50VmVyc2lvbikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBBdHRlbXB0IHVwZ3JhZGVcbiAgdHJ5IHtcbiAgICB1cGdyYWRlVmVyc2lvbihvbGRWZXJzaW9uLCBjdXJyZW50VmVyc2lvbik7XG4gICAgLy8gVXBncmFkZSBzdWNjZWVkZWQgLSB3cml0ZSB0aGUgbmV3IHZlcnNpb25cbiAgICBhd2FpdCB3cml0ZVZlcnNpb25GaWxlKGRhdGFEaXIsIGN1cnJlbnRWZXJzaW9uKTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBjb25zdCBzdWdnZXN0ZWRWZXJzaW9uID1cbiAgICAgIGVycm9yIGluc3RhbmNlb2YgRGF0YURpclZlcnNpb25FcnJvciA/IGVycm9yLnN1Z2dlc3RlZFZlcnNpb24gOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkb3duZ3JhZGVUYXJnZXQgPSBnZXRTdWdnZXN0ZWREb3duZ3JhZGVWZXJzaW9uKFxuICAgICAgb2xkVmVyc2lvbixcbiAgICAgIHN1Z2dlc3RlZFZlcnNpb25cbiAgICApO1xuXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBbd29ybGQtbG9jYWxdIEZhaWxlZCB0byB1cGdyYWRlIGRhdGEgZGlyZWN0b3J5IGZyb20gdmVyc2lvbiAke2Zvcm1hdFZlcnNpb24ob2xkVmVyc2lvbil9IHRvICR7Zm9ybWF0VmVyc2lvbihjdXJyZW50VmVyc2lvbil9OmAsXG4gICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IGVycm9yXG4gICAgKTtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYFt3b3JsZC1sb2NhbF0gRGF0YSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24uIGAgK1xuICAgICAgICBgUGxlYXNlIGRvd25ncmFkZSB0byAke3BhY2thZ2VJbmZvLm5hbWV9QCR7ZG93bmdyYWRlVGFyZ2V0fWBcbiAgICApO1xuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cbiJdfQ==
@@ -63,4 +63,4 @@ export function instrumentObject(prefix, o) {
63
63
  }
64
64
  return handlers;
65
65
  }
66
- //# sourceMappingURL=instrumentObject.js.map
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudE9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnN0cnVtZW50T2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFDTCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLGlEQUFpRDtBQUNqRCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLFVBQVUsRUFBRSxhQUFhO0NBQzFCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLElBQWU7SUFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQTRCLENBQUM7UUFDaEQsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFtQixNQUFjLEVBQUUsQ0FBSTtJQUNyRSxNQUFNLFFBQVEsR0FBRyxFQUFPLENBQUM7SUFDekIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBZ0IsRUFBRSxDQUFDO1FBQ2hELElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDakMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsK0NBQStDO1lBQy9DLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFlLEVBQUUsRUFBRTtnQkFDM0MsOERBQThEO2dCQUM5RCxJQUFJLFFBQVEsR0FBRyxHQUFHLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxNQUFNLEtBQUssY0FBYyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDekQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLElBQUksU0FBUyxFQUFFLENBQUM7d0JBQ2QsUUFBUSxHQUFHLEdBQUcsTUFBTSxJQUFJLFVBQVUsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDcEQsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU8sS0FBSyxDQUNWLFFBQVEsRUFDUixFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUN2QyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7b0JBQ2IsK0NBQStDO29CQUMvQyxzRUFBc0U7b0JBQ3RFLElBQUksRUFBRSxhQUFhLENBQUM7d0JBQ2xCLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQzt3QkFDL0MsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDO3dCQUMzQyxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7d0JBQzdDLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztxQkFDdkIsQ0FBQyxDQUFDO29CQUNILE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXR5IHRvIGluc3RydW1lbnQgb2JqZWN0IG1ldGhvZHMgd2l0aCB0cmFjaW5nLlxuICogVGhpcyBtaXJyb3JzIHdvcmxkLXZlcmNlbCdzIGltcGxlbWVudGF0aW9uIGZvciBjb25zaXN0ZW50IG9ic2VydmFiaWxpdHkuXG4gKi9cbmltcG9ydCB7XG4gIHRyYWNlLFxuICBnZXRTcGFuS2luZCxcbiAgUGVlclNlcnZpY2UsXG4gIFJwY1N5c3RlbSxcbiAgUnBjU2VydmljZSxcbiAgUnBjTWV0aG9kLFxufSBmcm9tICcuL3RlbGVtZXRyeS5qcyc7XG5cbi8qKiBDb25maWd1cmF0aW9uIGZvciBwZWVyIHNlcnZpY2UgYXR0cmlidXRpb24gKi9cbmNvbnN0IFdPUkxEX0xPQ0FMX1NFUlZJQ0UgPSB7XG4gIHBlZXJTZXJ2aWNlOiAnd29ybGQtbG9jYWwnLFxuICBycGNTeXN0ZW06ICdsb2NhbCcsXG4gIHJwY1NlcnZpY2U6ICd3b3JsZC1sb2NhbCcsXG59O1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBldmVudCB0eXBlIGZyb20gYXJndW1lbnRzIGZvciBldmVudHMuY3JlYXRlIGNhbGxzLlxuICogVGhlIGV2ZW50IGRhdGEgaXMgdGhlIHNlY29uZCBhcmd1bWVudCBhbmQgY29udGFpbnMgZXZlbnRUeXBlLlxuICovXG5mdW5jdGlvbiBleHRyYWN0RXZlbnRUeXBlKGFyZ3M6IHVua25vd25bXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChhcmdzLmxlbmd0aCA+PSAyICYmIHR5cGVvZiBhcmdzWzFdID09PSAnb2JqZWN0JyAmJiBhcmdzWzFdICE9PSBudWxsKSB7XG4gICAgY29uc3QgZGF0YSA9IGFyZ3NbMV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaWYgKHR5cGVvZiBkYXRhLmV2ZW50VHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhLmV2ZW50VHlwZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBXcmFwcyBhbGwgbWV0aG9kcyBvZiBhbiBvYmplY3Qgd2l0aCB0cmFjaW5nIHNwYW5zLlxuICogQHBhcmFtIHByZWZpeCAtIFByZWZpeCBmb3Igc3BhbiBuYW1lcyAoZS5nLiwgXCJ3b3JsZC5ydW5zXCIpXG4gKiBAcGFyYW0gbyAtIE9iamVjdCB3aXRoIG1ldGhvZHMgdG8gaW5zdHJ1bWVudFxuICogQHJldHVybnMgSW5zdHJ1bWVudGVkIG9iamVjdCB3aXRoIHNhbWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0cnVtZW50T2JqZWN0PFQgZXh0ZW5kcyBvYmplY3Q+KHByZWZpeDogc3RyaW5nLCBvOiBUKTogVCB7XG4gIGNvbnN0IGhhbmRsZXJzID0ge30gYXMgVDtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobykgYXMgKGtleW9mIFQpW10pIHtcbiAgICBpZiAodHlwZW9mIG9ba2V5XSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaGFuZGxlcnNba2V5XSA9IG9ba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZiA9IG9ba2V5XTtcbiAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBTdHJpbmcoa2V5KTtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBkeW5hbWljIGZ1bmN0aW9uIHdyYXBwaW5nXG4gICAgICBoYW5kbGVyc1trZXldID0gYXN5bmMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAvLyBCdWlsZCBzcGFuIG5hbWUgLSBmb3IgZXZlbnRzLmNyZWF0ZSwgaW5jbHVkZSB0aGUgZXZlbnQgdHlwZVxuICAgICAgICBsZXQgc3Bhbk5hbWUgPSBgJHtwcmVmaXh9LiR7bWV0aG9kTmFtZX1gO1xuICAgICAgICBpZiAocHJlZml4ID09PSAnd29ybGQuZXZlbnRzJyAmJiBtZXRob2ROYW1lID09PSAnY3JlYXRlJykge1xuICAgICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV4dHJhY3RFdmVudFR5cGUoYXJncyk7XG4gICAgICAgICAgaWYgKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgc3Bhbk5hbWUgPSBgJHtwcmVmaXh9LiR7bWV0aG9kTmFtZX0gJHtldmVudFR5cGV9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJhY2UoXG4gICAgICAgICAgc3Bhbk5hbWUsXG4gICAgICAgICAgeyBraW5kOiBhd2FpdCBnZXRTcGFuS2luZCgnSU5URVJOQUwnKSB9LFxuICAgICAgICAgIGFzeW5jIChzcGFuKSA9PiB7XG4gICAgICAgICAgICAvLyBBZGQgcGVlciBzZXJ2aWNlIGF0dHJpYnV0ZXMgZm9yIHNlcnZpY2UgbWFwc1xuICAgICAgICAgICAgLy8gVXNlIHNwYW5OYW1lIGZvciBycGMubWV0aG9kIHNvIERhdGFkb2cgc2hvd3MgZXZlbnQgdHlwZSBpbiByZXNvdXJjZVxuICAgICAgICAgICAgc3Bhbj8uc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgIC4uLlBlZXJTZXJ2aWNlKFdPUkxEX0xPQ0FMX1NFUlZJQ0UucGVlclNlcnZpY2UpLFxuICAgICAgICAgICAgICAuLi5ScGNTeXN0ZW0oV09STERfTE9DQUxfU0VSVklDRS5ycGNTeXN0ZW0pLFxuICAgICAgICAgICAgICAuLi5ScGNTZXJ2aWNlKFdPUkxEX0xPQ0FMX1NFUlZJQ0UucnBjU2VydmljZSksXG4gICAgICAgICAgICAgIC4uLlJwY01ldGhvZChzcGFuTmFtZSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBmKC4uLmFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBoYW5kbGVycztcbn1cbiJdfQ==
package/dist/queue.js CHANGED
@@ -279,4 +279,4 @@ export function createQueue(config) {
279
279
  },
280
280
  };
281
281
  }
282
- //# sourceMappingURL=queue.js.map
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxTQUFTLEVBQWMsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTNCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUzQzs7OztHQUlHO0FBQ0gsTUFBTSxrQkFBa0I7SUFDYixXQUFXLEdBQUcsa0JBQWtCLENBQUM7SUFFMUMsU0FBUyxDQUFDLEtBQWM7UUFDdEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBa0M7UUFDbEQsTUFBTSxNQUFNLEdBQWlCLEVBQUUsQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNaLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxJQUFJO2dCQUFFLE1BQU07WUFD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QUFJLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO2dCQUVELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQTZCLEtBQUssSUFBSSxFQUFFO1FBQzNELE1BQU0sV0FBVyxHQUFHLE1BQU0sY0FBYyxFQUFFLENBQUM7UUFDM0MsT0FBTyxhQUFhLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QyxDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsS0FBSztRQUNMLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsZUFBZSxDQUNiLE1BQXlDLEVBQ3pDLE9BQXNCO1lBRXRCLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxLQUFLLENBQUMsS0FBSztZQUNULE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNldFRpbWVvdXQgfSBmcm9tICdub2RlOnRpbWVycy9wcm9taXNlcyc7XG5pbXBvcnQgdHlwZSB7IFRyYW5zcG9ydCB9IGZyb20gJ0B2ZXJjZWwvcXVldWUnO1xuaW1wb3J0IHsgTWVzc2FnZUlkLCB0eXBlIFF1ZXVlLCBWYWxpZFF1ZXVlTmFtZSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBTZW1hIH0gZnJvbSAnYXN5bmMtc2VtYSc7XG5pbXBvcnQgeyBtb25vdG9uaWNGYWN0b3J5IH0gZnJvbSAndWxpZCc7XG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJ3VuZGljaSc7XG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kL3Y0JztcbmltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSAnLi9jb25maWcuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUJhc2VVcmwgfSBmcm9tICcuL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyBqc29uUmVwbGFjZXIsIGpzb25SZXZpdmVyIH0gZnJvbSAnLi9mcy5qcyc7XG5pbXBvcnQgeyBnZXRQYWNrYWdlSW5mbyB9IGZyb20gJy4vaW5pdC5qcyc7XG5cbi8qKlxuICogSlNPTiB0cmFuc3BvcnQgdGhhdCBwcmVzZXJ2ZXMgVWludDhBcnJheSB2YWx1ZXMgdXNpbmcgdGhlIHNhbWVcbiAqIHJlcGxhY2VyL3Jldml2ZXIgdGhhdCB3b3JsZC1sb2NhbCB1c2VzIGZvciBmaWxlc3lzdGVtIHN0b3JhZ2UuXG4gKiBVaW50OEFycmF5IOKGkiB7IF9fdHlwZTogJ1VpbnQ4QXJyYXknLCBkYXRhOiAnPGJhc2U2ND4nIH0gaW4gSlNPTi5cbiAqL1xuY2xhc3MgVHlwZWRKc29uVHJhbnNwb3J0IGltcGxlbWVudHMgVHJhbnNwb3J0PHVua25vd24+IHtcbiAgcmVhZG9ubHkgY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24vanNvbic7XG5cbiAgc2VyaWFsaXplKHZhbHVlOiB1bmtub3duKTogQnVmZmVyIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkodmFsdWUsIGpzb25SZXBsYWNlcikpO1xuICB9XG5cbiAgYXN5bmMgZGVzZXJpYWxpemUoc3RyZWFtOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5Pik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGNvbnN0IGNodW5rczogVWludDhBcnJheVtdID0gW107XG4gICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgaWYgKGRvbmUpIGJyZWFrO1xuICAgICAgaWYgKHZhbHVlKSBjaHVua3MucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IHRleHQgPSBCdWZmZXIuY29uY2F0KGNodW5rcykudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh0ZXh0LCBqc29uUmV2aXZlcik7XG4gIH1cbn1cblxuLy8gRm9yIGxvY2FsIHF1ZXVlLCB0aGVyZSBpcyBubyB0ZWNobmljYWwgbGltaXQgb24gdGhlIG1lc3NhZ2UgdmlzaWJpbGl0eSBsaWZlc3Bhbixcbi8vIGJ1dCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgdG8gc2V0IGEgbWF4IHZpc2liaWxpdHkgbGltaXQuXG5jb25zdCBMT0NBTF9RVUVVRV9NQVhfVklTSUJJTElUWSA9XG4gIHBhcnNlSW50KHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX1FVRVVFX01BWF9WSVNJQklMSVRZID8/ICcwJywgMTApIHx8XG4gIEluZmluaXR5O1xuXG4vLyBNYXhpbXVtIHNhZmUgZGVsYXkgZm9yIHNldFRpbWVvdXQgaW4gTm9kZS5qcyAoMl4zMSAtIDEgbWlsbGlzZWNvbmRzIOKJiCAyNC44NSBkYXlzKVxuLy8gTGFyZ2VyIHZhbHVlcyBjYXVzZSBcIlRpbWVvdXRPdmVyZmxvd1dhcm5pbmc6IFggZG9lcyBub3QgZml0IGludG8gYSAzMi1iaXQgc2lnbmVkIGludGVnZXJcIlxuLy8gV2hlbiB0aGUgY2xhbXBlZCB0aW1lb3V0IGZpcmVzLCB0aGUgaGFuZGxlciB3aWxsIHJlY2FsY3VsYXRlIHJlbWFpbmluZyB0aW1lIGZyb21cbi8vIHBlcnNpc3RlbnQgc3RhdGUgYW5kIHJldHVybiBhbm90aGVyIHRpbWVvdXRTZWNvbmRzIGlmIG5lZWRlZC5cbmNvbnN0IE1BWF9TQUZFX1RJTUVPVVRfTVMgPSAyMTQ3NDgzNjQ3O1xuXG4vLyBUaGUgbG9jYWwgd29ya2VycyBzaGFyZSB0aGUgc2FtZSBOb2RlLmpzIHByb2Nlc3MgYW5kIGV2ZW50IGxvb3AsXG4vLyBzbyB3ZSBuZWVkIHRvIGxpbWl0IGNvbmN1cnJlbmN5IHRvIGF2b2lkIG92ZXJ3aGVsbWluZyB0aGUgc3lzdGVtLlxuY29uc3QgREVGQVVMVF9DT05DVVJSRU5DWV9MSU1JVCA9IDEwMDA7XG5jb25zdCBXT1JLRkxPV19MT0NBTF9RVUVVRV9DT05DVVJSRU5DWSA9XG4gIHBhcnNlSW50KHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX1FVRVVFX0NPTkNVUlJFTkNZID8/ICcwJywgMTApIHx8XG4gIERFRkFVTFRfQ09OQ1VSUkVOQ1lfTElNSVQ7XG5cbmV4cG9ydCB0eXBlIERpcmVjdEhhbmRsZXIgPSAocmVxOiBSZXF1ZXN0KSA9PiBQcm9taXNlPFJlc3BvbnNlPjtcblxuZXhwb3J0IHR5cGUgTG9jYWxRdWV1ZSA9IFF1ZXVlICYge1xuICAvKiogQ2xvc2UgdGhlIEhUVFAgYWdlbnQgYW5kIHJlbGVhc2UgcmVzb3VyY2VzLiAqL1xuICBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+O1xuICAvKiogUmVnaXN0ZXIgYSBkaXJlY3QgaW4tcHJvY2VzcyBoYW5kbGVyIGZvciBhIHF1ZXVlIHByZWZpeCwgYnlwYXNzaW5nIEhUVFAuICovXG4gIHJlZ2lzdGVySGFuZGxlcihcbiAgICBwcmVmaXg6ICdfX3drZl9zdGVwXycgfCAnX193a2Zfd29ya2Zsb3dfJyxcbiAgICBoYW5kbGVyOiBEaXJlY3RIYW5kbGVyXG4gICk6IHZvaWQ7XG59O1xuXG5jb25zdCBERVRBQ0hFRF9BUlJBWUJVRkZFUl9FUlJPUiA9XG4gICdDYW5ub3QgcGVyZm9ybSBBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2Ugb24gYSBkZXRhY2hlZCBBcnJheUJ1ZmZlcic7XG5jb25zdCBQUk9YWV9IQU5ETEVSX0RPQ1NfVVJMID1cbiAgJ2h0dHBzOi8vd29ya2Zsb3ctc2RrLmRldi9kb2NzL2dldHRpbmctc3RhcnRlZC9uZXh0I2NvbmZpZ3VyZS1wcm94eS1oYW5kbGVyJztcblxuZnVuY3Rpb24gaXNEZXRhY2hlZEFycmF5QnVmZmVyUXVldWVFcnJvcihlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBsZXQgY3VycmVudCA9IGVycm9yO1xuICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDx1bmtub3duPigpO1xuXG4gIHdoaWxlIChjdXJyZW50ICYmIHR5cGVvZiBjdXJyZW50ID09PSAnb2JqZWN0JyAmJiAhdmlzaXRlZC5oYXMoY3VycmVudCkpIHtcbiAgICB2aXNpdGVkLmFkZChjdXJyZW50KTtcbiAgICBpZiAoXG4gICAgICAnbWVzc2FnZScgaW4gY3VycmVudCAmJlxuICAgICAgdHlwZW9mIGN1cnJlbnQubWVzc2FnZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgIGN1cnJlbnQubWVzc2FnZS5pbmNsdWRlcyhERVRBQ0hFRF9BUlJBWUJVRkZFUl9FUlJPUilcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjdXJyZW50ID0gJ2NhdXNlJyBpbiBjdXJyZW50ID8gY3VycmVudC5jYXVzZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0UXVldWVSb3V0ZShxdWV1ZU5hbWU6IFZhbGlkUXVldWVOYW1lKToge1xuICBwYXRobmFtZTogJ2Zsb3cnIHwgJ3N0ZXAnO1xuICBwcmVmaXg6ICdfX3drZl9zdGVwXycgfCAnX193a2Zfd29ya2Zsb3dfJztcbn0ge1xuICBpZiAocXVldWVOYW1lLnN0YXJ0c1dpdGgoJ19fd2tmX3N0ZXBfJykpIHtcbiAgICByZXR1cm4geyBwYXRobmFtZTogJ3N0ZXAnLCBwcmVmaXg6ICdfX3drZl9zdGVwXycgfTtcbiAgfVxuICBpZiAocXVldWVOYW1lLnN0YXJ0c1dpdGgoJ19fd2tmX3dvcmtmbG93XycpKSB7XG4gICAgcmV0dXJuIHsgcGF0aG5hbWU6ICdmbG93JywgcHJlZml4OiAnX193a2Zfd29ya2Zsb3dfJyB9O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignVW5rbm93biBxdWV1ZSBuYW1lIHByZWZpeCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUXVldWUoY29uZmlnOiBQYXJ0aWFsPENvbmZpZz4pOiBMb2NhbFF1ZXVlIHtcbiAgLy8gQ3JlYXRlIGEgY3VzdG9tIGFnZW50IG9wdGltaXplZCBmb3IgaGlnaC1jb25jdXJyZW5jeSBsb2NhbCB3b3JrZmxvd3M6XG4gIC8vIC0gaGVhZGVyc1RpbWVvdXQ6IDAgYWxsb3dzIGxvbmctcnVubmluZyBzdGVwc1xuICAvLyAtIGNvbm5lY3Rpb25zOiAxMDAwIGFsbG93cyBtYW55IHBhcmFsbGVsIGNvbm5lY3Rpb25zIHRvIHRoZSBzYW1lIGhvc3RcbiAgLy8gLSBwaXBlbGluaW5nOiAxIChkZWZhdWx0KSBmb3IgSFRUUC8xLjEgY29tcGF0aWJpbGl0eVxuICAvLyAtIGtlZXBBbGl2ZVRpbWVvdXQ6IDMwcyBrZWVwcyBjb25uZWN0aW9ucyB3YXJtIGZvciByYXBpZCBzdGVwIGV4ZWN1dGlvblxuICBjb25zdCBodHRwQWdlbnQgPSBuZXcgQWdlbnQoe1xuICAgIGhlYWRlcnNUaW1lb3V0OiAwLFxuICAgIGNvbm5lY3Rpb25zOiAxMDAwLFxuICAgIGtlZXBBbGl2ZVRpbWVvdXQ6IDMwXzAwMCxcbiAgfSk7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IG5ldyBUeXBlZEpzb25UcmFuc3BvcnQoKTtcbiAgY29uc3QgZ2VuZXJhdGVJZCA9IG1vbm90b25pY0ZhY3RvcnkoKTtcbiAgY29uc3Qgc2VtYXBob3JlID0gbmV3IFNlbWEoV09SS0ZMT1dfTE9DQUxfUVVFVUVfQ09OQ1VSUkVOQ1kpO1xuXG4gIC8qKlxuICAgKiBob2xkcyBpbmZsaWdodCBtZXNzYWdlcyBieSBpZGVtcG90ZW5jeSBrZXkgdG8gZW5zdXJlXG4gICAqIHRoYXQgd2UgZG9uJ3QgcXVldWUgdGhlIHNhbWUgbWVzc2FnZSBtdWx0aXBsZSB0aW1lc1xuICAgKi9cbiAgY29uc3QgaW5mbGlnaHRNZXNzYWdlcyA9IG5ldyBNYXA8c3RyaW5nLCBNZXNzYWdlSWQ+KCk7XG4gIC8qKiBEaXJlY3QgaW4tcHJvY2VzcyBoYW5kbGVycyBieSBxdWV1ZSBwcmVmaXgsIGJ5cGFzc2luZyBIVFRQIHdoZW4gc2V0LiAqL1xuICBjb25zdCBkaXJlY3RIYW5kbGVycyA9IG5ldyBNYXA8c3RyaW5nLCBEaXJlY3RIYW5kbGVyPigpO1xuXG4gIGNvbnN0IHF1ZXVlOiBRdWV1ZVsncXVldWUnXSA9IGFzeW5jIChxdWV1ZU5hbWUsIG1lc3NhZ2UsIG9wdHMpID0+IHtcbiAgICBjb25zdCBjbGVhbnVwID0gW10gYXMgKCgpID0+IHZvaWQpW107XG5cbiAgICBpZiAob3B0cz8uaWRlbXBvdGVuY3lLZXkpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gaW5mbGlnaHRNZXNzYWdlcy5nZXQob3B0cy5pZGVtcG90ZW5jeUtleSk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgcmV0dXJuIHsgbWVzc2FnZUlkOiBleGlzdGluZyB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSB0cmFuc3BvcnQuc2VyaWFsaXplKG1lc3NhZ2UpO1xuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHByZWZpeCB9ID0gZ2V0UXVldWVSb3V0ZShxdWV1ZU5hbWUpO1xuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IE1lc3NhZ2VJZC5wYXJzZShgbXNnXyR7Z2VuZXJhdGVJZCgpfWApO1xuXG4gICAgLy8gRXh0cmFjdCBpZGVudGlmaWVycyBmcm9tIHRoZSBtZXNzYWdlIGZvciBzdHJ1Y3R1cmVkIGxvZ2dpbmcuXG4gICAgLy8gV29ya2Zsb3cgbWVzc2FnZXMgaGF2ZSBgcnVuSWRgLCBzdGVwIG1lc3NhZ2VzIGhhdmUgYHdvcmtmbG93UnVuSWRgICsgYHN0ZXBJZGAuXG4gICAgY29uc3QgbXNnID0gbWVzc2FnZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCBydW5JZCA9IChtc2cucnVuSWQgPz8gbXNnLndvcmtmbG93UnVuSWQgPz8gdW5kZWZpbmVkKSBhc1xuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN0ZXBJZCA9IChtc2cuc3RlcElkID8/IHVuZGVmaW5lZCkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKG9wdHM/LmlkZW1wb3RlbmN5S2V5KSB7XG4gICAgICBjb25zdCBrZXkgPSBvcHRzLmlkZW1wb3RlbmN5S2V5O1xuICAgICAgaW5mbGlnaHRNZXNzYWdlcy5zZXQoa2V5LCBtZXNzYWdlSWQpO1xuICAgICAgY2xlYW51cC5wdXNoKCgpID0+IHtcbiAgICAgICAgaW5mbGlnaHRNZXNzYWdlcy5kZWxldGUoa2V5KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0b2tlbiA9IHNlbWFwaG9yZS50cnlBY3F1aXJlKCk7XG4gICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW3dvcmxkLWxvY2FsXTogY29uY3VycmVuY3kgbGltaXQgKCR7V09SS0ZMT1dfTE9DQUxfUVVFVUVfQ09OQ1VSUkVOQ1l9KSByZWFjaGVkLCB3YWl0aW5nIGZvciBxdWV1ZSB0byBmcmVlIHVwYFxuICAgICAgICApO1xuICAgICAgICBhd2FpdCBzZW1hcGhvcmUuYWNxdWlyZSgpO1xuICAgICAgfVxuICAgICAgLy8gU2FmZXR5IGxpbWl0IHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHMgaW4gdGhlIGxvY2FsIHF1ZXVlLlxuICAgICAgLy8gVGhlIGFjdHVhbCBtYXggZGVsaXZlcnkgZW5mb3JjZW1lbnQgaGFwcGVucyBpbiB0aGUgd29ya2Zsb3cvc3RlcCBoYW5kbGVyc1xuICAgICAgLy8gKGF0IE1BWF9RVUVVRV9ERUxJVkVSSUVTID0gNDgpLCBzbyB0aGlzIGp1c3QgbmVlZHMgdG8gYmUgY29tZm9ydGFibHkgaGlnaGVyLlxuICAgICAgY29uc3QgTUFYX0xPQ0FMX1NBRkVUWV9MSU1JVCA9IDI1NjtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDwgTUFYX0xPQ0FMX1NBRkVUWV9MSU1JVDsgYXR0ZW1wdCsrKSB7XG4gICAgICAgICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgICAgIC4uLm9wdHM/LmhlYWRlcnMsXG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgJ3gtdnFzLXF1ZXVlLW5hbWUnOiBxdWV1ZU5hbWUsXG4gICAgICAgICAgICAneC12cXMtbWVzc2FnZS1pZCc6IG1lc3NhZ2VJZCxcbiAgICAgICAgICAgICd4LXZxcy1tZXNzYWdlLWF0dGVtcHQnOiBTdHJpbmcoYXR0ZW1wdCArIDEpLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgZGlyZWN0SGFuZGxlciA9IGRpcmVjdEhhbmRsZXJzLmdldChwcmVmaXgpO1xuICAgICAgICAgIGxldCByZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICAgICAgICBpZiAoZGlyZWN0SGFuZGxlcikge1xuICAgICAgICAgICAgY29uc3QgcmVxID0gbmV3IFJlcXVlc3QoXG4gICAgICAgICAgICAgIGBodHRwOi8vbG9jYWxob3N0Ly53ZWxsLWtub3duL3dvcmtmbG93L3YxLyR7cGF0aG5hbWV9YCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgZGlyZWN0SGFuZGxlcihyZXEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlVXJsID0gYXdhaXQgcmVzb2x2ZUJhc2VVcmwoY29uZmlnKTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIHVuZGljaSB2NyBkaXNwYXRjaGVyIHR5cGVzIGRvbid0IG1hdGNoIEB0eXBlcy9ub2RlJ3MgUmVxdWVzdEluaXRcbiAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICAgICAgICAgIGAke2Jhc2VVcmx9Ly53ZWxsLWtub3duL3dvcmtmbG93L3YxLyR7cGF0aG5hbWV9YCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgIGR1cGxleDogJ2hhbGYnLFxuICAgICAgICAgICAgICAgIGRpc3BhdGNoZXI6IGh0dHBBZ2VudCxcbiAgICAgICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICAgIH0gYXMgYW55XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG5cbiAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRTZWNvbmRzID0gTnVtYmVyKEpTT04ucGFyc2UodGV4dCkudGltZW91dFNlY29uZHMpO1xuICAgICAgICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHRpbWVvdXRTZWNvbmRzKSAmJiB0aW1lb3V0U2Vjb25kcyA+PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gQ2xhbXAgdG8gTUFYX1NBRkVfVElNRU9VVF9NUyB0byBhdm9pZCBOb2RlLmpzIHNldFRpbWVvdXQgb3ZlcmZsb3cgd2FybmluZy5cbiAgICAgICAgICAgICAgICAvLyBXaGVuIHRoaXMgZmlyZXMgZWFybHksIHRoZSBoYW5kbGVyIHJlY2FsY3VsYXRlcyByZW1haW5pbmcgdGltZSBmcm9tXG4gICAgICAgICAgICAgICAgLy8gcGVyc2lzdGVudCBzdGF0ZSBhbmQgcmV0dXJucyBhbm90aGVyIHRpbWVvdXRTZWNvbmRzIGlmIG5lZWRlZC5cbiAgICAgICAgICAgICAgICBpZiAodGltZW91dFNlY29uZHMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0TXMgPSBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICAgICAgdGltZW91dFNlY29uZHMgKiAxMDAwLFxuICAgICAgICAgICAgICAgICAgICBNQVhfU0FGRV9USU1FT1VUX01TXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgYXdhaXQgc2V0VGltZW91dCh0aW1lb3V0TXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgW3dvcmxkLWxvY2FsXSBRdWV1ZSBtZXNzYWdlIGZhaWxlZCAoYXR0ZW1wdCAke2F0dGVtcHQgKyAxfSwgSFRUUCAke3Jlc3BvbnNlLnN0YXR1c30pYCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcXVldWVOYW1lLFxuICAgICAgICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgICAgICAgIC4uLihydW5JZCAmJiB7IHJ1bklkIH0pLFxuICAgICAgICAgICAgICAuLi4oc3RlcElkICYmIHsgc3RlcElkIH0pLFxuICAgICAgICAgICAgICBoYW5kbGVyRXJyb3I6IHRleHQsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIDVzIGxpbmVhciBiYWNrb2ZmIHRvIGFwcHJveGltYXRlIFZRUyByZXRyeSB0aW1pbmcgaW4gbG9jYWwgZGV2LlxuICAgICAgICAgIC8vIFZRUyB1c2VzIDVzIGxpbmVhciBmb3IgYXR0ZW1wdHMgMeKAkzMyLCB0aGVuIGV4cG9uZW50aWFsLCBidXQgZm9yXG4gICAgICAgICAgLy8gbG9jYWwgZGV2IGxpbmVhciA1cyBpcyBzdWZmaWNpZW50IOKAlCB0aGUgaGFuZGxlciBlbmZvcmNlcyB0aGUgcmVhbFxuICAgICAgICAgIC8vIGNhcCBhdCBNQVhfUVVFVUVfREVMSVZFUklFUyAoNDgpIHdoaWNoIGtlZXBzIHRvdGFsIHRpbWUgdW5kZXIgfjRtaW4uXG4gICAgICAgICAgYXdhaXQgc2V0VGltZW91dCg1MDAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYFt3b3JsZC1sb2NhbF0gUXVldWUgbWVzc2FnZSBleGhhdXN0ZWQgc2FmZXR5IGxpbWl0ICgke01BWF9MT0NBTF9TQUZFVFlfTElNSVR9IGF0dGVtcHRzKWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcXVldWVOYW1lLFxuICAgICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgICAgLi4uKHJ1bklkICYmIHsgcnVuSWQgfSksXG4gICAgICAgICAgICAuLi4oc3RlcElkICYmIHsgc3RlcElkIH0pLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNlbWFwaG9yZS5yZWxlYXNlKCk7XG4gICAgICB9XG4gICAgfSkoKVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgLy8gU2lsZW50bHkgaWdub3JlIGNsaWVudCBkaXNjb25uZWN0IGVycm9ycyAoZS5nLiwgYnJvd3NlciByZWZyZXNoIGR1cmluZyBzdHJlYW1pbmcpXG4gICAgICAgIC8vIFRoZXNlIGFyZSBleHBlY3RlZCBhbmQgc2hvdWxkIG5vdCBjYXVzZSB1bmhhbmRsZWQgcmVqZWN0aW9uIHdhcm5pbmdzXG4gICAgICAgIGNvbnN0IGlzQWJvcnRFcnJvciA9XG4gICAgICAgICAgZXJyPy5uYW1lID09PSAnQWJvcnRFcnJvcicgfHwgZXJyPy5uYW1lID09PSAnUmVzcG9uc2VBYm9ydGVkJztcbiAgICAgICAgaWYgKCFpc0Fib3J0RXJyb3IpIHtcbiAgICAgICAgICBpZiAoaXNEZXRhY2hlZEFycmF5QnVmZmVyUXVldWVFcnJvcihlcnIpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBgW2xvY2FsIHdvcmxkXSBRdWV1ZSBvcGVyYXRpb24gZmFpbGVkOiBkZXRlY3RlZCBcIiR7REVUQUNIRURfQVJSQVlCVUZGRVJfRVJST1J9XCIuIGAgK1xuICAgICAgICAgICAgICAgIFwiVGhpcyB1c3VhbGx5IG1lYW5zIGEgTmV4dC5qcyBwcm94eS9taWRkbGV3YXJlIGNvbnN1bWVkIFdvcmtmbG93J3MgaW50ZXJuYWwgXCIgK1xuICAgICAgICAgICAgICAgICdyZXF1ZXN0IGJlZm9yZSB0aGUgZXhlY3V0b3IgY291bGQgcmVhZCBpdC4gRXhjbHVkZSBgLy53ZWxsLWtub3duL3dvcmtmbG93LypgICcgK1xuICAgICAgICAgICAgICAgIGBmcm9tIHlvdXIgbWF0Y2hlci4gU2VlICR7UFJPWFlfSEFORExFUl9ET0NTX1VSTH1gLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcXVldWVOYW1lLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgICAgICAgICAuLi4ocnVuSWQgJiYgeyBydW5JZCB9KSxcbiAgICAgICAgICAgICAgICAuLi4oc3RlcElkICYmIHsgc3RlcElkIH0pLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXJyb3I6IGVycixcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW2xvY2FsIHdvcmxkXSBRdWV1ZSBvcGVyYXRpb24gZmFpbGVkOicsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGNsZWFudXApIHtcbiAgICAgICAgICBmbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHJldHVybiB7IG1lc3NhZ2VJZCB9O1xuICB9O1xuXG4gIGNvbnN0IEhlYWRlclBhcnNlciA9IHoub2JqZWN0KHtcbiAgICAneC12cXMtcXVldWUtbmFtZSc6IFZhbGlkUXVldWVOYW1lLFxuICAgICd4LXZxcy1tZXNzYWdlLWlkJzogTWVzc2FnZUlkLFxuICAgICd4LXZxcy1tZXNzYWdlLWF0dGVtcHQnOiB6LmNvZXJjZS5udW1iZXIoKSxcbiAgfSk7XG5cbiAgY29uc3QgY3JlYXRlUXVldWVIYW5kbGVyOiBRdWV1ZVsnY3JlYXRlUXVldWVIYW5kbGVyJ10gPSAocHJlZml4LCBoYW5kbGVyKSA9PiB7XG4gICAgcmV0dXJuIGFzeW5jIChyZXEpID0+IHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBIZWFkZXJQYXJzZXIuc2FmZVBhcnNlKE9iamVjdC5mcm9tRW50cmllcyhyZXEuaGVhZGVycykpO1xuXG4gICAgICBpZiAoIWhlYWRlcnMuc3VjY2VzcyB8fCAhcmVxLmJvZHkpIHtcbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmpzb24oXG4gICAgICAgICAge1xuICAgICAgICAgICAgZXJyb3I6ICFyZXEuYm9keVxuICAgICAgICAgICAgICA/ICdNaXNzaW5nIHJlcXVlc3QgYm9keSdcbiAgICAgICAgICAgICAgOiAnTWlzc2luZyByZXF1aXJlZCBoZWFkZXJzJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgc3RhdHVzOiA0MDAgfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWV1ZU5hbWUgPSBoZWFkZXJzLmRhdGFbJ3gtdnFzLXF1ZXVlLW5hbWUnXTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IGhlYWRlcnMuZGF0YVsneC12cXMtbWVzc2FnZS1pZCddO1xuICAgICAgY29uc3QgYXR0ZW1wdCA9IGhlYWRlcnMuZGF0YVsneC12cXMtbWVzc2FnZS1hdHRlbXB0J107XG5cbiAgICAgIGlmICghcXVldWVOYW1lLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbih7IGVycm9yOiAnVW5oYW5kbGVkIHF1ZXVlJyB9LCB7IHN0YXR1czogNDAwIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBib2R5ID0gYXdhaXQgbmV3IFR5cGVkSnNvblRyYW5zcG9ydCgpLmRlc2VyaWFsaXplKHJlcS5ib2R5KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIoYm9keSwgeyBhdHRlbXB0LCBxdWV1ZU5hbWUsIG1lc3NhZ2VJZCB9KTtcblxuICAgICAgICBsZXQgdGltZW91dFNlY29uZHM6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdD8udGltZW91dFNlY29uZHMgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGltZW91dFNlY29uZHMgPSBNYXRoLm1pbihcbiAgICAgICAgICAgIHJlc3VsdC50aW1lb3V0U2Vjb25kcyxcbiAgICAgICAgICAgIExPQ0FMX1FVRVVFX01BWF9WSVNJQklMSVRZXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aW1lb3V0U2Vjb25kcyAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmpzb24oeyB0aW1lb3V0U2Vjb25kcyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBSZXNwb25zZS5qc29uKHsgb2s6IHRydWUgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbihTdHJpbmcoZXJyb3IpLCB7IHN0YXR1czogNTAwIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH07XG5cbiAgY29uc3QgZ2V0RGVwbG95bWVudElkOiBRdWV1ZVsnZ2V0RGVwbG95bWVudElkJ10gPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGFja2FnZUluZm8gPSBhd2FpdCBnZXRQYWNrYWdlSW5mbygpO1xuICAgIHJldHVybiBgZHBsX2xvY2FsQCR7cGFja2FnZUluZm8udmVyc2lvbn1gO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgcXVldWUsXG4gICAgY3JlYXRlUXVldWVIYW5kbGVyLFxuICAgIGdldERlcGxveW1lbnRJZCxcbiAgICByZWdpc3RlckhhbmRsZXIoXG4gICAgICBwcmVmaXg6ICdfX3drZl9zdGVwXycgfCAnX193a2Zfd29ya2Zsb3dfJyxcbiAgICAgIGhhbmRsZXI6IERpcmVjdEhhbmRsZXJcbiAgICApIHtcbiAgICAgIGRpcmVjdEhhbmRsZXJzLnNldChwcmVmaXgsIGhhbmRsZXIpO1xuICAgIH0sXG4gICAgYXN5bmMgY2xvc2UoKSB7XG4gICAgICBhd2FpdCBodHRwQWdlbnQuY2xvc2UoKTtcbiAgICB9LFxuICB9O1xufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"events-storage.d.ts","sourceRoot":"","sources":["../../src/storage/events-storage.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAMV,OAAO,EAGR,MAAM,iBAAiB,CAAC;AAyGzB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC,CAwjCnB"}
1
+ {"version":3,"file":"events-storage.d.ts","sourceRoot":"","sources":["../../src/storage/events-storage.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAMV,OAAO,EAGR,MAAM,iBAAiB,CAAC;AA8IzB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC,CAukCnB"}