@pipeline-builder/pipeline-data 4.3.5 → 4.3.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 (70) hide show
  1. package/lib/api/access-control-builder.js +1 -1
  2. package/lib/api/alert-destinations.js +1 -1
  3. package/lib/api/crud-service.js +1 -1
  4. package/lib/api/ecosystem-privacy.js +1 -1
  5. package/lib/api/keyset-cursor.js +1 -1
  6. package/lib/api/pipeline-step-resolution.js +1 -1
  7. package/lib/api/plugin-advisories.js +1 -1
  8. package/lib/api/plugin-consumption-policy.js +1 -1
  9. package/lib/api/plugin-resolution.js +6 -1
  10. package/lib/api/public-directory.d.ts +71 -3
  11. package/lib/api/public-directory.js +68 -22
  12. package/lib/api/query-builders.js +47 -2
  13. package/lib/api/reporting/analytics-queries.js +1 -1
  14. package/lib/api/reporting/caches.js +1 -1
  15. package/lib/api/reporting/daily-rollup.js +1 -1
  16. package/lib/api/reporting/deploy-rollup.js +1 -1
  17. package/lib/api/reporting/dora-scoring.js +1 -1
  18. package/lib/api/reporting/dora.js +1 -1
  19. package/lib/api/reporting/failure-classifier.js +1 -1
  20. package/lib/api/reporting/ingest.js +1 -1
  21. package/lib/api/reporting/last-deploy.js +1 -1
  22. package/lib/api/reporting/needs-attention.js +1 -1
  23. package/lib/api/reporting/plugin-exposure.js +1 -1
  24. package/lib/api/reporting/plugin-runtime.js +1 -1
  25. package/lib/api/reporting/query-scope.js +1 -1
  26. package/lib/api/reporting/retention-sweep.js +1 -1
  27. package/lib/api/reporting/retention.js +1 -1
  28. package/lib/api/reporting/sql-helpers.js +1 -1
  29. package/lib/api/reporting/stakeholder/compose.js +1 -1
  30. package/lib/api/reporting/stakeholder/index.js +1 -1
  31. package/lib/api/reporting/stakeholder/period.js +1 -1
  32. package/lib/api/reporting/stakeholder/report-html.js +1 -1
  33. package/lib/api/reporting/stakeholder/sections.js +1 -1
  34. package/lib/api/reporting/stakeholder/store.js +1 -1
  35. package/lib/api/reporting/stakeholder/templates.js +1 -1
  36. package/lib/api/reporting/types.js +1 -1
  37. package/lib/api/reporting-service.js +1 -1
  38. package/lib/api/semver-range.js +1 -1
  39. package/lib/api/soft-delete-sweep.js +1 -1
  40. package/lib/api/support-cases.js +1 -1
  41. package/lib/api/version-references.js +1 -1
  42. package/lib/api/viewer-context.js +1 -1
  43. package/lib/core/query-filters.d.ts +25 -0
  44. package/lib/core/query-filters.js +1 -1
  45. package/lib/database/drizzle-schema.d.ts +19 -0
  46. package/lib/database/drizzle-schema.js +1 -1
  47. package/lib/database/index.js +1 -1
  48. package/lib/database/pg-result.js +1 -1
  49. package/lib/database/postgres-connection.js +1 -1
  50. package/lib/database/public-reader.js +1 -1
  51. package/lib/database/read-connection.js +1 -1
  52. package/lib/database/read-lag.js +1 -1
  53. package/lib/database/retry-strategy.js +1 -1
  54. package/lib/database/schema/alert.js +1 -1
  55. package/lib/database/schema/compliance.js +1 -1
  56. package/lib/database/schema/dashboard.js +1 -1
  57. package/lib/database/schema/ecosystem.d.ts +17 -0
  58. package/lib/database/schema/ecosystem.js +3 -1
  59. package/lib/database/schema/message-attachment.js +1 -1
  60. package/lib/database/schema/message.d.ts +19 -0
  61. package/lib/database/schema/message.js +18 -1
  62. package/lib/database/schema/pipeline-template.js +1 -1
  63. package/lib/database/schema/pipeline.js +1 -1
  64. package/lib/database/schema/plugin.js +1 -1
  65. package/lib/database/schema/reporting-analytics.js +1 -1
  66. package/lib/database/schema/reporting-stakeholder.js +1 -1
  67. package/lib/database/schema/support.js +1 -1
  68. package/lib/database/tenancy.js +1 -1
  69. package/lib/index.js +1 -1
  70. package/package.json +8 -8
@@ -160,4 +160,4 @@ export async function purgeExpiredReportingData(opts = {}) {
160
160
  return counts;
161
161
  });
162
162
  }
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0ZW50aW9uLXN3ZWVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9yZXBvcnRpbmcvcmV0ZW50aW9uLXN3ZWVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRW5EOzs7Ozs7Ozs7R0FTRztBQUNILEtBQUssVUFBVSwwQkFBMEIsQ0FDdkMsUUFBZ0MsRUFDaEMsU0FBaUMsRUFDakMsU0FBaUIsRUFDakIsVUFBa0I7SUFFbEIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sR0FBRyxHQUFHLE1BQU0sWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQTtvQkFDckMsUUFBUTs7MkJBRUQsUUFBUTtnQkFDbkIsU0FBUztnQkFDVCxTQUFTOzs7S0FHcEIsQ0FBQyxDQUFDLENBQUM7UUFDSixNQUFNLE1BQU0s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TSxDQUFDLFVBQVUsSUFBSSxNQUFNLDBCQUEwQixDQUNuRCxXQUFXLEVBQ1gsR0FBRyxDQUFBLFlBQVksS0FBSyxtRkFBbUYsVUFBVSxFQUFFLEVBQ25ILFNBQVMsRUFBRSxVQUFVLENBQ3RCLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLGtCQUFrQixJQUFJLE1BQU0sMEJBQTBCLENBQzNELGFBQWEsRUFDYixHQUFHLENBQUEsWUFBWSxLQUFLLHFCQUFxQixVQUFVLEVBQUUsRUFDckQsU0FBUyxFQUFFLFVBQVUsQ0FDdEIsQ0FBQztnQkFDRixNQUFNLENBQUMsU0FBUyxJQUFJLE1BQU0sMEJBQTBCLENBQ2xELGNBQWMsRUFDZCxHQUFHLENBQUEsWUFBWSxLQUFLLHFCQUFxQixVQUFVLEVBQUUsRUFDckQsU0FBUyxFQUFFLFVBQVUsQ0FDdEIsQ0FBQztZQUNKLENBQUM7WUFDRCxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQzNHLElBQUksU0FBUyxHQUFHLENBQUM7WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLCtDQUErQyxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQy9GLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSByZXBvcnRpbmcgcmV0ZW50aW9uIFNXRUVQOiB0aGUgYmF0Y2hlZCBoYXJkLWRlbGV0ZSB0aGF0IGVuZm9yY2VzIHRoZVxuICogd2luZG93cyBgLi9yZXRlbnRpb24udHNgIHJlc29sdmVzLiBTcGxpdCBmcm9tIHRoZSB3aW5kb3dzIG1vZHVsZSBzbyB0aGUgcHVyZSxcbiAqIGVudi1vbmx5IHBvbGljeSBzdGF5cyBmcmVlIG9mIGRhdGFiYXNlIGNvZGUsIGFuZCBmcm9tIHRoZSByZXBvcnRpbmcgc2VydmljZVxuICogYmVjYXVzZSB0aGlzIGlzIGNyb3NzLXRlbmFudCBob3VzZWtlZXBpbmcsIG5vdCBhIHJlcG9ydC5cbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIGVycm9yTWVzc2FnZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJztcbmltcG9ydCB7IHJlc29sdmVFdmVudFJldGVudGlvbkRheXMsIHJlc29sdmVEb3JhUmV0ZW50aW9uRGF5cywgcmV0ZW50aW9uQ3V0b2ZmIH0gZnJvbSAnLi9yZXRlbnRpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBSZXBvcnRpbmdSZXRlbnRpb25Db3VudHMsIFJlcG9ydGluZ1JldGVudGlvbk9wdGlvbnMgfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IHNjaGVtYSB9IGZyb20gJy4uLy4uL2RhdGFiYXNlL2RyaXp6bGUtc2NoZW1hLmpzJztcbmltcG9ydCB7IHdpdGhUZW5hbnRUeCwgcnVuV2l0aFRlbmFudENvbnRleHQgfSBmcm9tICcuLi8uLi9kYXRhYmFzZS90ZW5hbmN5LmpzJztcbmltcG9ydCB7IGRyaXp6bGVSb3dzIH0gZnJvbSAnLi4vY3J1ZC1zZXJ2aWNlLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdyZXBvcnRpbmctcmV0ZW50aW9uJyk7XG5cbi8qKlxuICogQmF0Y2hlZCBoYXJkLURFTEVURSBvZiBvbmUgcmVwb3J0aW5nIHRhYmxlJ3Mgcm93cyBleHBpcmVkIHBhc3QgYSBgY3JlYXRlZF9hdGBcbiAqIGN1dG9mZiwgc2NvcGVkIHRvIGFuIG9yZyBhbmQgYW4gb3B0aW9uYWwgcm93IHByZWRpY2F0ZS4gVXNlcyBhXG4gKiBgY3RpZGAtaW4tc3VicXVlcnkgTElNSVQgc28gZWFjaCBzdGF0ZW1lbnQgdG91Y2hlcyBhdCBtb3N0IGBiYXRjaFNpemVgIHJvd3NcbiAqIChzaG9ydCBsb2NrIHdpbmRvd3MsIG5vIGxvbmcgdGFibGUgc2NhbiB1bmRlciBsb2NrKTsgYFJFVFVSTklORyAxYCBsZXRzIHVzXG4gKiBjb3VudCB2aWEgYC5yb3dzLmxlbmd0aGAgd2l0aG91dCBkZXBlbmRpbmcgb24gdGhlIGRyaXZlcidzIGByb3dDb3VudGAuIExvb3BzXG4gKiB1bnRpbCBhIHNob3J0IGJhdGNoIChkcmFpbmVkKSBvciB0aGUgcGVyLXRpY2sgY2FwLCB0aGVuIGRlZmVycyB0aGUgcmVzdC5cbiAqIE1VU1QgcnVuIGluc2lkZSBhIHN5c2FkbWluIHRlbmFudCBzY29wZSAoc2VlIHB1cmdlRXhwaXJlZFJlcG9ydGluZ0RhdGEpIHNvIGl0XG4gKiBieXBhc3NlcyBSTFMgYW5kIGNhbiBkZWxldGUgYWNyb3NzIHRoZSBvcmcncyByb3dzLlxuICovXG5hc3luYyBmdW5jdGlvbiBwdXJnZVJlcG9ydGluZ1RhYmxlQmF0Y2hlZChcbiAgdGFibGVTcWw6IFJldHVyblR5cGU8dHlwZW9mIHNxbD4sXG4gIHByZWRpY2F0ZTogUmV0dXJuVHlwZTx0eXBlb2Ygc3FsPixcbiAgYmF0Y2hTaXplOiBudW1iZXIsXG4gIG1heEJhdGNoZXM6IG51bWJlcixcbik6IFByb21pc2U8bnVtYmVyPiB7XG4gIGxldCB0b3RhbCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4QmF0Y2hlczsgaSsrKSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgd2l0aFRlbmFudFR4KCh0eCkgPT4gdHguZXhlY3V0ZShzcWxgXG4gICAgICBERUxFVEUgRlJPTSAke3RhYmxlU3FsfVxuICAgICAgV0hFUkUgY3RpZCBJTiAoXG4gICAgICAgIFNFTEVDVCBjdGlkIEZST00gJHt0YWJsZVNxbH1cbiAgICAgICAgV0hFUkUgJHtwcmVkaWNhdGV9XG4gICAgICAgIExJTUlUICR7YmF0Y2hTaXplfVxuICAgICAgKVxuICAgICAgUkVUVVJOSU5HIDFcbiAgICBgKSk7XG4gICAgY29uc3QgcHVyZ2VkID0gZHJpenpsZVJvd3M8dW5rbm93bj4ocmVzLnJvd3MpLmxlbmd0aDtcbiAgICB0b3RhbCArPSBwdXJnZWQ7XG4gICAgaWYgKHB1cmdlZCA8IGJhdGNoU2l6ZSkgYnJlYWs7IC8vIGRyYWluZWRcbiAgICBpZiAoaSA9PT0gbWF4QmF0Y2hlcyAtIDEpIHtcbiAgICAgIGxvZ2dlci53YXJuKCdSZXBvcnRpbmcgcmV0ZW50aW9uIGhpdCBwZXItdGljayBjYXA7IHJlbWFpbmluZyByb3dzIGRlZmVycmVkJywge1xuICAgICAgICBwdXJnZWRUaGlzVGljazogdG90YWwsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvdGFsO1xufVxuXG4vKipcbiAqIFJlcG9ydGluZyByZXRlbnRpb24gc3dlZXAuIEhhcmQtZGVsZXRlcyByb3dzIG9sZGVyIHRoYW4gdGhlaXJcbiAqIHJldGVudGlvbiB3aW5kb3csIGJ5IGBjcmVhdGVkX2F0YCwgYWNyb3NzIGV2ZXJ5IG9yZyB0aGF0IGhhcyByZXBvcnRpbmcgZGF0YSDigJRcbiAqIGEgKipzcGxpdCoqIHBvbGljeSBzbyBoaWdoLXZvbHVtZSBzdGFuZGFyZCBldmVudHMgZXhwaXJlIGZhc3RlciB0aGFuIHRoZVxuICogbG93LXZvbHVtZSBET1JBIHNvdXJjZTpcbiAqICAtIGBwaXBlbGluZV9ldmVudHMgV0hFUkUgZW52aXJvbm1lbnQgSVMgTlVMTGAg4oaSIHN0YW5kYXJkLWV2ZW50IHdpbmRvdy5cbiAqICAtIGBwaXBlbGluZV9ldmVudHMgV0hFUkUgZW52aXJvbm1lbnQgSVMgTk9UIE5VTExgIChkZXBsb3kgc3RhZ2VzKSxcbiAqICAgIGBkZXBsb3ltZW50X291dGNvbWVzYCwgYW5kIGBpbmNpZGVudHNgIOKGkiBET1JBLXNvdXJjZSB3aW5kb3cuXG4gKiBFYWNoIG9yZydzIHdpbmRvd3MgY29tZSBmcm9tIGl0cyBgZG9yYV9zZXR0aW5nc2Agb3ZlcnJpZGUsIGVsc2UgdGhlIGdsb2JhbFxuICogZW52IGRlZmF1bHRzIChzZWUge0BsaW5rIHJlc29sdmVFdmVudFJldGVudGlvbkRheXN9IC8ge0BsaW5rIHJlc29sdmVEb3JhUmV0ZW50aW9uRGF5c30pLlxuICogYGluZ2VzdF9oZWFsdGhgIGFuZCBgZG9yYV9zZXR0aW5nc2AgYXJlIG5ldmVyIHB1cmdlZC4gT25lIGBub3dgIGZvciB0aGUgd2hvbGVcbiAqIHRpY2sgKHJvd3MgY3Jvc3NpbmcgdGhlIGJvdW5kYXJ5IG1pZC1zd2VlcCB3YWl0IGZvciB0aGUgbmV4dCkuIEVzdGFibGlzaGVzIGFcbiAqIHN5c2FkbWluIHRlbmFudCBzY29wZSBzbyB0aGUgZGVsZXRlcyBzcGFuIGFsbCBvcmdzIC8gYnlwYXNzIFJMUyDigJQgdGhpcyBpcyBhXG4gKiBjcm9zcy10ZW5hbnQgaG91c2VrZWVwaW5nIGpvYi4gUmV0dXJucyAoYW5kIGxvZ3MpIHBlci13aW5kb3cgcHVyZ2UgdGFsbGllcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHB1cmdlRXhwaXJlZFJlcG9ydGluZ0RhdGEob3B0czogUmVwb3J0aW5nUmV0ZW50aW9uT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxSZXBvcnRpbmdSZXRlbnRpb25Db3VudHM+IHtcbiAgY29uc3QgYmF0Y2hTaXplID0gTWF0aC5tYXgoMSwgb3B0cy5iYXRjaFNpemUgPz8gMTAwMCk7XG4gIGNvbnN0IG1heEJhdGNoZXMgPSBNYXRoLm1heCgxLCBvcHRzLm1heEJhdGNoZXNQZXJUYWJsZSA/PyA1MCk7XG4gIGNvbnN0IG5vdyA9IG9wdHMubm93ID8/IG5ldyBEYXRlKCk7XG4gIGNvbnN0IHJlc29sdmVSZXRlbnRpb25PcmdJZCA9IG9wdHMucmVzb2x2ZVJldGVudGlvbk9yZ0lkID8/IChhc3luYyAob3JnSWQ6IHN0cmluZykgPT4gb3JnSWQpO1xuICBjb25zdCBjb3VudHM6IFJlcG9ydGluZ1JldGVudGlvbkNvdW50cyA9IHtcbiAgICBvcmdzOiAwLCBzdGFuZGFyZEV2ZW50czogMCwgZG9yYUV2ZW50czogMCwgZGVwbG95bWVudE91dGNvbWVzOiAwLCBpbmNpZGVudHM6IDAsXG4gIH07XG5cbiAgcmV0dXJuIHJ1bldpdGhUZW5hbnRDb250ZXh0KHsgaXNTdXBlckFkbWluOiB0cnVlIH0sIGFzeW5jICgpID0+IHtcbiAgICAvLyBFbnVtZXJhdGUgZXZlcnkgb3JnIHdpdGggcmVwb3J0aW5nIGRhdGEgKHVuaW9uIGFjcm9zcyB0aGUgdGhyZWUgdGFibGVzKS5cbiAgICBjb25zdCBvcmdSb3dzID0gZHJpenpsZVJvd3M8eyBvcmdfaWQ6IHN0cmluZyB9PigoYXdhaXQgd2l0aFRlbmFudFR4KCh0eCkgPT4gdHguZXhlY3V0ZShzcWxgXG4gICAgICBTRUxFQ1QgRElTVElOQ1Qgb3JnX2lkIEZST00gKFxuICAgICAgICBTRUxFQ1QgJHtzY2hlbWEucGlwZWxpbmVFdmVudC5vcmdJZH0gQVMgb3JnX2lkIEZST00gJHtzY2hlbWEucGlwZWxpbmVFdmVudH1cbiAgICAgICAgVU5JT05cbiAgICAgICAgU0VMRUNUICR7c2NoZW1hLmRlcGxveW1lbnRPdXRjb21lLm9yZ0lkfSBBUyBvcmdfaWQgRlJPTSAke3NjaGVtYS5kZXBsb3ltZW50T3V0Y29tZX1cbiAgICAgICAgVU5JT05cbiAgICAgICAgU0VMRUNUICR7c2NoZW1hLmluY2lkZW50Lm9yZ0lkfSBBUyBvcmdfaWQgRlJPTSAke3NjaGVtYS5pbmNpZGVudH1cbiAgICAgICkgQVMgb3Jnc1xuICAgIGApKSkucm93cyk7XG4gICAgaWYgKG9yZ1Jvd3MubGVuZ3RoID09PSAwKSByZXR1cm4gY291bnRzO1xuXG4gICAgLy8gUGVyLW9yZyByZXRlbnRpb24gb3ZlcnJpZGVzIChhIHNpbmdsZSByZWFkOyBvcmdzIHdpdGhvdXQgYSByb3cgdXNlIGRlZmF1bHRzKS5cbiAgICBjb25zdCBvdmVycmlkZVJvd3MgPSBkcml6emxlUm93czx7XG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIGV2ZW50X3JldGVudGlvbl9kYXlzOiBudW1iZXIgfCBudWxsO1xuICAgICAgZG9yYV9yZXRlbnRpb25fZGF5czogbnVtYmVyIHwgbnVsbDtcbiAgICB9PigoYXdhaXQgd2l0aFRlbmFudFR4KCh0eCkgPT4gdHguZXhlY3V0ZShzcWxgXG4gICAgICBTRUxFQ1QgJHtzY2hlbWEuZG9yYVNldHRpbmdzLm9yZ0lkfSBBUyBvcmdfaWQsXG4gICAgICAgICAgICAgJHtzY2hlbWEuZG9yYVNldHRpbmdzLmV2ZW50UmV0ZW50aW9uRGF5c30gQVMgZXZlbnRfcmV0ZW50aW9uX2RheXMsXG4gICAgICAgICAgICAgJHtzY2hlbWEuZG9yYVNldHRpbmdzLmRvcmFSZXRlbnRpb25EYXlzfSBBUyBkb3JhX3JldGVudGlvbl9kYXlzXG4gICAgICBGUk9NICR7c2NoZW1hLmRvcmFTZXR0aW5nc31cbiAgICBgKSkpLnJvd3MpO1xuICAgIGNvbnN0IG92ZXJyaWRlcyA9IG5ldyBNYXAob3ZlcnJpZGVSb3dzLm1hcCgocikgPT4gW3Iub3JnX2lkLCByXSkpO1xuXG4gICAgY29uc3QgZXZlbnRzVGFibGUgPSBzcWxgJHtzY2hlbWEucGlwZWxpbmVFdmVudH1gO1xuICAgIGNvbnN0IG91dGNvbWVzVGFibGUgPSBzcWxgJHtzY2hlbWEuZGVwbG95bWVudE91dGNvbWV9YDtcbiAgICBjb25zdCBpbmNpZGVudHNUYWJsZSA9IHNxbGAke3NjaGVtYS5pbmNpZGVudH1gO1xuXG4gICAgZm9yIChjb25zdCB7IG9yZ19pZDogb3JnSWQgfSBvZiBvcmdSb3dzKSB7XG4gICAgICAvLyBMb2NrIGxvc3QsIG9yIHNodXR0aW5nIGRvd246IHN0b3AgYmV0d2VlbiBvcmdzLiBFdmVyeSByZW1haW5pbmcgb3JnIHN0aWxsXG4gICAgICAvLyBoYXMgZXhwaXJlZCByb3dzLCBzbyB0aGUgbmV4dCB0aWNrIHJlc3VtZXMgZXhhY3RseSB3aGVyZSB0aGlzIGxlZnQgb2ZmLlxuICAgICAgaWYgKG9wdHMucnVuPy5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICBsb2dnZXIuaW5mbygnUmVwb3J0aW5nIHJldGVudGlvbiBzd2VlcCBzdG9wcGluZyBlYXJseScsIHtcbiAgICAgICAgICByZWFzb246IFN0cmluZyhvcHRzLnJ1bi5zaWduYWwucmVhc29uID8/ICdhYm9ydGVkJyksIG9yZ3NEb25lOiBjb3VudHMub3JncyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gUmV0ZW50aW9uIGZvbGxvd3MgdGhlIGFjY291bnQgUk9PVCdzIGVudGl0bGVtZW50IChiaWxsaW5nIHN5bmNzIGl0IG9udG9cbiAgICAgIC8vIHRoZSByb290IG9ubHkpLiBBbiB1bnJlc29sdmFibGUgcm9vdCDih5Igc2tpcCB0aGlzIG9yZyB0aGlzIHRpY2sgcmF0aGVyXG4gICAgICAvLyB0aGFuIHB1cmdlIGEgdGVhbSdzIHJvd3Mgb24gdGhlIChzaG9ydGVyKSBlbnYgZGVmYXVsdC5cbiAgICAgIGxldCByZXRlbnRpb25PcmdJZDogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldGVudGlvbk9yZ0lkID0gYXdhaXQgcmVzb2x2ZVJldGVudGlvbk9yZ0lkKG9yZ0lkKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIud2FybignUmVwb3J0aW5nIHJldGVudGlvbjogcm9vdCByZXNvbHV0aW9uIHRocmV3OyBza2lwcGluZyBvcmcgdGhpcyB0aWNrJywgeyBvcmdJZCwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgICAgICByZXRlbnRpb25PcmdJZCA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAocmV0ZW50aW9uT3JnSWQgPT09IG51bGwpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ1JlcG9ydGluZyByZXRlbnRpb246IGNvdWxkIG5vdCByZXNvbHZlIHRoZSByZXRlbnRpb24gcm9vdDsgb3JnIHNraXBwZWQgdGhpcyB0aWNrJywgeyBvcmdJZCB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBvdiA9IG92ZXJyaWRlcy5nZXQocmV0ZW50aW9uT3JnSWQpO1xuICAgICAgY29uc3QgZXZlbnREYXlzID0gcmVzb2x2ZUV2ZW50UmV0ZW50aW9uRGF5cyhvdj8uZXZlbnRfcmV0ZW50aW9uX2RheXMpO1xuICAgICAgY29uc3QgZG9yYURheXMgPSByZXNvbHZlRG9yYVJldGVudGlvbkRheXMob3Y/LmRvcmFfcmV0ZW50aW9uX2RheXMpO1xuICAgICAgLy8gYC0xYCA9IHVubGltaXRlZDoga2VlcCBmb3JldmVyLCBza2lwIHRoYXQgd2luZG93J3MgZGVsZXRlcyBmb3JcbiAgICAgIC8vIHRoaXMgb3JnLiBTdGFuZGFyZC1ldmVudCBhbmQgRE9SQS1zb3VyY2Ugd2luZG93cyBhcmUgaW5kZXBlbmRlbnQ7IGFuIG9yZ1xuICAgICAgLy8gd2l0aCBib3RoIGAtMWAgaXMgZnVsbHkgc2tpcHBlZC4gTG9nIHRoZSBza2lwIHNvIGl0J3Mgb2JzZXJ2YWJsZS5cbiAgICAgIGNvbnN0IHNraXBFdmVudHMgPSBldmVudERheXMgPT09IC0xO1xuICAgICAgY29uc3Qgc2tpcERvcmEgPSBkb3JhRGF5cyA9PT0gLTE7XG4gICAgICBpZiAoc2tpcEV2ZW50cyB8fCBza2lwRG9yYSkge1xuICAgICAgICBsb2dnZXIuaW5mbygnUmVwb3J0aW5nIHJldGVudGlvbiBzd2VlcCBza2lwcGluZyB1bmxpbWl0ZWQgd2luZG93KHMpJywge1xuICAgICAgICAgIG9yZ0lkLFxuICAgICAgICAgIHN0YW5kYXJkRXZlbnRzOiBza2lwRXZlbnRzID8gJ3VubGltaXRlZCcgOiBldmVudERheXMsXG4gICAgICAgICAgZG9yYVNvdXJjZTogc2tpcERvcmEgPyAndW5saW1pdGVkJyA6IGRvcmFEYXlzLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFza2lwRXZlbnRzKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50Q3V0b2ZmID0gcmV0ZW50aW9uQ3V0b2ZmKG5vdywgZXZlbnREYXlzKTtcbiAgICAgICAgY291bnRzLnN0YW5kYXJkRXZlbnRzICs9IGF3YWl0IHB1cmdlUmVwb3J0aW5nVGFibGVCYXRjaGVkKFxuICAgICAgICAgIGV2ZW50c1RhYmxlLFxuICAgICAgICAgIC8vIFNwYXJlIHJvd3MgY2FycnlpbmcgYSBjb21taXQgdGltZXN0YW1wOiB0aGV5IGFyZSBET1JBIFNPVVJDRSBkYXRhLlxuICAgICAgICAgIC8vIExlYWQgdGltZSBqb2lucyBkZXBsb3lzIHRvIHRoZSBleGVjdXRpb24ncyBlYXJsaWVzdFxuICAgICAgICAgIC8vIGBjb21taXRfdGltZXN0YW1wYCwgYW5kIHRoYXQgZW5yaWNobWVudCByaWRlcyB0aGUgUElQRUxJTkUvc291cmNlXG4gICAgICAgICAgLy8gZXZlbnQgKGVudmlyb25tZW50IElTIE5VTEwpLCBuZXZlciB0aGUgZGVwbG95IFNUQUdFIHJvdy4gUHVyZ2luZ1xuICAgICAgICAgIC8vIHRoZW0gb24gdGhpcyBzaG9ydCB3aW5kb3cgd2hpbGUgdGhlIGRlcGxveXMgdGhleSBleHBsYWluIGxpdmUgb25cbiAgICAgICAgICAvLyB0aGUgRE9SQSB3aW5kb3cgbWFkZSBsZWFkIHRpbWUgcmVhZCBcInVua25vd25cIiBmb3IgZXZlcnkgcmFuZ2VcbiAgICAgICAgICAvLyBvbGRlciB0aGFuIHRoZSBzdGFuZGFyZCByZXRlbnRpb24g4oCUIHNpbGVudGx5LCB3aXRoIHRoZSBkZXBsb3lzXG4gICAgICAgICAgLy8gc3RpbGwgY291bnRlZC4gVGhleSBmb2xsb3cgdGhlIERPUkEgd2luZG93IGJlbG93IGluc3RlYWQuXG4gICAgICAgICAgc3FsYG9yZ19pZCA9ICR7b3JnSWR9IEFORCBlbnZpcm9ubWVudCBJUyBOVUxMIEFORCBjb21taXRfdGltZXN0YW1wIElTIE5VTEwgQU5EIGNyZWF0ZWRfYXQgPCAke2V2ZW50Q3V0b2ZmfWAsXG4gICAgICAgICAgYmF0Y2hTaXplLCBtYXhCYXRjaGVzLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNraXBEb3JhKSB7XG4gICAgICAgIGNvbnN0IGRvcmFDdXRvZmYgPSByZXRlbnRpb25DdXRvZmYobm93LCBkb3JhRGF5cyk7XG4gICAgICAgIGNvdW50cy5kb3JhRXZlbnRzICs9IGF3YWl0IHB1cmdlUmVwb3J0aW5nVGFibGVCYXRjaGVkKFxuICAgICAgICAgIGV2ZW50c1RhYmxlLFxuICAgICAgICAgIHNxbGBvcmdfaWQgPSAke29yZ0lkfSBBTkQgKGVudmlyb25tZW50IElTIE5PVCBOVUxMIE9SIGNvbW1pdF90aW1lc3RhbXAgSVMgTk9UIE5VTEwpIEFORCBjcmVhdGVkX2F0IDwgJHtkb3JhQ3V0b2ZmfWAsXG4gICAgICAgICAgYmF0Y2hTaXplLCBtYXhCYXRjaGVzLFxuICAgICAgICApO1xuICAgICAgICBjb3VudHMuZGVwbG95bWVudE91dGNvbWVzICs9IGF3YWl0IHB1cmdlUmVwb3J0aW5nVGFibGVCYXRjaGVkKFxuICAgICAgICAgIG91dGNvbWVzVGFibGUsXG4gICAgICAgICAgc3FsYG9yZ19pZCA9ICR7b3JnSWR9IEFORCBjcmVhdGVkX2F0IDwgJHtkb3JhQ3V0b2ZmfWAsXG4gICAgICAgICAgYmF0Y2hTaXplLCBtYXhCYXRjaGVzLFxuICAgICAgICApO1xuICAgICAgICBjb3VudHMuaW5jaWRlbnRzICs9IGF3YWl0IHB1cmdlUmVwb3J0aW5nVGFibGVCYXRjaGVkKFxuICAgICAgICAgIGluY2lkZW50c1RhYmxlLFxuICAgICAgICAgIHNxbGBvcmdfaWQgPSAke29yZ0lkfSBBTkQgY3JlYXRlZF9hdCA8ICR7ZG9yYUN1dG9mZn1gLFxuICAgICAgICAgIGJhdGNoU2l6ZSwgbWF4QmF0Y2hlcyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvdW50cy5vcmdzICs9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgcHVyZ2VkQW55ID0gY291bnRzLnN0YW5kYXJkRXZlbnRzICsgY291bnRzLmRvcmFFdmVudHMgKyBjb3VudHMuZGVwbG95bWVudE91dGNvbWVzICsgY291bnRzLmluY2lkZW50cztcbiAgICBpZiAocHVyZ2VkQW55ID4gMCkgbG9nZ2VyLmluZm8oJ1JlcG9ydGluZyByZXRlbnRpb24gc3dlZXAgcHVyZ2VkIGV4cGlyZWQgcm93cycsIHsgLi4uY291bnRzIH0pO1xuICAgIHJldHVybiBjb3VudHM7XG4gIH0pO1xufVxuIl19
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0ZW50aW9uLXN3ZWVwLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JlcG9ydGluZy9yZXRlbnRpb24tc3dlZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFbkQ7Ozs7Ozs7OztHQVNHO0FBQ0gsS0FBSyxVQUFVLDBCQUEwQixDQUN2QyxRQUFnQyxFQUNoQyxTQUFpQyxFQUNqQyxTQUFpQixFQUNqQixVQUFrQjtJQUVsQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDcEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFBO29CQUNyQyxRQUFROzsyQkFFRCxRQUFRO2dCQUNuQixTQUFTO2dCQUNULFNBQVM7OztLQUdwQixDQUFDLENBQUMsQ0FBQztRQUNKLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBVSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3JELEtBQUssSUFBSSxNQUFNLENBQUM7UUFDaEIsSUFBSSxNQUFNLEdBQUcsU0FBUztZQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQ3pDLElBQUksQ0FBQyxLQUFLLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLCtEQUErRCxFQUFFO2dCQUMzRSxjQUFjLEVBQUUsS0FBSzthQUN0QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxJQUFJLEdBQThCLEVBQUU7SUFDbEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ25DLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0YsTUFBTSxNQUFNLEdBQTZCO1FBQ3ZDLElBQUksRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztLQUMvRSxDQUFDO0lBRUYsT0FBTyxvQkFBb0IsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM3RCwyRUFBMkU7UUFDM0UsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFxQixDQUFDLE1BQU0sWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQTs7aUJBRTdFLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxtQkFBbUIsTUFBTSxDQUFDLGFBQWE7O2lCQUVqRSxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxtQkFBbUIsTUFBTSxDQUFDLGlCQUFpQjs7aUJBRXpFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxtQkFBbUIsTUFBTSxDQUFDLFFBQVE7O0tBRW5FLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDO1FBRXhDLGdGQUFnRjtRQUNoRixNQUFNLFlBQVksR0FBRyxXQUFXLENBSTdCLENBQUMsTUFBTSxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFBO2VBQ2xDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSztlQUN6QixNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQjtlQUN0QyxNQUFNLENBQUMsWUFBWSxDQUFDLGlCQUFpQjthQUN2QyxNQUFNLENBQUMsWUFBWTtLQUMzQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1gsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsRSxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUEsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDakQsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFBLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDdkQsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFBLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRS9DLEtBQUssTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN4Qyw0RUFBNEU7WUFDNUUsMEVBQTBFO1lBQzFFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsMENBQTBDLEVBQUU7b0JBQ3RELE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSTtpQkFDM0UsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUixDQUFDO1lBQ0QsMEVBQTBFO1lBQzFFLHdFQUF3RTtZQUN4RSx5REFBeUQ7WUFDekQsSUFBSSxjQUE2QixDQUFDO1lBQ2xDLElBQUksQ0FBQztnQkFDSCxjQUFjLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2SCxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUM7WUFDRCxJQUFJLGNBQWMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxrRkFBa0YsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzNHLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6QyxNQUFNLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUN0RSxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUNuRSxpRUFBaUU7WUFDakUsMkVBQTJFO1lBQzNFLG9FQUFvRTtZQUNwRSxNQUFNLFVBQVUsR0FBRyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxRQUFRLEdBQUcsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLElBQUksVUFBVSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxFQUFFO29CQUNwRSxLQUFLO29CQUNMLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUztvQkFDcEQsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRO2lCQUM5QyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNwRCxNQUFNLENBQUMsY0FBYyxJQUFJLE1BQU0sMEJBQTBCLENBQ3ZELFdBQVc7Z0JBQ1gscUVBQXFFO2dCQUNyRSxzREFBc0Q7Z0JBQ3RELG9FQUFvRTtnQkFDcEUsbUVBQW1FO2dCQUNuRSxtRUFBbUU7Z0JBQ25FLGdFQUFnRTtnQkFDaEUsaUVBQWlFO2dCQUNqRSw0REFBNEQ7Z0JBQzVELEdBQUcsQ0FBQSxZQUFZLEtBQUssMEVBQTBFLFdBQVcsRUFBRSxFQUMzRyxTQUFTLEVBQUUsVUFBVSxDQUN0QixDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNsRCxNQUFNLENBQUMsVUFBVSxJQUFJLE1BQU0sMEJBQTBCLENBQ25ELFdBQVcsRUFDWCxHQUFHLENBQUEsWUFBWSxLQUFLLG1GQUFtRixVQUFVLEVBQUUsRUFDbkgsU0FBUyxFQUFFLFVBQVUsQ0FDdEIsQ0FBQztnQkFDRixNQUFNLENBQUMsa0JBQWtCLElBQUksTUFBTSwwQkFBMEIsQ0FDM0QsYUFBYSxFQUNiLEdBQUcsQ0FBQSxZQUFZLEtBQUsscUJBQXFCLFVBQVUsRUFBRSxFQUNyRCxTQUFTLEVBQUUsVUFBVSxDQUN0QixDQUFDO2dCQUNGLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSwwQkFBMEIsQ0FDbEQsY0FBYyxFQUNkLEdBQUcsQ0FBQSxZQUFZLEtBQUsscUJBQXFCLFVBQVUsRUFBRSxFQUNyRCxTQUFTLEVBQUUsVUFBVSxDQUN0QixDQUFDO1lBQ0osQ0FBQztZQUNELE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDM0csSUFBSSxTQUFTLEdBQUcsQ0FBQztZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0NBQStDLEVBQUUsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHJlcG9ydGluZyByZXRlbnRpb24gU1dFRVA6IHRoZSBiYXRjaGVkIGhhcmQtZGVsZXRlIHRoYXQgZW5mb3JjZXMgdGhlXG4gKiB3aW5kb3dzIGAuL3JldGVudGlvbi50c2AgcmVzb2x2ZXMuIFNwbGl0IGZyb20gdGhlIHdpbmRvd3MgbW9kdWxlIHNvIHRoZSBwdXJlLFxuICogZW52LW9ubHkgcG9saWN5IHN0YXlzIGZyZWUgb2YgZGF0YWJhc2UgY29kZSwgYW5kIGZyb20gdGhlIHJlcG9ydGluZyBzZXJ2aWNlXG4gKiBiZWNhdXNlIHRoaXMgaXMgY3Jvc3MtdGVuYW50IGhvdXNla2VlcGluZywgbm90IGEgcmVwb3J0LlxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciwgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHsgcmVzb2x2ZUV2ZW50UmV0ZW50aW9uRGF5cywgcmVzb2x2ZURvcmFSZXRlbnRpb25EYXlzLCByZXRlbnRpb25DdXRvZmYgfSBmcm9tICcuL3JldGVudGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlcG9ydGluZ1JldGVudGlvbkNvdW50cywgUmVwb3J0aW5nUmV0ZW50aW9uT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgc2NoZW1hIH0gZnJvbSAnLi4vLi4vZGF0YWJhc2UvZHJpenpsZS1zY2hlbWEuanMnO1xuaW1wb3J0IHsgd2l0aFRlbmFudFR4LCBydW5XaXRoVGVuYW50Q29udGV4dCB9IGZyb20gJy4uLy4uL2RhdGFiYXNlL3RlbmFuY3kuanMnO1xuaW1wb3J0IHsgZHJpenpsZVJvd3MgfSBmcm9tICcuLi9jcnVkLXNlcnZpY2UuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3JlcG9ydGluZy1yZXRlbnRpb24nKTtcblxuLyoqXG4gKiBCYXRjaGVkIGhhcmQtREVMRVRFIG9mIG9uZSByZXBvcnRpbmcgdGFibGUncyByb3dzIGV4cGlyZWQgcGFzdCBhIGBjcmVhdGVkX2F0YFxuICogY3V0b2ZmLCBzY29wZWQgdG8gYW4gb3JnIGFuZCBhbiBvcHRpb25hbCByb3cgcHJlZGljYXRlLiBVc2VzIGFcbiAqIGBjdGlkYC1pbi1zdWJxdWVyeSBMSU1JVCBzbyBlYWNoIHN0YXRlbWVudCB0b3VjaGVzIGF0IG1vc3QgYGJhdGNoU2l6ZWAgcm93c1xuICogKHNob3J0IGxvY2sgd2luZG93cywgbm8gbG9uZyB0YWJsZSBzY2FuIHVuZGVyIGxvY2spOyBgUkVUVVJOSU5HIDFgIGxldHMgdXNcbiAqIGNvdW50IHZpYSBgLnJvd3MubGVuZ3RoYCB3aXRob3V0IGRlcGVuZGluZyBvbiB0aGUgZHJpdmVyJ3MgYHJvd0NvdW50YC4gTG9vcHNcbiAqIHVudGlsIGEgc2hvcnQgYmF0Y2ggKGRyYWluZWQpIG9yIHRoZSBwZXItdGljayBjYXAsIHRoZW4gZGVmZXJzIHRoZSByZXN0LlxuICogTVVTVCBydW4gaW5zaWRlIGEgc3lzYWRtaW4gdGVuYW50IHNjb3BlIChzZWUgcHVyZ2VFeHBpcmVkUmVwb3J0aW5nRGF0YSkgc28gaXRcbiAqIGJ5cGFzc2VzIFJMUyBhbmQgY2FuIGRlbGV0ZSBhY3Jvc3MgdGhlIG9yZydzIHJvd3MuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHB1cmdlUmVwb3J0aW5nVGFibGVCYXRjaGVkKFxuICB0YWJsZVNxbDogUmV0dXJuVHlwZTx0eXBlb2Ygc3FsPixcbiAgcHJlZGljYXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBzcWw+LFxuICBiYXRjaFNpemU6IG51bWJlcixcbiAgbWF4QmF0Y2hlczogbnVtYmVyLFxuKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgbGV0IHRvdGFsID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhCYXRjaGVzOyBpKyspIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB3aXRoVGVuYW50VHgoKHR4KSA9PiB0eC5leGVjdXRlKHNxbGBcbiAgICAgIERFTEVURSBGUk9NICR7dGFibGVTcWx9XG4gICAgICBXSEVSRSBjdGlkIElOIChcbiAgICAgICAgU0VMRUNUIGN0aWQgRlJPTSAke3RhYmxlU3FsfVxuICAgICAgICBXSEVSRSAke3ByZWRpY2F0ZX1cbiAgICAgICAgTElNSVQgJHtiYXRjaFNpemV9XG4gICAgICApXG4gICAgICBSRVRVUk5JTkcgMVxuICAgIGApKTtcbiAgICBjb25zdCBwdXJnZWQgPSBkcml6emxlUm93czx1bmtub3duPihyZXMucm93cykubGVuZ3RoO1xuICAgIHRvdGFsICs9IHB1cmdlZDtcbiAgICBpZiAocHVyZ2VkIDwgYmF0Y2hTaXplKSBicmVhazsgLy8gZHJhaW5lZFxuICAgIGlmIChpID09PSBtYXhCYXRjaGVzIC0gMSkge1xuICAgICAgbG9nZ2VyLndhcm4oJ1JlcG9ydGluZyByZXRlbnRpb24gaGl0IHBlci10aWNrIGNhcDsgcmVtYWluaW5nIHJvd3MgZGVmZXJyZWQnLCB7XG4gICAgICAgIHB1cmdlZFRoaXNUaWNrOiB0b3RhbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdG90YWw7XG59XG5cbi8qKlxuICogUmVwb3J0aW5nIHJldGVudGlvbiBzd2VlcC4gSGFyZC1kZWxldGVzIHJvd3Mgb2xkZXIgdGhhbiB0aGVpclxuICogcmV0ZW50aW9uIHdpbmRvdywgYnkgYGNyZWF0ZWRfYXRgLCBhY3Jvc3MgZXZlcnkgb3JnIHRoYXQgaGFzIHJlcG9ydGluZyBkYXRhIOKAlFxuICogYSAqKnNwbGl0KiogcG9saWN5IHNvIGhpZ2gtdm9sdW1lIHN0YW5kYXJkIGV2ZW50cyBleHBpcmUgZmFzdGVyIHRoYW4gdGhlXG4gKiBsb3ctdm9sdW1lIERPUkEgc291cmNlOlxuICogIC0gYHBpcGVsaW5lX2V2ZW50cyBXSEVSRSBlbnZpcm9ubWVudCBJUyBOVUxMYCDihpIgc3RhbmRhcmQtZXZlbnQgd2luZG93LlxuICogIC0gYHBpcGVsaW5lX2V2ZW50cyBXSEVSRSBlbnZpcm9ubWVudCBJUyBOT1QgTlVMTGAgKGRlcGxveSBzdGFnZXMpLFxuICogICAgYGRlcGxveW1lbnRfb3V0Y29tZXNgLCBhbmQgYGluY2lkZW50c2Ag4oaSIERPUkEtc291cmNlIHdpbmRvdy5cbiAqIEVhY2ggb3JnJ3Mgd2luZG93cyBjb21lIGZyb20gaXRzIGBkb3JhX3NldHRpbmdzYCBvdmVycmlkZSwgZWxzZSB0aGUgZ2xvYmFsXG4gKiBlbnYgZGVmYXVsdHMgKHNlZSB7QGxpbmsgcmVzb2x2ZUV2ZW50UmV0ZW50aW9uRGF5c30gLyB7QGxpbmsgcmVzb2x2ZURvcmFSZXRlbnRpb25EYXlzfSkuXG4gKiBgaW5nZXN0X2hlYWx0aGAgYW5kIGBkb3JhX3NldHRpbmdzYCBhcmUgbmV2ZXIgcHVyZ2VkLiBPbmUgYG5vd2AgZm9yIHRoZSB3aG9sZVxuICogdGljayAocm93cyBjcm9zc2luZyB0aGUgYm91bmRhcnkgbWlkLXN3ZWVwIHdhaXQgZm9yIHRoZSBuZXh0KS4gRXN0YWJsaXNoZXMgYVxuICogc3lzYWRtaW4gdGVuYW50IHNjb3BlIHNvIHRoZSBkZWxldGVzIHNwYW4gYWxsIG9yZ3MgLyBieXBhc3MgUkxTIOKAlCB0aGlzIGlzIGFcbiAqIGNyb3NzLXRlbmFudCBob3VzZWtlZXBpbmcgam9iLiBSZXR1cm5zIChhbmQgbG9ncykgcGVyLXdpbmRvdyBwdXJnZSB0YWxsaWVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVyZ2VFeHBpcmVkUmVwb3J0aW5nRGF0YShvcHRzOiBSZXBvcnRpbmdSZXRlbnRpb25PcHRpb25zID0ge30pOiBQcm9taXNlPFJlcG9ydGluZ1JldGVudGlvbkNvdW50cz4ge1xuICBjb25zdCBiYXRjaFNpemUgPSBNYXRoLm1heCgxLCBvcHRzLmJhdGNoU2l6ZSA/PyAxMDAwKTtcbiAgY29uc3QgbWF4QmF0Y2hlcyA9IE1hdGgubWF4KDEsIG9wdHMubWF4QmF0Y2hlc1BlclRhYmxlID8/IDUwKTtcbiAgY29uc3Qgbm93ID0gb3B0cy5ub3cgPz8gbmV3IERhdGUoKTtcbiAgY29uc3QgcmVzb2x2ZVJldGVudGlvbk9yZ0lkID0gb3B0cy5yZXNvbHZlUmV0ZW50aW9uT3JnSWQgPz8gKGFzeW5jIChvcmdJZDogc3RyaW5nKSA9PiBvcmdJZCk7XG4gIGNvbnN0IGNvdW50czogUmVwb3J0aW5nUmV0ZW50aW9uQ291bnRzID0ge1xuICAgIG9yZ3M6IDAsIHN0YW5kYXJkRXZlbnRzOiAwLCBkb3JhRXZlbnRzOiAwLCBkZXBsb3ltZW50T3V0Y29tZXM6IDAsIGluY2lkZW50czogMCxcbiAgfTtcblxuICByZXR1cm4gcnVuV2l0aFRlbmFudENvbnRleHQoeyBpc1N1cGVyQWRtaW46IHRydWUgfSwgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEVudW1lcmF0ZSBldmVyeSBvcmcgd2l0aCByZXBvcnRpbmcgZGF0YSAodW5pb24gYWNyb3NzIHRoZSB0aHJlZSB0YWJsZXMpLlxuICAgIGNvbnN0IG9yZ1Jvd3MgPSBkcml6emxlUm93czx7IG9yZ19pZDogc3RyaW5nIH0+KChhd2FpdCB3aXRoVGVuYW50VHgoKHR4KSA9PiB0eC5leGVjdXRlKHNxbGBcbiAgICAgIFNFTEVDVCBESVNUSU5DVCBvcmdfaWQgRlJPTSAoXG4gICAgICAgIFNFTEVDVCAke3NjaGVtYS5waXBlbGluZUV2ZW50Lm9yZ0lkfSBBUyBvcmdfaWQgRlJPTSAke3NjaGVtYS5waXBlbGluZUV2ZW50fVxuICAgICAgICBVTklPTlxuICAgICAgICBTRUxFQ1QgJHtzY2hlbWEuZGVwbG95bWVudE91dGNvbWUub3JnSWR9IEFTIG9yZ19pZCBGUk9NICR7c2NoZW1hLmRlcGxveW1lbnRPdXRjb21lfVxuICAgICAgICBVTklPTlxuICAgICAgICBTRUxFQ1QgJHtzY2hlbWEuaW5jaWRlbnQub3JnSWR9IEFTIG9yZ19pZCBGUk9NICR7c2NoZW1hLmluY2lkZW50fVxuICAgICAgKSBBUyBvcmdzXG4gICAgYCkpKS5yb3dzKTtcbiAgICBpZiAob3JnUm93cy5sZW5ndGggPT09IDApIHJldHVybiBjb3VudHM7XG5cbiAgICAvLyBQZXItb3JnIHJldGVudGlvbiBvdmVycmlkZXMgKGEgc2luZ2xlIHJlYWQ7IG9yZ3Mgd2l0aG91dCBhIHJvdyB1c2UgZGVmYXVsdHMpLlxuICAgIGNvbnN0IG92ZXJyaWRlUm93cyA9IGRyaXp6bGVSb3dzPHtcbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgZXZlbnRfcmV0ZW50aW9uX2RheXM6IG51bWJlciB8IG51bGw7XG4gICAgICBkb3JhX3JldGVudGlvbl9kYXlzOiBudW1iZXIgfCBudWxsO1xuICAgIH0+KChhd2FpdCB3aXRoVGVuYW50VHgoKHR4KSA9PiB0eC5leGVjdXRlKHNxbGBcbiAgICAgIFNFTEVDVCAke3NjaGVtYS5kb3JhU2V0dGluZ3Mub3JnSWR9IEFTIG9yZ19pZCxcbiAgICAgICAgICAgICAke3NjaGVtYS5kb3JhU2V0dGluZ3MuZXZlbnRSZXRlbnRpb25EYXlzfSBBUyBldmVudF9yZXRlbnRpb25fZGF5cyxcbiAgICAgICAgICAgICAke3NjaGVtYS5kb3JhU2V0dGluZ3MuZG9yYVJldGVudGlvbkRheXN9IEFTIGRvcmFfcmV0ZW50aW9uX2RheXNcbiAgICAgIEZST00gJHtzY2hlbWEuZG9yYVNldHRpbmdzfVxuICAgIGApKSkucm93cyk7XG4gICAgY29uc3Qgb3ZlcnJpZGVzID0gbmV3IE1hcChvdmVycmlkZVJvd3MubWFwKChyKSA9PiBbci5vcmdfaWQsIHJdKSk7XG5cbiAgICBjb25zdCBldmVudHNUYWJsZSA9IHNxbGAke3NjaGVtYS5waXBlbGluZUV2ZW50fWA7XG4gICAgY29uc3Qgb3V0Y29tZXNUYWJsZSA9IHNxbGAke3NjaGVtYS5kZXBsb3ltZW50T3V0Y29tZX1gO1xuICAgIGNvbnN0IGluY2lkZW50c1RhYmxlID0gc3FsYCR7c2NoZW1hLmluY2lkZW50fWA7XG5cbiAgICBmb3IgKGNvbnN0IHsgb3JnX2lkOiBvcmdJZCB9IG9mIG9yZ1Jvd3MpIHtcbiAgICAgIC8vIExvY2sgbG9zdCwgb3Igc2h1dHRpbmcgZG93bjogc3RvcCBiZXR3ZWVuIG9yZ3MuIEV2ZXJ5IHJlbWFpbmluZyBvcmcgc3RpbGxcbiAgICAgIC8vIGhhcyBleHBpcmVkIHJvd3MsIHNvIHRoZSBuZXh0IHRpY2sgcmVzdW1lcyBleGFjdGx5IHdoZXJlIHRoaXMgbGVmdCBvZmYuXG4gICAgICBpZiAob3B0cy5ydW4/LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKCdSZXBvcnRpbmcgcmV0ZW50aW9uIHN3ZWVwIHN0b3BwaW5nIGVhcmx5Jywge1xuICAgICAgICAgIHJlYXNvbjogU3RyaW5nKG9wdHMucnVuLnNpZ25hbC5yZWFzb24gPz8gJ2Fib3J0ZWQnKSwgb3Jnc0RvbmU6IGNvdW50cy5vcmdzLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBSZXRlbnRpb24gZm9sbG93cyB0aGUgYWNjb3VudCBST09UJ3MgZW50aXRsZW1lbnQgKGJpbGxpbmcgc3luY3MgaXQgb250b1xuICAgICAgLy8gdGhlIHJvb3Qgb25seSkuIEFuIHVucmVzb2x2YWJsZSByb290IOKHkiBza2lwIHRoaXMgb3JnIHRoaXMgdGljayByYXRoZXJcbiAgICAgIC8vIHRoYW4gcHVyZ2UgYSB0ZWFtJ3Mgcm93cyBvbiB0aGUgKHNob3J0ZXIpIGVudiBkZWZhdWx0LlxuICAgICAgbGV0IHJldGVudGlvbk9yZ0lkOiBzdHJpbmcgfCBudWxsO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0ZW50aW9uT3JnSWQgPSBhd2FpdCByZXNvbHZlUmV0ZW50aW9uT3JnSWQob3JnSWQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdSZXBvcnRpbmcgcmV0ZW50aW9uOiByb290IHJlc29sdXRpb24gdGhyZXc7IHNraXBwaW5nIG9yZyB0aGlzIHRpY2snLCB7IG9yZ0lkLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgIHJldGVudGlvbk9yZ0lkID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChyZXRlbnRpb25PcmdJZCA9PT0gbnVsbCkge1xuICAgICAgICBsb2dnZXIud2FybignUmVwb3J0aW5nIHJldGVudGlvbjogY291bGQgbm90IHJlc29sdmUgdGhlIHJldGVudGlvbiByb290OyBvcmcgc2tpcHBlZCB0aGlzIHRpY2snLCB7IG9yZ0lkIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG92ID0gb3ZlcnJpZGVzLmdldChyZXRlbnRpb25PcmdJZCk7XG4gICAgICBjb25zdCBldmVudERheXMgPSByZXNvbHZlRXZlbnRSZXRlbnRpb25EYXlzKG92Py5ldmVudF9yZXRlbnRpb25fZGF5cyk7XG4gICAgICBjb25zdCBkb3JhRGF5cyA9IHJlc29sdmVEb3JhUmV0ZW50aW9uRGF5cyhvdj8uZG9yYV9yZXRlbnRpb25fZGF5cyk7XG4gICAgICAvLyBgLTFgID0gdW5saW1pdGVkOiBrZWVwIGZvcmV2ZXIsIHNraXAgdGhhdCB3aW5kb3cncyBkZWxldGVzIGZvclxuICAgICAgLy8gdGhpcyBvcmcuIFN0YW5kYXJkLWV2ZW50IGFuZCBET1JBLXNvdXJjZSB3aW5kb3dzIGFyZSBpbmRlcGVuZGVudDsgYW4gb3JnXG4gICAgICAvLyB3aXRoIGJvdGggYC0xYCBpcyBmdWxseSBza2lwcGVkLiBMb2cgdGhlIHNraXAgc28gaXQncyBvYnNlcnZhYmxlLlxuICAgICAgY29uc3Qgc2tpcEV2ZW50cyA9IGV2ZW50RGF5cyA9PT0gLTE7XG4gICAgICBjb25zdCBza2lwRG9yYSA9IGRvcmFEYXlzID09PSAtMTtcbiAgICAgIGlmIChza2lwRXZlbnRzIHx8IHNraXBEb3JhKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKCdSZXBvcnRpbmcgcmV0ZW50aW9uIHN3ZWVwIHNraXBwaW5nIHVubGltaXRlZCB3aW5kb3cocyknLCB7XG4gICAgICAgICAgb3JnSWQsXG4gICAgICAgICAgc3RhbmRhcmRFdmVudHM6IHNraXBFdmVudHMgPyAndW5saW1pdGVkJyA6IGV2ZW50RGF5cyxcbiAgICAgICAgICBkb3JhU291cmNlOiBza2lwRG9yYSA/ICd1bmxpbWl0ZWQnIDogZG9yYURheXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNraXBFdmVudHMpIHtcbiAgICAgICAgY29uc3QgZXZlbnRDdXRvZmYgPSByZXRlbnRpb25DdXRvZmYobm93LCBldmVudERheXMpO1xuICAgICAgICBjb3VudHMuc3RhbmRhcmRFdmVudHMgKz0gYXdhaXQgcHVyZ2VSZXBvcnRpbmdUYWJsZUJhdGNoZWQoXG4gICAgICAgICAgZXZlbnRzVGFibGUsXG4gICAgICAgICAgLy8gU3BhcmUgcm93cyBjYXJyeWluZyBhIGNvbW1pdCB0aW1lc3RhbXA6IHRoZXkgYXJlIERPUkEgU09VUkNFIGRhdGEuXG4gICAgICAgICAgLy8gTGVhZCB0aW1lIGpvaW5zIGRlcGxveXMgdG8gdGhlIGV4ZWN1dGlvbidzIGVhcmxpZXN0XG4gICAgICAgICAgLy8gYGNvbW1pdF90aW1lc3RhbXBgLCBhbmQgdGhhdCBlbnJpY2htZW50IHJpZGVzIHRoZSBQSVBFTElORS9zb3VyY2VcbiAgICAgICAgICAvLyBldmVudCAoZW52aXJvbm1lbnQgSVMgTlVMTCksIG5ldmVyIHRoZSBkZXBsb3kgU1RBR0Ugcm93LiBQdXJnaW5nXG4gICAgICAgICAgLy8gdGhlbSBvbiB0aGlzIHNob3J0IHdpbmRvdyB3aGlsZSB0aGUgZGVwbG95cyB0aGV5IGV4cGxhaW4gbGl2ZSBvblxuICAgICAgICAgIC8vIHRoZSBET1JBIHdpbmRvdyBtYWRlIGxlYWQgdGltZSByZWFkIFwidW5rbm93blwiIGZvciBldmVyeSByYW5nZVxuICAgICAgICAgIC8vIG9sZGVyIHRoYW4gdGhlIHN0YW5kYXJkIHJldGVudGlvbiDigJQgc2lsZW50bHksIHdpdGggdGhlIGRlcGxveXNcbiAgICAgICAgICAvLyBzdGlsbCBjb3VudGVkLiBUaGV5IGZvbGxvdyB0aGUgRE9SQSB3aW5kb3cgYmVsb3cgaW5zdGVhZC5cbiAgICAgICAgICBzcWxgb3JnX2lkID0gJHtvcmdJZH0gQU5EIGVudmlyb25tZW50IElTIE5VTEwgQU5EIGNvbW1pdF90aW1lc3RhbXAgSVMgTlVMTCBBTkQgY3JlYXRlZF9hdCA8ICR7ZXZlbnRDdXRvZmZ9YCxcbiAgICAgICAgICBiYXRjaFNpemUsIG1heEJhdGNoZXMsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghc2tpcERvcmEpIHtcbiAgICAgICAgY29uc3QgZG9yYUN1dG9mZiA9IHJldGVudGlvbkN1dG9mZihub3csIGRvcmFEYXlzKTtcbiAgICAgICAgY291bnRzLmRvcmFFdmVudHMgKz0gYXdhaXQgcHVyZ2VSZXBvcnRpbmdUYWJsZUJhdGNoZWQoXG4gICAgICAgICAgZXZlbnRzVGFibGUsXG4gICAgICAgICAgc3FsYG9yZ19pZCA9ICR7b3JnSWR9IEFORCAoZW52aXJvbm1lbnQgSVMgTk9UIE5VTEwgT1IgY29tbWl0X3RpbWVzdGFtcCBJUyBOT1QgTlVMTCkgQU5EIGNyZWF0ZWRfYXQgPCAke2RvcmFDdXRvZmZ9YCxcbiAgICAgICAgICBiYXRjaFNpemUsIG1heEJhdGNoZXMsXG4gICAgICAgICk7XG4gICAgICAgIGNvdW50cy5kZXBsb3ltZW50T3V0Y29tZXMgKz0gYXdhaXQgcHVyZ2VSZXBvcnRpbmdUYWJsZUJhdGNoZWQoXG4gICAgICAgICAgb3V0Y29tZXNUYWJsZSxcbiAgICAgICAgICBzcWxgb3JnX2lkID0gJHtvcmdJZH0gQU5EIGNyZWF0ZWRfYXQgPCAke2RvcmFDdXRvZmZ9YCxcbiAgICAgICAgICBiYXRjaFNpemUsIG1heEJhdGNoZXMsXG4gICAgICAgICk7XG4gICAgICAgIGNvdW50cy5pbmNpZGVudHMgKz0gYXdhaXQgcHVyZ2VSZXBvcnRpbmdUYWJsZUJhdGNoZWQoXG4gICAgICAgICAgaW5jaWRlbnRzVGFibGUsXG4gICAgICAgICAgc3FsYG9yZ19pZCA9ICR7b3JnSWR9IEFORCBjcmVhdGVkX2F0IDwgJHtkb3JhQ3V0b2ZmfWAsXG4gICAgICAgICAgYmF0Y2hTaXplLCBtYXhCYXRjaGVzLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY291bnRzLm9yZ3MgKz0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBwdXJnZWRBbnkgPSBjb3VudHMuc3RhbmRhcmRFdmVudHMgKyBjb3VudHMuZG9yYUV2ZW50cyArIGNvdW50cy5kZXBsb3ltZW50T3V0Y29tZXMgKyBjb3VudHMuaW5jaWRlbnRzO1xuICAgIGlmIChwdXJnZWRBbnkgPiAwKSBsb2dnZXIuaW5mbygnUmVwb3J0aW5nIHJldGVudGlvbiBzd2VlcCBwdXJnZWQgZXhwaXJlZCByb3dzJywgeyAuLi5jb3VudHMgfSk7XG4gICAgcmV0dXJuIGNvdW50cztcbiAgfSk7XG59XG4iXX0=
@@ -58,4 +58,4 @@ export function retentionCutoff(now, days) {
58
58
  return new Date(now.getTime() - days * 86_400_000);
59
59
  }
60
60
  /** Per-org retention override row. Both nullable ⇒ global defaults. */
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0ZW50aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9yZXBvcnRpbmcvcmV0ZW50aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7OztHQUdHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7SUFDN0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwQyxPQUFPLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxnQkFBZ0IsQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyRyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxnQkFBZ0IsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUVwRzs7Ozs7O21CQU1tQjtBQUNuQixNQUFNLFVBQVUseUJBQXlCLENBQUMsUUFBd0I7SUFDaEUsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDO1FBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMvQixPQUFPLFFBQVEsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLElBQUksa0JBQWtCO1FBQ3JGLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQztBQUM5RSxDQUFDO0FBRUQ7Ozs7O21CQUttQjtBQUNuQixNQUFNLFVBQVUsd0JBQXdCLENBQUMsUUFBd0I7SUFDL0QsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDO1FBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMvQixPQUFPLFFBQVEsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLElBQUksa0JBQWtCO1FBQ3JGLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQztBQUM3RSxDQUFDO0FBRUQ7NkVBQzZFO0FBQzdFLE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBUyxFQUFFLElBQVk7SUFDckQsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCx1RUFBdUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBSZXRlbnRpb24gd2luZG93cyBmb3IgcmVwb3J0aW5nIGRhdGE6IGVudi1jb25maWd1cmFibGUsIGNsYW1wZWQgdG8gYSBzYW5lXG4gKiByYW5nZSwgYW5kIG92ZXJyaWRhYmxlIHBlci1vcmcgYnkgdGhlIHNldHRpbmdzIHJvdy5cbiAqL1xuXG5pbXBvcnQgeyBlbnZJbnQsIFJFVEVOVElPTl9NQVhfREFZUywgUkVURU5USU9OX01JTl9EQVlTIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vKipcbiAqIFJlcG9ydGluZyByZXRlbnRpb24gd2luZG93cy4gUmVjb3JkcyBpbiBgcGlwZWxpbmVfZXZlbnRzYCxcbiAqIGBkZXBsb3ltZW50X291dGNvbWVzYCwgYW5kIGBpbmNpZGVudHNgIGdyb3cgdW5ib3VuZGVkIHdpdGhvdXQgYSBzd2VlcCwgc28gYVxuICogc3BsaXQsIHBlci1vcmcgcmV0ZW50aW9uIHB1cmdlIChzZWUgYHB1cmdlRXhwaXJlZFJlcG9ydGluZ0RhdGFgIGluIC4vcmV0ZW50aW9uLXN3ZWVwLnRzKVxuICogaGFyZC1kZWxldGVzIHJvd3Mgb2xkZXIgdGhhbiB0aGVzZSB3aW5kb3dzLCBieSBgY3JlYXRlZF9hdGA6XG4gKiAgLSAqKlN0YW5kYXJkIGV2ZW50cyoqIOKAlCBgcGlwZWxpbmVfZXZlbnRzYCB3aXRoIGBlbnZpcm9ubWVudCBJUyBOVUxMYFxuICogICAgKG5vbi1kZXBsb3kgU1RBR0UvQUNUSU9OL2J1aWxkKS4gSGlnaCB2b2x1bWUg4oaSIHNob3J0IGRlZmF1bHQgKDMwIGRheXMpLlxuICogIC0gKipET1JBIHNvdXJjZSoqIOKAlCBgcGlwZWxpbmVfZXZlbnRzYCB3aXRoIGBlbnZpcm9ubWVudCBJUyBOT1QgTlVMTGAgKGRlcGxveVxuICogICAgc3RhZ2VzKSBwbHVzIGFsbCBvZiBgZGVwbG95bWVudF9vdXRjb21lc2AgYW5kIGBpbmNpZGVudHNgLiBMb3cgdm9sdW1lIOKGklxuICogICAgbG9uZ2VyIGRlZmF1bHQgKDE4MCBkYXlzKS4gRE9SQSBoaXN0b3J5IGlzIHRoZXJlZm9yZSBib3VuZGVkIGJ5IHRoaXMgd2luZG93O1xuICogICAgdGhlIHJlcG9ydCBxdWVyeSBzdGlsbCBoYXJkLWNhcHMgYXQgMzY1IGRheXMgKGEgbG9uZ2VyIHBlci1vcmcgb3ZlcnJpZGUgb25seVxuICogICAgcmV0YWlucyByYXcgc291cmNlIHJvd3MsIG5ldmVyIHdpZGVucyBhIHJlcG9ydCkuXG4gKiBgaW5nZXN0X2hlYWx0aGAgYW5kIGBkb3JhX3NldHRpbmdzYCBhcmUgbmV2ZXIgcHVyZ2VkLiBFbnYtb3ZlcnJpZGFibGUgZ2xvYmFscztcbiAqIGEgcGVyLW9yZyBvdmVycmlkZSBpbiBgZG9yYV9zZXR0aW5nc2Agd2lucyAoc2VlIHtAbGluayByZXNvbHZlRXZlbnRSZXRlbnRpb25EYXlzfSkuXG4gKi9cblxuLyoqIFBhcnNlIGEgcG9zaXRpdmUtaW50IGVudiBkYXktY291bnQsIGNsYW1wZWQgdG8gW01JTiwgTUFYXSwgZWxzZSBgZmFsbGJhY2tgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldGVudGlvbkVudkRheXMobmFtZTogc3RyaW5nLCBmYWxsYmFjazogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgZGF5cyA9IGVudkludChuYW1lLCBmYWxsYmFjayk7XG4gIHJldHVybiBkYXlzIDwgUkVURU5USU9OX01JTl9EQVlTID8gZmFsbGJhY2sgOiBNYXRoLm1pbihkYXlzLCBSRVRFTlRJT05fTUFYX0RBWVMpO1xufVxuXG5leHBvcnQgY29uc3QgUkVQT1JUSU5HX0VWRU5UX1JFVEVOVElPTl9EQVlTID0gcmV0ZW50aW9uRW52RGF5cygnUkVQT1JUSU5HX0VWRU5UX1JFVEVOVElPTl9EQVlTJywgMzApO1xuZXhwb3J0IGNvbnN0IFJFUE9SVElOR19ET1JBX1JFVEVOVElPTl9EQVlTID0gcmV0ZW50aW9uRW52RGF5cygnUkVQT1JUSU5HX0RPUkFfUkVURU5USU9OX0RBWVMnLCAxODApO1xuXG4vKiogRWZmZWN0aXZlIHN0YW5kYXJkLWV2ZW50IHJldGVudGlvbiAoZGF5cyk6IGEgdmFsaWQgcGVyLW9yZyBvdmVycmlkZSB3aW5zLFxuICogIGVsc2UgdGhlIGdsb2JhbCBlbnYgZGVmYXVsdC4gU2hhcmVkIGJ5IHRoZSBzd2VlcCArIHRoZSBzZXR0aW5ncyBzdXJmYWNlIHNvXG4gKiAgdGhleSBjYW4ndCBkcmlmdC4gVGhlIGAtMWAgdW5saW1pdGVkIHNlbnRpbmVsIHBhc3NlcyBzdHJhaWdodFxuICogIHRocm91Z2gg4oCUIHRoZSBzd2VlcCByZWFkcyBpdCBhcyBcImtlZXAgZm9yZXZlciwgc2tpcCB0aGlzIG9yZydzIHN0YW5kYXJkXG4gKiAgZXZlbnRzXCIuIEEgcG9zaXRpdmUgb3ZlcnJpZGUgY2xhbXBzIHRvIFsxLCBSRVRFTlRJT05fTUFYX0RBWVNdOyBhIGBudWxsYCwgYVxuICogIG5vbi1pbnRlZ2VyLCBvciBhbnkgb3RoZXIgb3V0LW9mLXJhbmdlIHZhbHVlIChlLmcuIDAsIC0yKSBmYWxscyBiYWNrIHRvIHRoZVxuICogIGVudiBkZWZhdWx0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFdmVudFJldGVudGlvbkRheXMob3ZlcnJpZGU/OiBudW1iZXIgfCBudWxsKTogbnVtYmVyIHtcbiAgaWYgKG92ZXJyaWRlID09PSAtMSkgcmV0dXJuIC0xO1xuICByZXR1cm4gb3ZlcnJpZGUgIT0gbnVsbCAmJiBOdW1iZXIuaXNJbnRlZ2VyKG92ZXJyaWRlKSAmJiBvdmVycmlkZSA+PSBSRVRFTlRJT05fTUlOX0RBWVNcbiAgICA/IE1hdGgubWluKG92ZXJyaWRlLCBSRVRFTlRJT05fTUFYX0RBWVMpIDogUkVQT1JUSU5HX0VWRU5UX1JFVEVOVElPTl9EQVlTO1xufVxuXG4vKiogRWZmZWN0aXZlIERPUkEtc291cmNlIHJldGVudGlvbiAoZGF5cyk6IGEgdmFsaWQgcGVyLW9yZyBvdmVycmlkZSB3aW5zLCBlbHNlXG4gKiAgdGhlIGdsb2JhbCBlbnYgZGVmYXVsdC4gVGhlIGAtMWAgdW5saW1pdGVkIHNlbnRpbmVsIHBhc3NlcyBzdHJhaWdodFxuICogIHRocm91Z2gg4oCUIHRoZSBzd2VlcCByZWFkcyBpdCBhcyBcImtlZXAgZm9yZXZlciwgc2tpcCB0aGlzIG9yZydzIERPUkEtc291cmNlXG4gKiAgd2luZG93c1wiLiBBIHBvc2l0aXZlIG92ZXJyaWRlIGNsYW1wcyB0byBbMSwgUkVURU5USU9OX01BWF9EQVlTXTsgYSBgbnVsbGAsIGFcbiAqICBub24taW50ZWdlciwgb3IgYW55IG90aGVyIG91dC1vZi1yYW5nZSB2YWx1ZSAoZS5nLiAwLCAtMikgZmFsbHMgYmFjayB0byB0aGVcbiAqICBlbnYgZGVmYXVsdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRG9yYVJldGVudGlvbkRheXMob3ZlcnJpZGU/OiBudW1iZXIgfCBudWxsKTogbnVtYmVyIHtcbiAgaWYgKG92ZXJyaWRlID09PSAtMSkgcmV0dXJuIC0xO1xuICByZXR1cm4gb3ZlcnJpZGUgIT0gbnVsbCAmJiBOdW1iZXIuaXNJbnRlZ2VyKG92ZXJyaWRlKSAmJiBvdmVycmlkZSA+PSBSRVRFTlRJT05fTUlOX0RBWVNcbiAgICA/IE1hdGgubWluKG92ZXJyaWRlLCBSRVRFTlRJT05fTUFYX0RBWVMpIDogUkVQT1JUSU5HX0RPUkFfUkVURU5USU9OX0RBWVM7XG59XG5cbi8qKiBUaGUgY3V0b2ZmIGluc3RhbnQgZm9yIGEgcmV0ZW50aW9uIHdpbmRvdzogcm93cyB3aXRoIGBjcmVhdGVkX2F0YCBzdHJpY3RseVxuICogIGJlZm9yZSB0aGlzIChgPCBjdXRvZmZgKSBhcmUgZXhwaXJlZC4gRGV0ZXJtaW5pc3RpYyBmb3IgYSBmaXhlZCBgbm93YC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXRlbnRpb25DdXRvZmYobm93OiBEYXRlLCBkYXlzOiBudW1iZXIpOiBEYXRlIHtcbiAgcmV0dXJuIG5ldyBEYXRlKG5vdy5nZXRUaW1lKCkgLSBkYXlzICogODZfNDAwXzAwMCk7XG59XG5cbi8qKiBQZXItb3JnIHJldGVudGlvbiBvdmVycmlkZSByb3cuIEJvdGggbnVsbGFibGUg4oeSIGdsb2JhbCBkZWZhdWx0cy4gKi9cbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0ZW50aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JlcG9ydGluZy9yZXRlbnRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUY7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQVksRUFBRSxRQUFnQjtJQUM3RCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLE9BQU8sSUFBSSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFDbkYsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLGdCQUFnQixDQUFDLGdDQUFnQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JHLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLGdCQUFnQixDQUFDLCtCQUErQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXBHOzs7Ozs7bUJBTW1CO0FBQ25CLE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxRQUF3QjtJQUNoRSxJQUFJLFFBQVEsS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sUUFBUSxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsSUFBSSxrQkFBa0I7UUFDckYsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDO0FBQzlFLENBQUM7QUFFRDs7Ozs7bUJBS21CO0FBQ25CLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxRQUF3QjtJQUMvRCxJQUFJLFFBQVEsS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sUUFBUSxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsSUFBSSxrQkFBa0I7UUFDckYsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDO0FBQzdFLENBQUM7QUFFRDs2RUFDNkU7QUFDN0UsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFTLEVBQUUsSUFBWTtJQUNyRCxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVELHVFQUF1RSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFJldGVudGlvbiB3aW5kb3dzIGZvciByZXBvcnRpbmcgZGF0YTogZW52LWNvbmZpZ3VyYWJsZSwgY2xhbXBlZCB0byBhIHNhbmVcbiAqIHJhbmdlLCBhbmQgb3ZlcnJpZGFibGUgcGVyLW9yZyBieSB0aGUgc2V0dGluZ3Mgcm93LlxuICovXG5cbmltcG9ydCB7IGVudkludCwgUkVURU5USU9OX01BWF9EQVlTLCBSRVRFTlRJT05fTUlOX0RBWVMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5cbi8qKlxuICogUmVwb3J0aW5nIHJldGVudGlvbiB3aW5kb3dzLiBSZWNvcmRzIGluIGBwaXBlbGluZV9ldmVudHNgLFxuICogYGRlcGxveW1lbnRfb3V0Y29tZXNgLCBhbmQgYGluY2lkZW50c2AgZ3JvdyB1bmJvdW5kZWQgd2l0aG91dCBhIHN3ZWVwLCBzbyBhXG4gKiBzcGxpdCwgcGVyLW9yZyByZXRlbnRpb24gcHVyZ2UgKHNlZSBgcHVyZ2VFeHBpcmVkUmVwb3J0aW5nRGF0YWAgaW4gLi9yZXRlbnRpb24tc3dlZXAudHMpXG4gKiBoYXJkLWRlbGV0ZXMgcm93cyBvbGRlciB0aGFuIHRoZXNlIHdpbmRvd3MsIGJ5IGBjcmVhdGVkX2F0YDpcbiAqICAtICoqU3RhbmRhcmQgZXZlbnRzKiog4oCUIGBwaXBlbGluZV9ldmVudHNgIHdpdGggYGVudmlyb25tZW50IElTIE5VTExgXG4gKiAgICAobm9uLWRlcGxveSBTVEFHRS9BQ1RJT04vYnVpbGQpLiBIaWdoIHZvbHVtZSDihpIgc2hvcnQgZGVmYXVsdCAoMzAgZGF5cykuXG4gKiAgLSAqKkRPUkEgc291cmNlKiog4oCUIGBwaXBlbGluZV9ldmVudHNgIHdpdGggYGVudmlyb25tZW50IElTIE5PVCBOVUxMYCAoZGVwbG95XG4gKiAgICBzdGFnZXMpIHBsdXMgYWxsIG9mIGBkZXBsb3ltZW50X291dGNvbWVzYCBhbmQgYGluY2lkZW50c2AuIExvdyB2b2x1bWUg4oaSXG4gKiAgICBsb25nZXIgZGVmYXVsdCAoMTgwIGRheXMpLiBET1JBIGhpc3RvcnkgaXMgdGhlcmVmb3JlIGJvdW5kZWQgYnkgdGhpcyB3aW5kb3c7XG4gKiAgICB0aGUgcmVwb3J0IHF1ZXJ5IHN0aWxsIGhhcmQtY2FwcyBhdCAzNjUgZGF5cyAoYSBsb25nZXIgcGVyLW9yZyBvdmVycmlkZSBvbmx5XG4gKiAgICByZXRhaW5zIHJhdyBzb3VyY2Ugcm93cywgbmV2ZXIgd2lkZW5zIGEgcmVwb3J0KS5cbiAqIGBpbmdlc3RfaGVhbHRoYCBhbmQgYGRvcmFfc2V0dGluZ3NgIGFyZSBuZXZlciBwdXJnZWQuIEVudi1vdmVycmlkYWJsZSBnbG9iYWxzO1xuICogYSBwZXItb3JnIG92ZXJyaWRlIGluIGBkb3JhX3NldHRpbmdzYCB3aW5zIChzZWUge0BsaW5rIHJlc29sdmVFdmVudFJldGVudGlvbkRheXN9KS5cbiAqL1xuXG4vKiogUGFyc2UgYSBwb3NpdGl2ZS1pbnQgZW52IGRheS1jb3VudCwgY2xhbXBlZCB0byBbTUlOLCBNQVhdLCBlbHNlIGBmYWxsYmFja2AuICovXG5leHBvcnQgZnVuY3Rpb24gcmV0ZW50aW9uRW52RGF5cyhuYW1lOiBzdHJpbmcsIGZhbGxiYWNrOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBkYXlzID0gZW52SW50KG5hbWUsIGZhbGxiYWNrKTtcbiAgcmV0dXJuIGRheXMgPCBSRVRFTlRJT05fTUlOX0RBWVMgPyBmYWxsYmFjayA6IE1hdGgubWluKGRheXMsIFJFVEVOVElPTl9NQVhfREFZUyk7XG59XG5cbmV4cG9ydCBjb25zdCBSRVBPUlRJTkdfRVZFTlRfUkVURU5USU9OX0RBWVMgPSByZXRlbnRpb25FbnZEYXlzKCdSRVBPUlRJTkdfRVZFTlRfUkVURU5USU9OX0RBWVMnLCAzMCk7XG5leHBvcnQgY29uc3QgUkVQT1JUSU5HX0RPUkFfUkVURU5USU9OX0RBWVMgPSByZXRlbnRpb25FbnZEYXlzKCdSRVBPUlRJTkdfRE9SQV9SRVRFTlRJT05fREFZUycsIDE4MCk7XG5cbi8qKiBFZmZlY3RpdmUgc3RhbmRhcmQtZXZlbnQgcmV0ZW50aW9uIChkYXlzKTogYSB2YWxpZCBwZXItb3JnIG92ZXJyaWRlIHdpbnMsXG4gKiAgZWxzZSB0aGUgZ2xvYmFsIGVudiBkZWZhdWx0LiBTaGFyZWQgYnkgdGhlIHN3ZWVwICsgdGhlIHNldHRpbmdzIHN1cmZhY2Ugc29cbiAqICB0aGV5IGNhbid0IGRyaWZ0LiBUaGUgYC0xYCB1bmxpbWl0ZWQgc2VudGluZWwgcGFzc2VzIHN0cmFpZ2h0XG4gKiAgdGhyb3VnaCDigJQgdGhlIHN3ZWVwIHJlYWRzIGl0IGFzIFwia2VlcCBmb3JldmVyLCBza2lwIHRoaXMgb3JnJ3Mgc3RhbmRhcmRcbiAqICBldmVudHNcIi4gQSBwb3NpdGl2ZSBvdmVycmlkZSBjbGFtcHMgdG8gWzEsIFJFVEVOVElPTl9NQVhfREFZU107IGEgYG51bGxgLCBhXG4gKiAgbm9uLWludGVnZXIsIG9yIGFueSBvdGhlciBvdXQtb2YtcmFuZ2UgdmFsdWUgKGUuZy4gMCwgLTIpIGZhbGxzIGJhY2sgdG8gdGhlXG4gKiAgZW52IGRlZmF1bHQuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUV2ZW50UmV0ZW50aW9uRGF5cyhvdmVycmlkZT86IG51bWJlciB8IG51bGwpOiBudW1iZXIge1xuICBpZiAob3ZlcnJpZGUgPT09IC0xKSByZXR1cm4gLTE7XG4gIHJldHVybiBvdmVycmlkZSAhPSBudWxsICYmIE51bWJlci5pc0ludGVnZXIob3ZlcnJpZGUpICYmIG92ZXJyaWRlID49IFJFVEVOVElPTl9NSU5fREFZU1xuICAgID8gTWF0aC5taW4ob3ZlcnJpZGUsIFJFVEVOVElPTl9NQVhfREFZUykgOiBSRVBPUlRJTkdfRVZFTlRfUkVURU5USU9OX0RBWVM7XG59XG5cbi8qKiBFZmZlY3RpdmUgRE9SQS1zb3VyY2UgcmV0ZW50aW9uIChkYXlzKTogYSB2YWxpZCBwZXItb3JnIG92ZXJyaWRlIHdpbnMsIGVsc2VcbiAqICB0aGUgZ2xvYmFsIGVudiBkZWZhdWx0LiBUaGUgYC0xYCB1bmxpbWl0ZWQgc2VudGluZWwgcGFzc2VzIHN0cmFpZ2h0XG4gKiAgdGhyb3VnaCDigJQgdGhlIHN3ZWVwIHJlYWRzIGl0IGFzIFwia2VlcCBmb3JldmVyLCBza2lwIHRoaXMgb3JnJ3MgRE9SQS1zb3VyY2VcbiAqICB3aW5kb3dzXCIuIEEgcG9zaXRpdmUgb3ZlcnJpZGUgY2xhbXBzIHRvIFsxLCBSRVRFTlRJT05fTUFYX0RBWVNdOyBhIGBudWxsYCwgYVxuICogIG5vbi1pbnRlZ2VyLCBvciBhbnkgb3RoZXIgb3V0LW9mLXJhbmdlIHZhbHVlIChlLmcuIDAsIC0yKSBmYWxscyBiYWNrIHRvIHRoZVxuICogIGVudiBkZWZhdWx0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVEb3JhUmV0ZW50aW9uRGF5cyhvdmVycmlkZT86IG51bWJlciB8IG51bGwpOiBudW1iZXIge1xuICBpZiAob3ZlcnJpZGUgPT09IC0xKSByZXR1cm4gLTE7XG4gIHJldHVybiBvdmVycmlkZSAhPSBudWxsICYmIE51bWJlci5pc0ludGVnZXIob3ZlcnJpZGUpICYmIG92ZXJyaWRlID49IFJFVEVOVElPTl9NSU5fREFZU1xuICAgID8gTWF0aC5taW4ob3ZlcnJpZGUsIFJFVEVOVElPTl9NQVhfREFZUykgOiBSRVBPUlRJTkdfRE9SQV9SRVRFTlRJT05fREFZUztcbn1cblxuLyoqIFRoZSBjdXRvZmYgaW5zdGFudCBmb3IgYSByZXRlbnRpb24gd2luZG93OiByb3dzIHdpdGggYGNyZWF0ZWRfYXRgIHN0cmljdGx5XG4gKiAgYmVmb3JlIHRoaXMgKGA8IGN1dG9mZmApIGFyZSBleHBpcmVkLiBEZXRlcm1pbmlzdGljIGZvciBhIGZpeGVkIGBub3dgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldGVudGlvbkN1dG9mZihub3c6IERhdGUsIGRheXM6IG51bWJlcik6IERhdGUge1xuICByZXR1cm4gbmV3IERhdGUobm93LmdldFRpbWUoKSAtIGRheXMgKiA4Nl80MDBfMDAwKTtcbn1cblxuLyoqIFBlci1vcmcgcmV0ZW50aW9uIG92ZXJyaWRlIHJvdy4gQm90aCBudWxsYWJsZSDih5IgZ2xvYmFsIGRlZmF1bHRzLiAqL1xuIl19
@@ -99,4 +99,4 @@ export function optionalStartedAtRange(range) {
99
99
  * `in_window` is false for a look-back-only row kept solely so incidents opened
100
100
  * near `from` can correlate to a deploy that completed just before the window.
101
101
  */
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JlcG9ydGluZy9zcWwtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOztHQUVHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDZCQUE2QixFQUFrQixNQUFNLDRCQUE0QixDQUFDO0FBQzdHLE9BQU8sRUFBRSxHQUFHLEVBQVksTUFBTSxhQUFhLENBQUM7QUFFNUM7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxRQUFnQjtJQUNuRCxJQUFJLENBQUUsZ0JBQXNDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsUUFBUSxzQkFBc0IsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRyxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsUUFBZ0IsRUFBRSxNQUFXLEVBQUUsRUFBVSxFQUFFLFNBQVMsR0FBYyxRQUFRO0lBQ3JHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQSxJQUFJLE1BQU0saUJBQWlCLEVBQUUsR0FBRyxDQUFDO0lBQ2xELElBQUksUUFBUSxLQUFLLE1BQU0sSUFBSSxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbEQsT0FBTyxHQUFHLENBQUEsdUJBQXVCLEtBQUssMENBQTBDLENBQUM7SUFDbkYsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFBLGNBQWMsUUFBUSxLQUFLLEtBQUssR0FBRyxDQUFDO0FBQ2hELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsRUFBVSxFQUFFLFNBQVMsR0FBYyxRQUFRO0lBQ25FLE9BQU8sR0FBRyxFQUFFLElBQUksU0FBUyxFQUFFLENBQUM7QUFDOUIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUF5QjtJQUNyRCxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDaEYsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQTs7OztnQkFJdkIsQ0FBQztBQUVqQixvRUFBb0U7QUFDcEUsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFZLEVBQUUsRUFBVTtJQUN0RCxPQUFPLEdBQUcsQ0FBQSxtQkFBbUIsSUFBSSxxQ0FBcUMsRUFBRSxlQUFlLENBQUM7QUFDMUYsQ0FBQztBQUVEOztxRkFFcUY7QUFDckYsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEtBQXNDO0lBQzNFLE9BQU8sS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtRQUM3QixDQUFDLENBQUMsR0FBRyxDQUFBLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ25ELENBQUMsQ0FBQyxHQUFHLENBQUEsRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNtYWxsIFNRTCBmcmFnbWVudHMgYW5kIGlucHV0IGd1YXJkcyBzaGFyZWQgYWNyb3NzIHRoZSByZXBvcnRpbmcgcXVlcmllcy5cbiAqL1xuXG5pbXBvcnQgeyBSRVBPUlRfSU5URVJWQUxTLCBzY3J1YkF3c0lkZW50aWZpZXJzRnJvbVN0cmluZywgdHlwZSBXZWVrU3RhcnQgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBzcWwsIHR5cGUgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuXG4vKipcbiAqIERlZmVuc2UtaW4tZGVwdGggZ3VhcmQgZm9yIHRoZSBgREFURV9UUlVOQygke2ludGVydmFsfSwg4oCmKWAgYnVja2V0IGFyZ3VtZW50LlxuICogVGhlIHJvdXRlIGxheWVyIChgcGFyc2VSZXBvcnRJbnRlcnZhbGApIGlzIHRoZSBzZWN1cml0eSBib3VuZGFyeSBhbmQgYWxyZWFkeVxuICogcmVqZWN0cyB1bmtub3duIGludGVydmFsczsgdGhpcyBhc3NlcnQgbWFrZXMgYW4gaW52YWxpZCB2YWx1ZSBmYWlsIGZhc3QgYXQgdGhlXG4gKiBzZXJ2aWNlIGJvdW5kYXJ5IHdpdGggYSBjbGVhciBlcnJvciBpbnN0ZWFkIG9mIHN1cmZhY2luZyBhIHJhdyBQb3N0Z3JlcyBlcnJvclxuICogaWYgYSBjYWxsZXIgZXZlciBieXBhc3NlcyB0aGUgcm91dGUgdmFsaWRhdGlvbi4gU2hhcmVzIGFwaS1jb3JlJ3NcbiAqIFJFUE9SVF9JTlRFUlZBTFMgYWxsb3ctbGlzdCBzbyB0aGUgdHdvIGNhbid0IGRyaWZ0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0UmVwb3J0SW50ZXJ2YWwoaW50ZXJ2YWw6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIShSRVBPUlRfSU5URVJWQUxTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhpbnRlcnZhbCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcmVwb3J0IGludGVydmFsOiAke2ludGVydmFsfS4gRXhwZWN0ZWQgb25lIG9mOiAke1JFUE9SVF9JTlRFUlZBTFMuam9pbignLCAnKX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSB0aW1lLWJ1Y2tldCBleHByZXNzaW9uIGZvciBhIHJlcG9ydCBzZXJpZXM6IGBEQVRFX1RSVU5DYCBpbiB0aGUgUkVQT1JUJ1NcbiAqIHRpbWV6b25lLCBob25vdXJpbmcgdGhlIG9yZydzIHdlZWsgc3RhcnQuXG4gKlxuICogVHdvIHRoaW5ncyB0aGlzIGZpeGVzLCBib3RoIG9mIHdoaWNoIG1hZGUgYSBtYW5hZ2VyJ3MgcmVwb3J0IGNvdmVyIHRoZSB3cm9uZ1xuICogZGF5czpcbiAqXG4gKiAgLSBCdWNrZXRpbmcgcmFuIGluIHRoZSBkYXRhYmFzZSBzZXNzaW9uJ3MgdGltZXpvbmUsIHdoaWNoIGlzIFVUQyBpbiBldmVyeVxuICogICAgZGVwbG95LiBBIENoaWNhZ28gdGVhbSdzIFwid2Vla1wiIHRoZXJlZm9yZSBiZWdhbiAxODowMCBTdW5kYXkgbG9jYWwsIHNvIHRoZWlyXG4gKiAgICBNb25kYXkgcmVwb3J0IGN1dCBvZmYgU3VuZGF5IGV2ZW5pbmcncyB3b3JrIGFuZCBhdHRyaWJ1dGVkIGl0IHRvIHRoZSBwcmV2aW91c1xuICogICAgd2Vlay4gYEFUIFRJTUUgWk9ORWAgY29udmVydHMgdG8gbG9jYWwgd2FsbCB0aW1lIEJFRk9SRSB0cnVuY2F0aW5nLlxuICogIC0gUG9zdGdyZXMgYERBVEVfVFJVTkMoJ3dlZWsnLCDigKYpYCBpcyBJU08tODYwMSBhbmQgYWx3YXlzIHN0YXJ0cyBNb25kYXksIHdpdGhcbiAqICAgIG5vIHNldHRpbmcuIEEgU3VuZGF5LXdlZWsgb3JnIGdldHMgdGhlIGJvdW5kYXJ5IHNoaWZ0ZWQgYSBkYXkgZWl0aGVyIHNpZGUgb2ZcbiAqICAgIHRoZSB0cnVuY2F0aW9uLCB3aGljaCBpcyB0aGUgb25seSB3YXkgdG8gbW92ZSBpdC5cbiAqXG4gKiBgaW50ZXJ2YWxgIGlzIGFzc2VydGVkIGFnYWluc3QgdGhlIGFsbG93LWxpc3QgYnkge0BsaW5rIGFzc2VydFJlcG9ydEludGVydmFsfTtcbiAqIGB0emAgcmlkZXMgYXMgYSBCT1VORCBwYXJhbWV0ZXIsIG5ldmVyIGludGVycG9sYXRlZC5cbiAqXG4gKiBSZXR1cm5zIGEgYHRpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZWAgaW4gbG9jYWwgd2FsbCB0aW1lIOKAlCB3aGljaCBpcyB3aGF0IGFcbiAqIHBlcmlvZCBsYWJlbCAoXCIyMDI2LVczOFwiLCBcIjIwMjYtMDhcIikgc2hvdWxkIHJlYWQgYXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJpb2RCdWNrZXQoaW50ZXJ2YWw6IHN0cmluZywgY29sdW1uOiBTUUwsIHR6OiBzdHJpbmcsIHdlZWtTdGFydDogV2Vla1N0YXJ0ID0gJ21vbmRheScpOiBTUUwge1xuICBhc3NlcnRSZXBvcnRJbnRlcnZhbChpbnRlcnZhbCk7XG4gIGNvbnN0IGxvY2FsID0gc3FsYCgke2NvbHVtbn0gQVQgVElNRSBaT05FICR7dHp9KWA7XG4gIGlmIChpbnRlcnZhbCA9PT0gJ3dlZWsnICYmIHdlZWtTdGFydCA9PT0gJ3N1bmRheScpIHtcbiAgICByZXR1cm4gc3FsYChEQVRFX1RSVU5DKCd3ZWVrJywgJHtsb2NhbH0gKyBJTlRFUlZBTCAnMSBkYXknKSAtIElOVEVSVkFMICcxIGRheScpYDtcbiAgfVxuICByZXR1cm4gc3FsYERBVEVfVFJVTkMoJHtpbnRlcnZhbH0sICR7bG9jYWx9KWA7XG59XG5cbi8qKlxuICogQ2FjaGUta2V5IHN1ZmZpeCBmb3IgdGhlIGJ1Y2tldGluZyBzZXR0aW5ncy4gUmVwb3J0IGNhY2hlIGtleXMgY2FycmllZCB0aGVcbiAqIGludGVydmFsIGFuZCB0aGUgZGF0ZSByYW5nZSBidXQgTk9UIHRoZSB0aW1lem9uZSBvciB3ZWVrIHN0YXJ0LCBzbyBvbmNlXG4gKiBidWNrZXRpbmcgYmVjYW1lIHRpbWV6b25lLWF3YXJlIG9uZSBvcmcncyBDaGljYWdvIGJ1Y2tldHMgd291bGQgaGF2ZSBiZWVuXG4gKiBzZXJ2ZWQgdG8gYSByZXF1ZXN0IGFza2luZyBmb3IgVVRDLiBFdmVyeSBrZXllZCByZXBvcnQgbXVzdCBpbmNsdWRlIHRoaXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWNrZXRLZXkodHo6IHN0cmluZywgd2Vla1N0YXJ0OiBXZWVrU3RhcnQgPSAnbW9uZGF5Jyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHt0en06JHt3ZWVrU3RhcnR9YDtcbn1cblxuLyoqXG4gKiBTY3J1YiBBV1MgaWRlbnRpZmllcnMgZnJvbSBhbiBvcHRpb25hbCBmcmVlLWZvcm0gc3RyaW5nLCBwcmVzZXJ2aW5nIGB1bmRlZmluZWRgXG4gKiAoc28gYW4gYWJzZW50IGZpZWxkIHN0YXlzIGFic2VudCByYXRoZXIgdGhhbiBiZWNvbWluZyBhbiBlbXB0eSBzY3J1YmJlZCBzdHJpbmcpLlxuICogVGhlIERVUkFCTEUgcGVyc2lzdGVuY2UgYm91bmRhcnkgZm9yIHRoZSBpbmdlc3QgcGF0aHMg4oCUIGV2ZXJ5IHVzZXIvQVdTLWRlcml2ZWRcbiAqIHN0cmluZyBmaWVsZCBpcyBmdW5uZWxlZCB0aHJvdWdoIHRoaXMgYmVmb3JlIGluc2VydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcnViT3B0aW9uYWwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gc2NydWJBd3NJZGVudGlmaWVyc0Zyb21TdHJpbmcodmFsdWUpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJvbGwgYSBncm91cCBvZiBkZXBsb3kvc3RhZ2UgZXZlbnRzIChncm91cGVkIHBlciBleGVjdXRpb24pIHVwIHRvIG9uZSB0ZXJtaW5hbFxuICogc3RhdHVzOiBGQUlMRUQgd2lucywgdGhlbiBTVUNDRUVERUQsIGVsc2UgT1RIRVIgKHN0aWxsLXJ1bm5pbmcgLyBub24tdGVybWluYWwpLlxuICogU2hhcmVkIGJ5IHRoZSB0aHJlZSBwZXItKGVudnxzdGFnZSwgZXhlY3V0aW9uKSByb2xsdXAgQ1RFcyDigJQgRE9SQSBtZXRyaWNzLCBET1JBXG4gKiB0cmVuZCwgYW5kIGJ1aWxkIGhlYWx0aCDigJQgc28gdGhlIHByZWNlZGVuY2UgY2FuJ3QgZHJpZnQgYmV0d2VlbiB0aGVtLiBBc3N1bWVzIHRoZVxuICogZ3JvdXBlZCBldmVudCBhbGlhcyBpcyBgZWAuXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXJtaW5hbFN0YXR1c1JvbGx1cCA9IHNxbGBDQVNFXG4gICAgICAgICAgICAgIFdIRU4gYm9vbF9vcihlLnN0YXR1cyA9ICdGQUlMRUQnKSBUSEVOICdGQUlMRUQnXG4gICAgICAgICAgICAgIFdIRU4gYm9vbF9vcihlLnN0YXR1cyA9ICdTVUNDRUVERUQnKSBUSEVOICdTVUNDRUVERUQnXG4gICAgICAgICAgICAgIEVMU0UgJ09USEVSJ1xuICAgICAgICAgICAgRU5EYDtcblxuLyoqIFRoZSByZXBvcnQgd2luZG93IG9uIGBlLnN0YXJ0ZWRfYXRgIChpbmNsdXNpdmUgYFtmcm9tLCB0b11gKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydGVkQXRXaW5kb3coZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogUmV0dXJuVHlwZTx0eXBlb2Ygc3FsPiB7XG4gIHJldHVybiBzcWxgZS5zdGFydGVkX2F0ID49ICR7ZnJvbX06OnRpbWVzdGFtcHR6IEFORCBlLnN0YXJ0ZWRfYXQgPD0gJHt0b306OnRpbWVzdGFtcHR6YDtcbn1cblxuLyoqIE9wdGlvbmFsIGBbZnJvbSx0b11gIHdpbmRvdyBvbiBgZS5zdGFydGVkX2F0YCBmb3IgdGhlIGV4ZWN1dGlvbiByZXBvcnRzIOKAlFxuICogIGEgbm8tb3AgYHNxbGAgZnJhZ21lbnQgd2hlbiBlaXRoZXIgYm91bmQgaXMgYWJzZW50IChhbGwtdGltZSkuIFNoYXJlZCBieSB0aGVcbiAqICBleGVjdXRpb24tY291bnQgYW5kIHBlci1waXBlbGluZS1leGVjdXRpb24gcmVwb3J0cyBzbyB0aGV5IG5hcnJvdyBpZGVudGljYWxseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbFN0YXJ0ZWRBdFJhbmdlKHJhbmdlPzogeyBmcm9tPzogc3RyaW5nOyB0bz86IHN0cmluZyB9KTogUmV0dXJuVHlwZTx0eXBlb2Ygc3FsPiB7XG4gIHJldHVybiByYW5nZT8uZnJvbSAmJiByYW5nZT8udG9cbiAgICA/IHNxbGBBTkQgJHtzdGFydGVkQXRXaW5kb3cocmFuZ2UuZnJvbSwgcmFuZ2UudG8pfWBcbiAgICA6IHNxbGBgO1xufVxuXG4vKipcbiAqIFBlci1leGVjdXRpb24gdGVybWluYWwgZGVwbG95IHJvdyAob25lIHJvdyBwZXIgKGVudmlyb25tZW50LCBleGVjdXRpb24pLFxuICogTk9UIHBlciBzdGFnZSkuIFRoZSBTUUwgcm9sbHMgZXZlcnkgZGVwbG95IFNUQUdFIHRhcmdldGluZyBhbiBlbnYgd2l0aGluIGFuXG4gKiBleGVjdXRpb24gdXAgdG8gYSBzaW5nbGUgdGVybWluYWwgc3RhdHVzOyB0aGUgSlMgc2hhcGluZyBidWNrZXRzIHRoZXNlIGJ5XG4gKiBlbnZpcm9ubWVudC4gYGNvbW1pdF90c2AgaXMgdGhlIGV4ZWN1dGlvbidzIEVBUkxJRVNUIGNvbW1pdCB0aW1lIGFjcm9zc1xuICogYWxsIGl0cyBldmVudHMg4oCUIGNvbW1pdCBlbnJpY2htZW50IHJpZGVzIHRoZSBQSVBFTElORS9zb3VyY2UgZXZlbnQsIG5vdCB0aGVcbiAqIGRlcGxveSBTVEFHRSDigJQgam9pbmVkIGJ5IGV4ZWN1dGlvbl9pZCAobnVsbCB3aGVuIHVucmVzb2x2ZWQg4oaSIGxlYWQgYHVua25vd25gKS5cbiAqIGBpbl93aW5kb3dgIGlzIGZhbHNlIGZvciBhIGxvb2stYmFjay1vbmx5IHJvdyBrZXB0IHNvbGVseSBzbyBpbmNpZGVudHMgb3BlbmVkXG4gKiBuZWFyIGBmcm9tYCBjYW4gY29ycmVsYXRlIHRvIGEgZGVwbG95IHRoYXQgY29tcGxldGVkIGp1c3QgYmVmb3JlIHRoZSB3aW5kb3cuXG4gKi9cbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLWhlbHBlcnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcmVwb3J0aW5nL3NxbC1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7O0dBRUc7QUFFSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsNkJBQTZCLEVBQWtCLE1BQU0sNEJBQTRCLENBQUM7QUFDN0csT0FBTyxFQUFFLEdBQUcsRUFBWSxNQUFNLGFBQWEsQ0FBQztBQUU1Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQWdCO0lBQ25ELElBQUksQ0FBRSxnQkFBc0MsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNoRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixRQUFRLHNCQUFzQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNHLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxRQUFnQixFQUFFLE1BQVcsRUFBRSxFQUFVLEVBQUUsU0FBUyxHQUFjLFFBQVE7SUFDckcsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFBLElBQUksTUFBTSxpQkFBaUIsRUFBRSxHQUFHLENBQUM7SUFDbEQsSUFBSSxRQUFRLEtBQUssTUFBTSxJQUFJLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNsRCxPQUFPLEdBQUcsQ0FBQSx1QkFBdUIsS0FBSywwQ0FBMEMsQ0FBQztJQUNuRixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUEsY0FBYyxRQUFRLEtBQUssS0FBSyxHQUFHLENBQUM7QUFDaEQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxFQUFVLEVBQUUsU0FBUyxHQUFjLFFBQVE7SUFDbkUsT0FBTyxHQUFHLEVBQUUsSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUM5QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQXlCO0lBQ3JELE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoRixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFBOzs7O2dCQUl2QixDQUFDO0FBRWpCLG9FQUFvRTtBQUNwRSxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQVksRUFBRSxFQUFVO0lBQ3RELE9BQU8sR0FBRyxDQUFBLG1CQUFtQixJQUFJLHFDQUFxQyxFQUFFLGVBQWUsQ0FBQztBQUMxRixDQUFDO0FBRUQ7O3FGQUVxRjtBQUNyRixNQUFNLFVBQVUsc0JBQXNCLENBQUMsS0FBc0M7SUFDM0UsT0FBTyxLQUFLLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO1FBQzdCLENBQUMsQ0FBQyxHQUFHLENBQUEsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDbkQsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU21hbGwgU1FMIGZyYWdtZW50cyBhbmQgaW5wdXQgZ3VhcmRzIHNoYXJlZCBhY3Jvc3MgdGhlIHJlcG9ydGluZyBxdWVyaWVzLlxuICovXG5cbmltcG9ydCB7IFJFUE9SVF9JTlRFUlZBTFMsIHNjcnViQXdzSWRlbnRpZmllcnNGcm9tU3RyaW5nLCB0eXBlIFdlZWtTdGFydCB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHNxbCwgdHlwZSBTUUwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5cbi8qKlxuICogRGVmZW5zZS1pbi1kZXB0aCBndWFyZCBmb3IgdGhlIGBEQVRFX1RSVU5DKCR7aW50ZXJ2YWx9LCDigKYpYCBidWNrZXQgYXJndW1lbnQuXG4gKiBUaGUgcm91dGUgbGF5ZXIgKGBwYXJzZVJlcG9ydEludGVydmFsYCkgaXMgdGhlIHNlY3VyaXR5IGJvdW5kYXJ5IGFuZCBhbHJlYWR5XG4gKiByZWplY3RzIHVua25vd24gaW50ZXJ2YWxzOyB0aGlzIGFzc2VydCBtYWtlcyBhbiBpbnZhbGlkIHZhbHVlIGZhaWwgZmFzdCBhdCB0aGVcbiAqIHNlcnZpY2UgYm91bmRhcnkgd2l0aCBhIGNsZWFyIGVycm9yIGluc3RlYWQgb2Ygc3VyZmFjaW5nIGEgcmF3IFBvc3RncmVzIGVycm9yXG4gKiBpZiBhIGNhbGxlciBldmVyIGJ5cGFzc2VzIHRoZSByb3V0ZSB2YWxpZGF0aW9uLiBTaGFyZXMgYXBpLWNvcmUnc1xuICogUkVQT1JUX0lOVEVSVkFMUyBhbGxvdy1saXN0IHNvIHRoZSB0d28gY2FuJ3QgZHJpZnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRSZXBvcnRJbnRlcnZhbChpbnRlcnZhbDogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghKFJFUE9SVF9JTlRFUlZBTFMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKGludGVydmFsKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZXBvcnQgaW50ZXJ2YWw6ICR7aW50ZXJ2YWx9LiBFeHBlY3RlZCBvbmUgb2Y6ICR7UkVQT1JUX0lOVEVSVkFMUy5qb2luKCcsICcpfWApO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHRpbWUtYnVja2V0IGV4cHJlc3Npb24gZm9yIGEgcmVwb3J0IHNlcmllczogYERBVEVfVFJVTkNgIGluIHRoZSBSRVBPUlQnU1xuICogdGltZXpvbmUsIGhvbm91cmluZyB0aGUgb3JnJ3Mgd2VlayBzdGFydC5cbiAqXG4gKiBUd28gdGhpbmdzIHRoaXMgZml4ZXMsIGJvdGggb2Ygd2hpY2ggbWFkZSBhIG1hbmFnZXIncyByZXBvcnQgY292ZXIgdGhlIHdyb25nXG4gKiBkYXlzOlxuICpcbiAqICAtIEJ1Y2tldGluZyByYW4gaW4gdGhlIGRhdGFiYXNlIHNlc3Npb24ncyB0aW1lem9uZSwgd2hpY2ggaXMgVVRDIGluIGV2ZXJ5XG4gKiAgICBkZXBsb3kuIEEgQ2hpY2FnbyB0ZWFtJ3MgXCJ3ZWVrXCIgdGhlcmVmb3JlIGJlZ2FuIDE4OjAwIFN1bmRheSBsb2NhbCwgc28gdGhlaXJcbiAqICAgIE1vbmRheSByZXBvcnQgY3V0IG9mZiBTdW5kYXkgZXZlbmluZydzIHdvcmsgYW5kIGF0dHJpYnV0ZWQgaXQgdG8gdGhlIHByZXZpb3VzXG4gKiAgICB3ZWVrLiBgQVQgVElNRSBaT05FYCBjb252ZXJ0cyB0byBsb2NhbCB3YWxsIHRpbWUgQkVGT1JFIHRydW5jYXRpbmcuXG4gKiAgLSBQb3N0Z3JlcyBgREFURV9UUlVOQygnd2VlaycsIOKApilgIGlzIElTTy04NjAxIGFuZCBhbHdheXMgc3RhcnRzIE1vbmRheSwgd2l0aFxuICogICAgbm8gc2V0dGluZy4gQSBTdW5kYXktd2VlayBvcmcgZ2V0cyB0aGUgYm91bmRhcnkgc2hpZnRlZCBhIGRheSBlaXRoZXIgc2lkZSBvZlxuICogICAgdGhlIHRydW5jYXRpb24sIHdoaWNoIGlzIHRoZSBvbmx5IHdheSB0byBtb3ZlIGl0LlxuICpcbiAqIGBpbnRlcnZhbGAgaXMgYXNzZXJ0ZWQgYWdhaW5zdCB0aGUgYWxsb3ctbGlzdCBieSB7QGxpbmsgYXNzZXJ0UmVwb3J0SW50ZXJ2YWx9O1xuICogYHR6YCByaWRlcyBhcyBhIEJPVU5EIHBhcmFtZXRlciwgbmV2ZXIgaW50ZXJwb2xhdGVkLlxuICpcbiAqIFJldHVybnMgYSBgdGltZXN0YW1wIHdpdGhvdXQgdGltZSB6b25lYCBpbiBsb2NhbCB3YWxsIHRpbWUg4oCUIHdoaWNoIGlzIHdoYXQgYVxuICogcGVyaW9kIGxhYmVsIChcIjIwMjYtVzM4XCIsIFwiMjAyNi0wOFwiKSBzaG91bGQgcmVhZCBhcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlcmlvZEJ1Y2tldChpbnRlcnZhbDogc3RyaW5nLCBjb2x1bW46IFNRTCwgdHo6IHN0cmluZywgd2Vla1N0YXJ0OiBXZWVrU3RhcnQgPSAnbW9uZGF5Jyk6IFNRTCB7XG4gIGFzc2VydFJlcG9ydEludGVydmFsKGludGVydmFsKTtcbiAgY29uc3QgbG9jYWwgPSBzcWxgKCR7Y29sdW1ufSBBVCBUSU1FIFpPTkUgJHt0en0pYDtcbiAgaWYgKGludGVydmFsID09PSAnd2VlaycgJiYgd2Vla1N0YXJ0ID09PSAnc3VuZGF5Jykge1xuICAgIHJldHVybiBzcWxgKERBVEVfVFJVTkMoJ3dlZWsnLCAke2xvY2FsfSArIElOVEVSVkFMICcxIGRheScpIC0gSU5URVJWQUwgJzEgZGF5JylgO1xuICB9XG4gIHJldHVybiBzcWxgREFURV9UUlVOQygke2ludGVydmFsfSwgJHtsb2NhbH0pYDtcbn1cblxuLyoqXG4gKiBDYWNoZS1rZXkgc3VmZml4IGZvciB0aGUgYnVja2V0aW5nIHNldHRpbmdzLiBSZXBvcnQgY2FjaGUga2V5cyBjYXJyaWVkIHRoZVxuICogaW50ZXJ2YWwgYW5kIHRoZSBkYXRlIHJhbmdlIGJ1dCBOT1QgdGhlIHRpbWV6b25lIG9yIHdlZWsgc3RhcnQsIHNvIG9uY2VcbiAqIGJ1Y2tldGluZyBiZWNhbWUgdGltZXpvbmUtYXdhcmUgb25lIG9yZydzIENoaWNhZ28gYnVja2V0cyB3b3VsZCBoYXZlIGJlZW5cbiAqIHNlcnZlZCB0byBhIHJlcXVlc3QgYXNraW5nIGZvciBVVEMuIEV2ZXJ5IGtleWVkIHJlcG9ydCBtdXN0IGluY2x1ZGUgdGhpcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1Y2tldEtleSh0ejogc3RyaW5nLCB3ZWVrU3RhcnQ6IFdlZWtTdGFydCA9ICdtb25kYXknKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3R6fToke3dlZWtTdGFydH1gO1xufVxuXG4vKipcbiAqIFNjcnViIEFXUyBpZGVudGlmaWVycyBmcm9tIGFuIG9wdGlvbmFsIGZyZWUtZm9ybSBzdHJpbmcsIHByZXNlcnZpbmcgYHVuZGVmaW5lZGBcbiAqIChzbyBhbiBhYnNlbnQgZmllbGQgc3RheXMgYWJzZW50IHJhdGhlciB0aGFuIGJlY29taW5nIGFuIGVtcHR5IHNjcnViYmVkIHN0cmluZykuXG4gKiBUaGUgRFVSQUJMRSBwZXJzaXN0ZW5jZSBib3VuZGFyeSBmb3IgdGhlIGluZ2VzdCBwYXRocyDigJQgZXZlcnkgdXNlci9BV1MtZGVyaXZlZFxuICogc3RyaW5nIGZpZWxkIGlzIGZ1bm5lbGVkIHRocm91Z2ggdGhpcyBiZWZvcmUgaW5zZXJ0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NydWJPcHRpb25hbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyBzY3J1YkF3c0lkZW50aWZpZXJzRnJvbVN0cmluZyh2YWx1ZSkgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUm9sbCBhIGdyb3VwIG9mIGRlcGxveS9zdGFnZSBldmVudHMgKGdyb3VwZWQgcGVyIGV4ZWN1dGlvbikgdXAgdG8gb25lIHRlcm1pbmFsXG4gKiBzdGF0dXM6IEZBSUxFRCB3aW5zLCB0aGVuIFNVQ0NFRURFRCwgZWxzZSBPVEhFUiAoc3RpbGwtcnVubmluZyAvIG5vbi10ZXJtaW5hbCkuXG4gKiBTaGFyZWQgYnkgdGhlIHRocmVlIHBlci0oZW52fHN0YWdlLCBleGVjdXRpb24pIHJvbGx1cCBDVEVzIOKAlCBET1JBIG1ldHJpY3MsIERPUkFcbiAqIHRyZW5kLCBhbmQgYnVpbGQgaGVhbHRoIOKAlCBzbyB0aGUgcHJlY2VkZW5jZSBjYW4ndCBkcmlmdCBiZXR3ZWVuIHRoZW0uIEFzc3VtZXMgdGhlXG4gKiBncm91cGVkIGV2ZW50IGFsaWFzIGlzIGBlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlcm1pbmFsU3RhdHVzUm9sbHVwID0gc3FsYENBU0VcbiAgICAgICAgICAgICAgV0hFTiBib29sX29yKGUuc3RhdHVzID0gJ0ZBSUxFRCcpIFRIRU4gJ0ZBSUxFRCdcbiAgICAgICAgICAgICAgV0hFTiBib29sX29yKGUuc3RhdHVzID0gJ1NVQ0NFRURFRCcpIFRIRU4gJ1NVQ0NFRURFRCdcbiAgICAgICAgICAgICAgRUxTRSAnT1RIRVInXG4gICAgICAgICAgICBFTkRgO1xuXG4vKiogVGhlIHJlcG9ydCB3aW5kb3cgb24gYGUuc3RhcnRlZF9hdGAgKGluY2x1c2l2ZSBgW2Zyb20sIHRvXWApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0ZWRBdFdpbmRvdyhmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpOiBSZXR1cm5UeXBlPHR5cGVvZiBzcWw+IHtcbiAgcmV0dXJuIHNxbGBlLnN0YXJ0ZWRfYXQgPj0gJHtmcm9tfTo6dGltZXN0YW1wdHogQU5EIGUuc3RhcnRlZF9hdCA8PSAke3RvfTo6dGltZXN0YW1wdHpgO1xufVxuXG4vKiogT3B0aW9uYWwgYFtmcm9tLHRvXWAgd2luZG93IG9uIGBlLnN0YXJ0ZWRfYXRgIGZvciB0aGUgZXhlY3V0aW9uIHJlcG9ydHMg4oCUXG4gKiAgYSBuby1vcCBgc3FsYCBmcmFnbWVudCB3aGVuIGVpdGhlciBib3VuZCBpcyBhYnNlbnQgKGFsbC10aW1lKS4gU2hhcmVkIGJ5IHRoZVxuICogIGV4ZWN1dGlvbi1jb3VudCBhbmQgcGVyLXBpcGVsaW5lLWV4ZWN1dGlvbiByZXBvcnRzIHNvIHRoZXkgbmFycm93IGlkZW50aWNhbGx5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsU3RhcnRlZEF0UmFuZ2UocmFuZ2U/OiB7IGZyb20/OiBzdHJpbmc7IHRvPzogc3RyaW5nIH0pOiBSZXR1cm5UeXBlPHR5cGVvZiBzcWw+IHtcbiAgcmV0dXJuIHJhbmdlPy5mcm9tICYmIHJhbmdlPy50b1xuICAgID8gc3FsYEFORCAke3N0YXJ0ZWRBdFdpbmRvdyhyYW5nZS5mcm9tLCByYW5nZS50byl9YFxuICAgIDogc3FsYGA7XG59XG5cbi8qKlxuICogUGVyLWV4ZWN1dGlvbiB0ZXJtaW5hbCBkZXBsb3kgcm93IChvbmUgcm93IHBlciAoZW52aXJvbm1lbnQsIGV4ZWN1dGlvbiksXG4gKiBOT1QgcGVyIHN0YWdlKS4gVGhlIFNRTCByb2xscyBldmVyeSBkZXBsb3kgU1RBR0UgdGFyZ2V0aW5nIGFuIGVudiB3aXRoaW4gYW5cbiAqIGV4ZWN1dGlvbiB1cCB0byBhIHNpbmdsZSB0ZXJtaW5hbCBzdGF0dXM7IHRoZSBKUyBzaGFwaW5nIGJ1Y2tldHMgdGhlc2UgYnlcbiAqIGVudmlyb25tZW50LiBgY29tbWl0X3RzYCBpcyB0aGUgZXhlY3V0aW9uJ3MgRUFSTElFU1QgY29tbWl0IHRpbWUgYWNyb3NzXG4gKiBhbGwgaXRzIGV2ZW50cyDigJQgY29tbWl0IGVucmljaG1lbnQgcmlkZXMgdGhlIFBJUEVMSU5FL3NvdXJjZSBldmVudCwgbm90IHRoZVxuICogZGVwbG95IFNUQUdFIOKAlCBqb2luZWQgYnkgZXhlY3V0aW9uX2lkIChudWxsIHdoZW4gdW5yZXNvbHZlZCDihpIgbGVhZCBgdW5rbm93bmApLlxuICogYGluX3dpbmRvd2AgaXMgZmFsc2UgZm9yIGEgbG9vay1iYWNrLW9ubHkgcm93IGtlcHQgc29sZWx5IHNvIGluY2lkZW50cyBvcGVuZWRcbiAqIG5lYXIgYGZyb21gIGNhbiBjb3JyZWxhdGUgdG8gYSBkZXBsb3kgdGhhdCBjb21wbGV0ZWQganVzdCBiZWZvcmUgdGhlIHdpbmRvdy5cbiAqL1xuIl19
@@ -260,4 +260,4 @@ export async function composeSnapshot(sectionIdList, opts) {
260
260
  generatedAt: (opts.now ?? new Date()).toISOString(),
261
261
  };
262
262
  }
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvcmVwb3J0aW5nL3N0YWtlaG9sZGVyL2NvbXBvc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQW9CdEMsT0FBTyxFQUFFLFVBQVUsRUFBaUUsTUFBTSxlQUFlLENBQUM7QUFFMUcsaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQztBQWdFdEM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQWdELE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDbkcsa0JBQWtCLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztDQUM1QyxDQUFDLENBQUM7QUFFSCxvRkFBb0Y7QUFDcEYsU0FBUyxTQUFTLENBQUMsUUFBMkIsRUFBRSxRQUFnQjtJQUM5RCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDN0MsT0FBTyxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVGLENBQUM7QUFFRCxzRkFBc0Y7QUFDdEYsU0FBUyxVQUFVLENBQUMsU0FBaUIsRUFBRSxLQUFjO0lBQ25ELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXZELHVFQUF1RTtJQUN2RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0s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TSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJO2NBQ3hFLHVGQUF1RjtRQUMzRixXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUU7S0FDcEQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgY29tcG9zZXI6IHR1cm4gYSBkZWZpbml0aW9uJ3Mgc2VjdGlvbiBsaXN0IGludG8gdGhlIHNuYXBzaG90IGEgbWFuYWdlciByZWFkcy5cbiAqXG4gKiBUaHJlZSB0aGluZ3MgaXQgZG9lcyB0aGF0IHRoZSByYXcgcXVlcmllcyBkbyBub3Q6XG4gKlxuICogIC0gUEVSSU9ELU9WRVItUEVSSU9ELiBFdmVyeSBjb21wYXJhYmxlIHNlY3Rpb24gaXMgcnVuIHR3aWNlLCBmb3IgdGhpcyBwZXJpb2RcbiAqICAgIGFuZCB0aGUgb25lIGJlZm9yZSwgc28gdGhlIHNuYXBzaG90IGNhcnJpZXMgXCI5MSUgKGRvd24gMyBwb2ludHMpXCIuIFRoZSB0cmVuZFxuICogICAgaXMgd2hhdCBhIG1hbmFnZXIgYWN0cyBvbjsgdGhlIGFic29sdXRlIG51bWJlciBhbG9uZSByYXJlbHkgaXMuXG4gKiAgLSBMT0NLRUQgU0VDVElPTlMuIEEgc2VjdGlvbiB3aG9zZSBmZWF0dXJlIHRoZSBvcmcgbGFja3MgcmVuZGVycyBhcyBsb2NrZWRcbiAqICAgIGluc3RlYWQgb2YgZmFpbGluZyB0aGUgcnVuLiBBIHJlcG9ydCB0aGF0IGRpZXMgYmVjYXVzZSBvbmUgZ2F0ZWQgc2VjdGlvbiB3YXNcbiAqICAgIGluY2x1ZGVkIGlzIGEgc3VwcG9ydCB0aWNrZXQ7IGEgbG9ja2VkIHBhbmVsIGlzIGFuIHVwc2VsbC5cbiAqICAtIERBVEEtUVVBTElUWSBOT1RFUy4gTWlzc2luZyBkZXBsb3kgdGFncyBhbmQgdGlueSBzYW1wbGVzIGFyZSBzdGF0ZWQsIG5vdFxuICogICAgc2lsZW50bHkgcmVuZGVyZWQgYXMgemVyby4gXCIwIGRlcGxveXNcIiBhbmQgXCJ3ZSBjYW5ub3Qgc2VlIHlvdXIgZGVwbG95c1wiIGxvb2tcbiAqICAgIGlkZW50aWNhbCBvbiBhIGNoYXJ0IGFuZCBtZWFuIG9wcG9zaXRlIHRoaW5ncyDigJQgYSBtYW5hZ2VyIHJlYWRpbmcgdGhlIGZpcnN0XG4gKiAgICB3aGVuIGl0IGlzIHJlYWxseSB0aGUgc2Vjb25kIGRyYXdzIGV4YWN0bHkgdGhlIHdyb25nIGNvbmNsdXNpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZXNvbHZlZFBlcmlvZCB9IGZyb20gJy4vcGVyaW9kLmpzJztcbmltcG9ydCB7IGdldFNlY3Rpb24sIHR5cGUgU2VjdGlvbkNvbnRleHQsIHR5cGUgU2VjdGlvbkRhdGFTb3VyY2UsIHR5cGUgU2VjdGlvblNwZWMgfSBmcm9tICcuL3NlY3Rpb25zLmpzJztcblxuLyoqIEJlbG93IHRoaXMgbWFueSBvYnNlcnZhdGlvbnMgYSByYXRlIGlzIG5vaXNlLCBhbmQgc2F5cyBzby4gKi9cbmV4cG9ydCBjb25zdCBMT1dfU0FNUExFX1RIUkVTSE9MRCA9IDU7XG5cbi8qKiBXaGljaCB3YXkgYSBtZXRyaWMgbW92ZWQuIGBmbGF0YCB3aGVuIHRoZSBjaGFuZ2Ugcm91bmRzIHRvIG5vdGhpbmcuICovXG5leHBvcnQgdHlwZSBUcmVuZERpcmVjdGlvbiA9ICd1cCcgfCAnZG93bicgfCAnZmxhdCcgfCAndW5rbm93bic7XG5cbi8qKiBBIGRhdGEtcXVhbGl0eSBjYXZlYXQgYXR0YWNoZWQgdG8gdGhlIHdob2xlIHNuYXBzaG90LiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhUXVhbGl0eU5vdGUge1xuICBjb2RlOiAnbWlzc2luZ19kZXBsb3lfdGFnJyB8ICdtaXNzaW5nX2NvbW1pdF9kYXRhJyB8ICdsb3dfc2FtcGxlJyB8ICdzZWN0aW9uX2ZhaWxlZCcgfCAnc2VjdGlvbl9sb2NrZWQnIHwgJ3J1bGVfdW5hdmFpbGFibGUnO1xuICAvKiogTWFuYWdlci1yZWFkYWJsZS4gTm90IGEgbWV0cmljIG5hbWUgYW5kIG5vdCBhIHN0YWNrIHRyYWNlLiAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBUaGUgc2VjdGlvbiBpdCBjb25jZXJucywgd2hlbiBpdCBpcyBzZWN0aW9uLXNwZWNpZmljLiAqL1xuICBzZWN0aW9uSWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBPbmUgY29tcG9zZWQgc2VjdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9zZWRTZWN0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgLyoqIGBsb2NrZWRgIHdoZW4gdGhlIG9yZyBsYWNrcyB0aGUgZmVhdHVyZTsgYGZhaWxlZGAgd2hlbiB0aGUgcXVlcnkgdGhyZXcuICovXG4gIHN0YXRlOiAnb2snIHwgJ2xvY2tlZCcgfCAnZmFpbGVkJztcbiAgLyoqIFRoZSBmZWF0dXJlIG5lZWRlZCwgd2hlbiBsb2NrZWQg4oCUIGRyaXZlcyB0aGUgdXBzZWxsIGNvcHkuICovXG4gIHJlcXVpcmVzRmVhdHVyZT86IHN0cmluZztcbiAgLyoqIFRoaXMgcGVyaW9kJ3MgcmF3IHJlc3VsdCwgZXhhY3RseSBhcyB0aGUgZGFzaGJvYXJkIHdvdWxkIHNob3cgaXQuICovXG4gIGN1cnJlbnQ/OiB1bmtub3duO1xuICAvKiogVGhlIHByZXZpb3VzIHBlcmlvZCdzIHJlc3VsdCwgZm9yIGNvbXBhcmFibGUgc2VjdGlvbnMuICovXG4gIHByZXZpb3VzPzogdW5rbm93bjtcbiAgLyoqIFRoZSBzaW5nbGUgbnVtYmVyIGEgbWFuYWdlciByZWFkcyBmaXJzdCwgd2hlbiB0aGUgc2VjdGlvbiBoYXMgb25lLiAqL1xuICBoZWFkbGluZT86IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlcjsgdW5pdD86IHN0cmluZyB9O1xuICAvKiogQ2hhbmdlIHZlcnN1cyB0aGUgcHJldmlvdXMgcGVyaW9kLCBmb3IgY29tcGFyYWJsZSBzZWN0aW9ucy4gKi9cbiAgY2hhbmdlPzogeyBhYnNvbHV0ZTogbnVtYmVyOyBwZXJjZW50OiBudW1iZXIgfCBudWxsOyBkaXJlY3Rpb246IFRyZW5kRGlyZWN0aW9uIH07XG59XG5cbi8qKiBUaGUgZnJvemVuIG91dHB1dCBvZiBvbmUgcnVuLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTbmFwc2hvdCB7XG4gIC8qKiBQZXJpb2QgYm91bmRzICsgbGFiZWwsIGNvcGllZCBpbiBzbyB0aGUgc25hcHNob3QgaXMgc2VsZi1kZXNjcmliaW5nLiAqL1xuICBwZXJpb2Q6IHsgc3RhcnQ6IHN0cmluZzsgZW5kOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfTtcbiAgcHJldmlvdXNQZXJpb2Q6IHsgc3RhcnQ6IHN0cmluZzsgZW5kOiBzdHJpbmcgfTtcbiAgdGltZXpvbmU6IHN0cmluZztcbiAgd2Vla1N0YXJ0OiAnbW9uZGF5JyB8ICdzdW5kYXknO1xuICBzZWN0aW9uczogQ29tcG9zZWRTZWN0aW9uW107XG4gIG5vdGVzOiBEYXRhUXVhbGl0eU5vdGVbXTtcbiAgLyoqXG4gICAqIEhvdyBldmVyeSBudW1iZXIgaGVyZSB3YXMgcHJvZHVjZWQsIHNob3duIGluIHRoZSByZXBvcnQgZm9vdGVyLiBNYW5hZ2Vyc1xuICAgKiBjb21wYXJlIHJlcG9ydHMgdG8gdGhlIGRhc2hib2FyZDsgc2F5aW5nIHBsYWlubHkgdGhhdCBib3RoIHJ1biB0aGUgc2FtZVxuICAgKiBxdWVyaWVzIG92ZXIgdGhlIHNhbWUgd2luZG93IGlzIHdoYXQgbWFrZXMgYSBkaWZmZXJlbmNlIGludmVzdGlnYWJsZSByYXRoZXJcbiAgICogdGhhbiBhIHJlYXNvbiB0byBkaXN0cnVzdCBib3RoLlxuICAgKi9cbiAgbWV0aG9kb2xvZ3k6IHN0cmluZztcbiAgZ2VuZXJhdGVkQXQ6IHN0cmluZztcbn1cblxuLyoqIFdoYXQgdGhlIGNvbXBvc2VyIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIG9yZydzIGVudGl0bGVtZW50cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9zZU9wdGlvbnMge1xuICBzb3VyY2U6IFNlY3Rpb25EYXRhU291cmNlO1xuICBwZXJpb2Q6IFJlc29sdmVkUGVyaW9kO1xuICB0aW1lem9uZTogc3RyaW5nO1xuICB3ZWVrU3RhcnQ6ICdtb25kYXknIHwgJ3N1bmRheSc7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIG9yZ0lkcz86IHN0cmluZ1tdO1xuICAvKiogRmVhdHVyZXMgdGhlIG9yZyBob2xkcy4gQSBzZWN0aW9uIG5lZWRpbmcgb25lIHRoYXQgaXMgYWJzZW50IHJlbmRlcnMgbG9ja2VkLiAqL1xuICBmZWF0dXJlczogcmVhZG9ubHkgc3RyaW5nW107XG4gIG5vdz86IERhdGU7XG59XG5cbi8qKlxuICogRmVhdHVyZXMgdGhhdCwgaW5zaWRlIGEgUkVQT1JULCBzdGFuZCBpbiBmb3IgYW5vdGhlci5cbiAqXG4gKiBCdXlpbmcgU3Rha2Vob2xkZXIgUmVwb3J0cyBidXlzIHRoZSBET1JBIFNFQ1RJT05TIG9mIGEgcmVwb3J0LiBJdCBkb2VzIG5vdCBidXkgdGhlXG4gKiBsaXZlIERPUkEgZGFzaGJvYXJkLCB3aGljaCBzdGF5cyBiZWhpbmQgYGFkdmFuY2VkX3JlcG9ydGluZ2AgYW5kIGlzIGdhdGVkIG9uIGl0cyBvd25cbiAqIHJvdXRlcyDigJQgc28gdGhpcyBzdWJzdGl0dXRpb24gaXMgZGVsaWJlcmF0ZWx5IHNjb3BlZCB0byBjb21wb3NpdGlvbiBhbmQgZXhpc3RzXG4gKiBub3doZXJlIGVsc2UuIFdpdGhvdXQgaXQsIGEgUHJvIGN1c3RvbWVyIHdobyBib3VnaHQgdGhlIHJlcG9ydHMgYWRkLW9uIHdvdWxkIG9wZW5cbiAqIHRoZWlyIGZpcnN0IHdlZWtseSByZXBvcnQgYW5kIGZpbmQgaXRzIGhlYWRsaW5lIHBhbmVscyBsb2NrZWQgYmVoaW5kIGEgc2Vjb25kXG4gKiBwdXJjaGFzZSwgd2hpY2ggaXMgbm90IHdoYXQgdGhlIGFkZC1vbidzIG93biBkZXNjcmlwdGlvbiBwcm9taXNlcy5cbiAqXG4gKiBTdGF0ZWQgYXMgZGF0YSByYXRoZXIgdGhhbiBhbiBgaWZgLCBzbyBhZGRpbmcgYSBzZWN0aW9uIHRoYXQgbmVlZHMgYSBkaWZmZXJlbnRcbiAqIGZlYXR1cmUgY2Fubm90IHNpbGVudGx5IGluaGVyaXQgdGhlIGNhcnZlLW91dC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFUE9SVF9GRUFUVVJFX1NVQlNUSVRVVEVTOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSBzdHJpbmdbXT4+ID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGFkdmFuY2VkX3JlcG9ydGluZzogWydzdGFrZWhvbGRlcl9yZXBvcnRzJ10sXG59KTtcblxuLyoqIERvZXMgdGhlIG9yZyBob2xkIGByZXF1aXJlZGAsIG9yIHNvbWV0aGluZyB0aGF0IHN0YW5kcyBpbiBmb3IgaXQgaW4gYSByZXBvcnQ/ICovXG5mdW5jdGlvbiBzYXRpc2ZpZXMoZmVhdHVyZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCByZXF1aXJlZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChmZWF0dXJlcy5pbmNsdWRlcyhyZXF1aXJlZCkpIHJldHVybiB0cnVlO1xuICByZXR1cm4gKFJFUE9SVF9GRUFUVVJFX1NVQlNUSVRVVEVTW3JlcXVpcmVkXSA/PyBbXSkuc29tZSgoYWx0KSA9PiBmZWF0dXJlcy5pbmNsdWRlcyhhbHQpKTtcbn1cblxuLyoqIFB1bGwgYSBjb21wYXJhYmxlIG51bWJlciBvdXQgb2YgYSBzZWN0aW9uIHJlc3VsdCwgb3IgbnVsbCB3aGVuIHRoZXJlIGlzbid0IG9uZS4gKi9cbmZ1bmN0aW9uIGhlYWRsaW5lT2Yoc2VjdGlvbklkOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyOyB1bml0Pzogc3RyaW5nIH0gfCBudWxsIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBudWxsO1xuXG4gIC8vIFRpbWUgc2VyaWVzIChzdWNjZXNzIHJhdGUsIGJ1aWxkIHN1Y2Nlc3MpOiB0aGUgTEFTVCBidWNrZXQgaXMgXCJub3dcIi5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBsYXN0ID0gdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaWYgKHR5cGVvZiBsYXN0Py5zdWNjZXNzX3BjdCA9PT0gJ251bWJlcicpIHJldHVybiB7IGxhYmVsOiAnU3VjY2VzcyByYXRlJywgdmFsdWU6IGxhc3Quc3VjY2Vzc19wY3QsIHVuaXQ6ICclJyB9O1xuICAgIC8vIEV4ZWN1dGlvbiBjb3VudHM6IHRvdGFsIHJ1bnMgYWNyb3NzIHBpcGVsaW5lcy5cbiAgICAvL1xuICAgIC8vIEEgdG90YWwgb2YgWkVSTyBpcyBhIHJlYWwgaGVhZGxpbmUsIG5vdCBtaXNzaW5nIGRhdGE6IFwiMCBkZXBsb3lzLCBkb3duIGZyb21cbiAgICAvLyA1XCIgaXMgdGhlIHNpbmdsZSBtb3N0IGltcG9ydGFudCB0aGluZyBhIHdlZWtseSByZXBvcnQgY2FuIHRlbGwgYSBtYW5hZ2VyLFxuICAgIC8vIGFuZCB0cmVhdGluZyAwIGFzIFwibm8gdmFsdWVcIiBtYWRlIGV4YWN0bHkgdGhhdCBjYXNlIGRpc2FwcGVhciDigJQgdGhlIGNoYW5nZVxuICAgIC8vIGNhbWUgYmFjayBgdW5rbm93bmAgYW5kIG5vIGFycm93IHdhcyBzaG93bi4gU28gdGhlIHRlc3QgaXMgd2hldGhlciBhbnkgcm93XG4gICAgLy8gQ0FSUklFRCBhIGNvdW50LCBub3Qgd2hldGhlciB0aGUgc3VtIGlzIHBvc2l0aXZlLlxuICAgIGxldCBjb3VudGVkID0gZmFsc2U7XG4gICAgY29uc3QgdG90YWwgPSAodmFsdWUgYXMgQXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KS5yZWR1Y2UoKHN1bSwgcm93KSA9PiB7XG4gICAgICBjb25zdCBuID0gcm93LnRvdGFsID8/IHJvdy5jb3VudCA/PyByb3cuZXhlY3V0aW9ucztcbiAgICAgIGlmICh0eXBlb2YgbiAhPT0gJ251bWJlcicpIHJldHVybiBzdW07XG4gICAgICBjb3VudGVkID0gdHJ1ZTtcbiAgICAgIHJldHVybiBzdW0gKyBuO1xuICAgIH0sIDApO1xuICAgIGlmIChjb3VudGVkKSByZXR1cm4geyBsYWJlbDogJ1RvdGFsJywgdmFsdWU6IHRvdGFsIH07XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBvYmogPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLy8gRE9SQTogZGVwbG95bWVudCBmcmVxdWVuY3kgaXMgdGhlIGhlYWRsaW5lIGEgbWFuYWdlciByZWNvZ25pc2VzLlxuICBjb25zdCBlbnZzID0gb2JqLmVudmlyb25tZW50cztcbiAgaWYgKEFycmF5LmlzQXJyYXkoZW52cykgJiYgZW52cy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZmlyc3QgPSBlbnZzWzBdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbnN0IGRmID0gKGZpcnN0LmRlcGxveW1lbnRGcmVxdWVuY3kgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpPy5kZXBsb3ltZW50cztcbiAgICBpZiAodHlwZW9mIGRmID09PSAnbnVtYmVyJykgcmV0dXJuIHsgbGFiZWw6ICdEZXBsb3lzJywgdmFsdWU6IGRmIH07XG4gIH1cbiAgLy8gUGx1Z2luIHN1bW1hcnkgYW5kIGZyaWVuZHM6IGEgcGxhaW4gdG90YWwuXG4gIC8vIFplcm8gaXMgYSB2YWx1ZSBoZXJlIHRvbyDigJQgYHBsdWdpbl92ZXJzaW9uc2AgcmVwb3J0aW5nIDAgb3V0ZGF0ZWQgcGx1Z2lucyBpc1xuICAvLyBnb29kIG5ld3MgYSBtYW5hZ2VyIHNob3VsZCBzZWUsIG5vdCBhbiBhYnNlbnQgc2VjdGlvbi5cbiAgZm9yIChjb25zdCBrZXkgb2YgWyd0b3RhbCcsICdjb3VudCcsICdkZXBsb3ltZW50cyddKSB7XG4gICAgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ251bWJlcicpIHJldHVybiB7IGxhYmVsOiBzZWN0aW9uSWQgPT09ICdwbHVnaW5fdmVyc2lvbnMnID8gJ091dGRhdGVkJyA6ICdUb3RhbCcsIHZhbHVlOiBvYmpba2V5XSBhcyBudW1iZXIgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqIENoYW5nZSBiZXR3ZWVuIHR3byBoZWFkbGluZSBudW1iZXJzLiAqL1xuZnVuY3Rpb24gY2hhbmdlT2YoXG4gIGN1cnJlbnQ6IHsgdmFsdWU6IG51bWJlciB9IHwgbnVsbCxcbiAgcHJldmlvdXM6IHsgdmFsdWU6IG51bWJlciB9IHwgbnVsbCxcbik6IENvbXBvc2VkU2VjdGlvblsnY2hhbmdlJ10ge1xuICBpZiAoIWN1cnJlbnQgfHwgIXByZXZpb3VzKSByZXR1cm4geyBhYnNvbHV0ZTogMCwgcGVyY2VudDogbnVsbCwgZGlyZWN0aW9uOiAndW5rbm93bicgfTtcbiAgY29uc3QgYWJzb2x1dGUgPSBOdW1iZXIoKGN1cnJlbnQudmFsdWUgLSBwcmV2aW91cy52YWx1ZSkudG9GaXhlZCgyKSk7XG4gIC8vIEEgcGVyY2VudCBjaGFuZ2Ugb2ZmIGEgemVybyBiYXNlbGluZSBpcyB1bmRlZmluZWQsIG5vdCBpbmZpbml0ZTogZ29pbmcgZnJvbSAwXG4gIC8vIHRvIDUgZGVwbG95cyBpcyBcIjUgbW9yZVwiLCBuZXZlciBcIiviiJ4lXCIuXG4gIGNvbnN0IHBlcmNlbnQgPSBwcmV2aW91cy52YWx1ZSA9PT0gMCA/IG51bGwgOiBOdW1iZXIoKChhYnNvbHV0ZSAvIHByZXZpb3VzLnZhbHVlKSAqIDEwMCkudG9GaXhlZCgxKSk7XG4gIGNvbnN0IGRpcmVjdGlvbjogVHJlbmREaXJlY3Rpb24gPSBhYnNvbHV0ZSA9PT0gMCA/ICdmbGF0JyA6IGFic29sdXRlID4gMCA/ICd1cCcgOiAnZG93bic7XG4gIHJldHVybiB7IGFic29sdXRlLCBwZXJjZW50LCBkaXJlY3Rpb24gfTtcbn1cblxuLyoqIENvdW50IHRoZSBvYnNlcnZhdGlvbnMgYmVoaW5kIGEgc2VjdGlvbiwgZm9yIHRoZSBsb3ctc2FtcGxlIG5vdGUuICovXG5mdW5jdGlvbiBzYW1wbGVTaXplKHZhbHVlOiB1bmtub3duKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiAodmFsdWUgYXMgQXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KS5yZWR1Y2UoKHN1bSwgcm93KSA9PiB7XG4gICAgICBjb25zdCBuID0gcm93LnRvdGFsID8/IHJvdy5jb3VudCA/PyByb3cuZXhlY3V0aW9ucyA/PyByb3cuZGVwbG95bWVudHM7XG4gICAgICByZXR1cm4gc3VtICsgKHR5cGVvZiBuID09PSAnbnVtYmVyJyA/IG4gOiAwKTtcbiAgICB9LCAwKTtcbiAgfVxuICBjb25zdCBvYmogPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gIGNvbnN0IGVudnMgPSBvYmo/LmVudmlyb25tZW50cztcbiAgaWYgKEFycmF5LmlzQXJyYXkoZW52cykpIHtcbiAgICByZXR1cm4gZW52cy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBlKSA9PiB7XG4gICAgICBjb25zdCBhdHRlbXB0cyA9ICgoZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuY2hhbmdlRmFpbHVyZVJhdGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpPy5hdHRlbXB0cztcbiAgICAgIHJldHVybiBzdW0gKyAodHlwZW9mIGF0dGVtcHRzID09PSAnbnVtYmVyJyA/IGF0dGVtcHRzIDogMCk7XG4gICAgfSwgMCk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKiBEZXBsb3ktY292ZXJhZ2Ugbm90ZXM6IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gXCJ6ZXJvIGRlcGxveXNcIiBhbmQgXCJibGluZFwiLiAqL1xuZnVuY3Rpb24gZGVwbG95Q292ZXJhZ2VOb3Rlcyhkb3JhOiB1bmtub3duKTogRGF0YVF1YWxpdHlOb3RlW10ge1xuICBjb25zdCBub3RlczogRGF0YVF1YWxpdHlOb3RlW10gPSBbXTtcbiAgY29uc3QgY292ZXJhZ2UgPSAoZG9yYSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwpPy5jb3ZlcmFnZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgd2l0aG91dCA9IGNvdmVyYWdlPy53aXRob3V0RGVwbG95cztcbiAgaWYgKHR5cGVvZiB3aXRob3V0ID09PSAnbnVtYmVyJyAmJiB3aXRob3V0ID4gMCkge1xuICAgIG5vdGVzLnB1c2goe1xuICAgICAgY29kZTogJ21pc3NpbmdfZGVwbG95X3RhZycsXG4gICAgICBzZWN0aW9uSWQ6ICdkb3JhJyxcbiAgICAgIG1lc3NhZ2U6IGBEZXBsb3kgZGF0YSB1bmF2YWlsYWJsZSBmb3IgJHt3aXRob3V0fSBwaXBlbGluZSR7d2l0aG91dCA9PT0gMSA/ICcnIDogJ3MnfTogdGhleSBoYXZlIG5vdCByZS1zeW50aGVkIHdpdGggZGVwbG95IHRhZ3MsIHNvIHRoZWlyIGRlcGxveXMgYXJlIG5vdCBjb3VudGVkIGhlcmUuIFRoaXMgaXMgbm90IFwiemVybyBkZXBsb3lzXCIuYCxcbiAgICB9KTtcbiAgfVxuICBjb25zdCBlbnZzID0gKGRvcmEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsKT8uZW52aXJvbm1lbnRzO1xuICBpZiAoQXJyYXkuaXNBcnJheShlbnZzKSkge1xuICAgIGNvbnN0IG5vTGVhZCA9IChlbnZzIGFzIEFycmF5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PikuZmlsdGVyKChlKSA9PiB7XG4gICAgICBjb25zdCBsdCA9IGUubGVhZFRpbWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gbHQgJiYgbHQubWVkaWFuU2Vjb25kcyA9PT0gbnVsbDtcbiAgICB9KTtcbiAgICBpZiAobm9MZWFkLmxlbmd0aCA+IDApIHtcbiAgICAgIG5vdGVzLnB1c2goe1xuICAgICAgICBjb2RlOiAnbWlzc2luZ19jb21taXRfZGF0YScsXG4gICAgICAgIHNlY3Rpb25JZDogJ2RvcmEnLFxuICAgICAgICBtZXNzYWdlOiBgTGVhZCB0aW1lIHVuYXZhaWxhYmxlIGZvciAke25vTGVhZC5sZW5ndGh9IGVudmlyb25tZW50JHtub0xlYWQubGVuZ3RoID09PSAxID8gJycgOiAncyd9OiBubyBzdWNjZXNzZnVsIGRlcGxveSBjYXJyaWVkIGEgcmVzb2x2YWJsZSBjb21taXQgdGltZXN0YW1wLCBzbyBjb21taXQtdG8tZGVwbG95IHRpbWUgY291bGQgbm90IGJlIG1lYXN1cmVkLmAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vdGVzO1xufVxuXG4vKiogTWFuYWdlci1mYWNpbmcgbmFtZXMgb2YgdGhlIG5lZWRzLWF0dGVudGlvbiBydWxlcywgZm9yIHRoZSB1bmF2YWlsYWJsZSBub3RlLiAqL1xuY29uc3QgQVRURU5USU9OX1JVTEVfTEFCRUxTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBsb3dfc3VjY2Vzc19yYXRlOiAnbG93IHN1Y2Nlc3MgcmF0ZScsXG4gIHNsb3dlcl9wOTU6ICdzbG93ZXIgYnVpbGRzJyxcbiAgY29uc2VjdXRpdmVfZmFpbHVyZXM6ICdjb25zZWN1dGl2ZSBmYWlsdXJlcycsXG4gIG5vX3JlY2VudF9zdWNjZXNzOiAnbm8gcmVjZW50IHN1Y2Nlc3MnLFxuICBmYWlsZWRfYWZ0ZXJfY29uZmlnX2NoYW5nZTogJ2ZhaWxlZCBhZnRlciBhIGNvbmZpZ3VyYXRpb24gY2hhbmdlJyxcbiAgdnVsbmVyYWJsZV9wbHVnaW46ICd2dWxuZXJhYmxlIHBsdWdpbnMnLFxuICBub19kZXBsb3lfdHJhY2tpbmc6ICdkZXBsb3kgdHJhY2tpbmcnLFxufTtcblxuLyoqXG4gKiBUaGUgbmVlZHMtYXR0ZW50aW9uIHJ1bGVzIHRoYXQgY291bGQgbm90IHJ1bi4gQW4gZW1wdHkgbGlzdCB0aGVyZSBtdXN0IHJlYWQgYXNcbiAqIFwibm90aGluZyB0cmlwcGVkXCIsIG5ldmVyIGFzIFwiYSBydWxlIGNvdWxkIG5vdCBsb29rXCIg4oCUIGFib3ZlIGFsbCBmb3IgdGhlXG4gKiB2dWxuZXJhYmxlLXBsdWdpbiBydWxlLCB3aGVyZSB0aGUgc2Vjb25kIHJlYWRpbmcgaXMgYSBmYWxzZSBhbGwtY2xlYXIuXG4gKi9cbmZ1bmN0aW9uIGF0dGVudGlvbk5vdGVzKHZhbHVlOiB1bmtub3duKTogRGF0YVF1YWxpdHlOb3RlW10ge1xuICBjb25zdCBydWxlcyA9ICh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwpPy51bmF2YWlsYWJsZVJ1bGVzO1xuICBpZiAoIUFycmF5LmlzQXJyYXkocnVsZXMpIHx8IHJ1bGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuICBjb25zdCBuYW1lcyA9IHJ1bGVzLm1hcCgocikgPT4gQVRURU5USU9OX1JVTEVfTEFCRUxTW1N0cmluZyhyKV0gPz8gU3RyaW5nKHIpKTtcbiAgcmV0dXJuIFt7XG4gICAgY29kZTogJ3J1bGVfdW5hdmFpbGFibGUnLFxuICAgIHNlY3Rpb25JZDogJ25lZWRzX2F0dGVudGlvbicsXG4gICAgbWVzc2FnZTogYFNvbWUgY2hlY2tzIGNvdWxkIG5vdCBydW4gdGhpcyBwZXJpb2QgKCR7bmFtZXMuam9pbignLCAnKX0pOiB0aGVpciBkYXRhIHdhcyB1bmF2YWlsYWJsZS4gYFxuICAgICAgKyAnQSBwaXBlbGluZSBtaXNzaW5nIGZyb20gdGhpcyBsaXN0IHdhcyBub3QgY2hlY2tlZCBmb3IgdGhvc2Ug4oCUIHRoaXMgaXMgbm90IGFuIGFsbC1jbGVhci4nLFxuICB9XTtcbn1cblxuLyoqXG4gKiBDb21wb3NlIG9uZSBwZXJpb2QncyBzbmFwc2hvdC5cbiAqXG4gKiBOZXZlciB0aHJvd3MgZm9yIGEgc2VjdGlvbi1sZXZlbCBwcm9ibGVtOiBhIHNlY3Rpb24gdGhhdCBmYWlscyBpcyBtYXJrZWRcbiAqIGBmYWlsZWRgIHdpdGggYSBub3RlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIHJlcG9ydCBzdGlsbCByZWFjaGVzIHRoZSBsZWFkLiBBIHJ1blxuICogdGhhdCBwcm9kdWNlcyBuaW5lIGdvb2Qgc2VjdGlvbnMgYW5kIG9uZSBmYWlsdXJlIGlzIHVzZWZ1bDsgYSBydW4gdGhhdCBwcm9kdWNlc1xuICogYW4gZXhjZXB0aW9uIGlzIG5vdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbXBvc2VTbmFwc2hvdChzZWN0aW9uSWRMaXN0OiByZWFkb25seSBzdHJpbmdbXSwgb3B0czogQ29tcG9zZU9wdGlvbnMpOiBQcm9taXNlPFJlcG9ydFNuYXBzaG90PiB7XG4gIGNvbnN0IHsgc291cmNlLCBwZXJpb2QsIHRpbWV6b25lLCB3ZWVrU3RhcnQsIG9yZ0lkLCBvcmdJZHMsIGZlYXR1cmVzIH0gPSBvcHRzO1xuICBjb25zdCBub3RlczogRGF0YVF1YWxpdHlOb3RlW10gPSBbXTtcbiAgY29uc3Qgc2VjdGlvbnM6IENvbXBvc2VkU2VjdGlvbltdID0gW107XG5cbiAgY29uc3QgY3R4Rm9yID0gKGZyb206IERhdGUsIHRvOiBEYXRlKTogU2VjdGlvbkNvbnRleHQgPT4gKHtcbiAgICBvcmdJZCxcbiAgICAuLi4ob3JnSWRzID8geyBvcmdJZHMgfSA6IHt9KSxcbiAgICBmcm9tOiBmcm9tLnRvSVNPU3RyaW5nKCksXG4gICAgdG86IHRvLnRvSVNPU3RyaW5nKCksXG4gICAgdHo6IHRpbWV6b25lLFxuICAgIHdlZWtTdGFydCxcbiAgICAvLyBUaGUgcHJldmlvdXMgcGVyaW9kIHRyYXZlbHMgV0lUSCB0aGUgY29udGV4dCwgZm9yIHRoZSBhbmFseXRpY3Mgc2VjdGlvbnNcbiAgICAvLyB3aG9zZSB0cmVuZCBpcyBwZXIgY2F0ZWdvcnksIHBlciBzdGFnZSBvciBwZXIgcGlwZWxpbmUuIFRob3NlIGNhbm5vdCBiZVxuICAgIC8vIGhhbmRsZWQgYnkgcnVubmluZyB0aGUgc2VjdGlvbiB0d2ljZSBhbmQgY29tcGFyaW5nIG9uZSBoZWFkbGluZSDigJQgdGhlXG4gICAgLy8gY29tcGFyaXNvbiBpcyBhIGpvaW4sIGFuZCBkb2luZyBpdCBpbiB0aGUgY29tcG9zZXIgYWZ0ZXJ3YXJkcyB3b3VsZCBtZWFuXG4gICAgLy8gcmUtaW1wbGVtZW50aW5nIGl0IGZvciBldmVyeSBzaGFwZS5cbiAgICBwcmV2aW91c0Zyb206IHBlcmlvZC5wcmV2U3RhcnQudG9JU09TdHJpbmcoKSxcbiAgICBwcmV2aW91c1RvOiBwZXJpb2QucHJldkVuZC50b0lTT1N0cmluZygpLFxuICB9KTtcbiAgY29uc3QgY3VycmVudEN0eCA9IGN0eEZvcihwZXJpb2Quc3RhcnQsIHBlcmlvZC5lbmQpO1xuICBjb25zdCBwcmV2aW91c0N0eCA9IGN0eEZvcihwZXJpb2QucHJldlN0YXJ0LCBwZXJpb2QucHJldkVuZCk7XG5cbiAgZm9yIChjb25zdCBpZCBvZiBzZWN0aW9uSWRMaXN0KSB7XG4gICAgY29uc3Qgc3BlYzogU2VjdGlvblNwZWMgfCB1bmRlZmluZWQgPSBnZXRTZWN0aW9uKGlkKTtcbiAgICBpZiAoIXNwZWMpIHtcbiAgICAgIC8vIEFuIHVua25vd24gaWQgaXMgYSBkZWZpbml0aW9uIHJlZmVyZW5jaW5nIGEgc2VjdGlvbiB0aGF0IG5vIGxvbmdlciBleGlzdHMuXG4gICAgICAvLyBSZWNvcmRlZCByYXRoZXIgdGhhbiBkcm9wcGVkLCBzbyB0aGUgbGVhZCBjYW4gc2VlIHdoeSBhIHBhbmVsIHZhbmlzaGVkLlxuICAgICAgc2VjdGlvbnMucHVzaCh7IGlkLCB0aXRsZTogaWQsIHN0YXRlOiAnZmFpbGVkJyB9KTtcbiAgICAgIG5vdGVzLnB1c2goeyBjb2RlOiAnc2VjdGlvbl9mYWlsZWQnLCBzZWN0aW9uSWQ6IGlkLCBtZXNzYWdlOiBgVW5rbm93biByZXBvcnQgc2VjdGlvbiBcIiR7aWR9XCIg4oCUIGl0IG1heSBoYXZlIGJlZW4gcmVtb3ZlZC5gIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHNwZWMucmVxdWlyZXNGZWF0dXJlICYmICFzYXRpc2ZpZXMoZmVhdHVyZXMsIHNwZWMucmVxdWlyZXNGZWF0dXJlKSkge1xuICAgICAgc2VjdGlvbnMucHVzaCh7XG4gICAgICAgIGlkLCB0aXRsZTogc3BlYy50aXRsZSwgc3RhdGU6ICdsb2NrZWQnLCByZXF1aXJlc0ZlYXR1cmU6IHNwZWMucmVxdWlyZXNGZWF0dXJlLFxuICAgICAgfSk7XG4gICAgICBub3Rlcy5wdXNoKHtcbiAgICAgICAgY29kZTogJ3NlY3Rpb25fbG9ja2VkJyxcbiAgICAgICAgc2VjdGlvbklkOiBpZCxcbiAgICAgICAgbWVzc2FnZTogYFwiJHtzcGVjLnRpdGxlfVwiIG5lZWRzIHRoZSAke3NwZWMucmVxdWlyZXNGZWF0dXJlfSBhZGQtb24uIFRoZSByZXN0IG9mIHRoaXMgcmVwb3J0IGlzIHVuYWZmZWN0ZWQuYCxcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBzcGVjLnJ1bihzb3VyY2UsIGN1cnJlbnRDdHgpO1xuICAgICAgY29uc3QgY29tcG9zZWQ6IENvbXBvc2VkU2VjdGlvbiA9IHsgaWQsIHRpdGxlOiBzcGVjLnRpdGxlLCBzdGF0ZTogJ29rJywgY3VycmVudCB9O1xuXG4gICAgICBjb25zdCBoZWFkID0gaGVhZGxpbmVPZihpZCwgY3VycmVudCk7XG4gICAgICBpZiAoaGVhZCkgY29tcG9zZWQuaGVhZGxpbmUgPSBoZWFkO1xuXG4gICAgICBpZiAoc3BlYy5jb21wYXJhYmxlKSB7XG4gICAgICAgIC8vIFRoZSBjb21wYXJpc29uIGlzIGJlc3QtZWZmb3J0OiBhIGZhaWxlZCBwcmV2aW91cyBwZXJpb2QgbXVzdCBub3QgY29zdCB0aGVcbiAgICAgICAgLy8gbGVhZCB0aGlzIHBlcmlvZCdzIG51bWJlcnMuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXMgPSBhd2FpdCBzcGVjLnJ1bihzb3VyY2UsIHByZXZpb3VzQ3R4KTtcbiAgICAgICAgICBjb21wb3NlZC5wcmV2aW91cyA9IHByZXZpb3VzO1xuICAgICAgICAgIGNvbXBvc2VkLmNoYW5nZSA9IGNoYW5nZU9mKGhlYWQsIGhlYWRsaW5lT2YoaWQsIHByZXZpb3VzKSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGNvbXBvc2VkLmNoYW5nZSA9IHsgYWJzb2x1dGU6IDAsIHBlcmNlbnQ6IG51bGwsIGRpcmVjdGlvbjogJ3Vua25vd24nIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2FtcGxlID0gc2FtcGxlU2l6ZShjdXJyZW50KTtcbiAgICAgIGlmIChzYW1wbGUgIT09IG51bGwgJiYgc2FtcGxlID4gMCAmJiBzYW1wbGUgPCBMT1dfU0FNUExFX1RIUkVTSE9MRCkge1xuICAgICAgICBub3Rlcy5wdXNoKHtcbiAgICAgICAgICBjb2RlOiAnbG93X3NhbXBsZScsXG4gICAgICAgICAgc2VjdGlvbklkOiBpZCxcbiAgICAgICAgICBtZXNzYWdlOiBgXCIke3NwZWMudGl0bGV9XCIgaXMgYmFzZWQgb24gJHtzYW1wbGV9IG9ic2VydmF0aW9uJHtzYW1wbGUgPT09IDEgPyAnJyA6ICdzJ30g4oCUIHBlcmNlbnRhZ2VzIHN3aW5nIHdpbGRseSBhdCB0aGlzIHZvbHVtZS4gUmVhZCB0aGUgY291bnRzLCBub3QgdGhlIHJhdGUuYCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpZCA9PT0gJ2RvcmEnKSBub3Rlcy5wdXNoKC4uLmRlcGxveUNvdmVyYWdlTm90ZXMoY3VycmVudCkpO1xuICAgICAgaWYgKGlkID09PSAnbmVlZHNfYXR0ZW50aW9uJykgbm90ZXMucHVzaCguLi5hdHRlbnRpb25Ob3RlcyhjdXJyZW50KSk7XG4gICAgICBzZWN0aW9ucy5wdXNoKGNvbXBvc2VkKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNlY3Rpb25zLnB1c2goeyBpZCwgdGl0bGU6IHNwZWMudGl0bGUsIHN0YXRlOiAnZmFpbGVkJyB9KTtcbiAgICAgIG5vdGVzLnB1c2goe1xuICAgICAgICBjb2RlOiAnc2VjdGlvbl9mYWlsZWQnLFxuICAgICAgICBzZWN0aW9uSWQ6IGlkLFxuICAgICAgICBtZXNzYWdlOiBgXCIke3NwZWMudGl0bGV9XCIgY291bGQgbm90IGJlIGNvbXB1dGVkIGZvciB0aGlzIHBlcmlvZC4gVGhlIHJlc3Qgb2YgdGhlIHJlcG9ydCBpcyB1bmFmZmVjdGVkLmAsXG4gICAgICB9KTtcbiAgICAgIHZvaWQgZXJyOyAvLyB0aGUgcmVhc29uIGlzIGxvZ2dlZCBieSB0aGUgY2FsbGVyLCBuZXZlciBzaG93biB0byBhIG1hbmFnZXJcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBlcmlvZDogeyBzdGFydDogcGVyaW9kLnN0YXJ0LnRvSVNPU3RyaW5nKCksIGVuZDogcGVyaW9kLmVuZC50b0lTT1N0cmluZygpLCBsYWJlbDogcGVyaW9kLmxhYmVsIH0sXG4gICAgcHJldmlvdXNQZXJpb2Q6IHsgc3RhcnQ6IHBlcmlvZC5wcmV2U3RhcnQudG9JU09TdHJpbmcoKSwgZW5kOiBwZXJpb2QucHJldkVuZC50b0lTT1N0cmluZygpIH0sXG4gICAgdGltZXpvbmUsXG4gICAgd2Vla1N0YXJ0LFxuICAgIHNlY3Rpb25zLFxuICAgIG5vdGVzLFxuICAgIG1ldGhvZG9sb2d5OlxuICAgICAgYENvbXB1dGVkIGZyb20gcGlwZWxpbmUgZXZlbnRzIGJldHdlZW4gJHtwZXJpb2Quc3RhcnQudG9JU09TdHJpbmcoKX0gYW5kICR7cGVyaW9kLmVuZC50b0lTT1N0cmluZygpfSwgYFxuICAgICAgKyBgYnVja2V0ZWQgaW4gJHt0aW1lem9uZX0gd2l0aCB3ZWVrcyBzdGFydGluZyAke3dlZWtTdGFydH0uIENvbXBhcmlzb24gcGVyaW9kOiBgXG4gICAgICArIGAke3BlcmlvZC5wcmV2U3RhcnQudG9JU09TdHJpbmcoKX0gdG8gJHtwZXJpb2QucHJldkVuZC50b0lTT1N0cmluZygpfS4gYFxuICAgICAgKyAnVGhlc2UgYXJlIHRoZSBzYW1lIHF1ZXJpZXMgdGhlIGRhc2hib2FyZCBydW5zIG92ZXIgdGhlIHNhbWUgd2luZG93LCBzbyB0aGUgdHdvIGFncmVlLicsXG4gICAgZ2VuZXJhdGVkQXQ6IChvcHRzLm5vdyA/PyBuZXcgRGF0ZSgpKS50b0lTT1N0cmluZygpLFxuICB9O1xufVxuIl19
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yZXBvcnRpbmcvc3Rha2Vob2xkZXIvY29tcG9zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBb0J0QyxPQUFPLEVBQUUsVUFBVSxFQUFpRSxNQUFNLGVBQWUsQ0FBQztBQUUxRyxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBZ0V0Qzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBZ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNuRyxrQkFBa0IsRUFBRSxDQUFDLHFCQUFxQixDQUFDO0NBQzVDLENBQUMsQ0FBQztBQUVILG9GQUFvRjtBQUNwRixTQUFTLFNBQVMsQ0FBQyxRQUEyQixFQUFFLFFBQWdCO0lBQzlELElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUM3QyxPQUFPLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUYsQ0FBQztBQUVELHNGQUFzRjtBQUN0RixTQUFTLFVBQVUsQ0FBQyxTQUFpQixFQUFFLEtBQWM7SUFDbkQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFdkQsdUVBQXVFO0lBQ3ZFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBNEIs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LFdBQVcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUk7Y0FDeEUsdUZBQXVGO1FBQzNGLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRTtLQUNwRCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBjb21wb3NlcjogdHVybiBhIGRlZmluaXRpb24ncyBzZWN0aW9uIGxpc3QgaW50byB0aGUgc25hcHNob3QgYSBtYW5hZ2VyIHJlYWRzLlxuICpcbiAqIFRocmVlIHRoaW5ncyBpdCBkb2VzIHRoYXQgdGhlIHJhdyBxdWVyaWVzIGRvIG5vdDpcbiAqXG4gKiAgLSBQRVJJT0QtT1ZFUi1QRVJJT0QuIEV2ZXJ5IGNvbXBhcmFibGUgc2VjdGlvbiBpcyBydW4gdHdpY2UsIGZvciB0aGlzIHBlcmlvZFxuICogICAgYW5kIHRoZSBvbmUgYmVmb3JlLCBzbyB0aGUgc25hcHNob3QgY2FycmllcyBcIjkxJSAoZG93biAzIHBvaW50cylcIi4gVGhlIHRyZW5kXG4gKiAgICBpcyB3aGF0IGEgbWFuYWdlciBhY3RzIG9uOyB0aGUgYWJzb2x1dGUgbnVtYmVyIGFsb25lIHJhcmVseSBpcy5cbiAqICAtIExPQ0tFRCBTRUNUSU9OUy4gQSBzZWN0aW9uIHdob3NlIGZlYXR1cmUgdGhlIG9yZyBsYWNrcyByZW5kZXJzIGFzIGxvY2tlZFxuICogICAgaW5zdGVhZCBvZiBmYWlsaW5nIHRoZSBydW4uIEEgcmVwb3J0IHRoYXQgZGllcyBiZWNhdXNlIG9uZSBnYXRlZCBzZWN0aW9uIHdhc1xuICogICAgaW5jbHVkZWQgaXMgYSBzdXBwb3J0IHRpY2tldDsgYSBsb2NrZWQgcGFuZWwgaXMgYW4gdXBzZWxsLlxuICogIC0gREFUQS1RVUFMSVRZIE5PVEVTLiBNaXNzaW5nIGRlcGxveSB0YWdzIGFuZCB0aW55IHNhbXBsZXMgYXJlIHN0YXRlZCwgbm90XG4gKiAgICBzaWxlbnRseSByZW5kZXJlZCBhcyB6ZXJvLiBcIjAgZGVwbG95c1wiIGFuZCBcIndlIGNhbm5vdCBzZWUgeW91ciBkZXBsb3lzXCIgbG9va1xuICogICAgaWRlbnRpY2FsIG9uIGEgY2hhcnQgYW5kIG1lYW4gb3Bwb3NpdGUgdGhpbmdzIOKAlCBhIG1hbmFnZXIgcmVhZGluZyB0aGUgZmlyc3RcbiAqICAgIHdoZW4gaXQgaXMgcmVhbGx5IHRoZSBzZWNvbmQgZHJhd3MgZXhhY3RseSB0aGUgd3JvbmcgY29uY2x1c2lvbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVkUGVyaW9kIH0gZnJvbSAnLi9wZXJpb2QuanMnO1xuaW1wb3J0IHsgZ2V0U2VjdGlvbiwgdHlwZSBTZWN0aW9uQ29udGV4dCwgdHlwZSBTZWN0aW9uRGF0YVNvdXJjZSwgdHlwZSBTZWN0aW9uU3BlYyB9IGZyb20gJy4vc2VjdGlvbnMuanMnO1xuXG4vKiogQmVsb3cgdGhpcyBtYW55IG9ic2VydmF0aW9ucyBhIHJhdGUgaXMgbm9pc2UsIGFuZCBzYXlzIHNvLiAqL1xuZXhwb3J0IGNvbnN0IExPV19TQU1QTEVfVEhSRVNIT0xEID0gNTtcblxuLyoqIFdoaWNoIHdheSBhIG1ldHJpYyBtb3ZlZC4gYGZsYXRgIHdoZW4gdGhlIGNoYW5nZSByb3VuZHMgdG8gbm90aGluZy4gKi9cbmV4cG9ydCB0eXBlIFRyZW5kRGlyZWN0aW9uID0gJ3VwJyB8ICdkb3duJyB8ICdmbGF0JyB8ICd1bmtub3duJztcblxuLyoqIEEgZGF0YS1xdWFsaXR5IGNhdmVhdCBhdHRhY2hlZCB0byB0aGUgd2hvbGUgc25hcHNob3QuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFRdWFsaXR5Tm90ZSB7XG4gIGNvZGU6ICdtaXNzaW5nX2RlcGxveV90YWcnIHwgJ21pc3NpbmdfY29tbWl0X2RhdGEnIHwgJ2xvd19zYW1wbGUnIHwgJ3NlY3Rpb25fZmFpbGVkJyB8ICdzZWN0aW9uX2xvY2tlZCcgfCAncnVsZV91bmF2YWlsYWJsZSc7XG4gIC8qKiBNYW5hZ2VyLXJlYWRhYmxlLiBOb3QgYSBtZXRyaWMgbmFtZSBhbmQgbm90IGEgc3RhY2sgdHJhY2UuICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIFRoZSBzZWN0aW9uIGl0IGNvbmNlcm5zLCB3aGVuIGl0IGlzIHNlY3Rpb24tc3BlY2lmaWMuICovXG4gIHNlY3Rpb25JZD86IHN0cmluZztcbn1cblxuLyoqIE9uZSBjb21wb3NlZCBzZWN0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb3NlZFNlY3Rpb24ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICAvKiogYGxvY2tlZGAgd2hlbiB0aGUgb3JnIGxhY2tzIHRoZSBmZWF0dXJlOyBgZmFpbGVkYCB3aGVuIHRoZSBxdWVyeSB0aHJldy4gKi9cbiAgc3RhdGU6ICdvaycgfCAnbG9ja2VkJyB8ICdmYWlsZWQnO1xuICAvKiogVGhlIGZlYXR1cmUgbmVlZGVkLCB3aGVuIGxvY2tlZCDigJQgZHJpdmVzIHRoZSB1cHNlbGwgY29weS4gKi9cbiAgcmVxdWlyZXNGZWF0dXJlPzogc3RyaW5nO1xuICAvKiogVGhpcyBwZXJpb2QncyByYXcgcmVzdWx0LCBleGFjdGx5IGFzIHRoZSBkYXNoYm9hcmQgd291bGQgc2hvdyBpdC4gKi9cbiAgY3VycmVudD86IHVua25vd247XG4gIC8qKiBUaGUgcHJldmlvdXMgcGVyaW9kJ3MgcmVzdWx0LCBmb3IgY29tcGFyYWJsZSBzZWN0aW9ucy4gKi9cbiAgcHJldmlvdXM/OiB1bmtub3duO1xuICAvKiogVGhlIHNpbmdsZSBudW1iZXIgYSBtYW5hZ2VyIHJlYWRzIGZpcnN0LCB3aGVuIHRoZSBzZWN0aW9uIGhhcyBvbmUuICovXG4gIGhlYWRsaW5lPzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyOyB1bml0Pzogc3RyaW5nIH07XG4gIC8qKiBDaGFuZ2UgdmVyc3VzIHRoZSBwcmV2aW91cyBwZXJpb2QsIGZvciBjb21wYXJhYmxlIHNlY3Rpb25zLiAqL1xuICBjaGFuZ2U/OiB7IGFic29sdXRlOiBudW1iZXI7IHBlcmNlbnQ6IG51bWJlciB8IG51bGw7IGRpcmVjdGlvbjogVHJlbmREaXJlY3Rpb24gfTtcbn1cblxuLyoqIFRoZSBmcm96ZW4gb3V0cHV0IG9mIG9uZSBydW4uICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNuYXBzaG90IHtcbiAgLyoqIFBlcmlvZCBib3VuZHMgKyBsYWJlbCwgY29waWVkIGluIHNvIHRoZSBzbmFwc2hvdCBpcyBzZWxmLWRlc2NyaWJpbmcuICovXG4gIHBlcmlvZDogeyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9O1xuICBwcmV2aW91c1BlcmlvZDogeyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZyB9O1xuICB0aW1lem9uZTogc3RyaW5nO1xuICB3ZWVrU3RhcnQ6ICdtb25kYXknIHwgJ3N1bmRheSc7XG4gIHNlY3Rpb25zOiBDb21wb3NlZFNlY3Rpb25bXTtcbiAgbm90ZXM6IERhdGFRdWFsaXR5Tm90ZVtdO1xuICAvKipcbiAgICogSG93IGV2ZXJ5IG51bWJlciBoZXJlIHdhcyBwcm9kdWNlZCwgc2hvd24gaW4gdGhlIHJlcG9ydCBmb290ZXIuIE1hbmFnZXJzXG4gICAqIGNvbXBhcmUgcmVwb3J0cyB0byB0aGUgZGFzaGJvYXJkOyBzYXlpbmcgcGxhaW5seSB0aGF0IGJvdGggcnVuIHRoZSBzYW1lXG4gICAqIHF1ZXJpZXMgb3ZlciB0aGUgc2FtZSB3aW5kb3cgaXMgd2hhdCBtYWtlcyBhIGRpZmZlcmVuY2UgaW52ZXN0aWdhYmxlIHJhdGhlclxuICAgKiB0aGFuIGEgcmVhc29uIHRvIGRpc3RydXN0IGJvdGguXG4gICAqL1xuICBtZXRob2RvbG9neTogc3RyaW5nO1xuICBnZW5lcmF0ZWRBdDogc3RyaW5nO1xufVxuXG4vKiogV2hhdCB0aGUgY29tcG9zZXIgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgb3JnJ3MgZW50aXRsZW1lbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb3NlT3B0aW9ucyB7XG4gIHNvdXJjZTogU2VjdGlvbkRhdGFTb3VyY2U7XG4gIHBlcmlvZDogUmVzb2x2ZWRQZXJpb2Q7XG4gIHRpbWV6b25lOiBzdHJpbmc7XG4gIHdlZWtTdGFydDogJ21vbmRheScgfCAnc3VuZGF5JztcbiAgb3JnSWQ6IHN0cmluZztcbiAgb3JnSWRzPzogc3RyaW5nW107XG4gIC8qKiBGZWF0dXJlcyB0aGUgb3JnIGhvbGRzLiBBIHNlY3Rpb24gbmVlZGluZyBvbmUgdGhhdCBpcyBhYnNlbnQgcmVuZGVycyBsb2NrZWQuICovXG4gIGZlYXR1cmVzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgbm93PzogRGF0ZTtcbn1cblxuLyoqXG4gKiBGZWF0dXJlcyB0aGF0LCBpbnNpZGUgYSBSRVBPUlQsIHN0YW5kIGluIGZvciBhbm90aGVyLlxuICpcbiAqIEJ1eWluZyBTdGFrZWhvbGRlciBSZXBvcnRzIGJ1eXMgdGhlIERPUkEgU0VDVElPTlMgb2YgYSByZXBvcnQuIEl0IGRvZXMgbm90IGJ1eSB0aGVcbiAqIGxpdmUgRE9SQSBkYXNoYm9hcmQsIHdoaWNoIHN0YXlzIGJlaGluZCBgYWR2YW5jZWRfcmVwb3J0aW5nYCBhbmQgaXMgZ2F0ZWQgb24gaXRzIG93blxuICogcm91dGVzIOKAlCBzbyB0aGlzIHN1YnN0aXR1dGlvbiBpcyBkZWxpYmVyYXRlbHkgc2NvcGVkIHRvIGNvbXBvc2l0aW9uIGFuZCBleGlzdHNcbiAqIG5vd2hlcmUgZWxzZS4gV2l0aG91dCBpdCwgYSBQcm8gY3VzdG9tZXIgd2hvIGJvdWdodCB0aGUgcmVwb3J0cyBhZGQtb24gd291bGQgb3BlblxuICogdGhlaXIgZmlyc3Qgd2Vla2x5IHJlcG9ydCBhbmQgZmluZCBpdHMgaGVhZGxpbmUgcGFuZWxzIGxvY2tlZCBiZWhpbmQgYSBzZWNvbmRcbiAqIHB1cmNoYXNlLCB3aGljaCBpcyBub3Qgd2hhdCB0aGUgYWRkLW9uJ3Mgb3duIGRlc2NyaXB0aW9uIHByb21pc2VzLlxuICpcbiAqIFN0YXRlZCBhcyBkYXRhIHJhdGhlciB0aGFuIGFuIGBpZmAsIHNvIGFkZGluZyBhIHNlY3Rpb24gdGhhdCBuZWVkcyBhIGRpZmZlcmVudFxuICogZmVhdHVyZSBjYW5ub3Qgc2lsZW50bHkgaW5oZXJpdCB0aGUgY2FydmUtb3V0LlxuICovXG5leHBvcnQgY29uc3QgUkVQT1JUX0ZFQVRVUkVfU1VCU1RJVFVURVM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHN0cmluZ1tdPj4gPSBPYmplY3QuZnJlZXplKHtcbiAgYWR2YW5jZWRfcmVwb3J0aW5nOiBbJ3N0YWtlaG9sZGVyX3JlcG9ydHMnXSxcbn0pO1xuXG4vKiogRG9lcyB0aGUgb3JnIGhvbGQgYHJlcXVpcmVkYCwgb3Igc29tZXRoaW5nIHRoYXQgc3RhbmRzIGluIGZvciBpdCBpbiBhIHJlcG9ydD8gKi9cbmZ1bmN0aW9uIHNhdGlzZmllcyhmZWF0dXJlczogcmVhZG9ubHkgc3RyaW5nW10sIHJlcXVpcmVkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGZlYXR1cmVzLmluY2x1ZGVzKHJlcXVpcmVkKSkgcmV0dXJuIHRydWU7XG4gIHJldHVybiAoUkVQT1JUX0ZFQVRVUkVfU1VCU1RJVFVURVNbcmVxdWlyZWRdID8/IFtdKS5zb21lKChhbHQpID0+IGZlYXR1cmVzLmluY2x1ZGVzKGFsdCkpO1xufVxuXG4vKiogUHVsbCBhIGNvbXBhcmFibGUgbnVtYmVyIG91dCBvZiBhIHNlY3Rpb24gcmVzdWx0LCBvciBudWxsIHdoZW4gdGhlcmUgaXNuJ3Qgb25lLiAqL1xuZnVuY3Rpb24gaGVhZGxpbmVPZihzZWN0aW9uSWQ6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBudW1iZXI7IHVuaXQ/OiBzdHJpbmcgfSB8IG51bGwge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gVGltZSBzZXJpZXMgKHN1Y2Nlc3MgcmF0ZSwgYnVpbGQgc3VjY2Vzcyk6IHRoZSBMQVNUIGJ1Y2tldCBpcyBcIm5vd1wiLlxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGxhc3QgPSB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBpZiAodHlwZW9mIGxhc3Q/LnN1Y2Nlc3NfcGN0ID09PSAnbnVtYmVyJykgcmV0dXJuIHsgbGFiZWw6ICdTdWNjZXNzIHJhdGUnLCB2YWx1ZTogbGFzdC5zdWNjZXNzX3BjdCwgdW5pdDogJyUnIH07XG4gICAgLy8gRXhlY3V0aW9uIGNvdW50czogdG90YWwgcnVucyBhY3Jvc3MgcGlwZWxpbmVzLlxuICAgIC8vXG4gICAgLy8gQSB0b3RhbCBvZiBaRVJPIGlzIGEgcmVhbCBoZWFkbGluZSwgbm90IG1pc3NpbmcgZGF0YTogXCIwIGRlcGxveXMsIGRvd24gZnJvbVxuICAgIC8vIDVcIiBpcyB0aGUgc2luZ2xlIG1vc3QgaW1wb3J0YW50IHRoaW5nIGEgd2Vla2x5IHJlcG9ydCBjYW4gdGVsbCBhIG1hbmFnZXIsXG4gICAgLy8gYW5kIHRyZWF0aW5nIDAgYXMgXCJubyB2YWx1ZVwiIG1hZGUgZXhhY3RseSB0aGF0IGNhc2UgZGlzYXBwZWFyIOKAlCB0aGUgY2hhbmdlXG4gICAgLy8gY2FtZSBiYWNrIGB1bmtub3duYCBhbmQgbm8gYXJyb3cgd2FzIHNob3duLiBTbyB0aGUgdGVzdCBpcyB3aGV0aGVyIGFueSByb3dcbiAgICAvLyBDQVJSSUVEIGEgY291bnQsIG5vdCB3aGV0aGVyIHRoZSBzdW0gaXMgcG9zaXRpdmUuXG4gICAgbGV0IGNvdW50ZWQgPSBmYWxzZTtcbiAgICBjb25zdCB0b3RhbCA9ICh2YWx1ZSBhcyBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pLnJlZHVjZSgoc3VtLCByb3cpID0+IHtcbiAgICAgIGNvbnN0IG4gPSByb3cudG90YWwgPz8gcm93LmNvdW50ID8/IHJvdy5leGVjdXRpb25zO1xuICAgICAgaWYgKHR5cGVvZiBuICE9PSAnbnVtYmVyJykgcmV0dXJuIHN1bTtcbiAgICAgIGNvdW50ZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIHN1bSArIG47XG4gICAgfSwgMCk7XG4gICAgaWYgKGNvdW50ZWQpIHJldHVybiB7IGxhYmVsOiAnVG90YWwnLCB2YWx1ZTogdG90YWwgfTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG9iaiA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvLyBET1JBOiBkZXBsb3ltZW50IGZyZXF1ZW5jeSBpcyB0aGUgaGVhZGxpbmUgYSBtYW5hZ2VyIHJlY29nbmlzZXMuXG4gIGNvbnN0IGVudnMgPSBvYmouZW52aXJvbm1lbnRzO1xuICBpZiAoQXJyYXkuaXNBcnJheShlbnZzKSAmJiBlbnZzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBmaXJzdCA9IGVudnNbMF0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3QgZGYgPSAoZmlyc3QuZGVwbG95bWVudEZyZXF1ZW5jeSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCk/LmRlcGxveW1lbnRzO1xuICAgIGlmICh0eXBlb2YgZGYgPT09ICdudW1iZXInKSByZXR1cm4geyBsYWJlbDogJ0RlcGxveXMnLCB2YWx1ZTogZGYgfTtcbiAgfVxuICAvLyBQbHVnaW4gc3VtbWFyeSBhbmQgZnJpZW5kczogYSBwbGFpbiB0b3RhbC5cbiAgLy8gWmVybyBpcyBhIHZhbHVlIGhlcmUgdG9vIOKAlCBgcGx1Z2luX3ZlcnNpb25zYCByZXBvcnRpbmcgMCBvdXRkYXRlZCBwbHVnaW5zIGlzXG4gIC8vIGdvb2QgbmV3cyBhIG1hbmFnZXIgc2hvdWxkIHNlZSwgbm90IGFuIGFic2VudCBzZWN0aW9uLlxuICBmb3IgKGNvbnN0IGtleSBvZiBbJ3RvdGFsJywgJ2NvdW50JywgJ2RlcGxveW1lbnRzJ10pIHtcbiAgICBpZiAodHlwZW9mIG9ialtrZXldID09PSAnbnVtYmVyJykgcmV0dXJuIHsgbGFiZWw6IHNlY3Rpb25JZCA9PT0gJ3BsdWdpbl92ZXJzaW9ucycgPyAnT3V0ZGF0ZWQnIDogJ1RvdGFsJywgdmFsdWU6IG9ialtrZXldIGFzIG51bWJlciB9O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKiogQ2hhbmdlIGJldHdlZW4gdHdvIGhlYWRsaW5lIG51bWJlcnMuICovXG5mdW5jdGlvbiBjaGFuZ2VPZihcbiAgY3VycmVudDogeyB2YWx1ZTogbnVtYmVyIH0gfCBudWxsLFxuICBwcmV2aW91czogeyB2YWx1ZTogbnVtYmVyIH0gfCBudWxsLFxuKTogQ29tcG9zZWRTZWN0aW9uWydjaGFuZ2UnXSB7XG4gIGlmICghY3VycmVudCB8fCAhcHJldmlvdXMpIHJldHVybiB7IGFic29sdXRlOiAwLCBwZXJjZW50OiBudWxsLCBkaXJlY3Rpb246ICd1bmtub3duJyB9O1xuICBjb25zdCBhYnNvbHV0ZSA9IE51bWJlcigoY3VycmVudC52YWx1ZSAtIHByZXZpb3VzLnZhbHVlKS50b0ZpeGVkKDIpKTtcbiAgLy8gQSBwZXJjZW50IGNoYW5nZSBvZmYgYSB6ZXJvIGJhc2VsaW5lIGlzIHVuZGVmaW5lZCwgbm90IGluZmluaXRlOiBnb2luZyBmcm9tIDBcbiAgLy8gdG8gNSBkZXBsb3lzIGlzIFwiNSBtb3JlXCIsIG5ldmVyIFwiK+KIniVcIi5cbiAgY29uc3QgcGVyY2VudCA9IHByZXZpb3VzLnZhbHVlID09PSAwID8gbnVsbCA6IE51bWJlcigoKGFic29sdXRlIC8gcHJldmlvdXMudmFsdWUpICogMTAwKS50b0ZpeGVkKDEpKTtcbiAgY29uc3QgZGlyZWN0aW9uOiBUcmVuZERpcmVjdGlvbiA9IGFic29sdXRlID09PSAwID8gJ2ZsYXQnIDogYWJzb2x1dGUgPiAwID8gJ3VwJyA6ICdkb3duJztcbiAgcmV0dXJuIHsgYWJzb2x1dGUsIHBlcmNlbnQsIGRpcmVjdGlvbiB9O1xufVxuXG4vKiogQ291bnQgdGhlIG9ic2VydmF0aW9ucyBiZWhpbmQgYSBzZWN0aW9uLCBmb3IgdGhlIGxvdy1zYW1wbGUgbm90ZS4gKi9cbmZ1bmN0aW9uIHNhbXBsZVNpemUodmFsdWU6IHVua25vd24pOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuICh2YWx1ZSBhcyBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pLnJlZHVjZSgoc3VtLCByb3cpID0+IHtcbiAgICAgIGNvbnN0IG4gPSByb3cudG90YWwgPz8gcm93LmNvdW50ID8/IHJvdy5leGVjdXRpb25zID8/IHJvdy5kZXBsb3ltZW50cztcbiAgICAgIHJldHVybiBzdW0gKyAodHlwZW9mIG4gPT09ICdudW1iZXInID8gbiA6IDApO1xuICAgIH0sIDApO1xuICB9XG4gIGNvbnN0IG9iaiA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgY29uc3QgZW52cyA9IG9iaj8uZW52aXJvbm1lbnRzO1xuICBpZiAoQXJyYXkuaXNBcnJheShlbnZzKSkge1xuICAgIHJldHVybiBlbnZzLnJlZHVjZSgoc3VtOiBudW1iZXIsIGUpID0+IHtcbiAgICAgIGNvbnN0IGF0dGVtcHRzID0gKChlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5jaGFuZ2VGYWlsdXJlUmF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCk/LmF0dGVtcHRzO1xuICAgICAgcmV0dXJuIHN1bSArICh0eXBlb2YgYXR0ZW1wdHMgPT09ICdudW1iZXInID8gYXR0ZW1wdHMgOiAwKTtcbiAgICB9LCAwKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqIERlcGxveS1jb3ZlcmFnZSBub3RlczogdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBcInplcm8gZGVwbG95c1wiIGFuZCBcImJsaW5kXCIuICovXG5mdW5jdGlvbiBkZXBsb3lDb3ZlcmFnZU5vdGVzKGRvcmE6IHVua25vd24pOiBEYXRhUXVhbGl0eU5vdGVbXSB7XG4gIGNvbnN0IG5vdGVzOiBEYXRhUXVhbGl0eU5vdGVbXSA9IFtdO1xuICBjb25zdCBjb3ZlcmFnZSA9IChkb3JhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbCk/LmNvdmVyYWdlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICBjb25zdCB3aXRob3V0ID0gY292ZXJhZ2U/LndpdGhvdXREZXBsb3lzO1xuICBpZiAodHlwZW9mIHdpdGhvdXQgPT09ICdudW1iZXInICYmIHdpdGhvdXQgPiAwKSB7XG4gICAgbm90ZXMucHVzaCh7XG4gICAgICBjb2RlOiAnbWlzc2luZ19kZXBsb3lfdGFnJyxcbiAgICAgIHNlY3Rpb25JZDogJ2RvcmEnLFxuICAgICAgbWVzc2FnZTogYERlcGxveSBkYXRhIHVuYXZhaWxhYmxlIGZvciAke3dpdGhvdXR9IHBpcGVsaW5lJHt3aXRob3V0ID09PSAxID8gJycgOiAncyd9OiB0aGV5IGhhdmUgbm90IHJlLXN5bnRoZWQgd2l0aCBkZXBsb3kgdGFncywgc28gdGhlaXIgZGVwbG95cyBhcmUgbm90IGNvdW50ZWQgaGVyZS4gVGhpcyBpcyBub3QgXCJ6ZXJvIGRlcGxveXNcIi5gLFxuICAgIH0pO1xuICB9XG4gIGNvbnN0IGVudnMgPSAoZG9yYSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwpPy5lbnZpcm9ubWVudHM7XG4gIGlmIChBcnJheS5pc0FycmF5KGVudnMpKSB7XG4gICAgY29uc3Qgbm9MZWFkID0gKGVudnMgYXMgQXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KS5maWx0ZXIoKGUpID0+IHtcbiAgICAgIGNvbnN0IGx0ID0gZS5sZWFkVGltZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBsdCAmJiBsdC5tZWRpYW5TZWNvbmRzID09PSBudWxsO1xuICAgIH0pO1xuICAgIGlmIChub0xlYWQubGVuZ3RoID4gMCkge1xuICAgICAgbm90ZXMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdtaXNzaW5nX2NvbW1pdF9kYXRhJyxcbiAgICAgICAgc2VjdGlvbklkOiAnZG9yYScsXG4gICAgICAgIG1lc3NhZ2U6IGBMZWFkIHRpbWUgdW5hdmFpbGFibGUgZm9yICR7bm9MZWFkLmxlbmd0aH0gZW52aXJvbm1lbnQke25vTGVhZC5sZW5ndGggPT09IDEgPyAnJyA6ICdzJ306IG5vIHN1Y2Nlc3NmdWwgZGVwbG95IGNhcnJpZWQgYSByZXNvbHZhYmxlIGNvbW1pdCB0aW1lc3RhbXAsIHNvIGNvbW1pdC10by1kZXBsb3kgdGltZSBjb3VsZCBub3QgYmUgbWVhc3VyZWQuYCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm90ZXM7XG59XG5cbi8qKiBNYW5hZ2VyLWZhY2luZyBuYW1lcyBvZiB0aGUgbmVlZHMtYXR0ZW50aW9uIHJ1bGVzLCBmb3IgdGhlIHVuYXZhaWxhYmxlIG5vdGUuICovXG5jb25zdCBBVFRFTlRJT05fUlVMRV9MQUJFTFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGxvd19zdWNjZXNzX3JhdGU6ICdsb3cgc3VjY2VzcyByYXRlJyxcbiAgc2xvd2VyX3A5NTogJ3Nsb3dlciBidWlsZHMnLFxuICBjb25zZWN1dGl2ZV9mYWlsdXJlczogJ2NvbnNlY3V0aXZlIGZhaWx1cmVzJyxcbiAgbm9fcmVjZW50X3N1Y2Nlc3M6ICdubyByZWNlbnQgc3VjY2VzcycsXG4gIGZhaWxlZF9hZnRlcl9jb25maWdfY2hhbmdlOiAnZmFpbGVkIGFmdGVyIGEgY29uZmlndXJhdGlvbiBjaGFuZ2UnLFxuICB2dWxuZXJhYmxlX3BsdWdpbjogJ3Z1bG5lcmFibGUgcGx1Z2lucycsXG4gIG5vX2RlcGxveV90cmFja2luZzogJ2RlcGxveSB0cmFja2luZycsXG59O1xuXG4vKipcbiAqIFRoZSBuZWVkcy1hdHRlbnRpb24gcnVsZXMgdGhhdCBjb3VsZCBub3QgcnVuLiBBbiBlbXB0eSBsaXN0IHRoZXJlIG11c3QgcmVhZCBhc1xuICogXCJub3RoaW5nIHRyaXBwZWRcIiwgbmV2ZXIgYXMgXCJhIHJ1bGUgY291bGQgbm90IGxvb2tcIiDigJQgYWJvdmUgYWxsIGZvciB0aGVcbiAqIHZ1bG5lcmFibGUtcGx1Z2luIHJ1bGUsIHdoZXJlIHRoZSBzZWNvbmQgcmVhZGluZyBpcyBhIGZhbHNlIGFsbC1jbGVhci5cbiAqL1xuZnVuY3Rpb24gYXR0ZW50aW9uTm90ZXModmFsdWU6IHVua25vd24pOiBEYXRhUXVhbGl0eU5vdGVbXSB7XG4gIGNvbnN0IHJ1bGVzID0gKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbCk/LnVuYXZhaWxhYmxlUnVsZXM7XG4gIGlmICghQXJyYXkuaXNBcnJheShydWxlcykgfHwgcnVsZXMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG4gIGNvbnN0IG5hbWVzID0gcnVsZXMubWFwKChyKSA9PiBBVFRFTlRJT05fUlVMRV9MQUJFTFNbU3RyaW5nKHIpXSA/PyBTdHJpbmcocikpO1xuICByZXR1cm4gW3tcbiAgICBjb2RlOiAncnVsZV91bmF2YWlsYWJsZScsXG4gICAgc2VjdGlvbklkOiAnbmVlZHNfYXR0ZW50aW9uJyxcbiAgICBtZXNzYWdlOiBgU29tZSBjaGVja3MgY291bGQgbm90IHJ1biB0aGlzIHBlcmlvZCAoJHtuYW1lcy5qb2luKCcsICcpfSk6IHRoZWlyIGRhdGEgd2FzIHVuYXZhaWxhYmxlLiBgXG4gICAgICArICdBIHBpcGVsaW5lIG1pc3NpbmcgZnJvbSB0aGlzIGxpc3Qgd2FzIG5vdCBjaGVja2VkIGZvciB0aG9zZSDigJQgdGhpcyBpcyBub3QgYW4gYWxsLWNsZWFyLicsXG4gIH1dO1xufVxuXG4vKipcbiAqIENvbXBvc2Ugb25lIHBlcmlvZCdzIHNuYXBzaG90LlxuICpcbiAqIE5ldmVyIHRocm93cyBmb3IgYSBzZWN0aW9uLWxldmVsIHByb2JsZW06IGEgc2VjdGlvbiB0aGF0IGZhaWxzIGlzIG1hcmtlZFxuICogYGZhaWxlZGAgd2l0aCBhIG5vdGUsIGFuZCB0aGUgcmVzdCBvZiB0aGUgcmVwb3J0IHN0aWxsIHJlYWNoZXMgdGhlIGxlYWQuIEEgcnVuXG4gKiB0aGF0IHByb2R1Y2VzIG5pbmUgZ29vZCBzZWN0aW9ucyBhbmQgb25lIGZhaWx1cmUgaXMgdXNlZnVsOyBhIHJ1biB0aGF0IHByb2R1Y2VzXG4gKiBhbiBleGNlcHRpb24gaXMgbm90LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29tcG9zZVNuYXBzaG90KHNlY3Rpb25JZExpc3Q6IHJlYWRvbmx5IHN0cmluZ1tdLCBvcHRzOiBDb21wb3NlT3B0aW9ucyk6IFByb21pc2U8UmVwb3J0U25hcHNob3Q+IHtcbiAgY29uc3QgeyBzb3VyY2UsIHBlcmlvZCwgdGltZXpvbmUsIHdlZWtTdGFydCwgb3JnSWQsIG9yZ0lkcywgZmVhdHVyZXMgfSA9IG9wdHM7XG4gIGNvbnN0IG5vdGVzOiBEYXRhUXVhbGl0eU5vdGVbXSA9IFtdO1xuICBjb25zdCBzZWN0aW9uczogQ29tcG9zZWRTZWN0aW9uW10gPSBbXTtcblxuICBjb25zdCBjdHhGb3IgPSAoZnJvbTogRGF0ZSwgdG86IERhdGUpOiBTZWN0aW9uQ29udGV4dCA9PiAoe1xuICAgIG9yZ0lkLFxuICAgIC4uLihvcmdJZHMgPyB7IG9yZ0lkcyB9IDoge30pLFxuICAgIGZyb206IGZyb20udG9JU09TdHJpbmcoKSxcbiAgICB0bzogdG8udG9JU09TdHJpbmcoKSxcbiAgICB0ejogdGltZXpvbmUsXG4gICAgd2Vla1N0YXJ0LFxuICAgIC8vIFRoZSBwcmV2aW91cyBwZXJpb2QgdHJhdmVscyBXSVRIIHRoZSBjb250ZXh0LCBmb3IgdGhlIGFuYWx5dGljcyBzZWN0aW9uc1xuICAgIC8vIHdob3NlIHRyZW5kIGlzIHBlciBjYXRlZ29yeSwgcGVyIHN0YWdlIG9yIHBlciBwaXBlbGluZS4gVGhvc2UgY2Fubm90IGJlXG4gICAgLy8gaGFuZGxlZCBieSBydW5uaW5nIHRoZSBzZWN0aW9uIHR3aWNlIGFuZCBjb21wYXJpbmcgb25lIGhlYWRsaW5lIOKAlCB0aGVcbiAgICAvLyBjb21wYXJpc29uIGlzIGEgam9pbiwgYW5kIGRvaW5nIGl0IGluIHRoZSBjb21wb3NlciBhZnRlcndhcmRzIHdvdWxkIG1lYW5cbiAgICAvLyByZS1pbXBsZW1lbnRpbmcgaXQgZm9yIGV2ZXJ5IHNoYXBlLlxuICAgIHByZXZpb3VzRnJvbTogcGVyaW9kLnByZXZTdGFydC50b0lTT1N0cmluZygpLFxuICAgIHByZXZpb3VzVG86IHBlcmlvZC5wcmV2RW5kLnRvSVNPU3RyaW5nKCksXG4gIH0pO1xuICBjb25zdCBjdXJyZW50Q3R4ID0gY3R4Rm9yKHBlcmlvZC5zdGFydCwgcGVyaW9kLmVuZCk7XG4gIGNvbnN0IHByZXZpb3VzQ3R4ID0gY3R4Rm9yKHBlcmlvZC5wcmV2U3RhcnQsIHBlcmlvZC5wcmV2RW5kKTtcblxuICBmb3IgKGNvbnN0IGlkIG9mIHNlY3Rpb25JZExpc3QpIHtcbiAgICBjb25zdCBzcGVjOiBTZWN0aW9uU3BlYyB8IHVuZGVmaW5lZCA9IGdldFNlY3Rpb24oaWQpO1xuICAgIGlmICghc3BlYykge1xuICAgICAgLy8gQW4gdW5rbm93biBpZCBpcyBhIGRlZmluaXRpb24gcmVmZXJlbmNpbmcgYSBzZWN0aW9uIHRoYXQgbm8gbG9uZ2VyIGV4aXN0cy5cbiAgICAgIC8vIFJlY29yZGVkIHJhdGhlciB0aGFuIGRyb3BwZWQsIHNvIHRoZSBsZWFkIGNhbiBzZWUgd2h5IGEgcGFuZWwgdmFuaXNoZWQuXG4gICAgICBzZWN0aW9ucy5wdXNoKHsgaWQsIHRpdGxlOiBpZCwgc3RhdGU6ICdmYWlsZWQnIH0pO1xuICAgICAgbm90ZXMucHVzaCh7IGNvZGU6ICdzZWN0aW9uX2ZhaWxlZCcsIHNlY3Rpb25JZDogaWQsIG1lc3NhZ2U6IGBVbmtub3duIHJlcG9ydCBzZWN0aW9uIFwiJHtpZH1cIiDigJQgaXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkLmAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc3BlYy5yZXF1aXJlc0ZlYXR1cmUgJiYgIXNhdGlzZmllcyhmZWF0dXJlcywgc3BlYy5yZXF1aXJlc0ZlYXR1cmUpKSB7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgaWQsIHRpdGxlOiBzcGVjLnRpdGxlLCBzdGF0ZTogJ2xvY2tlZCcsIHJlcXVpcmVzRmVhdHVyZTogc3BlYy5yZXF1aXJlc0ZlYXR1cmUsXG4gICAgICB9KTtcbiAgICAgIG5vdGVzLnB1c2goe1xuICAgICAgICBjb2RlOiAnc2VjdGlvbl9sb2NrZWQnLFxuICAgICAgICBzZWN0aW9uSWQ6IGlkLFxuICAgICAgICBtZXNzYWdlOiBgXCIke3NwZWMudGl0bGV9XCIgbmVlZHMgdGhlICR7c3BlYy5yZXF1aXJlc0ZlYXR1cmV9IGFkZC1vbi4gVGhlIHJlc3Qgb2YgdGhpcyByZXBvcnQgaXMgdW5hZmZlY3RlZC5gLFxuICAgICAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IHNwZWMucnVuKHNvdXJjZSwgY3VycmVudEN0eCk7XG4gICAgICBjb25zdCBjb21wb3NlZDogQ29tcG9zZWRTZWN0aW9uID0geyBpZCwgdGl0bGU6IHNwZWMudGl0bGUsIHN0YXRlOiAnb2snLCBjdXJyZW50IH07XG5cbiAgICAgIGNvbnN0IGhlYWQgPSBoZWFkbGluZU9mKGlkLCBjdXJyZW50KTtcbiAgICAgIGlmIChoZWFkKSBjb21wb3NlZC5oZWFkbGluZSA9IGhlYWQ7XG5cbiAgICAgIGlmIChzcGVjLmNvbXBhcmFibGUpIHtcbiAgICAgICAgLy8gVGhlIGNvbXBhcmlzb24gaXMgYmVzdC1lZmZvcnQ6IGEgZmFpbGVkIHByZXZpb3VzIHBlcmlvZCBtdXN0IG5vdCBjb3N0IHRoZVxuICAgICAgICAvLyBsZWFkIHRoaXMgcGVyaW9kJ3MgbnVtYmVycy5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IGF3YWl0IHNwZWMucnVuKHNvdXJjZSwgcHJldmlvdXNDdHgpO1xuICAgICAgICAgIGNvbXBvc2VkLnByZXZpb3VzID0gcHJldmlvdXM7XG4gICAgICAgICAgY29tcG9zZWQuY2hhbmdlID0gY2hhbmdlT2YoaGVhZCwgaGVhZGxpbmVPZihpZCwgcHJldmlvdXMpKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgY29tcG9zZWQuY2hhbmdlID0geyBhYnNvbHV0ZTogMCwgcGVyY2VudDogbnVsbCwgZGlyZWN0aW9uOiAndW5rbm93bicgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzYW1wbGUgPSBzYW1wbGVTaXplKGN1cnJlbnQpO1xuICAgICAgaWYgKHNhbXBsZSAhPT0gbnVsbCAmJiBzYW1wbGUgPiAwICYmIHNhbXBsZSA8IExPV19TQU1QTEVfVEhSRVNIT0xEKSB7XG4gICAgICAgIG5vdGVzLnB1c2goe1xuICAgICAgICAgIGNvZGU6ICdsb3dfc2FtcGxlJyxcbiAgICAgICAgICBzZWN0aW9uSWQ6IGlkLFxuICAgICAgICAgIG1lc3NhZ2U6IGBcIiR7c3BlYy50aXRsZX1cIiBpcyBiYXNlZCBvbiAke3NhbXBsZX0gb2JzZXJ2YXRpb24ke3NhbXBsZSA9PT0gMSA/ICcnIDogJ3MnfSDigJQgcGVyY2VudGFnZXMgc3dpbmcgd2lsZGx5IGF0IHRoaXMgdm9sdW1lLiBSZWFkIHRoZSBjb3VudHMsIG5vdCB0aGUgcmF0ZS5gLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlkID09PSAnZG9yYScpIG5vdGVzLnB1c2goLi4uZGVwbG95Q292ZXJhZ2VOb3RlcyhjdXJyZW50KSk7XG4gICAgICBpZiAoaWQgPT09ICduZWVkc19hdHRlbnRpb24nKSBub3Rlcy5wdXNoKC4uLmF0dGVudGlvbk5vdGVzKGN1cnJlbnQpKTtcbiAgICAgIHNlY3Rpb25zLnB1c2goY29tcG9zZWQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2VjdGlvbnMucHVzaCh7IGlkLCB0aXRsZTogc3BlYy50aXRsZSwgc3RhdGU6ICdmYWlsZWQnIH0pO1xuICAgICAgbm90ZXMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdzZWN0aW9uX2ZhaWxlZCcsXG4gICAgICAgIHNlY3Rpb25JZDogaWQsXG4gICAgICAgIG1lc3NhZ2U6IGBcIiR7c3BlYy50aXRsZX1cIiBjb3VsZCBub3QgYmUgY29tcHV0ZWQgZm9yIHRoaXMgcGVyaW9kLiBUaGUgcmVzdCBvZiB0aGUgcmVwb3J0IGlzIHVuYWZmZWN0ZWQuYCxcbiAgICAgIH0pO1xuICAgICAgdm9pZCBlcnI7IC8vIHRoZSByZWFzb24gaXMgbG9nZ2VkIGJ5IHRoZSBjYWxsZXIsIG5ldmVyIHNob3duIHRvIGEgbWFuYWdlclxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGVyaW9kOiB7IHN0YXJ0OiBwZXJpb2Quc3RhcnQudG9JU09TdHJpbmcoKSwgZW5kOiBwZXJpb2QuZW5kLnRvSVNPU3RyaW5nKCksIGxhYmVsOiBwZXJpb2QubGFiZWwgfSxcbiAgICBwcmV2aW91c1BlcmlvZDogeyBzdGFydDogcGVyaW9kLnByZXZTdGFydC50b0lTT1N0cmluZygpLCBlbmQ6IHBlcmlvZC5wcmV2RW5kLnRvSVNPU3RyaW5nKCkgfSxcbiAgICB0aW1lem9uZSxcbiAgICB3ZWVrU3RhcnQsXG4gICAgc2VjdGlvbnMsXG4gICAgbm90ZXMsXG4gICAgbWV0aG9kb2xvZ3k6XG4gICAgICBgQ29tcHV0ZWQgZnJvbSBwaXBlbGluZSBldmVudHMgYmV0d2VlbiAke3BlcmlvZC5zdGFydC50b0lTT1N0cmluZygpfSBhbmQgJHtwZXJpb2QuZW5kLnRvSVNPU3RyaW5nKCl9LCBgXG4gICAgICArIGBidWNrZXRlZCBpbiAke3RpbWV6b25lfSB3aXRoIHdlZWtzIHN0YXJ0aW5nICR7d2Vla1N0YXJ0fS4gQ29tcGFyaXNvbiBwZXJpb2Q6IGBcbiAgICAgICsgYCR7cGVyaW9kLnByZXZTdGFydC50b0lTT1N0cmluZygpfSB0byAke3BlcmlvZC5wcmV2RW5kLnRvSVNPU3RyaW5nKCl9LiBgXG4gICAgICArICdUaGVzZSBhcmUgdGhlIHNhbWUgcXVlcmllcyB0aGUgZGFzaGJvYXJkIHJ1bnMgb3ZlciB0aGUgc2FtZSB3aW5kb3csIHNvIHRoZSB0d28gYWdyZWUuJyxcbiAgICBnZW5lcmF0ZWRBdDogKG9wdHMubm93ID8/IG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCksXG4gIH07XG59XG4iXX0=
@@ -14,4 +14,4 @@ export { REPORT_TEMPLATE_SPECS, getTemplate, assertTemplatesResolve, } from './t
14
14
  export { composeSnapshot, LOW_SAMPLE_THRESHOLD, REPORT_FEATURE_SUBSTITUTES, } from './compose.js';
15
15
  export { renderReportHtml, reportFileName, trendSentence, } from './report-html.js';
16
16
  export { StakeholderReportStore, stakeholderReportStore, hashToken, mintToken, DEFAULT_SHARE_LINK_TTL_DAYS, MAX_SHARE_LINK_TTL_DAYS, MAX_BOUNCES, VERIFICATION_TTL_MS, } from './store.js';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3JlcG9ydGluZy9zdGFrZWhvbGRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQ0wsYUFBYSxFQUNiLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixHQUdyQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxHQUlYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsV0FBVyxFQUNYLHNCQUFzQixHQUV2QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLDBCQUEwQixHQU0zQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxhQUFhLEdBRWQsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsU0FBUyxFQUNULDJCQUEyQixFQUMzQix1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLG1CQUFtQixHQUtwQixNQUFNLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBzdGFrZWhvbGRlci1yZXBvcnQgZW5naW5lOiBwZXJpb2QgcmVzb2x1dGlvbiwgdGhlIHNlY3Rpb24gcmVnaXN0cnksIHRoZVxuICogdGVtcGxhdGVzLCBhbmQgdGhlIGNvbXBvc2VyIHRoYXQgdHVybnMgdGhlbSBpbnRvIGEgZnJvemVuIHNuYXBzaG90LlxuICpcbiAqIEVudW1lcmF0ZWQgcmF0aGVyIHRoYW4gYGV4cG9ydCAqYCBzbyB0aGUgbW9kdWxlJ3MgaW50ZXJuYWxzICh0aGUgY2l2aWwtZGF0ZVxuICogaGVscGVycywgdGhlIGhlYWRsaW5lIGhldXJpc3RpY3MpIHN0YXkgcHJpdmF0ZSDigJQgdGhlIHNhbWUgZGlzY2lwbGluZVxuICogcmVwb3J0aW5nLXNlcnZpY2UudHMgYXBwbGllcyB0byB0aGUgcmVwb3J0aW5nIG1vZHVsZXMuXG4gKi9cblxuZXhwb3J0IHtcbiAgcmVzb2x2ZVBlcmlvZCxcbiAgcmVzb2x2ZVBlcmlvZEJ5TGFiZWwsXG4gIHJlamVjdFVucmVwb3J0YWJsZVBlcmlvZCxcbiAgbmV4dFBlcmlvZEJvdW5kYXJ5LFxuICBjb21wbGV0ZVBlcmlvZHNTaW5jZSxcbiAgdHlwZSBSZXNvbHZlZFBlcmlvZCxcbiAgdHlwZSBQZXJpb2RSZWplY3Rpb24sXG59IGZyb20gJy4vcGVyaW9kLmpzJztcblxuZXhwb3J0IHtcbiAgcmVnaXN0ZXJTZWN0aW9uLFxuICBnZXRTZWN0aW9uLFxuICBhbGxTZWN0aW9ucyxcbiAgc2VjdGlvbklkcyxcbiAgdHlwZSBTZWN0aW9uU3BlYyxcbiAgdHlwZSBTZWN0aW9uQ29udGV4dCxcbiAgdHlwZSBTZWN0aW9uRGF0YVNvdXJjZSxcbn0gZnJvbSAnLi9zZWN0aW9ucy5qcyc7XG5cbmV4cG9ydCB7XG4gIFJFUE9SVF9URU1QTEFURV9TUEVDUyxcbiAgZ2V0VGVtcGxhdGUsXG4gIGFzc2VydFRlbXBsYXRlc1Jlc29sdmUsXG4gIHR5cGUgVGVtcGxhdGVTcGVjLFxufSBmcm9tICcuL3RlbXBsYXRlcy5qcyc7XG5cbmV4cG9ydCB7XG4gIGNvbXBvc2VTbmFwc2hvdCxcbiAgTE9XX1NBTVBMRV9USFJFU0hPTEQsXG4gIFJFUE9SVF9GRUFUVVJFX1NVQlNUSVRVVEVTLFxuICB0eXBlIFJlcG9ydFNuYXBzaG90LFxuICB0eXBlIENvbXBvc2VkU2VjdGlvbixcbiAgdHlwZSBEYXRhUXVhbGl0eU5vdGUsXG4gIHR5cGUgQ29tcG9zZU9wdGlvbnMsXG4gIHR5cGUgVHJlbmREaXJlY3Rpb24sXG59IGZyb20gJy4vY29tcG9zZS5qcyc7XG5cbmV4cG9ydCB7XG4gIHJlbmRlclJlcG9ydEh0bWwsXG4gIHJlcG9ydEZpbGVOYW1lLFxuICB0cmVuZFNlbnRlbmNlLFxuICB0eXBlIFJlcG9ydEh0bWxJbnB1dCxcbn0gZnJvbSAnLi9yZXBvcnQtaHRtbC5qcyc7XG5cbmV4cG9ydCB7XG4gIFN0YWtlaG9sZGVyUmVwb3J0U3RvcmUsXG4gIHN0YWtlaG9sZGVyUmVwb3J0U3RvcmUsXG4gIGhhc2hUb2tlbixcbiAgbWludFRva2VuLFxuICBERUZBVUxUX1NIQVJFX0xJTktfVFRMX0RBWVMsXG4gIE1BWF9TSEFSRV9MSU5LX1RUTF9EQVlTLFxuICBNQVhfQk9VTkNFUyxcbiAgVkVSSUZJQ0FUSU9OX1RUTF9NUyxcbiAgdHlwZSBDcmVhdGVEZWZpbml0aW9uSW5wdXQsXG4gIHR5cGUgVXBkYXRlRGVmaW5pdGlvbklucHV0LFxuICB0eXBlIE1pbnRlZFNoYXJlTGluayxcbiAgdHlwZSBSZXNvbHZlZFNoYXJlTGluayxcbn0gZnJvbSAnLi9zdG9yZS5qcyc7XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvcmVwb3J0aW5nL3N0YWtlaG9sZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFDTCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsb0JBQW9CLEdBR3JCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEdBSVgsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsc0JBQXNCLEdBRXZCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsMEJBQTBCLEdBTTNCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGFBQWEsR0FFZCxNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsbUJBQW1CLEdBS3BCLE1BQU0sWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHN0YWtlaG9sZGVyLXJlcG9ydCBlbmdpbmU6IHBlcmlvZCByZXNvbHV0aW9uLCB0aGUgc2VjdGlvbiByZWdpc3RyeSwgdGhlXG4gKiB0ZW1wbGF0ZXMsIGFuZCB0aGUgY29tcG9zZXIgdGhhdCB0dXJucyB0aGVtIGludG8gYSBmcm96ZW4gc25hcHNob3QuXG4gKlxuICogRW51bWVyYXRlZCByYXRoZXIgdGhhbiBgZXhwb3J0ICpgIHNvIHRoZSBtb2R1bGUncyBpbnRlcm5hbHMgKHRoZSBjaXZpbC1kYXRlXG4gKiBoZWxwZXJzLCB0aGUgaGVhZGxpbmUgaGV1cmlzdGljcykgc3RheSBwcml2YXRlIOKAlCB0aGUgc2FtZSBkaXNjaXBsaW5lXG4gKiByZXBvcnRpbmctc2VydmljZS50cyBhcHBsaWVzIHRvIHRoZSByZXBvcnRpbmcgbW9kdWxlcy5cbiAqL1xuXG5leHBvcnQge1xuICByZXNvbHZlUGVyaW9kLFxuICByZXNvbHZlUGVyaW9kQnlMYWJlbCxcbiAgcmVqZWN0VW5yZXBvcnRhYmxlUGVyaW9kLFxuICBuZXh0UGVyaW9kQm91bmRhcnksXG4gIGNvbXBsZXRlUGVyaW9kc1NpbmNlLFxuICB0eXBlIFJlc29sdmVkUGVyaW9kLFxuICB0eXBlIFBlcmlvZFJlamVjdGlvbixcbn0gZnJvbSAnLi9wZXJpb2QuanMnO1xuXG5leHBvcnQge1xuICByZWdpc3RlclNlY3Rpb24sXG4gIGdldFNlY3Rpb24sXG4gIGFsbFNlY3Rpb25zLFxuICBzZWN0aW9uSWRzLFxuICB0eXBlIFNlY3Rpb25TcGVjLFxuICB0eXBlIFNlY3Rpb25Db250ZXh0LFxuICB0eXBlIFNlY3Rpb25EYXRhU291cmNlLFxufSBmcm9tICcuL3NlY3Rpb25zLmpzJztcblxuZXhwb3J0IHtcbiAgUkVQT1JUX1RFTVBMQVRFX1NQRUNTLFxuICBnZXRUZW1wbGF0ZSxcbiAgYXNzZXJ0VGVtcGxhdGVzUmVzb2x2ZSxcbiAgdHlwZSBUZW1wbGF0ZVNwZWMsXG59IGZyb20gJy4vdGVtcGxhdGVzLmpzJztcblxuZXhwb3J0IHtcbiAgY29tcG9zZVNuYXBzaG90LFxuICBMT1dfU0FNUExFX1RIUkVTSE9MRCxcbiAgUkVQT1JUX0ZFQVRVUkVfU1VCU1RJVFVURVMsXG4gIHR5cGUgUmVwb3J0U25hcHNob3QsXG4gIHR5cGUgQ29tcG9zZWRTZWN0aW9uLFxuICB0eXBlIERhdGFRdWFsaXR5Tm90ZSxcbiAgdHlwZSBDb21wb3NlT3B0aW9ucyxcbiAgdHlwZSBUcmVuZERpcmVjdGlvbixcbn0gZnJvbSAnLi9jb21wb3NlLmpzJztcblxuZXhwb3J0IHtcbiAgcmVuZGVyUmVwb3J0SHRtbCxcbiAgcmVwb3J0RmlsZU5hbWUsXG4gIHRyZW5kU2VudGVuY2UsXG4gIHR5cGUgUmVwb3J0SHRtbElucHV0LFxufSBmcm9tICcuL3JlcG9ydC1odG1sLmpzJztcblxuZXhwb3J0IHtcbiAgU3Rha2Vob2xkZXJSZXBvcnRTdG9yZSxcbiAgc3Rha2Vob2xkZXJSZXBvcnRTdG9yZSxcbiAgaGFzaFRva2VuLFxuICBtaW50VG9rZW4sXG4gIERFRkFVTFRfU0hBUkVfTElOS19UVExfREFZUyxcbiAgTUFYX1NIQVJFX0xJTktfVFRMX0RBWVMsXG4gIE1BWF9CT1VOQ0VTLFxuICBWRVJJRklDQVRJT05fVFRMX01TLFxuICB0eXBlIENyZWF0ZURlZmluaXRpb25JbnB1dCxcbiAgdHlwZSBVcGRhdGVEZWZpbml0aW9uSW5wdXQsXG4gIHR5cGUgTWludGVkU2hhcmVMaW5rLFxuICB0eXBlIFJlc29sdmVkU2hhcmVMaW5rLFxufSBmcm9tICcuL3N0b3JlLmpzJztcbiJdfQ==
@@ -270,4 +270,4 @@ export function completePeriodsSince(cadence, tz, weekStart, since, now = new Da
270
270
  }
271
271
  return out.reverse();
272
272
  }
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyaW9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yZXBvcnRpbmcvc3Rha2Vob2xkZXIvcGVyaW9kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUEwQ3RDLG1FQUFtRTtBQUNuRSxTQUFTLE9BQU8sQ0FBQyxPQUFhLEVBQUUsRUFBVTtJQUN4Qyw4RUFBOEU7SUFDOUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtRQUM3QyxRQUFRLEVBQUUsRUFBRTtRQUNaLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLFNBQVM7UUFDaEIsR0FBRyxFQUFFLFNBQVM7UUFDZCxJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFNBQVMsRUFBRSxLQUFLO0tBQ2pCLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQztJQUMvRixPQUFPO1FBQ0wsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDakIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDbkIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDZixJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNqQixNQUFNLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUNyQixNQUFNLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQztLQUN0QixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7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QUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN2RCxTQUFTLEVBQUUsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDeEMsT0FBTyxFQUFFLE9BQU87WUFDaEIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1NBQ25DLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGVyaW9kIHJlc29sdXRpb24gZm9yIHNjaGVkdWxlZCByZXBvcnRzOiB3aGljaCBjb21wbGV0ZSB3ZWVrLCBtb250aCBvciBxdWFydGVyXG4gKiBhIHJ1biBjb3ZlcnMsIGFuZCB0aGUgb25lIGJlZm9yZSBpdCBmb3IgY29tcGFyaXNvbi5cbiAqXG4gKiBBIHJlcG9ydCBjb3ZlcnMgdGhlIExBU1QgQ09NUExFVEUgcGVyaW9kLCBuZXZlciBhIHBhcnRpYWwgb25lLiBcIkRlcGxveXMgdGhpc1xuICogd2Vla1wiIG9uIGEgTW9uZGF5IG1vcm5pbmcgbWVhbnMgbGFzdCB3ZWVrIOKAlCBhIG1hbmFnZXIgcmVhZGluZyBhIGhhbGYtZmluaXNoZWRcbiAqIHdlZWsgc2VlcyBudW1iZXJzIHRoYXQgY2hhbmdlIHVuZGVyIHRoZW0uXG4gKlxuICogRXZlcnl0aGluZyBoZXJlIGlzIGNvbXB1dGVkIGluIHRoZSByZXBvcnQncyBJQU5BIHRpbWV6b25lLCB3aXRob3V0IGEgZGF0ZVxuICogbGlicmFyeS4gYEludGwuRGF0ZVRpbWVGb3JtYXRgIHdpdGggYSBgdGltZVpvbmVgIGlzIHRoZSBvbmx5IHR6IGRhdGFiYXNlIE5vZGVcbiAqIHNoaXBzLCBzbyB0aGUgYXBwcm9hY2ggaXM6IHJlYWQgdGhlIHdhbGwtY2xvY2sgcGFydHMgaW4gdGhhdCB6b25lLCBkbyBjaXZpbFxuICogYXJpdGhtZXRpYyBvbiB0aGVtICh3aGljaCBpcyBleGFjdCDigJQgbW9udGhzIGFuZCBxdWFydGVycyBhcmUgZGVmaW5lZCBvbiB0aGVcbiAqIGNhbGVuZGFyLCBub3Qgb24gZWxhcHNlZCBtaWxsaXNlY29uZHMpLCB0aGVuIGNvbnZlcnQgdGhlIHJlc3VsdGluZyBjaXZpbFxuICogbWlkbmlnaHQgYmFjayB0byBhIFVUQyBpbnN0YW50IGJ5IG1lYXN1cmluZyB0aGUgem9uZSdzIG9mZnNldCBBVCB0aGF0IGluc3RhbnQuXG4gKlxuICogTWVhc3VyaW5nIHRoZSBvZmZzZXQgYXQgdGhlIHRhcmdldCBpbnN0YW50IHJhdGhlciB0aGFuIGF0IGBub3dgIGlzIHdoYXQgbWFrZXNcbiAqIERTVCBjb3JyZWN0OiBhIHdlZWtseSBwZXJpb2QgdGhhdCBzdGFydHMgYmVmb3JlIGEgdHJhbnNpdGlvbiBhbmQgZW5kcyBhZnRlciBpdFxuICogaXMgbm90IDE2OCBob3VycyBsb25nLCBhbmQgYSByZXNvbHZlciB0aGF0IGFkZGVkIGA3ICogMjQgKiAzNjAwXzAwMGAgd291bGRcbiAqIHNpbGVudGx5IHNoaWZ0IGV2ZXJ5IGJvdW5kYXJ5IGJ5IGFuIGhvdXIgZm9yIGhhbGYgdGhlIHllYXIuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZXBvcnRDYWRlbmNlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YWJhc2Uvc2NoZW1hL3JlcG9ydGluZy1zdGFrZWhvbGRlci5qcyc7XG5cbi8qKiBPbmUgcmVzb2x2ZWQgcmVwb3J0aW5nIHBlcmlvZCwgcGx1cyB0aGUgcHJldmlvdXMgb25lIGZvciBjb21wYXJpc29uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZFBlcmlvZCB7XG4gIC8qKiBJbmNsdXNpdmUgc3RhcnQgb2YgdGhlIHBlcmlvZCBiZWluZyByZXBvcnRlZCAoVVRDIGluc3RhbnQpLiAqL1xuICBzdGFydDogRGF0ZTtcbiAgLyoqIEV4Y2x1c2l2ZSBlbmQg4oCUIGFsc28gdGhlIHN0YXJ0IG9mIHRoZSBwZXJpb2QgaW4gcHJvZ3Jlc3MuICovXG4gIGVuZDogRGF0ZTtcbiAgLyoqIEluY2x1c2l2ZSBzdGFydCBvZiB0aGUgUFJFVklPVVMgcGVyaW9kLCBmb3IgcGVyaW9kLW92ZXItcGVyaW9kIGNoYW5nZS4gKi9cbiAgcHJldlN0YXJ0OiBEYXRlO1xuICAvKiogRXhjbHVzaXZlIGVuZCBvZiB0aGUgcHJldmlvdXMgcGVyaW9kICg9PT0gYHN0YXJ0YCkuICovXG4gIHByZXZFbmQ6IERhdGU7XG4gIC8qKiBIdW1hbiBsYWJlbCBpbiB0aGUgcmVwb3J0J3MgdGltZXpvbmU6IGAyMDI2LVczOGAsIGAyMDI2LTA4YCwgYDIwMjYtUTNgLiAqL1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG4vKiogQ2l2aWwgKHdhbGwtY2xvY2spIGRhdGUgcGFydHMgaW4gYSBnaXZlbiB6b25lLiAqL1xuaW50ZXJmYWNlIENpdmlsIHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyOyBkYXk6IG51bWJlcjsgaG91cjogbnVtYmVyOyBtaW51dGU6IG51bWJlcjsgc2Vjb25kOiBudW1iZXIgfVxuXG4vKiogUmVhZCB0aGUgd2FsbC1jbG9jayBwYXJ0cyBvZiBgaW5zdGFudGAgYXMgdGhleSByZWFkIGluIGB0emAuICovXG5mdW5jdGlvbiBjaXZpbEluKGluc3RhbnQ6IERhdGUsIHR6OiBzdHJpbmcpOiBDaXZpbCB7XG4gIC8vIGBlbi1DQWAgeWllbGRzIElTTy1pc2ggYFlZWVktTU0tRERgLCBhbmQgaG91ckN5Y2xlIGgyMyBhdm9pZHMgYSAyNDowMCBob3VyLlxuICBjb25zdCBwYXJ0cyA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbi1DQScsIHtcbiAgICB0aW1lWm9uZTogdHosXG4gICAgeWVhcjogJ251bWVyaWMnLFxuICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgaG91cjogJzItZGlnaXQnLFxuICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgIHNlY29uZDogJzItZGlnaXQnLFxuICAgIGhvdXJDeWNsZTogJ2gyMycsXG4gIH0pLmZvcm1hdFRvUGFydHMoaW5zdGFudCk7XG4gIGNvbnN0IGdldCA9ICh0eXBlOiBzdHJpbmcpOiBudW1iZXIgPT4gTnVtYmVyKHBhcnRzLmZpbmQoKHApID0+IHAudHlwZSA9PT0gdHlwZSk/LnZhbHVlID8/ICcwJyk7XG4gIHJldHVybiB7XG4gICAgeWVhcjogZ2V0KCd5ZWFyJyksXG4gICAgbW9udGg6IGdldCgnbW9udGgnKSxcbiAgICBkYXk6IGdldCgnZGF5JyksXG4gICAgaG91cjogZ2V0KCdob3VyJyksXG4gICAgbWludXRlOiBnZXQoJ21pbnV0ZScpLFxuICAgIHNlY29uZDogZ2V0KCdzZWNvbmQnKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGUgVVRDIGluc3RhbnQgYXQgd2hpY2ggdGhlIGdpdmVuIGNpdmlsIHRpbWUgb2NjdXJzIGluIGB0emAuXG4gKlxuICogVHdvIHBhc3NlczogZ3Vlc3MgYnkgdHJlYXRpbmcgdGhlIGNpdmlsIHRpbWUgYXMgVVRDLCBtZWFzdXJlIGhvdyBmYXIgdGhhdCBndWVzc1xuICogYWN0dWFsbHkgbGFuZHMgZnJvbSB0aGUgdGFyZ2V0IGluIGB0emAsIGNvcnJlY3QsIHRoZW4gcmUtbWVhc3VyZSBvbmNlLiBUaGVcbiAqIHNlY29uZCBwYXNzIG1hdHRlcnMgZXhhY3RseSBhdCBhIERTVCB0cmFuc2l0aW9uLCB3aGVyZSB0aGUgZmlyc3QgY29ycmVjdGlvbiBjYW5cbiAqIG92ZXJzaG9vdCBpbnRvIHRoZSBvdGhlciBvZmZzZXQuXG4gKlxuICogRm9yIGEgY2l2aWwgbWlkbmlnaHQgdGhhdCBkb2VzIG5vdCBleGlzdCAoc3ByaW5nLWZvcndhcmQgc2tpcHMgaXQpIHRoaXMgc2V0dGxlc1xuICogb24gdGhlIGluc3RhbnQganVzdCBhZnRlciB0aGUgZ2FwLCB3aGljaCBpcyB0aGUgc3RhcnQgb2YgdGhlIGRheSBhcyB0aGF0IHpvbmVcbiAqIGV4cGVyaWVuY2VkIGl0IOKAlCB0aGUgcmlnaHQgYW5zd2VyIGZvciBhIHBlcmlvZCBib3VuZGFyeS5cbiAqL1xuZnVuY3Rpb24gaW5zdGFudE9mQ2l2aWwoYzogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0sIHR6OiBzdHJpbmcpOiBEYXRlIHtcbiAgY29uc3QgYXNVdGMgPSBEYXRlLlVUQyhjLnllYXIsIGMubW9udGggLSAxLCBjLmRheSwgMCwgMCwgMCk7XG4gIGxldCBndWVzcyA9IGFzVXRjO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDI7IGkrKykge1xuICAgIGNvbnN0IGJhY2sgPSBjaXZpbEluKG5ldyBEYXRlKGd1ZXNzKSwgdHopO1xuICAgIGNvbnN0IGJhY2tVdGMgPSBEYXRlLlVUQyhiYWNrLnllYXIsIGJhY2subW9udGggLSAxLCBiYWNrLmRheSwgYmFjay5ob3VyLCBiYWNrLm1pbnV0ZSwgYmFjay5zZWNvbmQpO1xuICAgIGNvbnN0IGRyaWZ0ID0gYmFja1V0YyAtIGFzVXRjO1xuICAgIGlmIChkcmlmdCA9PT0gMCkgYnJlYWs7XG4gICAgZ3Vlc3MgLT0gZHJpZnQ7XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKGd1ZXNzKTtcbn1cblxuLyoqIDAgPSBNb25kYXkg4oCmIDYgPSBTdW5kYXksIGZvciBhIGNpdmlsIGRhdGUgKFplbGxlci1mcmVlOiB1c2UgYSBVVEMgcHJvYmUpLiAqL1xuZnVuY3Rpb24gY2l2aWxXZWVrZGF5KGM6IHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyOyBkYXk6IG51bWJlciB9KTogbnVtYmVyIHtcbiAgY29uc3QgZG93ID0gbmV3IERhdGUoRGF0ZS5VVEMoYy55ZWFyLCBjLm1vbnRoIC0gMSwgYy5kYXkpKS5nZXRVVENEYXkoKTsgLy8gMD1TdW5cbiAgcmV0dXJuIChkb3cgKyA2KSAlIDc7IC8vIDA9TW9uXG59XG5cbi8qKiBBZGQgYGRheXNgIHRvIGEgY2l2aWwgZGF0ZSwgbm9ybWFsaXNpbmcgdmlhIFVUQyBhcml0aG1ldGljIChubyB0eiBpbnZvbHZlZCkuICovXG5mdW5jdGlvbiBhZGRDaXZpbERheXMoYzogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0sIGRheXM6IG51bWJlcik6IHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyOyBkYXk6IG51bWJlciB9IHtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKERhdGUuVVRDKGMueWVhciwgYy5tb250aCAtIDEsIGMuZGF5ICsgZGF5cykpO1xuICByZXR1cm4geyB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLCBkYXk6IGQuZ2V0VVRDRGF0ZSgpIH07XG59XG5cbi8qKiBBZGQgYG1vbnRoc2AgdG8gYSBjaXZpbCBkYXRlLCBjbGFtcGluZyB0aGUgZGF5IGludG8gdGhlIHRhcmdldCBtb250aC4gKi9cbmZ1bmN0aW9uIGFkZENpdmlsTW9udGhzKGM6IHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyOyBkYXk6IG51bWJlciB9LCBtb250aHM6IG51bWJlcik6IHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyOyBkYXk6IG51bWJlciB9IHtcbiAgY29uc3QgemVyb0Jhc2VkID0gKGMueWVhciAqIDEyKSArIChjLm1vbnRoIC0gMSkgKyBtb250aHM7XG4gIGNvbnN0IHllYXIgPSBNYXRoLmZsb29yKHplcm9CYXNlZCAvIDEyKTtcbiAgY29uc3QgbW9udGggPSAoemVyb0Jhc2VkICUgMTIpICsgMTtcbiAgY29uc3QgbGFzdERheSA9IG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCAwKSkuZ2V0VVRDRGF0ZSgpO1xuICByZXR1cm4geyB5ZWFyLCBtb250aCwgZGF5OiBNYXRoLm1pbihjLmRheSwgbGFzdERheSkgfTtcbn1cblxuLyoqIFRoZSBjaXZpbCBzdGFydCBvZiB0aGUgcGVyaW9kIGNvbnRhaW5pbmcgYGNgLiAqL1xuZnVuY3Rpb24gc3RhcnRPZlBlcmlvZChcbiAgYzogQ2l2aWwsXG4gIGNhZGVuY2U6IFJlcG9ydENhZGVuY2UsXG4gIHdlZWtTdGFydDogJ21vbmRheScgfCAnc3VuZGF5Jyxcbik6IHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyOyBkYXk6IG51bWJlciB9IHtcbiAgY29uc3QgZGF0ZSA9IHsgeWVhcjogYy55ZWFyLCBtb250aDogYy5tb250aCwgZGF5OiBjLmRheSB9O1xuICBpZiAoY2FkZW5jZSA9PT0gJ3dlZWtseScpIHtcbiAgICBjb25zdCBtb25kYXlJbmRleCA9IGNpdmlsV2Vla2RheShkYXRlKTtcbiAgICAvLyBTdW5kYXkgd2Vla3Mgc3RhcnQgb25lIGRheSBlYXJsaWVyIHRoYW4gdGhlIE1vbmRheSBpbmRleCBpbXBsaWVzLlxuICAgIGNvbnN0IGJhY2sgPSB3ZWVrU3RhcnQgPT09ICdzdW5kYXknID8gKG1vbmRheUluZGV4ICsgMSkgJSA3IDogbW9uZGF5SW5kZXg7XG4gICAgcmV0dXJuIGFkZENpdmlsRGF5cyhkYXRlLCAtYmFjayk7XG4gIH1cbiAgaWYgKGNhZGVuY2UgPT09ICdtb250aGx5JykgcmV0dXJuIHsgeWVhcjogYy55ZWFyLCBtb250aDogYy5tb250aCwgZGF5OiAxIH07XG4gIC8vIFF1YXJ0ZXJseTogSmFuL0Fwci9KdWwvT2N0LlxuICBjb25zdCBxU3RhcnRNb250aCA9IE1hdGguZmxvb3IoKGMubW9udGggLSAxKSAvIDMpICogMyArIDE7XG4gIHJldHVybiB7IHllYXI6IGMueWVhciwgbW9udGg6IHFTdGFydE1vbnRoLCBkYXk6IDEgfTtcbn1cblxuLyoqIFNoaWZ0IGEgY2l2aWwgcGVyaW9kIHN0YXJ0IGJ5IGBuYCB3aG9sZSBwZXJpb2RzLiAqL1xuZnVuY3Rpb24gc2hpZnRQZXJpb2QoXG4gIHN0YXJ0OiB7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgZGF5OiBudW1iZXIgfSxcbiAgY2FkZW5jZTogUmVwb3J0Q2FkZW5jZSxcbiAgbjogbnVtYmVyLFxuKTogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0ge1xuICBpZiAoY2FkZW5jZSA9PT0gJ3dlZWtseScpIHJldHVybiBhZGRDaXZpbERheXMoc3RhcnQsIDcgKiBuKTtcbiAgaWYgKGNhZGVuY2UgPT09ICdtb250aGx5JykgcmV0dXJuIGFkZENpdmlsTW9udGhzKHN0YXJ0LCBuKTtcbiAgcmV0dXJuIGFkZENpdmlsTW9udGhzKHN0YXJ0LCAzICogbik7XG59XG5cbi8qKlxuICogSVNPLTg2MDEgd2VlayBudW1iZXIgb2YgYSBjaXZpbCBkYXRlLiBVc2VkIG9ubHkgZm9yIHRoZSB3ZWVrbHkgTEFCRUwsIGFuZFxuICogZGVsaWJlcmF0ZWx5IElTTyBldmVuIGZvciBhIFN1bmRheS13ZWVrIG9yZzogYDIwMjYtVzM4YCBpcyBhIHJlY29nbmlzZWRcbiAqIG5vdGF0aW9uIGFuZCBpbnZlbnRpbmcgYSBTdW5kYXktYmFzZWQgbnVtYmVyaW5nIHdvdWxkIG1ha2UgbGFiZWxzXG4gKiBub24tY29tcGFyYWJsZSB3aXRoIGFueXRoaW5nIGVsc2UuXG4gKi9cbmZ1bmN0aW9uIGlzb1dlZWsoYzogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0pOiB7IHllYXI6IG51bWJlcjsgd2VlazogbnVtYmVyIH0ge1xuICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoYy55ZWFyLCBjLm1vbnRoIC0gMSwgYy5kYXkpKTtcbiAgY29uc3QgZGF5ID0gKGQuZ2V0VVRDRGF5KCkgKyA2KSAlIDc7IC8vIDA9TW9uXG4gIGQuc2V0VVRDRGF0ZShkLmdldFVUQ0RhdGUoKSAtIGRheSArIDMpOyAvLyBuZWFyZXN0IFRodXJzZGF5XG4gIGNvbnN0IGlzb1llYXIgPSBkLmdldFVUQ0Z1bGxZZWFyKCk7XG4gIGNvbnN0IGZpcnN0VGh1cnNkYXkgPSBuZXcgRGF0ZShEYXRlLlVUQyhpc29ZZWFyLCAwLCA0KSk7XG4gIGNvbnN0IGZpcnN0RGF5ID0gKGZpcnN0VGh1cnNkYXkuZ2V0VVRDRGF5KCkgKyA2KSAlIDc7XG4gIGZpcnN0VGh1cnNkYXkuc2V0VVRDRGF0ZShmaXJzdFRodXJzZGF5LmdldFVUQ0RhdGUoKSAtIGZpcnN0RGF5ICsgMyk7XG4gIGNvbnN0IHdlZWsgPSAxICsgTWF0aC5yb3VuZCgoZC5nZXRUaW1lKCkgLSBmaXJzdFRodXJzZGF5LmdldFRpbWUoKSkgLyAoNyAqIDg2XzQwMF8wMDApKTtcbiAgcmV0dXJuIHsgeWVhcjogaXNvWWVhciwgd2VlayB9O1xufVxuXG4vKiogVGhlIGxhYmVsIGZvciBhIHBlcmlvZCwgZnJvbSBpdHMgY2l2aWwgc3RhcnQuICovXG5mdW5jdGlvbiBmb3JtYXRMYWJlbChzdGFydDogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0sIGNhZGVuY2U6IFJlcG9ydENhZGVuY2UpOiBzdHJpbmcge1xuICBpZiAoY2FkZW5jZSA9PT0gJ3dlZWtseScpIHtcbiAgICBjb25zdCB7IHllYXIsIHdlZWsgfSA9IGlzb1dlZWsoc3RhcnQpO1xuICAgIHJldHVybiBgJHt5ZWFyfS1XJHtTdHJpbmcod2VlaykucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9XG4gIGlmIChjYWRlbmNlID09PSAnbW9udGhseScpIHJldHVybiBgJHtzdGFydC55ZWFyfS0ke1N0cmluZyhzdGFydC5tb250aCkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICByZXR1cm4gYCR7c3RhcnQueWVhcn0tUSR7TWF0aC5mbG9vcigoc3RhcnQubW9udGggLSAxKSAvIDMpICsgMX1gO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGxhc3QgQ09NUExFVEUgcGVyaW9kIGZvciBgY2FkZW5jZWAgaW4gYHR6YC5cbiAqXG4gKiBUaGUgcGVyaW9kIGluIHByb2dyZXNzIGlzIGV4Y2x1ZGVkOiBpdHMgZW5kIGlzIHRoZSBib3VuZGFyeSwgc28gYSBNb25kYXkgcnVuXG4gKiByZXBvcnRzIGxhc3Qgd2VlayBhbmQgYSBydW4gb24gdGhlIDFzdCByZXBvcnRzIGxhc3QgbW9udGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGVyaW9kKFxuICBjYWRlbmNlOiBSZXBvcnRDYWRlbmNlLFxuICB0ejogc3RyaW5nLFxuICB3ZWVrU3RhcnQ6ICdtb25kYXknIHwgJ3N1bmRheScgPSAnbW9uZGF5JyxcbiAgbm93OiBEYXRlID0gbmV3IERhdGUoKSxcbik6IFJlc29sdmVkUGVyaW9kIHtcbiAgY29uc3Qgbm93Q2l2aWwgPSBjaXZpbEluKG5vdywgdHopO1xuICAvLyBTdGFydCBvZiB0aGUgcGVyaW9kIENPTlRBSU5JTkcgbm93ID0gZW5kIG9mIHRoZSBsYXN0IGNvbXBsZXRlIG9uZS5cbiAgY29uc3QgY3VycmVudFN0YXJ0ID0gc3RhcnRPZlBlcmlvZChub3dDaXZpbCwgY2FkZW5jZSwgd2Vla1N0YXJ0KTtcbiAgY29uc3Qgc3RhcnQgPSBzaGlmdFBlcmlvZChjdXJyZW50U3RhcnQsIGNhZGVuY2UsIC0xKTtcbiAgY29uc3QgcHJldlN0YXJ0ID0gc2hpZnRQZXJpb2QoY3VycmVudFN0YXJ0LCBjYWRlbmNlLCAtMik7XG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IGluc3RhbnRPZkNpdmlsKHN0YXJ0LCB0eiksXG4gICAgZW5kOiBpbnN0YW50T2ZDaXZpbChjdXJyZW50U3RhcnQsIHR6KSxcbiAgICBwcmV2U3RhcnQ6IGluc3RhbnRPZkNpdmlsKHByZXZTdGFydCwgdHopLFxuICAgIHByZXZFbmQ6IGluc3RhbnRPZkNpdmlsKHN0YXJ0LCB0eiksXG4gICAgbGFiZWw6IGZvcm1hdExhYmVsKHN0YXJ0LCBjYWRlbmNlKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgU1BFQ0lGSUMgcGVyaW9kIGJ5IGl0cyBsYWJlbCAoYDIwMjYtVzM4YCwgYDIwMjYtMDhgLCBgMjAyNi1RM2ApLCBmb3JcbiAqIG9uLWRlbWFuZCBydW5zIGFuZCBiYWNrZmlsbHMuIFJldHVybnMgbnVsbCB3aGVuIHRoZSBsYWJlbCBkb2VzIG5vdCBwYXJzZSBvclxuICogZG9lcyBub3QgbWF0Y2ggdGhlIGNhZGVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGVyaW9kQnlMYWJlbChcbiAgbGFiZWw6IHN0cmluZyxcbiAgY2FkZW5jZTogUmVwb3J0Q2FkZW5jZSxcbiAgdHo6IHN0cmluZyxcbiAgd2Vla1N0YXJ0OiAnbW9uZGF5JyB8ICdzdW5kYXknID0gJ21vbmRheScsXG4pOiBSZXNvbHZlZFBlcmlvZCB8IG51bGwge1xuICBsZXQgc3RhcnQ6IHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyOyBkYXk6IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3Qgd2VlayA9IC9eKFxcZHs0fSktVyhcXGR7Mn0pJC8uZXhlYyhsYWJlbCk7XG4gIGNvbnN0IG1vbnRoID0gL14oXFxkezR9KS0oXFxkezJ9KSQvLmV4ZWMobGFiZWwpO1xuICBjb25zdCBxdWFydGVyID0gL14oXFxkezR9KS1RKFsxLTRdKSQvLmV4ZWMobGFiZWwpO1xuXG4gIGlmIChjYWRlbmNlID09PSAnd2Vla2x5JyAmJiB3ZWVrKSB7XG4gICAgY29uc3QgeWVhciA9IE51bWJlcih3ZWVrWzFdKTtcbiAgICBjb25zdCB3ayA9IE51bWJlcih3ZWVrWzJdKTtcbiAgICBpZiAod2sgPCAxIHx8IHdrID4gNTMpIHJldHVybiBudWxsO1xuICAgIC8vIElTTyB3ZWVrIDEgY29udGFpbnMgSmFuIDR0aDsgd2FsayBiYWNrIHRvIHRoYXQgd2VlaydzIHN0YXJ0LlxuICAgIGNvbnN0IGphbjQgPSB7IHllYXIsIG1vbnRoOiAxLCBkYXk6IDQgfTtcbiAgICBjb25zdCB3ZWVrMVN0YXJ0ID0gc3RhcnRPZlBlcmlvZChcbiAgICAgIHsgLi4uamFuNCwgaG91cjogMCwgbWludXRlOiAwLCBzZWNvbmQ6IDAgfSxcbiAgICAgICd3ZWVrbHknLFxuICAgICAgd2Vla1N0YXJ0LFxuICAgICk7XG4gICAgc3RhcnQgPSBhZGRDaXZpbERheXMod2VlazFTdGFydCwgKHdrIC0gMSkgKiA3KTtcbiAgICAvLyBBIDUzcmQgd2VlayB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoaXMgSVNPIHllYXIgbGFuZHMgaW4gdGhlIG5leHQgb25lLlxuICAgIGlmIChpc29XZWVrKHN0YXJ0KS55ZWFyICE9PSB5ZWFyICYmIHdrID09PSA1MykgcmV0dXJuIG51bGw7XG4gIH0gZWxzZSBpZiAoY2FkZW5jZSA9PT0gJ21vbnRobHknICYmIG1vbnRoKSB7XG4gICAgY29uc3QgbSA9IE51bWJlcihtb250aFsyXSk7XG4gICAgaWYgKG0gPCAxIHx8IG0gPiAxMikgcmV0dXJuIG51bGw7XG4gICAgc3RhcnQgPSB7IHllYXI6IE51bWJlcihtb250aFsxXSksIG1vbnRoOiBtLCBkYXk6IDEgfTtcbiAgfSBlbHNlIGlmIChjYWRlbmNlID09PSAncXVhcnRlcmx5JyAmJiBxdWFydGVyKSB7XG4gICAgc3RhcnQgPSB7IHllYXI6IE51bWJlcihxdWFydGVyWzFdKSwgbW9udGg6IChOdW1iZXIocXVhcnRlclsyXSkgLSAxKSAqIDMgKyAxLCBkYXk6IDEgfTtcbiAgfVxuICBpZiAoIXN0YXJ0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBlbmQgPSBzaGlmdFBlcmlvZChzdGFydCwgY2FkZW5jZSwgMSk7XG4gIGNvbnN0IHByZXZTdGFydCA9IHNoaWZ0UGVyaW9kKHN0YXJ0LCBjYWRlbmNlLCAtMSk7XG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IGluc3RhbnRPZkNpdmlsKHN0YXJ0LCB0eiksXG4gICAgZW5kOiBpbnN0YW50T2ZDaXZpbChlbmQsIHR6KSxcbiAgICBwcmV2U3RhcnQ6IGluc3RhbnRPZkNpdmlsKHByZXZTdGFydCwgdHopLFxuICAgIHByZXZFbmQ6IGluc3RhbnRPZkNpdmlsKHN0YXJ0LCB0eiksXG4gICAgbGFiZWw6IGZvcm1hdExhYmVsKHN0YXJ0LCBjYWRlbmNlKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBXaHkgYSBwZXJpb2QgY2Fubm90IGJlIHJlcG9ydGVkLiBSZXR1cm5lZCByYXRoZXIgdGhhbiB0aHJvd24gc28gYSByb3V0ZSBjYW5cbiAqIHR1cm4gaXQgaW50byBhIDR4eCB3aXRoIHRoZSByZWFzb24sIGFuZCB0aGUgc2NoZWR1bGVyIGNhbiBwYXVzZSB3aXRoIGl0LlxuICovXG5leHBvcnQgdHlwZSBQZXJpb2RSZWplY3Rpb24gPVxuICB8IHsgcmVhc29uOiAnaW5fcHJvZ3Jlc3MnOyBtZXNzYWdlOiBzdHJpbmcgfVxuICB8IHsgcmVhc29uOiAnYmVmb3JlX3JldGVudGlvbic7IG1lc3NhZ2U6IHN0cmluZyB9O1xuXG4vKipcbiAqIFJlZnVzZSBhIHBlcmlvZCB0aGUgb3JnJ3MgZGF0YSBjYW5ub3Qgc3VwcG9ydC5cbiAqXG4gKiBBIHdpbmRvdyBvbGRlciB0aGFuIHRoZSByZXRlbnRpb24gaG9yaXpvbiBtdXN0IGJlIFJFRlVTRUQgd2l0aCB0aGUgcmVhc29uLCBub3RcbiAqIHNpbGVudGx5IHRydW5jYXRlZDogYSByZXBvcnQgbGFiZWxsZWQgYDIwMjYtUTFgIHRoYXQgcXVpZXRseSBjb3ZlcnMgb25seSB0aGVcbiAqIGxhc3QgMzAgZGF5cyBvZiBpdCBpcyB3b3JzZSB0aGFuIG5vIHJlcG9ydCwgYmVjYXVzZSBhIG1hbmFnZXIgY2Fubm90IHRlbGwuXG4gKlxuICogYG1pbkZyb21Nc2AgaXMgdGhlIHJldGVudGlvbiBmbG9vciBmcm9tIGBvcmdSZXRlbnRpb25XaW5kb3dGcm9tU2V0dGluZ3NgXG4gKiAoMCA9IHVubGltaXRlZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWplY3RVbnJlcG9ydGFibGVQZXJpb2QoXG4gIHBlcmlvZDogUmVzb2x2ZWRQZXJpb2QsXG4gIG9wdHM6IHsgbWluRnJvbU1zOiBudW1iZXI7IG5vdz86IERhdGU7IGluY2x1ZGVQcmV2aW91cz86IGJvb2xlYW4gfSxcbik6IFBlcmlvZFJlamVjdGlvbiB8IG51bGwge1xuICBjb25zdCBub3cgPSBvcHRzLm5vdyA/PyBuZXcgRGF0ZSgpO1xuICBpZiAocGVyaW9kLmVuZC5nZXRUaW1lKCkgPiBub3cuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlYXNvbjogJ2luX3Byb2dyZXNzJyxcbiAgICAgIG1lc3NhZ2U6IGBQZXJpb2QgJHtwZXJpb2QubGFiZWx9IGhhcyBub3QgZmluaXNoZWQgeWV0IChlbmRzICR7cGVyaW9kLmVuZC50b0lTT1N0cmluZygpfSkuIEEgcmVwb3J0IGNvdmVycyB0aGUgbGFzdCBDT01QTEVURSBwZXJpb2QuYCxcbiAgICB9O1xuICB9XG4gIGlmIChvcHRzLm1pbkZyb21NcyA+IDApIHtcbiAgICAvLyBUaGUgY29tcGFyaXNvbiBwZXJpb2QgaXMgcGFydCBvZiB0aGUgcmVwb3J0IHdoZW4gYSBzZWN0aW9uIHNob3dzIGNoYW5nZSwgc29cbiAgICAvLyBpdHMgc3RhcnQgaXMgdGhlIHJlYWwgZmxvb3Ig4oCUIG90aGVyd2lzZSBcInZzIGxhc3Qgd2Vla1wiIHNpbGVudGx5IHJlYWRzIHplcm8uXG4gICAgY29uc3QgZWFybGllc3QgPSBvcHRzLmluY2x1ZGVQcmV2aW91cyA9PT0gZmFsc2UgPyBwZXJpb2Quc3RhcnQgOiBwZXJpb2QucHJldlN0YXJ0O1xuICAgIGlmIChlYXJsaWVzdC5nZXRUaW1lKCkgPCBvcHRzLm1pbkZyb21Ncykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVhc29uOiAnYmVmb3JlX3JldGVudGlvbicsXG4gICAgICAgIG1lc3NhZ2U6IGBQZXJpb2QgJHtwZXJpb2QubGFiZWx9IHN0YXJ0cyAke2VhcmxpZXN0LnRvSVNPU3RyaW5nKCl9LCBiZWZvcmUgdGhpcyBvcmdhbml6YXRpb24ncyByZXBvcnRpbmcgcmV0ZW50aW9uIGhvcml6b24gKCR7bmV3IERhdGUob3B0cy5taW5Gcm9tTXMpLnRvSVNPU3RyaW5nKCl9KS4gVGhlIHVuZGVybHlpbmcgZXZlbnRzIGhhdmUgYmVlbiBwdXJnZWQuYCxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFRoZSBpbnN0YW50IHRoZSBwZXJpb2QgQ09OVEFJTklORyBgZnJvbWAgZW5kcyDigJQgdGhhdCBpcywgdGhlIG1vbWVudCB0aGUgbmV4dFxuICogY29tcGxldGUgcGVyaW9kIGJlY29tZXMgcmVwb3J0YWJsZS5cbiAqXG4gKiBUaGlzIGlzIHdoYXQgYSBkZWZpbml0aW9uJ3MgYG5leHRSdW5BdGAgaXMgZGVyaXZlZCBmcm9tLCBhbmQgaXQgaXMgZGVsaWJlcmF0ZWx5XG4gKiB0aGUgYm91bmRhcnkgcmF0aGVyIHRoYW4gXCJsYXN0IHJ1biArIDcgZGF5c1wiOiBhIHdlZWtseSByZXBvcnQgd2hvc2UgbmV4dCBydW4gaXNcbiAqIGNvbXB1dGVkIGJ5IGFkZGluZyBlbGFwc2VkIG1pbGxpc2Vjb25kcyBkcmlmdHMgYW4gaG91ciBhdCBldmVyeSBEU1QgdHJhbnNpdGlvblxuICogYW5kIGV2ZW50dWFsbHkgZmlyZXMgb24gYSBTdW5kYXkuIFRoZSBib3VuZGFyeSBpcyBhIGNhbGVuZGFyIGZhY3QgaW4gdGhlXG4gKiByZXBvcnQncyBvd24gdGltZXpvbmUsIHNvIGl0IGlzIHRoZSBzYW1lIGFuc3dlciB3aGF0ZXZlciB0aGUgcHJldmlvdXMgcnVuIGRpZC5cbiAqXG4gKiBTdHJpY3RseSBhZnRlciBgZnJvbWA6IGEgYGZyb21gIHNpdHRpbmcgZXhhY3RseSBvbiBhIGJvdW5kYXJ5IGdldHMgdGhlIE5FWFQgb25lLFxuICogc28gYSBydW4gdGhhdCBjb21wbGV0ZXMgYXQgdGhlIGluc3RhbnQgb2YgdGhlIGJvdW5kYXJ5IGNhbm5vdCByZS1jbGFpbSBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHRQZXJpb2RCb3VuZGFyeShcbiAgY2FkZW5jZTogUmVwb3J0Q2FkZW5jZSxcbiAgdHo6IHN0cmluZyxcbiAgd2Vla1N0YXJ0OiAnbW9uZGF5JyB8ICdzdW5kYXknID0gJ21vbmRheScsXG4gIGZyb206IERhdGUgPSBuZXcgRGF0ZSgpLFxuKTogRGF0ZSB7XG4gIGNvbnN0IGNvbnRhaW5pbmcgPSBzdGFydE9mUGVyaW9kKGNpdmlsSW4oZnJvbSwgdHopLCBjYWRlbmNlLCB3ZWVrU3RhcnQpO1xuICByZXR1cm4gaW5zdGFudE9mQ2l2aWwoc2hpZnRQZXJpb2QoY29udGFpbmluZywgY2FkZW5jZSwgMSksIHR6KTtcbn1cblxuLyoqXG4gKiBFdmVyeSBDT01QTEVURSBwZXJpb2QgdGhhdCBlbmRlZCBhZnRlciBgc2luY2VgLCBvbGRlc3QgZmlyc3QuXG4gKlxuICogVGhpcyBpcyB0aGUgY2F0Y2gtdXAgbGlzdDogYSBzZXJ2aWNlIHRoYXQgd2FzIGRvd24gb3ZlciBhIHdlZWtlbmQsIGEgZGVmaW5pdGlvblxuICogY3JlYXRlZCB3aXRoIGEgYmFjay1kYXRlZCBgbmV4dFJ1bkF0YCwgb3IgYSBzY2hlZHVsZXIgZGlzYWJsZWQgYnkgaXRzIGtpbGwgc3dpdGNoXG4gKiBmb3IgYSBmb3J0bmlnaHQgYWxsIGxlYXZlIHBlcmlvZHMgdGhhdCB3ZXJlIG5ldmVyIHJlcG9ydGVkLiBSZXR1cm5pbmcgdGhlbSBpblxuICogb3JkZXIgbWF0dGVycyDigJQgYSBtYW5hZ2VyIHJlYWRpbmcgdGhyZWUgd2Vla2x5IHJlcG9ydHMgdGhhdCBhcnJpdmUgYXQgb25jZSBuZWVkc1xuICogdGhlbSB0byBtYWtlIHNlbnNlIHJlYWQgZG93bndhcmRzLlxuICpcbiAqIGBtYXhgIGJvdW5kcyB0aGUgd2Fsay4gQSBkZWZpbml0aW9uIHVudG91Y2hlZCBmb3IgdHdvIHllYXJzIG11c3Qgbm90IHByb2R1Y2UgMTA0XG4gKiB3ZWVrbHkgcmVwb3J0cyBpbiBvbmUgY3ljbGU7IHRoZSBjYXAgbWVhbnMgdGhlIG9sZGVzdCBhcmUgc2tpcHBlZCwgd2hpY2ggaXMgdGhlXG4gKiByaWdodCB0cmFkZSDigJQgbm9ib2R5IHdhbnRzIGxhc3QgQXByaWwncyB3ZWVrbHkgc3RhdHVzLCBhbmQgdGhlIHNuYXBzaG90IGZvciBpdFxuICogd291bGQgYmUgcGFzdCB0aGUgcmV0ZW50aW9uIGhvcml6b24gYW55d2F5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGxldGVQZXJpb2RzU2luY2UoXG4gIGNhZGVuY2U6IFJlcG9ydENhZGVuY2UsXG4gIHR6OiBzdHJpbmcsXG4gIHdlZWtTdGFydDogJ21vbmRheScgfCAnc3VuZGF5JyxcbiAgc2luY2U6IERhdGUgfCBudWxsLFxuICBub3c6IERhdGUgPSBuZXcgRGF0ZSgpLFxuICBtYXggPSA0LFxuKTogUmVzb2x2ZWRQZXJpb2RbXSB7XG4gIGNvbnN0IGxhdGVzdCA9IHJlc29sdmVQZXJpb2QoY2FkZW5jZSwgdHosIHdlZWtTdGFydCwgbm93KTtcbiAgaWYgKG1heCA8PSAwKSByZXR1cm4gW107XG4gIC8vIE5vIHByZXZpb3VzIHJ1bjogcmVwb3J0IHRoZSBsYXRlc3QgY29tcGxldGUgcGVyaW9kIG9ubHkuIEEgZGVmaW5pdGlvbiBjcmVhdGVkXG4gIC8vIHRvZGF5IGRvZXMgbm90IG93ZSBpdHMgb3duZXIgYSBiYWNrZmlsbCB0aGV5IG5ldmVyIGFza2VkIGZvci5cbiAgaWYgKCFzaW5jZSkgcmV0dXJuIFtsYXRlc3RdO1xuXG4gIGNvbnN0IG91dDogUmVzb2x2ZWRQZXJpb2RbXSA9IFtdO1xuICBjb25zdCBsYXRlc3RTdGFydCA9IHN0YXJ0T2ZQZXJpb2QoY2l2aWxJbihsYXRlc3Quc3RhcnQsIHR6KSwgY2FkZW5jZSwgd2Vla1N0YXJ0KTtcbiAgZm9yIChsZXQgYmFjayA9IDA7IGJhY2sgPCBtYXg7IGJhY2sgKz0gMSkge1xuICAgIGNvbnN0IHN0YXJ0ID0gc2hpZnRQZXJpb2QobGF0ZXN0U3RhcnQsIGNhZGVuY2UsIC1iYWNrKTtcbiAgICBjb25zdCBpbnN0YW50ID0gaW5zdGFudE9mQ2l2aWwoc3RhcnQsIHR6KTtcbiAgICAvLyBgc2luY2VgIGlzIHRoZSBsYXN0IHJ1bidzIHBlcmlvZCBFTkQgZm9yIGEgcnVuIHRoYXQgaGFwcGVuZWQsIHNvIGEgcGVyaW9kXG4gICAgLy8gd2hvc2UgZW5kIGlzIGF0IG9yIGJlZm9yZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHJlcG9ydGVkLlxuICAgIGlmIChpbnN0YW50T2ZDaXZpbChzaGlmdFBlcmlvZChzdGFydCwgY2FkZW5jZSwgMSksIHR6KS5nZXRUaW1lKCkgPD0gc2luY2UuZ2V0VGltZSgpKSBicmVhaztcbiAgICBjb25zdCBwcmV2U3RhcnQgPSBzaGlmdFBlcmlvZChzdGFydCwgY2FkZW5jZSwgLTEpO1xuICAgIG91dC5wdXNoKHtcbiAgICAgIHN0YXJ0OiBpbnN0YW50LFxuICAgICAgZW5kOiBpbnN0YW50T2ZDaXZpbChzaGlmdFBlcmlvZChzdGFydCwgY2FkZW5jZSwgMSksIHR6KSxcbiAgICAgIHByZXZTdGFydDogaW5zdGFudE9mQ2l2aWwocHJldlN0YXJ0LCB0eiksXG4gICAgICBwcmV2RW5kOiBpbnN0YW50LFxuICAgICAgbGFiZWw6IGZvcm1hdExhYmVsKHN0YXJ0LCBjYWRlbmNlKSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gb3V0LnJldmVyc2UoKTtcbn1cbiJdfQ==
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyaW9kLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3JlcG9ydGluZy9zdGFrZWhvbGRlci9wZXJpb2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQTBDdEMsbUVBQW1FO0FBQ25FLFNBQVMsT0FBTyxDQUFDLE9BQWEsRUFBRSxFQUFVO0lBQ3hDLDhFQUE4RTtJQUM5RSxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1FBQzdDLFFBQVEsRUFBRSxFQUFFO1FBQ1osSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsU0FBUztRQUNoQixHQUFHLEVBQUUsU0FBUztRQUNkLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLFNBQVM7UUFDakIsU0FBUyxFQUFFLEtBQUs7S0FDakIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixNQUFNLEdBQUcsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQy9GLE9BQU87UUFDTCxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNqQixLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNuQixHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUNmLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ3JCLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFTLGNBQWMsQ0FBQyxDQUErQyxFQUFFLEVBQVU7SUFDakYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25HLE1BQU0sS0FBSyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxLQUFLLEtBQUssQ0FBQztZQUFFLE1BQU07UUFDdkIsS0FBSyxJQUFJLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsZ0ZBQWdGO0FBQ2hGLFNBQVMsWUFBWSxDQUFDLENBQStDO0lBQ25FLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVE7SUFDaEYsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRO0FBQ2hDLENBQUM7QUFFRCxtRkFBbUY7QUFDbkYsU0FBUyxZQUFZLENBQUMsQ0FBK0MsRUFBRSxJQUFZO0lBQ2pGLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO0FBQ3ZGLENBQUM7QUFFRCw0RUFBNEU7QUFDNUUsU0FBUyxjQUFjLENBQUMsQ0FBK0MsRUFBRSxNQUFjO0lBQ3JGLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDeEQsQ0FBQztBQUVELG9EQUFvRDtBQUNwRCxTQUFTLGFBQWEsQ0FDcEIsQ0FBUSxFQUNSLE9BQXNCLEVBQ3RCLFNBQThCO0lBRTlCLE1BQU0sSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxRCxJQUFJLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN6QixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsb0VBQW9FO1FBQ3BFLE1BQU0sSUFBSSxHQUFHLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQzFFLE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzRSw4QkFBOEI7SUFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDdEQsQ0FBQztBQUVELHVEQUF1RDtBQUN2RCxTQUFTLFdBQVcsQ0FDbEIsS0FBbUQsRUFDbkQsT0FBc0IsRUFDdEIsQ0FBUztJQUVULElBQUksT0FBTyxLQUFLLFFBQVE7UUFBRSxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsT0FBTyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLE9BQU8sQ0FBQyxDQUErQztJQUM5RCxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUTtJQUM3QyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7SUFDM0QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sUUFBUSxHQUFHLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxhQUFhLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN4RixPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsb0RBQW9EO0FBQ3BELFNBQVMsV0FBVyxDQUFDLEtBQW1ELEVBQUUsT0FBc0I7SUFDOUYsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsT0FBTyxHQUFHLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDMUYsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDbkUsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsT0FBc0IsRUFDdEIsRUFBVSxFQUNWLFNBQVMsR0FBd0IsUUFBUSxFQUN6QyxHQUFHLEdBQVMsSUFBSSxJQUFJLEVBQUU7SUFFdEIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxxRUFBcUU7SUFDckUsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakUsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELE9BQU87UUFDTCxLQUFLLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDaEMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBQ3JDLFNBQVMsRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUN4QyxPQUFPLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDbEMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO0tBQ25DLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsS0FBYSxFQUNiLE9BQXNCLEVBQ3RCLEVBQVUsRUFDVixTQUFTLEdBQXdCLFFBQVE7SUFFekMsSUFBSSxLQUFLLEdBQXdELElBQUksQ0FBQztJQUV0RSxNQUFNLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLE1BQU0sT0FBTyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVqRCxJQUFJLE9BQU8sS0FBSyxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNuQywrREFBK0Q7UUFDL0QsTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUM5QixFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQzFDLFFBQVEsRUFDUixTQUFTLENBQ1YsQ0FBQztRQUNGLEtBQUssR0FBRyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9DLDBFQUEwRTtRQUMxRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7SUFDN0QsQ0FBQztTQUFNLElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMxQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDakMsS0FBSyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2RCxDQUFDO1NBQU0sSUFBSSxPQUFPLEtBQUssV0FBVyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzlDLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hGLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXhCLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsT0FBTztRQUNMLEtBQUssRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNoQyxHQUFHLEVBQUUsY0FBYyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDNUIsU0FBUyxFQUFFLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNsQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7S0FDbkMsQ0FBQztBQUNKLENBQUM7QUFVRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLE1BQXNCLEVBQ3RCLElBQWtFO0lBRWxFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNuQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDekMsT0FBTztZQUNMLE1BQU0sRUFBRSxhQUFhO1lBQ3JCLE9BQU8sRUFBRSxVQUFVLE1BQU0sQ0FBQyxLQUFLLCtCQUErQixNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSw4Q0FBOEM7U0FDckksQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkIsOEVBQThFO1FBQzlFLDhFQUE4RTtRQUM5RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsRixJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDeEMsT0FBTztnQkFDTCxNQUFNLEVBQUUsa0JBQWtCO2dCQUMxQixPQUFPLEVBQUUsVUFBVSxNQUFNLENBQUMsS0FBSyxXQUFXLFFBQVEsQ0FBQyxXQUFXLEVBQUUsNkRBQTZELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsNENBQTRDO2FBQ2hOLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsT0FBc0IsRUFDdEIsRUFBVSxFQUNWLFNBQVMsR0FBd0IsUUFBUSxFQUN6QyxJQUFJLEdBQVMsSUFBSSxJQUFJLEVBQUU7SUFFdkIsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sY0FBYyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxPQUFzQixFQUN0QixFQUFVLEVBQ1YsU0FBOEIsRUFDOUIsS0FBa0IsRUFDbEIsR0FBRyxHQUFTLElBQUksSUFBSSxFQUFFLEVBQ3RCLEdBQUcsR0FBRyxDQUFDO0lBRVAsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFELElBQUksR0FBRyxJQUFJLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN4QixnRkFBZ0Y7SUFDaEYsZ0VBQWdFO0lBQ2hFLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTVCLE1BQU0sR0FBRyxHQUFxQixFQUFFLENBQUM7SUFDakMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNqRixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUMsNEVBQTRFO1FBQzVFLDBEQUEwRDtRQUMxRCxJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQUUsTUFBTTtRQUMzRixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xELEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxLQUFLLEVBQUUsT0FBTztZQUNkLEdBQUcsRUFBRSxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELFNBQVMsRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUN4QyxPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7U0FDbkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBQZXJpb2QgcmVzb2x1dGlvbiBmb3Igc2NoZWR1bGVkIHJlcG9ydHM6IHdoaWNoIGNvbXBsZXRlIHdlZWssIG1vbnRoIG9yIHF1YXJ0ZXJcbiAqIGEgcnVuIGNvdmVycywgYW5kIHRoZSBvbmUgYmVmb3JlIGl0IGZvciBjb21wYXJpc29uLlxuICpcbiAqIEEgcmVwb3J0IGNvdmVycyB0aGUgTEFTVCBDT01QTEVURSBwZXJpb2QsIG5ldmVyIGEgcGFydGlhbCBvbmUuIFwiRGVwbG95cyB0aGlzXG4gKiB3ZWVrXCIgb24gYSBNb25kYXkgbW9ybmluZyBtZWFucyBsYXN0IHdlZWsg4oCUIGEgbWFuYWdlciByZWFkaW5nIGEgaGFsZi1maW5pc2hlZFxuICogd2VlayBzZWVzIG51bWJlcnMgdGhhdCBjaGFuZ2UgdW5kZXIgdGhlbS5cbiAqXG4gKiBFdmVyeXRoaW5nIGhlcmUgaXMgY29tcHV0ZWQgaW4gdGhlIHJlcG9ydCdzIElBTkEgdGltZXpvbmUsIHdpdGhvdXQgYSBkYXRlXG4gKiBsaWJyYXJ5LiBgSW50bC5EYXRlVGltZUZvcm1hdGAgd2l0aCBhIGB0aW1lWm9uZWAgaXMgdGhlIG9ubHkgdHogZGF0YWJhc2UgTm9kZVxuICogc2hpcHMsIHNvIHRoZSBhcHByb2FjaCBpczogcmVhZCB0aGUgd2FsbC1jbG9jayBwYXJ0cyBpbiB0aGF0IHpvbmUsIGRvIGNpdmlsXG4gKiBhcml0aG1ldGljIG9uIHRoZW0gKHdoaWNoIGlzIGV4YWN0IOKAlCBtb250aHMgYW5kIHF1YXJ0ZXJzIGFyZSBkZWZpbmVkIG9uIHRoZVxuICogY2FsZW5kYXIsIG5vdCBvbiBlbGFwc2VkIG1pbGxpc2Vjb25kcyksIHRoZW4gY29udmVydCB0aGUgcmVzdWx0aW5nIGNpdmlsXG4gKiBtaWRuaWdodCBiYWNrIHRvIGEgVVRDIGluc3RhbnQgYnkgbWVhc3VyaW5nIHRoZSB6b25lJ3Mgb2Zmc2V0IEFUIHRoYXQgaW5zdGFudC5cbiAqXG4gKiBNZWFzdXJpbmcgdGhlIG9mZnNldCBhdCB0aGUgdGFyZ2V0IGluc3RhbnQgcmF0aGVyIHRoYW4gYXQgYG5vd2AgaXMgd2hhdCBtYWtlc1xuICogRFNUIGNvcnJlY3Q6IGEgd2Vla2x5IHBlcmlvZCB0aGF0IHN0YXJ0cyBiZWZvcmUgYSB0cmFuc2l0aW9uIGFuZCBlbmRzIGFmdGVyIGl0XG4gKiBpcyBub3QgMTY4IGhvdXJzIGxvbmcsIGFuZCBhIHJlc29sdmVyIHRoYXQgYWRkZWQgYDcgKiAyNCAqIDM2MDBfMDAwYCB3b3VsZFxuICogc2lsZW50bHkgc2hpZnQgZXZlcnkgYm91bmRhcnkgYnkgYW4gaG91ciBmb3IgaGFsZiB0aGUgeWVhci5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJlcG9ydENhZGVuY2UgfSBmcm9tICcuLi8uLi8uLi9kYXRhYmFzZS9zY2hlbWEvcmVwb3J0aW5nLXN0YWtlaG9sZGVyLmpzJztcblxuLyoqIE9uZSByZXNvbHZlZCByZXBvcnRpbmcgcGVyaW9kLCBwbHVzIHRoZSBwcmV2aW91cyBvbmUgZm9yIGNvbXBhcmlzb24uICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkUGVyaW9kIHtcbiAgLyoqIEluY2x1c2l2ZSBzdGFydCBvZiB0aGUgcGVyaW9kIGJlaW5nIHJlcG9ydGVkIChVVEMgaW5zdGFudCkuICovXG4gIHN0YXJ0OiBEYXRlO1xuICAvKiogRXhjbHVzaXZlIGVuZCDigJQgYWxzbyB0aGUgc3RhcnQgb2YgdGhlIHBlcmlvZCBpbiBwcm9ncmVzcy4gKi9cbiAgZW5kOiBEYXRlO1xuICAvKiogSW5jbHVzaXZlIHN0YXJ0IG9mIHRoZSBQUkVWSU9VUyBwZXJpb2QsIGZvciBwZXJpb2Qtb3Zlci1wZXJpb2QgY2hhbmdlLiAqL1xuICBwcmV2U3RhcnQ6IERhdGU7XG4gIC8qKiBFeGNsdXNpdmUgZW5kIG9mIHRoZSBwcmV2aW91cyBwZXJpb2QgKD09PSBgc3RhcnRgKS4gKi9cbiAgcHJldkVuZDogRGF0ZTtcbiAgLyoqIEh1bWFuIGxhYmVsIGluIHRoZSByZXBvcnQncyB0aW1lem9uZTogYDIwMjYtVzM4YCwgYDIwMjYtMDhgLCBgMjAyNi1RM2AuICovXG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbi8qKiBDaXZpbCAod2FsbC1jbG9jaykgZGF0ZSBwYXJ0cyBpbiBhIGdpdmVuIHpvbmUuICovXG5pbnRlcmZhY2UgQ2l2aWwgeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyOyBob3VyOiBudW1iZXI7IG1pbnV0ZTogbnVtYmVyOyBzZWNvbmQ6IG51bWJlciB9XG5cbi8qKiBSZWFkIHRoZSB3YWxsLWNsb2NrIHBhcnRzIG9mIGBpbnN0YW50YCBhcyB0aGV5IHJlYWQgaW4gYHR6YC4gKi9cbmZ1bmN0aW9uIGNpdmlsSW4oaW5zdGFudDogRGF0ZSwgdHo6IHN0cmluZyk6IENpdmlsIHtcbiAgLy8gYGVuLUNBYCB5aWVsZHMgSVNPLWlzaCBgWVlZWS1NTS1ERGAsIGFuZCBob3VyQ3ljbGUgaDIzIGF2b2lkcyBhIDI0OjAwIGhvdXIuXG4gIGNvbnN0IHBhcnRzID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLUNBJywge1xuICAgIHRpbWVab25lOiB0eixcbiAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgc2Vjb25kOiAnMi1kaWdpdCcsXG4gICAgaG91ckN5Y2xlOiAnaDIzJyxcbiAgfSkuZm9ybWF0VG9QYXJ0cyhpbnN0YW50KTtcbiAgY29uc3QgZ2V0ID0gKHR5cGU6IHN0cmluZyk6IG51bWJlciA9PiBOdW1iZXIocGFydHMuZmluZCgocCkgPT4gcC50eXBlID09PSB0eXBlKT8udmFsdWUgPz8gJzAnKTtcbiAgcmV0dXJuIHtcbiAgICB5ZWFyOiBnZXQoJ3llYXInKSxcbiAgICBtb250aDogZ2V0KCdtb250aCcpLFxuICAgIGRheTogZ2V0KCdkYXknKSxcbiAgICBob3VyOiBnZXQoJ2hvdXInKSxcbiAgICBtaW51dGU6IGdldCgnbWludXRlJyksXG4gICAgc2Vjb25kOiBnZXQoJ3NlY29uZCcpLFxuICB9O1xufVxuXG4vKipcbiAqIFRoZSBVVEMgaW5zdGFudCBhdCB3aGljaCB0aGUgZ2l2ZW4gY2l2aWwgdGltZSBvY2N1cnMgaW4gYHR6YC5cbiAqXG4gKiBUd28gcGFzc2VzOiBndWVzcyBieSB0cmVhdGluZyB0aGUgY2l2aWwgdGltZSBhcyBVVEMsIG1lYXN1cmUgaG93IGZhciB0aGF0IGd1ZXNzXG4gKiBhY3R1YWxseSBsYW5kcyBmcm9tIHRoZSB0YXJnZXQgaW4gYHR6YCwgY29ycmVjdCwgdGhlbiByZS1tZWFzdXJlIG9uY2UuIFRoZVxuICogc2Vjb25kIHBhc3MgbWF0dGVycyBleGFjdGx5IGF0IGEgRFNUIHRyYW5zaXRpb24sIHdoZXJlIHRoZSBmaXJzdCBjb3JyZWN0aW9uIGNhblxuICogb3ZlcnNob290IGludG8gdGhlIG90aGVyIG9mZnNldC5cbiAqXG4gKiBGb3IgYSBjaXZpbCBtaWRuaWdodCB0aGF0IGRvZXMgbm90IGV4aXN0IChzcHJpbmctZm9yd2FyZCBza2lwcyBpdCkgdGhpcyBzZXR0bGVzXG4gKiBvbiB0aGUgaW5zdGFudCBqdXN0IGFmdGVyIHRoZSBnYXAsIHdoaWNoIGlzIHRoZSBzdGFydCBvZiB0aGUgZGF5IGFzIHRoYXQgem9uZVxuICogZXhwZXJpZW5jZWQgaXQg4oCUIHRoZSByaWdodCBhbnN3ZXIgZm9yIGEgcGVyaW9kIGJvdW5kYXJ5LlxuICovXG5mdW5jdGlvbiBpbnN0YW50T2ZDaXZpbChjOiB7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgZGF5OiBudW1iZXIgfSwgdHo6IHN0cmluZyk6IERhdGUge1xuICBjb25zdCBhc1V0YyA9IERhdGUuVVRDKGMueWVhciwgYy5tb250aCAtIDEsIGMuZGF5LCAwLCAwLCAwKTtcbiAgbGV0IGd1ZXNzID0gYXNVdGM7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7XG4gICAgY29uc3QgYmFjayA9IGNpdmlsSW4obmV3IERhdGUoZ3Vlc3MpLCB0eik7XG4gICAgY29uc3QgYmFja1V0YyA9IERhdGUuVVRDKGJhY2sueWVhciwgYmFjay5tb250aCAtIDEsIGJhY2suZGF5LCBiYWNrLmhvdXIsIGJhY2subWludXRlLCBiYWNrLnNlY29uZCk7XG4gICAgY29uc3QgZHJpZnQgPSBiYWNrVXRjIC0gYXNVdGM7XG4gICAgaWYgKGRyaWZ0ID09PSAwKSBicmVhaztcbiAgICBndWVzcyAtPSBkcmlmdDtcbiAgfVxuICByZXR1cm4gbmV3IERhdGUoZ3Vlc3MpO1xufVxuXG4vKiogMCA9IE1vbmRheSDigKYgNiA9IFN1bmRheSwgZm9yIGEgY2l2aWwgZGF0ZSAoWmVsbGVyLWZyZWU6IHVzZSBhIFVUQyBwcm9iZSkuICovXG5mdW5jdGlvbiBjaXZpbFdlZWtkYXkoYzogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0pOiBudW1iZXIge1xuICBjb25zdCBkb3cgPSBuZXcgRGF0ZShEYXRlLlVUQyhjLnllYXIsIGMubW9udGggLSAxLCBjLmRheSkpLmdldFVUQ0RheSgpOyAvLyAwPVN1blxuICByZXR1cm4gKGRvdyArIDYpICUgNzsgLy8gMD1Nb25cbn1cblxuLyoqIEFkZCBgZGF5c2AgdG8gYSBjaXZpbCBkYXRlLCBub3JtYWxpc2luZyB2aWEgVVRDIGFyaXRobWV0aWMgKG5vIHR6IGludm9sdmVkKS4gKi9cbmZ1bmN0aW9uIGFkZENpdmlsRGF5cyhjOiB7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgZGF5OiBudW1iZXIgfSwgZGF5czogbnVtYmVyKTogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0ge1xuICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoYy55ZWFyLCBjLm1vbnRoIC0gMSwgYy5kYXkgKyBkYXlzKSk7XG4gIHJldHVybiB7IHllYXI6IGQuZ2V0VVRDRnVsbFllYXIoKSwgbW9udGg6IGQuZ2V0VVRDTW9udGgoKSArIDEsIGRheTogZC5nZXRVVENEYXRlKCkgfTtcbn1cblxuLyoqIEFkZCBgbW9udGhzYCB0byBhIGNpdmlsIGRhdGUsIGNsYW1waW5nIHRoZSBkYXkgaW50byB0aGUgdGFyZ2V0IG1vbnRoLiAqL1xuZnVuY3Rpb24gYWRkQ2l2aWxNb250aHMoYzogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0sIG1vbnRoczogbnVtYmVyKTogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0ge1xuICBjb25zdCB6ZXJvQmFzZWQgPSAoYy55ZWFyICogMTIpICsgKGMubW9udGggLSAxKSArIG1vbnRocztcbiAgY29uc3QgeWVhciA9IE1hdGguZmxvb3IoemVyb0Jhc2VkIC8gMTIpO1xuICBjb25zdCBtb250aCA9ICh6ZXJvQmFzZWQgJSAxMikgKyAxO1xuICBjb25zdCBsYXN0RGF5ID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGgsIDApKS5nZXRVVENEYXRlKCk7XG4gIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXk6IE1hdGgubWluKGMuZGF5LCBsYXN0RGF5KSB9O1xufVxuXG4vKiogVGhlIGNpdmlsIHN0YXJ0IG9mIHRoZSBwZXJpb2QgY29udGFpbmluZyBgY2AuICovXG5mdW5jdGlvbiBzdGFydE9mUGVyaW9kKFxuICBjOiBDaXZpbCxcbiAgY2FkZW5jZTogUmVwb3J0Q2FkZW5jZSxcbiAgd2Vla1N0YXJ0OiAnbW9uZGF5JyB8ICdzdW5kYXknLFxuKTogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0ge1xuICBjb25zdCBkYXRlID0geyB5ZWFyOiBjLnllYXIsIG1vbnRoOiBjLm1vbnRoLCBkYXk6IGMuZGF5IH07XG4gIGlmIChjYWRlbmNlID09PSAnd2Vla2x5Jykge1xuICAgIGNvbnN0IG1vbmRheUluZGV4ID0gY2l2aWxXZWVrZGF5KGRhdGUpO1xuICAgIC8vIFN1bmRheSB3ZWVrcyBzdGFydCBvbmUgZGF5IGVhcmxpZXIgdGhhbiB0aGUgTW9uZGF5IGluZGV4IGltcGxpZXMuXG4gICAgY29uc3QgYmFjayA9IHdlZWtTdGFydCA9PT0gJ3N1bmRheScgPyAobW9uZGF5SW5kZXggKyAxKSAlIDcgOiBtb25kYXlJbmRleDtcbiAgICByZXR1cm4gYWRkQ2l2aWxEYXlzKGRhdGUsIC1iYWNrKTtcbiAgfVxuICBpZiAoY2FkZW5jZSA9PT0gJ21vbnRobHknKSByZXR1cm4geyB5ZWFyOiBjLnllYXIsIG1vbnRoOiBjLm1vbnRoLCBkYXk6IDEgfTtcbiAgLy8gUXVhcnRlcmx5OiBKYW4vQXByL0p1bC9PY3QuXG4gIGNvbnN0IHFTdGFydE1vbnRoID0gTWF0aC5mbG9vcigoYy5tb250aCAtIDEpIC8gMykgKiAzICsgMTtcbiAgcmV0dXJuIHsgeWVhcjogYy55ZWFyLCBtb250aDogcVN0YXJ0TW9udGgsIGRheTogMSB9O1xufVxuXG4vKiogU2hpZnQgYSBjaXZpbCBwZXJpb2Qgc3RhcnQgYnkgYG5gIHdob2xlIHBlcmlvZHMuICovXG5mdW5jdGlvbiBzaGlmdFBlcmlvZChcbiAgc3RhcnQ6IHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyOyBkYXk6IG51bWJlciB9LFxuICBjYWRlbmNlOiBSZXBvcnRDYWRlbmNlLFxuICBuOiBudW1iZXIsXG4pOiB7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgZGF5OiBudW1iZXIgfSB7XG4gIGlmIChjYWRlbmNlID09PSAnd2Vla2x5JykgcmV0dXJuIGFkZENpdmlsRGF5cyhzdGFydCwgNyAqIG4pO1xuICBpZiAoY2FkZW5jZSA9PT0gJ21vbnRobHknKSByZXR1cm4gYWRkQ2l2aWxNb250aHMoc3RhcnQsIG4pO1xuICByZXR1cm4gYWRkQ2l2aWxNb250aHMoc3RhcnQsIDMgKiBuKTtcbn1cblxuLyoqXG4gKiBJU08tODYwMSB3ZWVrIG51bWJlciBvZiBhIGNpdmlsIGRhdGUuIFVzZWQgb25seSBmb3IgdGhlIHdlZWtseSBMQUJFTCwgYW5kXG4gKiBkZWxpYmVyYXRlbHkgSVNPIGV2ZW4gZm9yIGEgU3VuZGF5LXdlZWsgb3JnOiBgMjAyNi1XMzhgIGlzIGEgcmVjb2duaXNlZFxuICogbm90YXRpb24gYW5kIGludmVudGluZyBhIFN1bmRheS1iYXNlZCBudW1iZXJpbmcgd291bGQgbWFrZSBsYWJlbHNcbiAqIG5vbi1jb21wYXJhYmxlIHdpdGggYW55dGhpbmcgZWxzZS5cbiAqL1xuZnVuY3Rpb24gaXNvV2VlayhjOiB7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgZGF5OiBudW1iZXIgfSk6IHsgeWVhcjogbnVtYmVyOyB3ZWVrOiBudW1iZXIgfSB7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZShEYXRlLlVUQyhjLnllYXIsIGMubW9udGggLSAxLCBjLmRheSkpO1xuICBjb25zdCBkYXkgPSAoZC5nZXRVVENEYXkoKSArIDYpICUgNzsgLy8gMD1Nb25cbiAgZC5zZXRVVENEYXRlKGQuZ2V0VVRDRGF0ZSgpIC0gZGF5ICsgMyk7IC8vIG5lYXJlc3QgVGh1cnNkYXlcbiAgY29uc3QgaXNvWWVhciA9IGQuZ2V0VVRDRnVsbFllYXIoKTtcbiAgY29uc3QgZmlyc3RUaHVyc2RheSA9IG5ldyBEYXRlKERhdGUuVVRDKGlzb1llYXIsIDAsIDQpKTtcbiAgY29uc3QgZmlyc3REYXkgPSAoZmlyc3RUaHVyc2RheS5nZXRVVENEYXkoKSArIDYpICUgNztcbiAgZmlyc3RUaHVyc2RheS5zZXRVVENEYXRlKGZpcnN0VGh1cnNkYXkuZ2V0VVRDRGF0ZSgpIC0gZmlyc3REYXkgKyAzKTtcbiAgY29uc3Qgd2VlayA9IDEgKyBNYXRoLnJvdW5kKChkLmdldFRpbWUoKSAtIGZpcnN0VGh1cnNkYXkuZ2V0VGltZSgpKSAvICg3ICogODZfNDAwXzAwMCkpO1xuICByZXR1cm4geyB5ZWFyOiBpc29ZZWFyLCB3ZWVrIH07XG59XG5cbi8qKiBUaGUgbGFiZWwgZm9yIGEgcGVyaW9kLCBmcm9tIGl0cyBjaXZpbCBzdGFydC4gKi9cbmZ1bmN0aW9uIGZvcm1hdExhYmVsKHN0YXJ0OiB7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgZGF5OiBudW1iZXIgfSwgY2FkZW5jZTogUmVwb3J0Q2FkZW5jZSk6IHN0cmluZyB7XG4gIGlmIChjYWRlbmNlID09PSAnd2Vla2x5Jykge1xuICAgIGNvbnN0IHsgeWVhciwgd2VlayB9ID0gaXNvV2VlayhzdGFydCk7XG4gICAgcmV0dXJuIGAke3llYXJ9LVcke1N0cmluZyh3ZWVrKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gIH1cbiAgaWYgKGNhZGVuY2UgPT09ICdtb250aGx5JykgcmV0dXJuIGAke3N0YXJ0LnllYXJ9LSR7U3RyaW5nKHN0YXJ0Lm1vbnRoKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gIHJldHVybiBgJHtzdGFydC55ZWFyfS1RJHtNYXRoLmZsb29yKChzdGFydC5tb250aCAtIDEpIC8gMykgKyAxfWA7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgbGFzdCBDT01QTEVURSBwZXJpb2QgZm9yIGBjYWRlbmNlYCBpbiBgdHpgLlxuICpcbiAqIFRoZSBwZXJpb2QgaW4gcHJvZ3Jlc3MgaXMgZXhjbHVkZWQ6IGl0cyBlbmQgaXMgdGhlIGJvdW5kYXJ5LCBzbyBhIE1vbmRheSBydW5cbiAqIHJlcG9ydHMgbGFzdCB3ZWVrIGFuZCBhIHJ1biBvbiB0aGUgMXN0IHJlcG9ydHMgbGFzdCBtb250aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQZXJpb2QoXG4gIGNhZGVuY2U6IFJlcG9ydENhZGVuY2UsXG4gIHR6OiBzdHJpbmcsXG4gIHdlZWtTdGFydDogJ21vbmRheScgfCAnc3VuZGF5JyA9ICdtb25kYXknLFxuICBub3c6IERhdGUgPSBuZXcgRGF0ZSgpLFxuKTogUmVzb2x2ZWRQZXJpb2Qge1xuICBjb25zdCBub3dDaXZpbCA9IGNpdmlsSW4obm93LCB0eik7XG4gIC8vIFN0YXJ0IG9mIHRoZSBwZXJpb2QgQ09OVEFJTklORyBub3cgPSBlbmQgb2YgdGhlIGxhc3QgY29tcGxldGUgb25lLlxuICBjb25zdCBjdXJyZW50U3RhcnQgPSBzdGFydE9mUGVyaW9kKG5vd0NpdmlsLCBjYWRlbmNlLCB3ZWVrU3RhcnQpO1xuICBjb25zdCBzdGFydCA9IHNoaWZ0UGVyaW9kKGN1cnJlbnRTdGFydCwgY2FkZW5jZSwgLTEpO1xuICBjb25zdCBwcmV2U3RhcnQgPSBzaGlmdFBlcmlvZChjdXJyZW50U3RhcnQsIGNhZGVuY2UsIC0yKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDogaW5zdGFudE9mQ2l2aWwoc3RhcnQsIHR6KSxcbiAgICBlbmQ6IGluc3RhbnRPZkNpdmlsKGN1cnJlbnRTdGFydCwgdHopLFxuICAgIHByZXZTdGFydDogaW5zdGFudE9mQ2l2aWwocHJldlN0YXJ0LCB0eiksXG4gICAgcHJldkVuZDogaW5zdGFudE9mQ2l2aWwoc3RhcnQsIHR6KSxcbiAgICBsYWJlbDogZm9ybWF0TGFiZWwoc3RhcnQsIGNhZGVuY2UpLFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYSBTUEVDSUZJQyBwZXJpb2QgYnkgaXRzIGxhYmVsIChgMjAyNi1XMzhgLCBgMjAyNi0wOGAsIGAyMDI2LVEzYCksIGZvclxuICogb24tZGVtYW5kIHJ1bnMgYW5kIGJhY2tmaWxscy4gUmV0dXJucyBudWxsIHdoZW4gdGhlIGxhYmVsIGRvZXMgbm90IHBhcnNlIG9yXG4gKiBkb2VzIG5vdCBtYXRjaCB0aGUgY2FkZW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQZXJpb2RCeUxhYmVsKFxuICBsYWJlbDogc3RyaW5nLFxuICBjYWRlbmNlOiBSZXBvcnRDYWRlbmNlLFxuICB0ejogc3RyaW5nLFxuICB3ZWVrU3RhcnQ6ICdtb25kYXknIHwgJ3N1bmRheScgPSAnbW9uZGF5Jyxcbik6IFJlc29sdmVkUGVyaW9kIHwgbnVsbCB7XG4gIGxldCBzdGFydDogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcblxuICBjb25zdCB3ZWVrID0gL14oXFxkezR9KS1XKFxcZHsyfSkkLy5leGVjKGxhYmVsKTtcbiAgY29uc3QgbW9udGggPSAvXihcXGR7NH0pLShcXGR7Mn0pJC8uZXhlYyhsYWJlbCk7XG4gIGNvbnN0IHF1YXJ0ZXIgPSAvXihcXGR7NH0pLVEoWzEtNF0pJC8uZXhlYyhsYWJlbCk7XG5cbiAgaWYgKGNhZGVuY2UgPT09ICd3ZWVrbHknICYmIHdlZWspIHtcbiAgICBjb25zdCB5ZWFyID0gTnVtYmVyKHdlZWtbMV0pO1xuICAgIGNvbnN0IHdrID0gTnVtYmVyKHdlZWtbMl0pO1xuICAgIGlmICh3ayA8IDEgfHwgd2sgPiA1MykgcmV0dXJuIG51bGw7XG4gICAgLy8gSVNPIHdlZWsgMSBjb250YWlucyBKYW4gNHRoOyB3YWxrIGJhY2sgdG8gdGhhdCB3ZWVrJ3Mgc3RhcnQuXG4gICAgY29uc3QgamFuNCA9IHsgeWVhciwgbW9udGg6IDEsIGRheTogNCB9O1xuICAgIGNvbnN0IHdlZWsxU3RhcnQgPSBzdGFydE9mUGVyaW9kKFxuICAgICAgeyAuLi5qYW40LCBob3VyOiAwLCBtaW51dGU6IDAsIHNlY29uZDogMCB9LFxuICAgICAgJ3dlZWtseScsXG4gICAgICB3ZWVrU3RhcnQsXG4gICAgKTtcbiAgICBzdGFydCA9IGFkZENpdmlsRGF5cyh3ZWVrMVN0YXJ0LCAod2sgLSAxKSAqIDcpO1xuICAgIC8vIEEgNTNyZCB3ZWVrIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gdGhpcyBJU08geWVhciBsYW5kcyBpbiB0aGUgbmV4dCBvbmUuXG4gICAgaWYgKGlzb1dlZWsoc3RhcnQpLnllYXIgIT09IHllYXIgJiYgd2sgPT09IDUzKSByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmIChjYWRlbmNlID09PSAnbW9udGhseScgJiYgbW9udGgpIHtcbiAgICBjb25zdCBtID0gTnVtYmVyKG1vbnRoWzJdKTtcbiAgICBpZiAobSA8IDEgfHwgbSA+IDEyKSByZXR1cm4gbnVsbDtcbiAgICBzdGFydCA9IHsgeWVhcjogTnVtYmVyKG1vbnRoWzFdKSwgbW9udGg6IG0sIGRheTogMSB9O1xuICB9IGVsc2UgaWYgKGNhZGVuY2UgPT09ICdxdWFydGVybHknICYmIHF1YXJ0ZXIpIHtcbiAgICBzdGFydCA9IHsgeWVhcjogTnVtYmVyKHF1YXJ0ZXJbMV0pLCBtb250aDogKE51bWJlcihxdWFydGVyWzJdKSAtIDEpICogMyArIDEsIGRheTogMSB9O1xuICB9XG4gIGlmICghc3RhcnQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGVuZCA9IHNoaWZ0UGVyaW9kKHN0YXJ0LCBjYWRlbmNlLCAxKTtcbiAgY29uc3QgcHJldlN0YXJ0ID0gc2hpZnRQZXJpb2Qoc3RhcnQsIGNhZGVuY2UsIC0xKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDogaW5zdGFudE9mQ2l2aWwoc3RhcnQsIHR6KSxcbiAgICBlbmQ6IGluc3RhbnRPZkNpdmlsKGVuZCwgdHopLFxuICAgIHByZXZTdGFydDogaW5zdGFudE9mQ2l2aWwocHJldlN0YXJ0LCB0eiksXG4gICAgcHJldkVuZDogaW5zdGFudE9mQ2l2aWwoc3RhcnQsIHR6KSxcbiAgICBsYWJlbDogZm9ybWF0TGFiZWwoc3RhcnQsIGNhZGVuY2UpLFxuICB9O1xufVxuXG4vKipcbiAqIFdoeSBhIHBlcmlvZCBjYW5ub3QgYmUgcmVwb3J0ZWQuIFJldHVybmVkIHJhdGhlciB0aGFuIHRocm93biBzbyBhIHJvdXRlIGNhblxuICogdHVybiBpdCBpbnRvIGEgNHh4IHdpdGggdGhlIHJlYXNvbiwgYW5kIHRoZSBzY2hlZHVsZXIgY2FuIHBhdXNlIHdpdGggaXQuXG4gKi9cbmV4cG9ydCB0eXBlIFBlcmlvZFJlamVjdGlvbiA9XG4gIHwgeyByZWFzb246ICdpbl9wcm9ncmVzcyc7IG1lc3NhZ2U6IHN0cmluZyB9XG4gIHwgeyByZWFzb246ICdiZWZvcmVfcmV0ZW50aW9uJzsgbWVzc2FnZTogc3RyaW5nIH07XG5cbi8qKlxuICogUmVmdXNlIGEgcGVyaW9kIHRoZSBvcmcncyBkYXRhIGNhbm5vdCBzdXBwb3J0LlxuICpcbiAqIEEgd2luZG93IG9sZGVyIHRoYW4gdGhlIHJldGVudGlvbiBob3Jpem9uIG11c3QgYmUgUkVGVVNFRCB3aXRoIHRoZSByZWFzb24sIG5vdFxuICogc2lsZW50bHkgdHJ1bmNhdGVkOiBhIHJlcG9ydCBsYWJlbGxlZCBgMjAyNi1RMWAgdGhhdCBxdWlldGx5IGNvdmVycyBvbmx5IHRoZVxuICogbGFzdCAzMCBkYXlzIG9mIGl0IGlzIHdvcnNlIHRoYW4gbm8gcmVwb3J0LCBiZWNhdXNlIGEgbWFuYWdlciBjYW5ub3QgdGVsbC5cbiAqXG4gKiBgbWluRnJvbU1zYCBpcyB0aGUgcmV0ZW50aW9uIGZsb29yIGZyb20gYG9yZ1JldGVudGlvbldpbmRvd0Zyb21TZXR0aW5nc2BcbiAqICgwID0gdW5saW1pdGVkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdFVucmVwb3J0YWJsZVBlcmlvZChcbiAgcGVyaW9kOiBSZXNvbHZlZFBlcmlvZCxcbiAgb3B0czogeyBtaW5Gcm9tTXM6IG51bWJlcjsgbm93PzogRGF0ZTsgaW5jbHVkZVByZXZpb3VzPzogYm9vbGVhbiB9LFxuKTogUGVyaW9kUmVqZWN0aW9uIHwgbnVsbCB7XG4gIGNvbnN0IG5vdyA9IG9wdHMubm93ID8/IG5ldyBEYXRlKCk7XG4gIGlmIChwZXJpb2QuZW5kLmdldFRpbWUoKSA+IG5vdy5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVhc29uOiAnaW5fcHJvZ3Jlc3MnLFxuICAgICAgbWVzc2FnZTogYFBlcmlvZCAke3BlcmlvZC5sYWJlbH0gaGFzIG5vdCBmaW5pc2hlZCB5ZXQgKGVuZHMgJHtwZXJpb2QuZW5kLnRvSVNPU3RyaW5nKCl9KS4gQSByZXBvcnQgY292ZXJzIHRoZSBsYXN0IENPTVBMRVRFIHBlcmlvZC5gLFxuICAgIH07XG4gIH1cbiAgaWYgKG9wdHMubWluRnJvbU1zID4gMCkge1xuICAgIC8vIFRoZSBjb21wYXJpc29uIHBlcmlvZCBpcyBwYXJ0IG9mIHRoZSByZXBvcnQgd2hlbiBhIHNlY3Rpb24gc2hvd3MgY2hhbmdlLCBzb1xuICAgIC8vIGl0cyBzdGFydCBpcyB0aGUgcmVhbCBmbG9vciDigJQgb3RoZXJ3aXNlIFwidnMgbGFzdCB3ZWVrXCIgc2lsZW50bHkgcmVhZHMgemVyby5cbiAgICBjb25zdCBlYXJsaWVzdCA9IG9wdHMuaW5jbHVkZVByZXZpb3VzID09PSBmYWxzZSA/IHBlcmlvZC5zdGFydCA6IHBlcmlvZC5wcmV2U3RhcnQ7XG4gICAgaWYgKGVhcmxpZXN0LmdldFRpbWUoKSA8IG9wdHMubWluRnJvbU1zKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZWFzb246ICdiZWZvcmVfcmV0ZW50aW9uJyxcbiAgICAgICAgbWVzc2FnZTogYFBlcmlvZCAke3BlcmlvZC5sYWJlbH0gc3RhcnRzICR7ZWFybGllc3QudG9JU09TdHJpbmcoKX0sIGJlZm9yZSB0aGlzIG9yZ2FuaXphdGlvbidzIHJlcG9ydGluZyByZXRlbnRpb24gaG9yaXpvbiAoJHtuZXcgRGF0ZShvcHRzLm1pbkZyb21NcykudG9JU09TdHJpbmcoKX0pLiBUaGUgdW5kZXJseWluZyBldmVudHMgaGF2ZSBiZWVuIHB1cmdlZC5gLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogVGhlIGluc3RhbnQgdGhlIHBlcmlvZCBDT05UQUlOSU5HIGBmcm9tYCBlbmRzIOKAlCB0aGF0IGlzLCB0aGUgbW9tZW50IHRoZSBuZXh0XG4gKiBjb21wbGV0ZSBwZXJpb2QgYmVjb21lcyByZXBvcnRhYmxlLlxuICpcbiAqIFRoaXMgaXMgd2hhdCBhIGRlZmluaXRpb24ncyBgbmV4dFJ1bkF0YCBpcyBkZXJpdmVkIGZyb20sIGFuZCBpdCBpcyBkZWxpYmVyYXRlbHlcbiAqIHRoZSBib3VuZGFyeSByYXRoZXIgdGhhbiBcImxhc3QgcnVuICsgNyBkYXlzXCI6IGEgd2Vla2x5IHJlcG9ydCB3aG9zZSBuZXh0IHJ1biBpc1xuICogY29tcHV0ZWQgYnkgYWRkaW5nIGVsYXBzZWQgbWlsbGlzZWNvbmRzIGRyaWZ0cyBhbiBob3VyIGF0IGV2ZXJ5IERTVCB0cmFuc2l0aW9uXG4gKiBhbmQgZXZlbnR1YWxseSBmaXJlcyBvbiBhIFN1bmRheS4gVGhlIGJvdW5kYXJ5IGlzIGEgY2FsZW5kYXIgZmFjdCBpbiB0aGVcbiAqIHJlcG9ydCdzIG93biB0aW1lem9uZSwgc28gaXQgaXMgdGhlIHNhbWUgYW5zd2VyIHdoYXRldmVyIHRoZSBwcmV2aW91cyBydW4gZGlkLlxuICpcbiAqIFN0cmljdGx5IGFmdGVyIGBmcm9tYDogYSBgZnJvbWAgc2l0dGluZyBleGFjdGx5IG9uIGEgYm91bmRhcnkgZ2V0cyB0aGUgTkVYVCBvbmUsXG4gKiBzbyBhIHJ1biB0aGF0IGNvbXBsZXRlcyBhdCB0aGUgaW5zdGFudCBvZiB0aGUgYm91bmRhcnkgY2Fubm90IHJlLWNsYWltIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dFBlcmlvZEJvdW5kYXJ5KFxuICBjYWRlbmNlOiBSZXBvcnRDYWRlbmNlLFxuICB0ejogc3RyaW5nLFxuICB3ZWVrU3RhcnQ6ICdtb25kYXknIHwgJ3N1bmRheScgPSAnbW9uZGF5JyxcbiAgZnJvbTogRGF0ZSA9IG5ldyBEYXRlKCksXG4pOiBEYXRlIHtcbiAgY29uc3QgY29udGFpbmluZyA9IHN0YXJ0T2ZQZXJpb2QoY2l2aWxJbihmcm9tLCB0eiksIGNhZGVuY2UsIHdlZWtTdGFydCk7XG4gIHJldHVybiBpbnN0YW50T2ZDaXZpbChzaGlmdFBlcmlvZChjb250YWluaW5nLCBjYWRlbmNlLCAxKSwgdHopO1xufVxuXG4vKipcbiAqIEV2ZXJ5IENPTVBMRVRFIHBlcmlvZCB0aGF0IGVuZGVkIGFmdGVyIGBzaW5jZWAsIG9sZGVzdCBmaXJzdC5cbiAqXG4gKiBUaGlzIGlzIHRoZSBjYXRjaC11cCBsaXN0OiBhIHNlcnZpY2UgdGhhdCB3YXMgZG93biBvdmVyIGEgd2Vla2VuZCwgYSBkZWZpbml0aW9uXG4gKiBjcmVhdGVkIHdpdGggYSBiYWNrLWRhdGVkIGBuZXh0UnVuQXRgLCBvciBhIHNjaGVkdWxlciBkaXNhYmxlZCBieSBpdHMga2lsbCBzd2l0Y2hcbiAqIGZvciBhIGZvcnRuaWdodCBhbGwgbGVhdmUgcGVyaW9kcyB0aGF0IHdlcmUgbmV2ZXIgcmVwb3J0ZWQuIFJldHVybmluZyB0aGVtIGluXG4gKiBvcmRlciBtYXR0ZXJzIOKAlCBhIG1hbmFnZXIgcmVhZGluZyB0aHJlZSB3ZWVrbHkgcmVwb3J0cyB0aGF0IGFycml2ZSBhdCBvbmNlIG5lZWRzXG4gKiB0aGVtIHRvIG1ha2Ugc2Vuc2UgcmVhZCBkb3dud2FyZHMuXG4gKlxuICogYG1heGAgYm91bmRzIHRoZSB3YWxrLiBBIGRlZmluaXRpb24gdW50b3VjaGVkIGZvciB0d28geWVhcnMgbXVzdCBub3QgcHJvZHVjZSAxMDRcbiAqIHdlZWtseSByZXBvcnRzIGluIG9uZSBjeWNsZTsgdGhlIGNhcCBtZWFucyB0aGUgb2xkZXN0IGFyZSBza2lwcGVkLCB3aGljaCBpcyB0aGVcbiAqIHJpZ2h0IHRyYWRlIOKAlCBub2JvZHkgd2FudHMgbGFzdCBBcHJpbCdzIHdlZWtseSBzdGF0dXMsIGFuZCB0aGUgc25hcHNob3QgZm9yIGl0XG4gKiB3b3VsZCBiZSBwYXN0IHRoZSByZXRlbnRpb24gaG9yaXpvbiBhbnl3YXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGV0ZVBlcmlvZHNTaW5jZShcbiAgY2FkZW5jZTogUmVwb3J0Q2FkZW5jZSxcbiAgdHo6IHN0cmluZyxcbiAgd2Vla1N0YXJ0OiAnbW9uZGF5JyB8ICdzdW5kYXknLFxuICBzaW5jZTogRGF0ZSB8IG51bGwsXG4gIG5vdzogRGF0ZSA9IG5ldyBEYXRlKCksXG4gIG1heCA9IDQsXG4pOiBSZXNvbHZlZFBlcmlvZFtdIHtcbiAgY29uc3QgbGF0ZXN0ID0gcmVzb2x2ZVBlcmlvZChjYWRlbmNlLCB0eiwgd2Vla1N0YXJ0LCBub3cpO1xuICBpZiAobWF4IDw9IDApIHJldHVybiBbXTtcbiAgLy8gTm8gcHJldmlvdXMgcnVuOiByZXBvcnQgdGhlIGxhdGVzdCBjb21wbGV0ZSBwZXJpb2Qgb25seS4gQSBkZWZpbml0aW9uIGNyZWF0ZWRcbiAgLy8gdG9kYXkgZG9lcyBub3Qgb3dlIGl0cyBvd25lciBhIGJhY2tmaWxsIHRoZXkgbmV2ZXIgYXNrZWQgZm9yLlxuICBpZiAoIXNpbmNlKSByZXR1cm4gW2xhdGVzdF07XG5cbiAgY29uc3Qgb3V0OiBSZXNvbHZlZFBlcmlvZFtdID0gW107XG4gIGNvbnN0IGxhdGVzdFN0YXJ0ID0gc3RhcnRPZlBlcmlvZChjaXZpbEluKGxhdGVzdC5zdGFydCwgdHopLCBjYWRlbmNlLCB3ZWVrU3RhcnQpO1xuICBmb3IgKGxldCBiYWNrID0gMDsgYmFjayA8IG1heDsgYmFjayArPSAxKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBzaGlmdFBlcmlvZChsYXRlc3RTdGFydCwgY2FkZW5jZSwgLWJhY2spO1xuICAgIGNvbnN0IGluc3RhbnQgPSBpbnN0YW50T2ZDaXZpbChzdGFydCwgdHopO1xuICAgIC8vIGBzaW5jZWAgaXMgdGhlIGxhc3QgcnVuJ3MgcGVyaW9kIEVORCBmb3IgYSBydW4gdGhhdCBoYXBwZW5lZCwgc28gYSBwZXJpb2RcbiAgICAvLyB3aG9zZSBlbmQgaXMgYXQgb3IgYmVmb3JlIGl0IGhhcyBhbHJlYWR5IGJlZW4gcmVwb3J0ZWQuXG4gICAgaWYgKGluc3RhbnRPZkNpdmlsKHNoaWZ0UGVyaW9kKHN0YXJ0LCBjYWRlbmNlLCAxKSwgdHopLmdldFRpbWUoKSA8PSBzaW5jZS5nZXRUaW1lKCkpIGJyZWFrO1xuICAgIGNvbnN0IHByZXZTdGFydCA9IHNoaWZ0UGVyaW9kKHN0YXJ0LCBjYWRlbmNlLCAtMSk7XG4gICAgb3V0LnB1c2goe1xuICAgICAgc3RhcnQ6IGluc3RhbnQsXG4gICAgICBlbmQ6IGluc3RhbnRPZkNpdmlsKHNoaWZ0UGVyaW9kKHN0YXJ0LCBjYWRlbmNlLCAxKSwgdHopLFxuICAgICAgcHJldlN0YXJ0OiBpbnN0YW50T2ZDaXZpbChwcmV2U3RhcnQsIHR6KSxcbiAgICAgIHByZXZFbmQ6IGluc3RhbnQsXG4gICAgICBsYWJlbDogZm9ybWF0TGFiZWwoc3RhcnQsIGNhZGVuY2UpLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBvdXQucmV2ZXJzZSgpO1xufVxuIl19